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

(-)file_not_specified_in_diff (-39 / +45 lines)
Line  Link Here
0
-- a/binutils-config-4
0
++ b/binutils-config-4
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
[[ ${EPREFIX} = */ ]] && EPREFIX="${EPREFIX%/}"
12
[[ -n ${EPREFIX} && ${EPREFIX} != /* ]] && EPREFIX="${PWD%/}/${EPREFIX}"
13
10
: ${ROOT:=/}
14
: ${ROOT:=/}
11
[[ ${ROOT} != */ ]] && ROOT="${ROOT}/"
15
[[ ${ROOT} != */ ]] && ROOT="${ROOT}/"
12
[[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}"
16
[[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}"
13
17
14
cd /
18
EROOT="${ROOT%/}${EPREFIX}/"
19
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 "@GENTOO_PORTAGE_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 @GENTOO_PORTAGE_EPREFIX@/etc/init.d/functions.sh!" 1>&2
21
	exit 1
27
	exit 1
22
}
28
}
23
esyslog() { :; }
29
esyslog() { :; }
Lines 96-109 setup_env() { Link Here
96
		# Newer paths: /usr/${HOST}/${TARGET}/...
102
		# Newer paths: /usr/${HOST}/${TARGET}/...
97
		# Older paths: /usr/${TARGET}/...
103
		# Older paths: /usr/${TARGET}/...
98
		#
104
		#
99
		if [[ -d ${ROOT}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then
105
		if [[ -d ${ROOT}${EPREFIX}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then
100
			BINPATH=/usr/${HOST}/${TARGET}/binutils-bin/${VER}
106
			BINPATH="${EPREFIX}"/usr/${HOST}/${TARGET}/binutils-bin/${VER}
101
			BINPATH_LINKS=/usr/libexec/gcc/${TARGET}
107
			BINPATH_LINKS="${EPREFIX}"/usr/libexec/gcc/${TARGET}
102
		fi
108
		fi
103
	fi
109
	fi
104
	if [[ -z ${BINPATH} ]] ; then
110
	if [[ -z ${BINPATH} ]] ; then
105
		BINPATH=/usr/${TARGET}/binutils-bin/${VER}
111
		BINPATH="${EPREFIX}"/usr/${TARGET}/binutils-bin/${VER}
106
		BINPATH_LINKS=/usr/${TARGET}/bin
112
		BINPATH_LINKS="${EPREFIX}"/usr/${TARGET}/bin
107
	fi
113
	fi
108
}
114
}
109
115
Lines 113-136 switch_profile() { Link Here
113
	setup_env || return 1
119
	setup_env || return 1
114
120
115
	cd "${ROOT}/${BINPATH}" || exit 1
121
	cd "${ROOT}/${BINPATH}" || exit 1
116
	mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin"
122
	mkdir -p "${ROOT}/${BINPATH_LINKS}" "${EROOT}/usr/bin"
117
	for x in * ; do
123
	for x in * ; do
118
		atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}"
124
		atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}"
119
		atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${TARGET}-${x}"
125
		atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${TARGET}-${x}"
120
		if [[ ${TARGET} == ${HOST} ]] ; then
126
		if [[ ${TARGET} == ${HOST} ]] ; then
121
			atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}"
127
			atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}"
122
		fi
128
		fi
123
	done
129
	done
124
130
125
	#
131
	#
126
	# Generate library / ldscripts symlinks
132
	# Generate library / ldscripts symlinks
127
	#
133
	#
128
	: ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}}
134
	: ${LIBPATH:=${EPREFIX}/usr/lib/binutils/${TARGET}/${VER}}
129
	cd "${ROOT}/${LIBPATH}" || exit 1
135
	cd "${ROOT}/${LIBPATH}" || exit 1
130
	if [[ ${TARGET} == ${HOST} ]] ; then
136
	if [[ ${TARGET} == ${HOST} ]] ; then
131
		dstlib=${ROOT}/usr/${HOST}/lib
137
		dstlib=${EROOT}/usr/${HOST}/lib
132
	else
138
	else
133
		dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib
