'distcc' dustributes 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.

Closes: https://bugs.gentoo.org/702146
Signed-off-by: Sergei Trofimovich <sly...@gentoo.org>
---
 bin/phase-functions.sh     | 17 -----------------
 lib/_emerge/EbuildPhase.py |  2 +-
 lib/portage/const.py       |  1 -
 3 files changed, 1 insertion(+), 19 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",
-- 
2.24.0


Reply via email to