Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 531616 | Differences between
and this patch

Collapse All | Expand All

(-)/usr/portage/sys-devel/binutils-config/files/binutils-config-3 (-36 / +42 lines)
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"

Return to bug 531616