139
		dstlib=${EROOT}/usr/${HOST}/${TARGET}/lib
134
	fi
140
	fi
135
	# When upgrading, we need to clean up ldscripts and libs
141
	# When upgrading, we need to clean up ldscripts and libs
136
	mkdir -p "${dstlib}"
142
	mkdir -p "${dstlib}"
Lines 148-163 switch_profile() { Link Here
148
	if [[ -d ${ROOT}/${INCPATH} ]] ; then
154
	if [[ -d ${ROOT}/${INCPATH} ]] ; then
149
		cd "${ROOT}/${INCPATH}" || exit 1
155
		cd "${ROOT}/${INCPATH}" || exit 1
150
		if [[ ${HOST} == ${TARGET} ]] ; then
156
		if [[ ${HOST} == ${TARGET} ]] ; then
151
			mkdir -p "${ROOT}/usr/include"
157
			mkdir -p "${EROOT}/usr/include"
152
			for x in * ; do
158
			for x in * ; do
153
				atomic_ln "${INCPATH}/${x}" "${ROOT}/usr/include" "${x}"
159
				atomic_ln "${INCPATH}/${x}" "${EROOT}/usr/include" "${x}"
154
			done
160
			done
155
		else
161
		else
156
			# Clean out old path -- cannot use '-exec {} +' syntax here
162
			# Clean out old path -- cannot use '-exec {} +' syntax here
157
			find . -type f -exec rm -f "${ROOT}/usr/${TARGET}/usr/include/{}" \;
163
			find . -type f -exec rm -f "${EROOT}/usr/${TARGET}/usr/include/{}" \;
158
			rmdir "${ROOT}/usr/${TARGET}/usr/include" >& /dev/null
164
			rmdir "${EROOT}/usr/${TARGET}/usr/include" >& /dev/null
159
			rmdir "${ROOT}/usr/${TARGET}/usr" >& /dev/null
165
			rmdir "${EROOT}/usr/${TARGET}/usr" >& /dev/null
160
			rmdir "${ROOT}/usr/${TARGET}" >& /dev/null
166
			rmdir "${EROOT}/usr/${TARGET}" >& /dev/null
161
		fi
167
		fi
162
	fi
168
	fi
163
169
Lines 165-184 switch_profile() { Link Here
165
	# Make sure proper paths get updated
171
	# Make sure proper paths get updated
166
	#
172
	#
167
	if [[ ${TARGET} == ${HOST} ]] ; then
173
	if [[ ${TARGET} == ${HOST} ]] ; then
168
		DATAPATH=/usr/share/binutils-data/${TARGET}/${VER}
174
		DATAPATH="${EPREFIX}"/usr/share/binutils-data/${TARGET}/${VER}
169
		local e="${ROOT}"/etc/env.d/05binutils
175
		local e="${EROOT}"/etc/env.d/05binutils
170
		local ee="${e}.tmp"
176
		local ee="${e}.tmp"
171
		rm -f "${ee}"
177
		rm -f "${ee}"
172
		[[ -d ${DATAPATH}/man  ]] && echo "MANPATH=${DATAPATH}/man"   >> "${ee}"
178
		[[ -d ${DATAPATH}/man  ]] && echo "MANPATH=${DATAPATH}/man"   >> "${ee}"
173
		[[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}"
179
		[[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}"
174
		# hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ...
180
		# hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ...
175
		if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then
181
		if [[ -d ${EROOT}/etc/ld.so.conf.d ]] ; then
176
			local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf
182
			local l="${EROOT}"/etc/ld.so.conf.d/05binutils.conf
177
			local ll="${l}.tmp"
183
			local ll="${l}.tmp"
178
			echo "/usr/${TARGET}/lib" > "${ll}"
184
			echo "${EPREFIX}/usr/${TARGET}/lib" > "${ll}"
179
			mv_if_diff "${ll}" "${l}"
185
			mv_if_diff "${ll}" "${l}"
180
		else
186
		else
181
			echo "LDPATH=/usr/${TARGET}/lib" >> "${ee}"
187
			echo "LDPATH=${EPREFIX}/usr/${TARGET}/lib" >> "${ee}"
182
		fi
188
		fi
183
		mv_if_diff "${ee}" "${e}"
189
		mv_if_diff "${ee}" "${e}"
184
	fi
190
	fi
Lines 198-204 switch_profile() { Link Here
198
		echo
204
		echo
199
		ewarn "Please remember to run:"
205
		ewarn "Please remember to run:"
200
		echo
206
		echo
201
		ewarn "  # . /etc/profile"
207
		ewarn "  # . ${EPREFIX}/etc/profile"
202
		echo
208
		echo
203
	fi
209
	fi
204
210
Lines 223-229 uninstall_target() { Link Here
223
		die "no profiles exist for '${TARGET}'"
229
		die "no profiles exist for '${TARGET}'"
224
	fi
230
	fi
225
231
226
	rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf
232
	rm -f "${ENV_D}"/config-${TARGET} "${EROOT}"/etc/ld.so.conf.d/05binutils.conf
227
233
228
	local x
234
	local x
229
	for x in \
235
	for x in \
Lines 232-259 uninstall_target() { Link Here
232
		nm objcopy objdump ranlib readelf size strings strip
238
		nm objcopy objdump ranlib readelf size strings strip
233
	do
239
	do
234
		x=(
240
		x=(
235
			"${ROOT}"/usr/bin/${TARGET}-${x}
241
			"${EROOT}"/usr/bin/${TARGET}-${x}
236
			"${ROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x}
242
			"${EROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x}
237
			"${ROOT}"/usr/libexec/gcc/${TARGET}/${x}
243
			"${EROOT}"/usr/libexec/gcc/${TARGET}/${x}
238
		)
244
		)
239
		rm -f "${x[@]}"
245
		rm -f "${x[@]}"
240
	done
246
	done
241
	for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do
247
	for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do
242
		rm -f "${ROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x}
248
		rm -f "${EROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x}
243
	done
249
	done
244
	for x in bfd iberty opcodes ; do
250
	for x in bfd iberty opcodes ; do
245
		rm -f "${ROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la}
251
		rm -f "${EROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la}
246
	done
252
	done
247
	# Delete broken symlinks
253
	# Delete broken symlinks
248
	local destdir="${ROOT}/usr/${HOST}/${TARGET}"
254
	local destdir="${EROOT}/usr/${HOST}/${TARGET}"
249
	rm -f "${destdir}"/lib/ldscripts
255
	rm -f "${destdir}"/lib/ldscripts
250
	find -L "${destdir}"/lib -type l -exec rm {} +
256
	find -L "${destdir}"/lib -type l -exec rm {} +
251
	rmdir \
257
	rmdir \
252
		"${destdir}"/{bin,include,lib,usr} \
258
		"${destdir}"/{bin,include,lib,usr} \
253
		"${destdir}" \
259
		"${destdir}" \
254
		"${ROOT}"/var/db/pkg/cross-${TARGET} \
260
		"${EROOT}"/var/db/pkg/cross-${TARGET} \
255
		"${ROOT}"/usr/{${HOST}/,}${TARGET}/bin \
261
		"${EROOT}"/usr/{${HOST}/,}${TARGET}/bin \
256
		"${ROOT}"/usr/libexec/gcc/${TARGET} \
262
		"${EROOT}"/usr/libexec/gcc/${TARGET} \
257
		2>/dev/null
263
		2>/dev/null
258
264
259
	rm -f "${ENV_D}"/${TARGET}-*
265
	rm -f "${ENV_D}"/${TARGET}-*
Lines 352-358 set_HOST() { Link Here
352
	: ${HOST:=${CHOST:-$(portageq envvar CHOST)}}
358
	: ${HOST:=${CHOST:-$(portageq envvar CHOST)}}
353
}
359
}
354
360
355
ENV_D="${ROOT}etc/env.d/binutils"
361
ENV_D="${EROOT}etc/env.d/binutils"
356
362
357
DEBUG="no"
363
DEBUG="no"
358
NEED_ACTION="yes"
364
NEED_ACTION="yes"

Return to bug 531616