commit:     bc0c28bbcdb03506e6c0bafac9e63aff5ebb6894
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  6 21:00:46 2019 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Dec  8 21:29:45 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=bc0c28bb

emerge: drop FEATURES=distcc-pump support, bug #702146

'distcc' distributes code generation for preprocessed files.

'pump' distributes preprocessing and code generation of files
and imposes very strict requirement:

"""
Note that distcc's pump-mode assumes that sources files will
not be modified during the lifetime of the include server, so
modifying source files during a build may cause inconsistent
results.
"""

`src_configure()` (where we used to start include server before
this change) almost always violates that requirement.

It is not uncommon to generate more intermediate source files
as a package builds (`bison`, `flex`, child `./configure` calls
from `make`) and thus quite unsafe to use `pump`.

This change drops `FEATURES=distcc-pump` and leaves only
FEATURES=distcc. This way all the proprocessing happens as expected
and only code generation is offloaded.

Bug: https://bugs.gentoo.org/702146
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 bin/phase-functions.sh     | 17 -----------------
 lib/_emerge/EbuildPhase.py |  2 +-
 lib/portage/const.py       |  1 -
 man/make.conf.5            |  3 ---
 4 files changed, 1 insertion(+), 22 deletions(-)

diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
index 92fcd3929..73f8cee9b 100644
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@ -403,19 +403,6 @@ __dyn_prepare() {
        trap - SIGINT SIGQUIT
 }
 
-# @FUNCTION: __start_distcc
-# @DESCRIPTION:
-# Start distcc-pump if necessary.
-__start_distcc() {
-       if has distcc $FEATURES && has distcc-pump $FEATURES ; then
-               if [[ -z $INCLUDE_SERVER_PORT ]] || [[ ! -w 
$INCLUDE_SERVER_PORT ]] ; then
-                       # adding distcc to PATH repeatedly results in fatal 
distcc recursion :)
-                       eval $(pump --startup | grep -v PATH)
-                       trap "pump --shutdown >/dev/null" EXIT
-               fi
-       fi
-}
-
 __dyn_configure() {
 
        if [[ -e $PORTAGE_BUILDDIR/.configured ]] ; then
@@ -435,7 +422,6 @@ __dyn_configure() {
        fi
 
        trap __abort_configure SIGINT SIGQUIT
-       __start_distcc
 
        __ebuild_phase pre_src_configure
 
@@ -469,7 +455,6 @@ __dyn_compile() {
        fi
 
        trap __abort_compile SIGINT SIGQUIT
-       __start_distcc
 
        __ebuild_phase pre_src_compile
 
@@ -493,7 +478,6 @@ __dyn_test() {
        fi
 
        trap "__abort_test" SIGINT SIGQUIT
-       __start_distcc
 
        if [[ -d ${S} ]]; then
                cd "${S}"
@@ -541,7 +525,6 @@ __dyn_install() {
                return 0
        fi
        trap "__abort_install" SIGINT SIGQUIT
-       __start_distcc
 
        # Handle setting QA_* based on QA_PREBUILT
        # Those variables shouldn't be needed before src_install()

diff --git a/lib/_emerge/EbuildPhase.py b/lib/_emerge/EbuildPhase.py
index 4104cefa7..50e3dd1f4 100644
--- a/lib/_emerge/EbuildPhase.py
+++ b/lib/_emerge/EbuildPhase.py
@@ -49,7 +49,7 @@ class EbuildPhase(CompositeTask):
 
        # FEATURES displayed prior to setup phase
        _features_display = (
-               "ccache", "compressdebug", "distcc", "distcc-pump", "fakeroot",
+               "ccache", "compressdebug", "distcc", "fakeroot",
                "installsources", "keeptemp", "keepwork", "network-sandbox",
                "network-sandbox-proxy", "nostrip", "preserve-libs", "sandbox",
                "selinux", "sesandbox", "splitdebug", "suidctl", "test",

diff --git a/lib/portage/const.py b/lib/portage/const.py
index 36b33af92..e95039fd5 100644
--- a/lib/portage/const.py
+++ b/lib/portage/const.py
@@ -142,7 +142,6 @@ SUPPORTED_FEATURES       = frozenset([
        "config-protect-if-modified",
        "digest",
        "distcc",
-       "distcc-pump",
        "distlocks",
        "downgrade-backup",
        "ebuild-locks",

diff --git a/man/make.conf.5 b/man/make.conf.5
index 78ff8cb06..494d5f003 100644
--- a/man/make.conf.5
+++ b/man/make.conf.5
@@ -393,9 +393,6 @@ will be reused whenever they are available.
 .B distcc
 Enable portage support for the distcc package.
 .TP
-.B distcc\-pump
-Enable portage support for the distcc package with pump mode.
-.TP
 .B distlocks
 Portage uses lockfiles to ensure competing instances don't clobber
 each other's files.  It covers saving distfiles to ${DISTDIR} and

Reply via email to