Gentoo Archives: gentoo-portage-dev

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Sergei Trofimovich <slyfox@g.o>
Subject: [gentoo-portage-dev] [PATCH] emerge: drop FEATURES=distcc-pump support, bug #702146
Date: Fri, 06 Dec 2019 21:01:12
Message-Id: 20191206210046.712171-1-slyfox@gentoo.org
1 'distcc' dustributes code generation for preprocessed files.
2
3 'pump' distributes preprocessing and code generation of files
4 and imposes very strict requirement:
5
6 """
7 Note that distcc's pump-mode assumes that sources files will
8 not be modified during the lifetime of the include server, so
9 modifying source files during a build may cause inconsistent
10 results.
11 """
12
13 `src_configure()` (where we used to start include server before
14 this change) almost always violates that requirement.
15
16 It is not uncommon to generate more intermediate source files
17 as a package builds (`bison`, `flex`, child `./configure` calls
18 from `make`) and thus quite unsafe to use `pump`.
19
20 This change drops `FEATURES=distcc-pump` and leaves only
21 FEATURES=distcc. This way all the proprocessing happens as expected
22 and only code generation is offloaded.
23
24 Closes: https://bugs.gentoo.org/702146
25 Signed-off-by: Sergei Trofimovich <slyfox@g.o>
26 ---
27 bin/phase-functions.sh | 17 -----------------
28 lib/_emerge/EbuildPhase.py | 2 +-
29 lib/portage/const.py | 1 -
30 3 files changed, 1 insertion(+), 19 deletions(-)
31
32 diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
33 index 92fcd3929..73f8cee9b 100644
34 --- a/bin/phase-functions.sh
35 +++ b/bin/phase-functions.sh
36 @@ -403,19 +403,6 @@ __dyn_prepare() {
37 trap - SIGINT SIGQUIT
38 }
39
40 -# @FUNCTION: __start_distcc
41 -# @DESCRIPTION:
42 -# Start distcc-pump if necessary.
43 -__start_distcc() {
44 - if has distcc $FEATURES && has distcc-pump $FEATURES ; then
45 - if [[ -z $INCLUDE_SERVER_PORT ]] || [[ ! -w $INCLUDE_SERVER_PORT ]] ; then
46 - # adding distcc to PATH repeatedly results in fatal distcc recursion :)
47 - eval $(pump --startup | grep -v PATH)
48 - trap "pump --shutdown >/dev/null" EXIT
49 - fi
50 - fi
51 -}
52 -
53 __dyn_configure() {
54
55 if [[ -e $PORTAGE_BUILDDIR/.configured ]] ; then
56 @@ -435,7 +422,6 @@ __dyn_configure() {
57 fi
58
59 trap __abort_configure SIGINT SIGQUIT
60 - __start_distcc
61
62 __ebuild_phase pre_src_configure
63
64 @@ -469,7 +455,6 @@ __dyn_compile() {
65 fi
66
67 trap __abort_compile SIGINT SIGQUIT
68 - __start_distcc
69
70 __ebuild_phase pre_src_compile
71
72 @@ -493,7 +478,6 @@ __dyn_test() {
73 fi
74
75 trap "__abort_test" SIGINT SIGQUIT
76 - __start_distcc
77
78 if [[ -d ${S} ]]; then
79 cd "${S}"
80 @@ -541,7 +525,6 @@ __dyn_install() {
81 return 0
82 fi
83 trap "__abort_install" SIGINT SIGQUIT
84 - __start_distcc
85
86 # Handle setting QA_* based on QA_PREBUILT
87 # Those variables shouldn't be needed before src_install()
88 diff --git a/lib/_emerge/EbuildPhase.py b/lib/_emerge/EbuildPhase.py
89 index 4104cefa7..50e3dd1f4 100644
90 --- a/lib/_emerge/EbuildPhase.py
91 +++ b/lib/_emerge/EbuildPhase.py
92 @@ -49,7 +49,7 @@ class EbuildPhase(CompositeTask):
93
94 # FEATURES displayed prior to setup phase
95 _features_display = (
96 - "ccache", "compressdebug", "distcc", "distcc-pump", "fakeroot",
97 + "ccache", "compressdebug", "distcc", "fakeroot",
98 "installsources", "keeptemp", "keepwork", "network-sandbox",
99 "network-sandbox-proxy", "nostrip", "preserve-libs", "sandbox",
100 "selinux", "sesandbox", "splitdebug", "suidctl", "test",
101 diff --git a/lib/portage/const.py b/lib/portage/const.py
102 index 36b33af92..e95039fd5 100644
103 --- a/lib/portage/const.py
104 +++ b/lib/portage/const.py
105 @@ -142,7 +142,6 @@ SUPPORTED_FEATURES = frozenset([
106 "config-protect-if-modified",
107 "digest",
108 "distcc",
109 - "distcc-pump",
110 "distlocks",
111 "downgrade-backup",
112 "ebuild-locks",
113 --
114 2.24.0