Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 564668 - db.eclass is lacks required multiprocessing inherit
Summary: db.eclass is lacks required multiprocessing inherit
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo's Team for Core System packages
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-11-01 22:26 UTC by Greg Turner
Modified: 2015-11-10 18:21 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Greg Turner 2015-11-01 22:26:54 UTC
x86/amd64 folks can see the problen for themselves like so (the ABI_X86 just makes for less thumb-twiddling before getting a result.  The final head -n, grep -v, killall -HUP business is just a kludgey alternative to manual "ctrl-c"... also you must have tcl installed first):

# MAKEOPTS=-j10 ABI_X86="" ECLASS_DEBUG_OUTPUT=on USE="test tcl" FEATURES=test \
    ebuild $(portageq envvar PORTDIR 2>/dev/null)/sys-libs/db/db-6.1.*.ebuild \
      clean test \
    |& grep -C2 --color=no -e \
        '\(makeopts_jobs\|^debug: inherit:\|PARALLEL_TESTDIR\)' \
    | head -n 2000 \
    | grep -v -e 'PARALLEL_TESTDIR.[[:digit:]][[:digit:]]'; \
    killall -HUP tclsh
                                 [ ok ]
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug: *** Multiple Inheritence (Level: 4)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/db.eclass
debug: inherit: db -> /usr/portage/eclass/db.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: src_test -> db_src_test
debug:   eclass exists: /usr/portage/eclass/flag-o-matic.eclass
debug: inherit: flag-o-matic -> /usr/portage/eclass/flag-o-matic.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/java-pkg-opt-2.eclass
debug: inherit: java-pkg-opt-2 -> /usr/portage/eclass/java-pkg-opt-2.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/java-utils-2.eclass
debug: inherit: java-utils-2 -> /usr/portage/eclass/java-utils-2.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/versionator.eclass
debug: inherit: versionator -> /usr/portage/eclass/versionator.eclass
debug: *** Multiple Inheritence (Level: 4)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: pkg_setup -> java-pkg-opt-2_pkg_setup
debug: EXPORT_FUNCTIONS: src_prepare -> java-pkg-opt-2_src_prepare
debug: EXPORT_FUNCTIONS: pkg_preinst -> java-pkg-opt-2_pkg_preinst
debug:   eclass exists: /usr/portage/eclass/autotools.eclass
debug: inherit: autotools -> /usr/portage/eclass/autotools.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/libtool.eclass
debug: inherit: libtool -> /usr/portage/eclass/libtool.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/multilib-minimal.eclass
debug: inherit: multilib-minimal -> /usr/portage/eclass/multilib-minimal.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib-build.eclass
debug: inherit: multilib-build -> /usr/portage/eclass/multilib-build.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/multibuild.eclass
debug: inherit: multibuild -> /usr/portage/eclass/multibuild.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: src_configure -> multilib-minimal_src_configure
debug: EXPORT_FUNCTIONS: src_compile -> multilib-minimal_src_compile
--
debug: EXPORT_FUNCTIONS: src_install -> multilib-minimal_src_install
debug:   eclass exists: /usr/portage/eclass/versionator.eclass
debug: inherit: versionator -> /usr/portage/eclass/versionator.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug: *** Multiple Inheritence (Level: 4)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/db.eclass
debug: inherit: db -> /usr/portage/eclass/db.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: src_test -> db_src_test
debug:   eclass exists: /usr/portage/eclass/flag-o-matic.eclass
debug: inherit: flag-o-matic -> /usr/portage/eclass/flag-o-matic.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/java-pkg-opt-2.eclass
debug: inherit: java-pkg-opt-2 -> /usr/portage/eclass/java-pkg-opt-2.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/java-utils-2.eclass
debug: inherit: java-utils-2 -> /usr/portage/eclass/java-utils-2.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/versionator.eclass
debug: inherit: versionator -> /usr/portage/eclass/versionator.eclass
debug: *** Multiple Inheritence (Level: 4)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: pkg_setup -> java-pkg-opt-2_pkg_setup
debug: EXPORT_FUNCTIONS: src_prepare -> java-pkg-opt-2_src_prepare
debug: EXPORT_FUNCTIONS: pkg_preinst -> java-pkg-opt-2_pkg_preinst
debug:   eclass exists: /usr/portage/eclass/autotools.eclass
debug: inherit: autotools -> /usr/portage/eclass/autotools.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/libtool.eclass
debug: inherit: libtool -> /usr/portage/eclass/libtool.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug:   eclass exists: /usr/portage/eclass/multilib-minimal.eclass
debug: inherit: multilib-minimal -> /usr/portage/eclass/multilib-minimal.eclass
debug: *** Multiple Inheritence (Level: 2)
debug:   eclass exists: /usr/portage/eclass/eutils.eclass
debug: inherit: eutils -> /usr/portage/eclass/eutils.eclass
debug:   eclass exists: /usr/portage/eclass/multilib-build.eclass
debug: inherit: multilib-build -> /usr/portage/eclass/multilib-build.eclass
debug: *** Multiple Inheritence (Level: 3)
debug:   eclass exists: /usr/portage/eclass/multibuild.eclass
debug: inherit: multibuild -> /usr/portage/eclass/multibuild.eclass
debug:   eclass exists: /usr/portage/eclass/multilib.eclass
debug: inherit: multilib -> /usr/portage/eclass/multilib.eclass
debug: EXPORT_FUNCTIONS: src_configure -> multilib-minimal_src_configure
debug: EXPORT_FUNCTIONS: src_compile -> multilib-minimal_src_compile
--
debug: EXPORT_FUNCTIONS: src_install -> multilib-minimal_src_install
debug:   eclass exists: /usr/portage/eclass/versionator.eclass
debug: inherit: versionator -> /usr/portage/eclass/versionator.eclass
debug:   eclass exists: /usr/portage/eclass/toolchain-funcs.eclass
debug: inherit: toolchain-funcs -> /usr/portage/eclass/toolchain-funcs.eclass
>>> Unpacking source...
>>> Unpacking db-6.1.26.tar.gz to /var/tmp/portage/sys-libs/db-6.1.26/work
--
 * Running sys-libs/db testsuite
 * This can take 6+ hours on modern machines
/var/tmp/portage/sys-libs/db-6.1.26/temp/environment: line 1129: makeopts_jobs: command not found
Created ./PARALLEL_TESTDIR.0
Created ./PARALLEL_TESTDIR.1
Created ./PARALLEL_TESTDIR.2
Created ./PARALLEL_TESTDIR.3
Created ./PARALLEL_TESTDIR.4
Created ./PARALLEL_TESTDIR.5
Created ./PARALLEL_TESTDIR.6
Created ./PARALLEL_TESTDIR.7
Created ./PARALLEL_TESTDIR.8
Created ./PARALLEL_TESTDIR.9

(The relevant error is fifteen lines or so above this one.)

Basically db.eclass consumes makeopts_jobs but forgets to make that function available to itself by inheriting multiprocessing.eclass.  Adding it to the inherits clause in db.eclass is the only reasonable solution (no wonder it "takes six hours" :D).

It probably used to work because once upon a time some multi*.eclass inherited it for us, back before parallel multilib phases got (tragically, imo) removed.
Comment 1 Greg Turner 2015-11-01 22:31:24 UTC
Also, I think without this fix it tries to create an infinite number of directories in ${WORKDIR}.... :)