Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 554688 - sys-libs/libhugetlbfs : missing dev-lang/perl:= dependency / installs Perl modules in incorrect path
Summary: sys-libs/libhugetlbfs : missing dev-lang/perl:= dependency / installs Perl mo...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo's Team for Core System packages
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2015-07-13 00:02 UTC by Thomas Deutschmann (RETIRED)
Modified: 2015-12-14 19:26 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Changeset PR 131 (changeset-bug_554688.diff,2.89 KB, patch)
2015-09-26 08:17 UTC, Thomas Deutschmann (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Deutschmann (RETIRED) gentoo-dev 2015-07-13 00:02:41 UTC
perl-cleaner told me to create a bug with the following information (sorry for the bad summary):

After I run

  # emerge --ask --verbose --update --deep --with-bdeps=y --newuse world

I run perl-cleaner:

Calculating dependencies... done!
[ebuild     U  ] virtual/perl-Archive-Tar-2.40.0::gentoo [1.960.0::gentoo] 0 KiB
[ebuild     U  ] virtual/perl-CPAN-Meta-Requirements-2.132.0::gentoo [2.125.0-r1::gentoo] 0 KiB
[ebuild     U  ] virtual/perl-ExtUtils-Command-1.200.0::gentoo [1.180.0-r2::gentoo] 0 KiB

Total: 3 packages (3 upgrades), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 3) virtual/perl-Archive-Tar-2.40.0::gentoo
>>> Emerging (2 of 3) virtual/perl-CPAN-Meta-Requirements-2.132.0::gentoo
>>> Emerging (3 of 3) virtual/perl-ExtUtils-Command-1.200.0::gentoo
>>> Installing (1 of 3) virtual/perl-Archive-Tar-2.40.0::gentoo
>>> Installing (2 of 3) virtual/perl-CPAN-Meta-Requirements-2.132.0::gentoo
>>> Installing (3 of 3) virtual/perl-ExtUtils-Command-1.200.0::gentoo
>>> Jobs: 3 of 3 complete                           Load avg: 0.78, 3.89, 3.88
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

 * Beginning a clean up of .ph files
 * Excluding files for 5.22.0 and 5.22.0/x86_64-linux from cleaning

 * Locating ph files for removal

 * Updating ph files.
 * Ignore all "No such file..." messages!
Can't open machine/ansi.h: No such file or directory
Can't open sys/_types.h: No such file or directory
Can't open gnu/stubs-x32.h: No such file or directory
Can't open gnu/stubs-x32.h: No such file or directory
Can't open gnu/stubs-x32.h: No such file or directory
Can't open gnu/stubs-x32.h: No such file or directory

 * Locating packages for an update
 * Locating ebuilds linked against libperl
 *   Adding to list: perl-core/ExtUtils-Manifest:0
 *                   virtual/perl-ExtUtils-Manifest:0
 *   Adding to list: perl-core/CPAN-Meta:0
 *                   virtual/perl-CPAN-Meta:0
 * emerge -v1 --backtrack=200 --usepkg=n perl-core/ExtUtils-Manifest:0 virtual/perl-ExtUtils-Manifest:0 perl-core/CPAN-Meta:0 vi
rtual/perl-CPAN-Meta:0

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] perl-core/ExtUtils-Manifest-1.700.0::gentoo  0 KiB
[ebuild   R    ] virtual/perl-ExtUtils-Manifest-1.700.0-r1::gentoo  0 KiB
[ebuild   R    ] perl-core/CPAN-Meta-2.143.240::gentoo  USE="{-test}" 0 KiB
[ebuild   R    ] virtual/perl-CPAN-Meta-2.150.1::gentoo  0 KiB

