pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lang/python27 fails to install on Fedora 29



On Thu, 21 Feb 2019, at 22:09:18 -0500, David J. Weller-Fahy wrote:
> Greetings,
> 
> I've successfully built/installed python27 on CentOS 7 and WSL Ubuntu
> 18.04, however on Fedora 29 the python27 package does not install. The
> problem is that the PLIST includes nis.so on my system, but nis.so is
> not included in the package. The tail end of the build log follows:
> 
> #v+
> => Checking file-check results for python27-2.7.15nb1
> ERROR: ************************************************************
> ERROR: The following files are in the PLIST but not in /home/dave/pkg-fedora-29/usr/work/lang/python27/work/.destdir/home/dave/pkg-fedora-29:
> ERROR:         /home/dave/pkg-fedora-29/usr/work/lang/python27/work/.destdir/home/dave/pkg-fedora-29/lib/python2.7/lib-dynload/nis.so
> *** Error code 1
> 
> Stop.
> bmake[1]: stopped in /home/dave/usr/src/pkgsrc/lang/python27
> *** Error code 1
> 
> Stop.
> bmake: stopped in /home/dave/usr/src/pkgsrc/lang/python27
> #v-
> 
> I tried flipping the logic of the check for NetBSD and /usr/bin/ypcat in
> the Makefile, which caused PLIST.no-nis to be set to "yes", however that
> caused the package to fail with the same error, except the missing file
> was `nis_failed.so`. The following (trivial) patch to the Makefile
> allows lang/python27 to install on my Fedora 29 instance by not setting
> PLIST.nis or PLIST.no-nis.
> 
> #v+
> Index: Makefile
> ===================================================================
> RCS file: /cvsroot/pkgsrc/lang/python27/Makefile,v
> retrieving revision 1.75
> diff -u -p -r1.75 Makefile
> --- Makefile	28 Sep 2018 11:01:37 -0000	1.75
> +++ Makefile	22 Feb 2019 02:45:25 -0000
> @@ -114,6 +114,8 @@ PLIST.nis=	yes
> PLIST.dll=	yes
> .  if ${OPSYS} == "MirBSD" || "${OS_VARIANT}" == "chromeos"
> # neither nis nor no-nis
> +.  elif !exists(/usr/bin/ypcat)
> +# neither nis nor no-nis
> .  elif ${OPSYS} != "NetBSD" || exists(/usr/bin/ypcat)
> PLIST.nis=	yes
> .  else
> #v-
> 
> However, I think that this is too general: Any system without an
> installed ypcat binary would never make it to the check for NetBSD, thus
> the install may break on some systems. Therefore, my patch is not
> suitable for the package, but I would like to find a patch that is
> suitable.
> 
> Is there a better way to determine situations where neither nis.so nor
> nis_failed.so should be built? Or, if not, is there a way to identify a
> system as "Fedora", rather than simply "redhat" (OS_VARIANT contents on
> my Fedora system), and thus check for that?
> 
> Suggestions and answers welcome - even just pointers on where to look
> would be helpful.

I ran into this as well, but hadn't got around to doing anything about
it (beyond temporarily hacking the package to get it to build). It's
ultimately not a question of identifying a particular distro, it's a
matter of determining which glibc version is in use, which, I believe,
isn't a simple thing to do. Recent versions of glibc dropped support
for what Python depends on in this context.

Fedora does still build and install nis in their Python 2.7 package;
they use a different means of exposing the necessary files to do so.
This subject in general is discussed in more than one Python bug
report:

https://bugs.python.org/issue32007
https://bugs.python.org/issue32521

Fedora's change set is here:

https://src.fedoraproject.org/rpms/python2/c/3056bfd92a4269ad8f9b57cab05af3125e87ca8c?branch=master

Regards,

Dave




Home | Main Index | Thread Index | Old Index