1 |
commit: 04d7a13d933a0fb7266df332ddaa2a2d1141d7be |
2 |
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Sep 7 22:44:34 2019 +0000 |
4 |
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Sep 7 22:44:34 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/gcc-config.git/commit/?id=04d7a13d |
7 |
|
8 |
Revert "gcc-config: store gcc backup into /lib/gcc-backup, not /lib" |
9 |
|
10 |
This reverts commit 44570a44be60a8fc33bd05089047c1f2980b3047. |
11 |
|
12 |
Unfortunately ld.so does has static set of fallback paths |
13 |
when it fails to lookup shared library from ld.so.cache: |
14 |
those are /lib64 and /usr/lib64 on amd64. |
15 |
|
16 |
Let's revert the change and jkeep relying on /lib64 for now. |
17 |
|
18 |
Bug: https://bugs.gentoo.org/667020 |
19 |
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org> |
20 |
|
21 |
Makefile | 22 +++------------------- |
22 |
envd-gcc-backup | 3 --- |
23 |
gcc-backup/README | 41 ----------------------------------------- |
24 |
gcc-config | 18 +----------------- |
25 |
4 files changed, 4 insertions(+), 80 deletions(-) |
26 |
|
27 |
diff --git a/Makefile b/Makefile |
28 |
index 087000b..2b3b235 100644 |
29 |
--- a/Makefile |
30 |
+++ b/Makefile |
31 |
@@ -3,7 +3,6 @@ EPREFIX ?= |
32 |
PN = gcc-config |
33 |
PV = git |
34 |
P = $(PN)-$(PV) |
35 |
-BACKUPDIR = gcc-backup |
36 |
|
37 |
PREFIX = $(EPREFIX)/usr |
38 |
BINDIR = $(PREFIX)/bin |
39 |
@@ -12,18 +11,15 @@ ESELECTDIR = $(PREFIX)/share/eselect/modules |
40 |
|
41 |
SUBLIBDIR = lib |
42 |
LIBDIR = $(PREFIX)/$(SUBLIBDIR) |
43 |
-LIBGCC_BACKUPDIR = $(EPREFIX)/$(SUBLIBDIR)/$(BACKUPDIR) |
44 |
- |
45 |
-ENVD = $(EPREFIX)/etc/env.d |
46 |
|
47 |
MKDIR_P = mkdir -p -m 755 |
48 |
INSTALL_EXE = install -m 755 |
49 |
INSTALL_DATA = install -m 644 |
50 |
|
51 |
-all: .gcc-config .envd-gcc-backup |
52 |
+all: .gcc-config |
53 |
|
54 |
clean: |
55 |
- rm -f .gcc-config .envd-gcc-backup |
56 |
+ rm -f .gcc-config |
57 |
|
58 |
.gcc-config: gcc-config |
59 |
sed \ |
60 |
@@ -31,26 +27,14 @@ clean: |
61 |
-e 's:@GENTOO_EPREFIX@:$(EPREFIX):g' \ |
62 |
-e 's:@GENTOO_LIBDIR@:$(SUBLIBDIR):g' \ |
63 |
-e 's:@PV@:$(PV):g' \ |
64 |
- -e 's:@GENTOO_GCC_BACKUP_DIR@:$(BACKUPDIR):g' \ |
65 |
$< > $@ |
66 |
chmod a+rx $@ |
67 |
|
68 |
-.envd-gcc-backup: envd-gcc-backup |
69 |
- sed \ |
70 |
- -e 's:@LIBGCC_BACKUPDIR@:$(LIBGCC_BACKUPDIR):g' \ |
71 |
- $< > $@ |
72 |
- |
73 |
install: all |
74 |
- $(MKDIR_P) $(DESTDIR)$(BINDIR) |
75 |
+ $(MKDIR_P) $(DESTDIR)$(BINDIR) $(DESTDIR)$(ESELECTDIR) $(DESTDIR)$(DOCDIR) |
76 |
$(INSTALL_EXE) .gcc-config $(DESTDIR)$(BINDIR)/gcc-config |
77 |
- $(MKDIR_P) $(DESTDIR)$(ESELECTDIR) |
78 |
$(INSTALL_DATA) gcc.eselect $(DESTDIR)$(ESELECTDIR) |
79 |
- $(MKDIR_P) $(DESTDIR)$(DOCDIR) |
80 |
$(INSTALL_DATA) README $(DESTDIR)$(DOCDIR) |
81 |
- $(MKDIR_P) $(DESTDIR)$(LIBGCC_BACKUPDIR) |
82 |
- $(INSTALL_DATA) gcc-backup/README $(DESTDIR)$(LIBGCC_BACKUPDIR) |
83 |
- $(MKDIR_P) $(DESTDIR)$(ENVD) |
84 |
- $(INSTALL_DATA) .envd-gcc-backup $(DESTDIR)$(ENVD)/99gcc-backup |
85 |
|
86 |
test check: .gcc-config |
87 |
cd tests && ./run_tests |
88 |
|
89 |
diff --git a/envd-gcc-backup b/envd-gcc-backup |
90 |
deleted file mode 100644 |
91 |
index 4367b62..0000000 |
92 |
--- a/envd-gcc-backup |
93 |
+++ /dev/null |
94 |
@@ -1,3 +0,0 @@ |
95 |
-# A fallback for libgcc_s.so.* and dependencies. |
96 |
-# See @LIBGCC_BACKUPDIR@/README for details |
97 |
-LDPATH="@LIBGCC_BACKUPDIR@" |
98 |
|
99 |
diff --git a/gcc-backup/README b/gcc-backup/README |
100 |
deleted file mode 100644 |
101 |
index fdac223..0000000 |
102 |
--- a/gcc-backup/README |
103 |
+++ /dev/null |
104 |
@@ -1,41 +0,0 @@ |
105 |
-What is gcc-backup |
106 |
-================== |
107 |
- |
108 |
-gcc-backup is a directory to backup critical runtime |
109 |
-libraries used by gcc to link in code too big to inline it |
110 |
-from code generator. |
111 |
- |
112 |
-See gcc/doc/libgcc.texi doc in gcc source tree. |
113 |
- |
114 |
-gcc-config is responsible to back up libgcc_s.so.* and it's |
115 |
-runtime dependencies. |
116 |
- |
117 |
-Which systems needed this backup |
118 |
-================================ |
119 |
- |
120 |
-During normal system operation these libraries should not be |
121 |
-needed (unless gcc installation is somehow completely broken). |
122 |
- |
123 |
-The main use case for libgcc-backup is booting of a system |
124 |
-with the following properties: |
125 |
-- '/usr' mount is separate from '/' mount |
126 |
-- AND binaries in /bin (say, /bin/bash) are executed before |
127 |
- /usr is mounted |
128 |
- |
129 |
-Which systems link libgcc_s.so in |
130 |
-================================= |
131 |
- |
132 |
-By default gcc attempts to link libgcc_s.so in into every |
133 |
-binary and shared library. If code generator happens to |
134 |
-generate the code that does not refer libgcc_s.so then |
135 |
--Wl,--as-needed linker option omits the dependency. |
136 |
- |
137 |
-Thus any system might have libgcc_s.so linked into any binary |
138 |
-or shared library. |
139 |
- |
140 |
-What goes into this directory |
141 |
-============================= |
142 |
- |
143 |
-- libgcc_s.so.* itself: gcc driver attempts to link it in as-is |
144 |
-- libunwind.so.*: ia64-*-linux only, a runtime dependency of |
145 |
- libgcc_so.so.* |
146 |
|
147 |
diff --git a/gcc-config b/gcc-config |
148 |
index b1cda70..b8f695f 100755 |
149 |
--- a/gcc-config |
150 |
+++ b/gcc-config |
151 |
@@ -42,9 +42,6 @@ PV="@PV@" |
152 |
GENTOO_LIBDIR="@GENTOO_LIBDIR@" |
153 |
[[ ${GENTOO_LIBDIR} == @*@ ]] && GENTOO_LIBDIR="lib" |
154 |
|
155 |
-GENTOO_GCC_BACKUP_DIR="@GENTOO_GCC_BACKUP_DIR@" |
156 |
-[[ ${GENTOO_GCC_BACKUP_DIR} == @*@ ]] && GENTOO_GCC_BACKUP_DIR="gcc-backup" |
157 |
- |
158 |
usage() { |
159 |
cat <<-EOF |
160 |
Usage: gcc-config [options] [CC Profile] |
161 |
@@ -319,25 +316,12 @@ handle_split_usr() { |
162 |
if is_same_mountpoint "${EROOT}/lib" "${ROOT}/${LDPATH}" ; then |
163 |
local lib old_libs=0 saved_nullglob=$(shopt -p nullglob) |
164 |
shopt -s nullglob |
165 |
- |
166 |
- # We relied on these copies until Sept 2019. |
167 |
- # Can be removed in 2021. |
168 |
for lib in "${EROOT}"/lib*/libgcc_s{.so*,*dylib} "${EROOT}"/lib*/libunwind.so.7* ; do |
169 |
# If we previously had stuff in /, make sure ldconfig gets re-run. |
170 |
einfo "Removing '${lib}'" |
171 |
rm -f "${lib}" |
172 |
old_libs=1 |
173 |
done |
174 |
- |
175 |
- for lib in \ |
176 |
- "${EROOT}"/lib*/"${GENTOO_GCC_BACKUP_DIR}"/libgcc_s.so.* \ |
177 |
- "${EROOT}"/lib*/"${GENTOO_GCC_BACKUP_DIR}"/libunwind.so.* ; do |
178 |
- # If we previously had stuff in /, make sure ldconfig gets re-run. |
179 |
- einfo "Removing '${lib}'" |
180 |
- rm -f "${lib}" |
181 |
- old_libs=1 |
182 |
- done |
183 |
- |
184 |
${saved_nullglob} |
185 |
return ${old_libs} |
186 |
fi |
187 |
@@ -345,7 +329,7 @@ handle_split_usr() { |
188 |
# Only bother with this stuff for the native ABI. We assume the user |
189 |
# doesn't have critical binaries for non-native ABIs which is fair. |
190 |
local gcclib |
191 |
- local libdir="${EROOT}/${GENTOO_LIBDIR}/${GENTOO_GCC_BACKUP_DIR}" |
192 |
+ local libdir="${EROOT}${GENTOO_LIBDIR}" |
193 |
mkdir -p "${libdir}"/.gcc.config.new || return 0 # !?!?! |
194 |
for gcclib in gcc_s unwind ; do |
195 |
# This assumes that we always have the .so symlink, |