Total: 4 packages (4 reinstalls), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 4) perl-core/ExtUtils-Manifest-1.700.0::gentoo
>>> Emerging (2 of 4) virtual/perl-ExtUtils-Manifest-1.700.0-r1::gentoo
>>> Emerging (3 of 4) perl-core/CPAN-Meta-2.143.240::gentoo
>>> Emerging (4 of 4) virtual/perl-CPAN-Meta-2.150.1::gentoo
>>> Installing (2 of 4) virtual/perl-ExtUtils-Manifest-1.700.0-r1::gentoo
>>> Installing (1 of 4) perl-core/ExtUtils-Manifest-1.700.0::gentoo
>>> Installing (4 of 4) virtual/perl-CPAN-Meta-2.150.1::gentoo
>>> Installing (3 of 4) perl-core/CPAN-Meta-2.143.240::gentoo
>>> Jobs: 4 of 4 complete                           Load avg: 1.23, 3.30, 3.67
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.
 *
 * It seems like perl-cleaner had to rebuild some packages.
 *
 * If you have just updated your major Perl version (e.g. from 5.20.2 to 5.22.0),
 * and have run perl-cleaner _after_ that update, then this means most likely
 * that these packages are buggy. Please file a bug on http://bugs.gentoo.org/ and
 * report that perl-cleaner needed to reinstall the following list:
 *    perl-core/ExtUtils-Manifest:0 virtual/perl-ExtUtils-Manifest:0 perl-core/CPAN-Meta:0 virtual/perl-CPAN-Meta:0
 *

 * Finding left over modules and header

 * The following files remain. These were either installed by hand
 * or edited. This script cannot deal with them.


PS: To get a smooth perl upgrade I had to manually remove perl-core/libnet, perl-core/Data-Dumper and perl-core/ExtUtils-MakeMaker.

Reproducible: Always
Comment 1 Thomas Deutschmann (RETIRED) gentoo-dev 2015-07-13 11:14:30 UTC
sys-libs/libhugetlbfs:0 is also affected.
Comment 2 Alan McKinnon 2015-07-13 13:55:04 UTC
Module-Corelist seems also to be affected per my output:

 * report that perl-cleaner needed to reinstall the following list:
 *    perl-core/CPAN-Meta:0 virtual/perl-CPAN-Meta:0 perl-core/Module-CoreList:0 virtual/perl-Module-CoreList:0 perl-core/ExtUtils-Manifest:0 virtual/perl-ExtUtils-Manifest:0
 *
