Lines 7-23
Link Here
|
7 |
# config-TARGET: CURRENT=version for TARGET |
7 |
# config-TARGET: CURRENT=version for TARGET |
8 |
# TARGET-VER: has a TARGET and VER variable |
8 |
# TARGET-VER: has a TARGET and VER variable |
9 |
|
9 |
|
|
|
10 |
EPREFIX="@GENTOO_PORTAGE_EPREFIX@" |
11 |
if [[ ${EPREFIX} == "@"GENTOO_PORTAGE_EPREFIX"@" ]] ; then |
12 |
EPREFIX="" |
13 |
fi |
14 |
|
10 |
: ${ROOT:=/} |
15 |
: ${ROOT:=/} |
11 |
[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" |
16 |
[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" |
12 |
[[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}" |
17 |
[[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}" |
|
|
18 |
EROOT="${ROOT%/}${EPREFIX}/" |
13 |
|
19 |
|
14 |
cd / |
20 |
cd "${EPREFIX}" |
15 |
|
21 |
|
16 |
trap ":" INT QUIT TSTP |
22 |
trap ":" INT QUIT TSTP |
17 |
|
23 |
|
18 |
argv0=${0##*/} |
24 |
argv0=${0##*/} |
19 |
source /etc/init.d/functions.sh || { |
25 |
source "${EPREFIX}"/etc/init.d/functions.sh || { |
20 |
echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 |
26 |
echo "${argv0}: Could not source ${EPREFIX}/etc/init.d/functions.sh!" 1>&2 |
21 |
exit 1 |
27 |
exit 1 |
22 |
} |
28 |
} |
23 |
esyslog() { :; } |
29 |
esyslog() { :; } |
Lines 123-136
Link Here
|
123 |
# Newer paths: /usr/${HOST}/${TARGET}/... |
129 |
# Newer paths: /usr/${HOST}/${TARGET}/... |
124 |
# Older paths: /usr/${TARGET}/... |
130 |
# Older paths: /usr/${TARGET}/... |
125 |
# |
131 |
# |
126 |
if [[ -d ${ROOT}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then |
132 |
if [[ -d ${EROOT}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then |
127 |
BINPATH=/usr/${HOST}/${TARGET}/binutils-bin/${VER} |
133 |
BINPATH="${EPREFIX}"/usr/${HOST}/${TARGET}/binutils-bin/${VER} |
128 |
BINPATH_LINKS=/usr/libexec/gcc/${TARGET} |
134 |
BINPATH_LINKS="${EPREFIX}"/usr/libexec/gcc/${TARGET} |
129 |
fi |
135 |
fi |
130 |
fi |
136 |
fi |
131 |
if [[ -z ${BINPATH} ]] ; then |
137 |
if [[ -z ${BINPATH} ]] ; then |
132 |
BINPATH=/usr/${TARGET}/binutils-bin/${VER} |
138 |
BINPATH="${EPREFIX}"/usr/${TARGET}/binutils-bin/${VER} |
133 |
BINPATH_LINKS=/usr/${TARGET}/bin |
139 |
BINPATH_LINKS="${EPREFIX}"/usr/${TARGET}/bin |
134 |
fi |
140 |
fi |
135 |
} |
141 |
} |
136 |
|
142 |
|
Lines 140-155
Link Here
|
140 |
setup_env || return 1 |
146 |
setup_env || return 1 |
141 |
|
147 |
|
142 |
cd "${ROOT}/${BINPATH}" || exit 1 |
148 |
cd "${ROOT}/${BINPATH}" || exit 1 |
143 |
mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" |
149 |
mkdir -p "${ROOT}/${BINPATH_LINKS}" "${EROOT}/usr/bin" |
144 |
for x in * ; do |
150 |
for x in * ; do |
145 |
atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}" |
151 |
atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}" |
146 |
atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin/" "${TARGET}-${x}" |
152 |
atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin/" "${TARGET}-${x}" |
147 |
for fake in ${FAKE_TARGETS} ; do |
153 |
for fake in ${FAKE_TARGETS} ; do |
148 |
[[ -f ${ENV_D}/config-${fake} ]] && continue |
154 |
[[ -f ${ENV_D}/config-${fake} ]] && continue |
149 |
atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${fake}-${x}" |
155 |
atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${fake}-${x}" |
150 |
done |
156 |
done |
151 |
if [[ ${TARGET} == ${HOST} ]] ; then |
157 |
if [[ ${TARGET} == ${HOST} ]] ; then |
152 |
atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}" |
158 |
atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}" |
153 |
fi |
159 |
fi |
154 |
done |
160 |
done |
155 |
|
161 |
|
Lines 159-167
Link Here
|
159 |
: ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} |
165 |
: ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} |
160 |
cd "${ROOT}/${LIBPATH}" || exit 1 |
166 |
cd "${ROOT}/${LIBPATH}" || exit 1 |
161 |
if [[ ${TARGET} == ${HOST} ]] ; then |
167 |
if [[ ${TARGET} == ${HOST} ]] ; then |
162 |
dstlib=${ROOT}/usr/${HOST}/lib |
168 |
dstlib=${EROOT}/usr/${HOST}/lib |
163 |
else |
169 |
else |
164 |
dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib |
170 |
dstlib=${EROOT}/usr/${HOST}/${TARGET}/lib |
165 |
fi |
171 |
fi |
166 |
# When upgrading, we need to clean up ldscripts and libs |
172 |
# When upgrading, we need to clean up ldscripts and libs |
167 |
mkdir -p "${dstlib}" |
173 |
mkdir -p "${dstlib}" |
Lines 179-194
Link Here
|
179 |
if [[ -d ${ROOT}/${INCPATH} ]] ; then |
185 |
if [[ -d ${ROOT}/${INCPATH} ]] ; then |
180 |
cd "${ROOT}/${INCPATH}" || exit 1 |
186 |
cd "${ROOT}/${INCPATH}" || exit 1 |
181 |
if [[ ${HOST} == ${TARGET} ]] ; then |
187 |
if [[ ${HOST} == ${TARGET} ]] ; then |
182 |
mkdir -p "${ROOT}/usr/include" |
188 |
mkdir -p "${EROOT}/usr/include" |
183 |
for x in * ; do |
189 |
for x in * ; do |
184 |
atomic_ln "${INCPATH}/${x}" "${ROOT}/usr/include" "${x}" |
190 |
atomic_ln "${INCPATH}/${x}" "${EROOT}/usr/include" "${x}" |
185 |
done |
191 |
done |
186 |
else |
192 |
else |
187 |
# Clean out old path -- cannot use '-exec {} +' syntax here |
193 |
# Clean out old path -- cannot use '-exec {} +' syntax here |
188 |
find . -type f -exec rm -f "${ROOT}/usr/${TARGET}/usr/include/{}" \; |
194 |
find . -type f -exec rm -f "${EROOT}/usr/${TARGET}/usr/include/{}" \; |
189 |
rmdir "${ROOT}/usr/${TARGET}/usr/include" >& /dev/null |
195 |
rmdir "${EROOT}/usr/${TARGET}/usr/include" >& /dev/null |
190 |
rmdir "${ROOT}/usr/${TARGET}/usr" >& /dev/null |
196 |
rmdir "${EROOT}/usr/${TARGET}/usr" >& /dev/null |
191 |
rmdir "${ROOT}/usr/${TARGET}" >& /dev/null |
197 |
rmdir "${EROOT}/usr/${TARGET}" >& /dev/null |
192 |
fi |
198 |
fi |
193 |
fi |
199 |
fi |
194 |
|
200 |
|
Lines 196-215
Link Here
|
196 |
# Make sure proper paths get updated |
202 |
# Make sure proper paths get updated |
197 |
# |
203 |
# |
198 |
if [[ ${TARGET} == ${HOST} ]] ; then |
204 |
if [[ ${TARGET} == ${HOST} ]] ; then |
199 |
DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} |
205 |
DATAPATH="${EPREFIX}"/usr/share/binutils-data/${TARGET}/${VER} |
200 |
local e="${ROOT}"/etc/env.d/05binutils |
206 |
local e="${EROOT}"/etc/env.d/05binutils |
201 |
local ee="${e}.tmp" |
207 |
local ee="${e}.tmp" |
202 |
rm -f "${ee}" |
208 |
rm -f "${ee}" |
203 |
[[ -d ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" |
209 |
[[ -d ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" |
204 |
[[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" |
210 |
[[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" |
205 |
# hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... |
211 |
# hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... |
206 |
if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then |
212 |
if [[ -d ${EROOT}/etc/ld.so.conf.d ]] ; then |
207 |
local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf |
213 |
local l="${EROOT}"/etc/ld.so.conf.d/05binutils.conf |
208 |
local ll="${l}.tmp" |
214 |
local ll="${l}.tmp" |
209 |
echo "/usr/${TARGET}/lib" > "${ll}" |
215 |
echo "/usr/${TARGET}/lib" > "${ll}" |
210 |
mv_if_diff "${ll}" "${l}" |
216 |
mv_if_diff "${ll}" "${l}" |
211 |
else |
217 |
else |
212 |
echo "LDPATH=/usr/${TARGET}/lib" >> "${ee}" |
218 |
echo "LDPATH=${EPREFIX}/usr/${TARGET}/lib" >> "${ee}" |
213 |
fi |
219 |
fi |
214 |
mv_if_diff "${ee}" "${e}" |
220 |
mv_if_diff "${ee}" "${e}" |
215 |
fi |
221 |
fi |
Lines 254-260
Link Here
|
254 |
die "no profiles exist for '${TARGET}'" |
260 |
die "no profiles exist for '${TARGET}'" |
255 |
fi |
261 |
fi |
256 |
|
262 |
|
257 |
rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf |
263 |
rm -f "${ENV_D}"/config-${TARGET} "${EROOT}"/etc/ld.so.conf.d/05binutils.conf |
258 |
|
264 |
|
259 |
# XXX: we still leave behind FAKE_TARGETS in /usr/bin ... |
265 |
# XXX: we still leave behind FAKE_TARGETS in /usr/bin ... |
260 |
local x |
266 |
local x |
Lines 264-291
Link Here
|
264 |
nm objcopy objdump ranlib readelf size strings strip |
270 |
nm objcopy objdump ranlib readelf size strings strip |
265 |
do |
271 |
do |
266 |
x=( |
272 |
x=( |
267 |
"${ROOT}"/usr/bin/${TARGET}-${x} |
273 |
"${EROOT}"/usr/bin/${TARGET}-${x} |
268 |
"${ROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} |
274 |
"${EROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} |
269 |
"${ROOT}"/usr/libexec/gcc/${TARGET}/${x} |
275 |
"${EROOT}"/usr/libexec/gcc/${TARGET}/${x} |
270 |
) |
276 |
) |
271 |
rm -f "${x[@]}" |
277 |
rm -f "${x[@]}" |
272 |
done |
278 |
done |
273 |
for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do |
279 |
for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do |
274 |
rm -f "${ROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x} |
280 |
rm -f "${EROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x} |
275 |
done |
281 |
done |
276 |
for x in bfd iberty opcodes ; do |
282 |
for x in bfd iberty opcodes ; do |
277 |
rm -f "${ROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la} |
283 |
rm -f "${EROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la} |
278 |
done |
284 |
done |
279 |
# Delete broken symlinks |
285 |
# Delete broken symlinks |
280 |
local destdir="${ROOT}/usr/${HOST}/${TARGET}" |
286 |
local destdir="${EROOT}/usr/${HOST}/${TARGET}" |
281 |
rm -f "${destdir}"/lib/ldscripts |
287 |
rm -f "${destdir}"/lib/ldscripts |
282 |
find -L "${destdir}"/lib -type l -exec rm {} + |
288 |
find -L "${destdir}"/lib -type l -exec rm {} + |
283 |
rmdir \ |
289 |
rmdir \ |
284 |
"${destdir}"/{bin,include,lib,usr} \ |
290 |
"${destdir}"/{bin,include,lib,usr} \ |
285 |
"${destdir}" \ |
291 |
"${destdir}" \ |
286 |
"${ROOT}"/var/db/pkg/cross-${TARGET} \ |
292 |
"${EROOT}"/var/db/pkg/cross-${TARGET} \ |
287 |
"${ROOT}"/usr/{${HOST}/,}${TARGET}/bin \ |
293 |
"${EROOT}"/usr/{${HOST}/,}${TARGET}/bin \ |
288 |
"${ROOT}"/usr/libexec/gcc/${TARGET} \ |
294 |
"${EROOT}"/usr/libexec/gcc/${TARGET} \ |
289 |
2>/dev/null |
295 |
2>/dev/null |
290 |
|
296 |
|
291 |
rm -f "${ENV_D}"/${TARGET}-* |
297 |
rm -f "${ENV_D}"/${TARGET}-* |
Lines 384-390
Link Here
|
384 |
: ${HOST:=${CHOST:-$(portageq envvar CHOST)}} |
390 |
: ${HOST:=${CHOST:-$(portageq envvar CHOST)}} |
385 |
} |
391 |
} |
386 |
|
392 |
|
387 |
ENV_D="${ROOT}etc/env.d/binutils" |
393 |
ENV_D="${EROOT}etc/env.d/binutils" |
388 |
|
394 |
|
389 |
DEBUG="no" |
395 |
DEBUG="no" |
390 |
NEED_ACTION="yes" |
396 |
NEED_ACTION="yes" |