Gentoo Archives: gentoo-commits

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gcc-config:master commit in: gcc-backup/, /
Date: Sat, 07 Sep 2019 22:47:12
Message-Id: 1567896274.04d7a13d933a0fb7266df332ddaa2a2d1141d7be.slyfox@gentoo
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,