Comment 3 Pacho Ramos gentoo-dev 2015-07-13 14:30:36 UTC
(In reply to Thomas D. from comment #0)
[...]
>  * report that perl-cleaner needed to reinstall the following list:
>  *    perl-core/ExtUtils-Manifest:0 virtual/perl-ExtUtils-Manifest:0
> perl-core/CPAN-Meta:0 virtual/perl-CPAN-Meta:0
>  *
> 
>  * Finding left over modules and header
> 
>  * The following files remain. These were either installed by hand
>  * or edited. This script cannot deal with them.
> 
> 
> PS: To get a smooth perl upgrade I had to manually remove perl-core/libnet,
> perl-core/Data-Dumper and perl-core/ExtUtils-MakeMaker.
> 
> Reproducible: Always

I think that perl modules are using subslots and perl-module.eclass properly and, then, this shouldn't occur. But, *maybe*, the problem was that this packages weren't updated to their eapi5 versions until now (as they were probably buildtime only dependencies) and, then, now that they got merged with updated eapi and subslot information stored in VDB, this shouldn't need any change for the future

(In reply to Thomas D. from comment #1)
> sys-libs/libhugetlbfs:0 is also affected.

I would open a new bug report for that one with all logs because, for that case, I suspect there is an automagic dependency on perl or similar

Thanks
Comment 4 Andreas K. Hüttel archtester gentoo-dev 2015-07-13 16:39:33 UTC
(In reply to Thomas D. from comment #1)
> sys-libs/libhugetlbfs:0 is also affected.

This is the only problematic one (all others are probably due to not running depclean at some point).
Comment 5 Andreas K. Hüttel archtester gentoo-dev 2015-07-13 20:00:10 UTC
* missing dev-lang/perl:= dependency (yes the slot operator is mandatory)
* installs Perl modules in incorrect path

/usr/lib64/perl5
/usr/lib64/perl5/TLBC
/usr/lib64/perl5/TLBC/DataCollect.pm
/usr/lib64/perl5/TLBC/OpCollect.pm
/usr/lib64/perl5/TLBC/PerfCollect.pm
/usr/lib64/perl5/TLBC/Report.pm

please consider using 

PERL_EXPORT_PHASE_FUNCTIONS=no
inherit perl-module

and then during build

perl_set_version

to read out the perl install paths; the modules should eg. go into 

${VENDOR_LIB}/TLBC/Report.pm
Comment 6 SpanKY gentoo-dev 2015-07-14 09:12:15 UTC
(In reply to Andreas K. Hüttel from comment #5)

feel free to make any perl related changes to the ebuild
Comment 7 Thomas Deutschmann (RETIRED) gentoo-dev 2015-09-25 17:28:48 UTC
Hi,

I created a pull request which fixes this bug and various other problems in this ebuild:

https://github.com/gentoo/gentoo/pull/131


- libhugetlbfs project moved from SF to GitHub
  (HOMEPAGE, SRC_URI & metadata.xml updated)

- Perl modules will be now installed in the correct location
  (Fixes https://bugs.gentoo.org/show_bug.cgi?id=554688#c5)

- Added RDEPEND on dev-lang/perl atom
  (https://bugs.gentoo.org/show_bug.cgi?id=554688#c5)

- Added dev-lang/python:2_7 dependency when using FEATURES=test

  Required by "run_tests.py", otherwise

    * Starting tests
      File "./run_tests.py", line 62
      print "Pool state: %s" % str(beforepool)
    [...]

  when using dev-lang/python:3*.

- "/var/lib" added to sandbox' write list, otherwise

      mkdir -p /var/lib/hugetlbfs/pagesize-${pagesize}

   would fail

- Removed redundant "addwrite" call for "/var/lib/hugetlbfs/pagesize-${pagesize}"
  (Already added to white list when we created these folders)



For better reviewing I am attaching a diff against the current ebuild in tree:

diff -rupN old/sys-libs/libhugetlbfs/libhugetlbfs-2.19.ebuild new/sys-libs/libhugetlbfs/libhugetlbfs-2.19.ebuild
--- old/sys-libs/libhugetlbfs/libhugetlbfs-2.19.ebuild	2015-08-09 22:34:55.000000000 +0200
+++ new/sys-libs/libhugetlbfs/libhugetlbfs-2.19.ebuild	2015-09-25 16:37:31.000000000 +0200
@@ -2,30 +2,40 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
-EAPI="4"
+EAPI="5"
+PERL_EXPORT_PHASE_FUNCTIONS="no"
+GENTOO_DEPEND_ON_PERL="no"
+PYTHON_COMPAT=( python2_7 )
 
-inherit eutils multilib toolchain-funcs
+inherit eutils multilib perl-module python-any-r1 toolchain-funcs
 
 DESCRIPTION="easy hugepage access"
-HOMEPAGE="http://libhugetlbfs.sourceforge.net/"
-SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+HOMEPAGE="https://github.com/libhugetlbfs/libhugetlbfs"
+SRC_URI="https://github.com/libhugetlbfs/libhugetlbfs/archive/${PV}.tar.gz -> ${P}.tar.gz"
 
 LICENSE="GPL-2"
 SLOT="0"
-KEYWORDS="~amd64 ~ppc64 ~x86"
-IUSE="static-libs"
+KEYWORDS="~amd64 ~x86"
+IUSE="static-libs test"
+
+DEPEND="test? ( ${PYTHON_DEPS} )"
+RDEPEND="dev-lang/perl:="
 
 src_prepare() {
 	epatch "${FILESDIR}"/${PN}-2.9-build.patch #332517
 	epatch "${FILESDIR}"/${PN}-2.6-noexec-stack.patch
 	epatch "${FILESDIR}"/${PN}-2.6-fixup-testsuite.patch
+
+	perl_set_version
+
 	sed -i \
 		-e '/^PREFIX/s:/local::' \
 		-e '1iBUILDTYPE = NATIVEONLY' \
 		-e '1iV = 1' \
 		-e "/^LIB\(32\)/s:=.*:= $(get_libdir):" \
 		-e '/^CC\(32\|64\)/s:=.*:= $(CC):' \
-		Makefile
+		-e "/^PMDIR = .*\/perl5\/TLBC/s::PMDIR = ${VENDOR_LIB}\/TLBC:" \
+		Makefile || die "sed failed"
 	if [ "$(get_libdir)" == "lib64" ]; then
 		sed -i \
 			-e "/^LIB\(32\)/s:=.*:= lib32:" \
@@ -73,10 +83,12 @@ src_test() {
 	einfo "Planning allocation"
 	PAGESIZES="$(${hugeadm} --page-sizes-all)"
 
+	addwrite /var/lib/
+
 	# Need to do this before we can create the mountpoints.
 	for pagesize in ${PAGESIZES} ; do
 		# The kernel depends on the location :-(
-		mkdir -p /var/lib/hugetlbfs/pagesize-${pagesize}
+		mkdir -p /var/lib/hugetlbfs/pagesize-${pagesize} || die "Failed to create directory"
 		addwrite /var/lib/hugetlbfs/pagesize-${pagesize}
 	done
 	addwrite /proc/sys/vm/
@@ -95,7 +107,6 @@ src_test() {
 	for pagesize in ${PAGESIZES} ; do
 		pagecount=$((${MIN_HUGEPAGE_RAM}/${pagesize}))
 		einfo "  ${pagecount} @ ${pagesize}"
-		addwrite /var/lib/hugetlbfs/pagesize-${pagesize}
 		src_test_alloc_one "$hugeadm" "+" "${pagesize}" "${pagecount}"
 		rc=$?
 		if [[ $rc -eq 0 ]]; then
diff -rupN old/sys-libs/libhugetlbfs/metadata.xml new/sys-libs/libhugetlbfs/metadata.xml
--- old/sys-libs/libhugetlbfs/metadata.xml	2015-08-24 23:01:04.000000000 +0200
+++ new/sys-libs/libhugetlbfs/metadata.xml	2015-09-25 19:16:46.000000000 +0200
@@ -3,6 +3,6 @@
 <pkgmetadata>
 	<herd>base-system</herd>
 	<upstream>
-		<remote-id type="sourceforge">libhugetlbfs</remote-id>
+		<remote-id type="github">libhugetlbfs/libhugetlbfs</remote-id>
 	</upstream>
 </pkgmetadata>
Comment 8 SpanKY gentoo-dev 2015-09-26 08:15:42 UTC
(In reply to Thomas D. from comment #7)

never post patches as comments.  bugzilla will corrupt them rendering them useless, and most of the time they just add noise.  if you want to post a patch, then do so as an attachment.
Comment 9 Thomas Deutschmann (RETIRED) gentoo-dev 2015-09-26 08:17:38 UTC
Created attachment 412940 [details, diff]
Changeset PR 131
Comment 10 SpanKY gentoo-dev 2015-09-26 08:22:43 UTC
i've updated the upstream, but not the SRC_URI.  github does not have the same tarball as SF which means all the manifests/existing downloads would break.
http://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c027340b6037cda863580de3d2520b57a9c49dea
Comment 11 Andreas K. Hüttel archtester gentoo-dev 2015-12-12 12:46:23 UTC
(In reply to SpanKY from comment #6)
> (In reply to Andreas K. Hüttel from comment #5)
> 
> feel free to make any perl related changes to the ebuild

Perl changes (including needed EAPI=5 bump) done in 2.19-r1, leaving this open in case you still want to implement any of the other changes suggested by Thomas D.
Comment 12 Thomas Deutschmann (RETIRED) gentoo-dev 2015-12-14 16:41:21 UTC
I updated the PR at GitHub and incorporated your changes (well, I already fixed the Perl thing but I now switched from per-module eclass to perl-functions eclass like you did).
Comment 13 SpanKY gentoo-dev 2015-12-14 19:26:33 UTC
(In reply to Andreas K. Hüttel from comment #11)

thanks, i've made the perl support optional now via USE=perl
http://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eafb5bff4795e5a83122ebcbfc37b86607119115

(In reply to Thomas D. from comment #12)

i've added the python test changes here:
http://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2e5ed736019cf2fd7e9db25189d1ac6b070337c4

and then version bumped to 2.20 (needed to build w/gcc-5):
http://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8f3aa6dadf4c787c54fabb212d7079c9fa5327a8