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

Collapse All | Expand All

(-)uclibc-0.9.28-r2.ebuild (-67 / +73 lines)
Lines 21-30 fi Link Here
21
21
22
MY_P=uClibc-${PV}
22
MY_P=uClibc-${PV}
23
SVN_VER=""
23
SVN_VER=""
24
PATCH_VER="1.7"
24
PATCH_VER=""
25
DESCRIPTION="C library for developing embedded Linux systems"
25
DESCRIPTION="C library for developing embedded Linux systems"
26
HOMEPAGE="http://www.uclibc.org/"
26
HOMEPAGE="http://www.uclibc.org/"
27
SRC_URI="http://www.kernel.org/pub/linux/libs/uclibc/${MY_P}.tar.bz2
27
SRC_URI="mirror://kernel/linux/libs/uclibc/${MY_P}.tar.bz2
28
	http://uclibc.org/downloads/${MY_P}.tar.bz2
28
	nls? ( !userlocales? ( pregen? (
29
	nls? ( !userlocales? ( pregen? (
29
		x86? ( http://www.uclibc.org/downloads/uClibc-locale-030818.tgz )
30
		x86? ( http://www.uclibc.org/downloads/uClibc-locale-030818.tgz )
30
	) ) )"
31
	) ) )"
Lines 55-63 alt_build_kprefix() { Link Here
55
	if [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] \
56
	if [[ ${CBUILD} == ${CHOST} && ${CTARGET} == ${CHOST} ]] \
56
	   || [[ -n ${UCLIBC_AND_GLIBC} ]]
57
	   || [[ -n ${UCLIBC_AND_GLIBC} ]]
57
	then
58
	then
58
		echo /usr
59
		echo /usr/include
59
	else
60
	else
60
		echo /usr/${CTARGET}/usr
61
		echo /usr/${CTARGET}/usr/include
61
	fi
62
	fi
62
}
63
}
63
just_headers() {
64
just_headers() {
Lines 70-77 uclibc_endian() { Link Here
70
	touch "${T}"/endian.s
71
	touch "${T}"/endian.s
71
	$(tc-getAS) "${T}"/endian.s -o "${T}"/endian.o
72
	$(tc-getAS) "${T}"/endian.s -o "${T}"/endian.o
72
	case $(file "${T}"/endian.o) in
73
	case $(file "${T}"/endian.o) in
73
		*" MSB "*) echo "big";;
74
		*" MSB "*) echo "BIG";;
74
		*" LSB "*) echo "little";;
75
		*" LSB "*) echo "LITTLE";;
75
		*)         echo "NFC";;
76
		*)         echo "NFC";;
76
	esac
77
	esac
77
	rm -f "${T}"/endian.{s,o}
78
	rm -f "${T}"/endian.{s,o}
Lines 140-145 check_cpu_opts() { Link Here
140
	fi
141
	fi
141
}
142
}
142
143
144
set_opt() {
145
	sed -i "/^\# $1 is not set/d; /^$1=.*/d" .config
146
	echo "$1=$2" >> .config
147
}
148
143
src_unpack() {
149
src_unpack() {
144
	[[ -n ${ESVN_REPO_URI} ]] \
150
	[[ -n ${ESVN_REPO_URI} ]] \
145
		&& subversion_src_unpack \
151
		&& subversion_src_unpack \
Lines 173-178 src_unpack() { Link Here
173
		epatch "${WORKDIR}"/patch/math
179
		epatch "${WORKDIR}"/patch/math
174
	fi
180
	fi
175
181
182
	epatch "${FILESDIR}/${P}-inet_network.patch"
183
	epatch "${FILESDIR}/${P}-net-tools_compile.patch"
184
176
	########## CPU SELECTION ##########
185
	########## CPU SELECTION ##########
177
186
178
	local target config_target
187
	local target config_target
Lines 189-237 src_unpack() { Link Here
189
		x86)   target="i386";    config_target="GENERIC_386";;
198
		x86)   target="i386";    config_target="GENERIC_386";;
190
		*)     die "$(tc-arch) lists no defaults :/";;
199
		*)     die "$(tc-arch) lists no defaults :/";;
191
	esac
200
	esac
192
	sed -i -e "s:default TARGET_i386:default TARGET_${target}:" \
193
		extra/Configs/Config.in
194
	sed -i -e "s:default CONFIG_${config_target}:default CONFIG_${UCLIBC_CPU:-${config_target}}:" \
201
	sed -i -e "s:default CONFIG_${config_target}:default CONFIG_${UCLIBC_CPU:-${config_target}}:" \
195
		extra/Configs/Config.${target}
202
		extra/Configs/Config.${target}
203
	sed -i -e "s:^HOSTCC.*=.*:HOSTCC=$(tc-getBUILD_CC):" Rules.mak
196
204
197
	########## CONFIG SETUP ##########
205
	########## CONFIG SETUP ##########
198
206
199
	make defconfig >/dev/null || die "could not config"
207
	make ARCH=${target} defconfig >/dev/null || die "could not config"
200
208
201
	for def in DO{DEBUG{,_PT},ASSERTS} SUPPORT_LD_DEBUG{,_EARLY} ; do
209
	for def in DO{DEBUG{,_PT},ASSERTS} SUPPORT_LD_DEBUG{,_EARLY} ; do
202
		sed -i -e "s:${def}=y:# ${def} is not set:" .config
210
		sed -i -e "s:${def}=y:# ${def} is not set:" .config
203
	done
211
	done
204
	if use debug ; then
212
	if use debug ; then
205
		#echo "SUPPORT_LD_DEBUG_EARLY=y" >> .config
213
		set_opt SUPPORT_LD_DEBUG y
206
		echo "SUPPORT_LD_DEBUG=y" >> .config
214
		set_opt DODEBUG y
207
		echo "DODEBUG=y" >> .config
208
		#echo "DODEBUG_PT=y" >> .config
209
	fi
215
	fi
210
216
211
	sed -i -e '/ARCH_.*_ENDIAN/d' .config
217
	sed -i -e '/ARCH_.*_ENDIAN/d' .config
212
	echo "ARCH_$(uclibc_endian | tr [a-z] [A-Z])_ENDIAN=y" >> .config
218
	set_opt "ARCH_WANTS_$(uclibc_endian | tr [a-z] [A-Z])_ENDIAN" y
213
219
214
	if [[ $(tc-is-softfloat) != "no" ]] ; then
220
	if [[ $(tc-is-softfloat) != "no" ]] ; then
215
		sed -i -e '/^HAS_FPU=y$/d' .config
221
		set_opt HAS_FPU n
216
		echo 'HAS_FPU=n' >> .config
217
	fi
222
	fi
218
223
219
	local moredefs="DL_FINI_CRT_COMPAT"
224
	local moredefs="COMPAT_ATEXIT"
220
	# We need todo this for a few months. .28 is a major upgrade.
225
	local compat_sym=atexit
226
227
	# We need todo this for a few months. .29 is a major upgrade.
221
	# Don't do it from cross-compiling case though
228
	# Don't do it from cross-compiling case though
222
	if ! use uclibc-compat ; then
229
	if ! use uclibc-compat ; then
223
		if [[ -z ${UCLIBC_AND_GLIBC} ]] && [[ -z ${UCLIBC_SCANNED_COMPAT} ]] && \
230
		if [[ -z ${UCLIBC_AND_GLIBC} ]] && [[ -z ${UCLIBC_SCANNED_COMPAT} ]] && \
224
		   ! just_headers && [[ ${CHOST} == ${CTARGET} ]] ; then
231
		   ! just_headers && [[ ${CHOST} == ${CTARGET} ]] ; then
225
			local fnames=""
232
			local fnames=""
226
			einfo "Doing a scanelf in paths for bins containing the __uClibc_start_main symbol"
233
			einfo "Doing a scanelf in paths for bins containing the	${compat_sym} symbol"
227
			fnames=$(scanelf -pyqs__uClibc_start_main -F%F#s)
234
			fnames=$(scanelf -pyqs${compat_sym} -F%F#s)
228
			if [[ -z ${fnames} ]] ; then
235
			if [[ -z ${fnames} ]] ; then
229
				einfo "This system is clean."
236
				einfo "This system is clean."
230
				einfo "To prevent the scanning of files again in the future you can export UCLIBC_SCANNED_COMPAT=1"
237
				einfo "To prevent the scanning of files again in the future you can export UCLIBC_SCANNED_COMPAT=1"
231
				moredefs=""
238
				moredefs=""
232
			else
239
			else
233
				ewarn "You need to remerge the packages that contain the following files before you can remerge ${P} without USE=uclibc-compat enabled."
240
				ewarn "You need to remerge the packages that contain the following files before you can remerge ${P} without USE=uclibc-compat enabled."
234
				ewarn "qfile ${fnames}"
241
				ewarn "qfile -Cq $(echo ${fnames}) | sort | uniq"
235
				echo
242
				echo
236
				ewarn "Leaving on ${moredefs}"
243
				ewarn "Leaving on ${moredefs}"
237
			fi
244
			fi
Lines 239-266 src_unpack() { Link Here
239
			moredefs=""
246
			moredefs=""
240
		fi
247
		fi
241
	fi
248
	fi
242
	for def in ${moredefs} MALLOC_GLIBC_COMPAT DO_C99_MATH UCLIBC_HAS_{RPC,CTYPE_CHECKED,WCHAR,HEXADECIMAL_FLOATS,GLIBC_CUSTOM_PRINTF,FOPEN_EXCLUSIVE_MODE,GLIBC_CUSTOM_STREAMS,PRINTF_M_SPEC,FTW} ; do
249
	for def in ${moredefs} MALLOC_GLIBC_COMPAT DO_C99_MATH UCLIBC_HAS_{RPC,FULL_RPC,CTYPE_CHECKED,WCHAR,HEXADECIMAL_FLOATS,GLIBC_CUSTOM_PRINTF,FOPEN_EXCLUSIVE_MODE,GLIBC_CUSTOM_STREAMS,PRINTF_M_SPEC,FTW} ; do
243
		sed -i -e "s:# ${def} is not set:${def}=y:" .config
250
		set_opt "${def}" y
244
	done
251
	done
245
	echo "UCLIBC_HAS_FULL_RPC=y" >> .config
252
	set_opt UCLIBC_HAS_CTYPE_UNSAFE n
246
	echo "PTHREADS_DEBUG_SUPPORT=y" >> .config
253
	set_opt UCLIBC_HAS_REENTRANT_RPC n
247
	echo "UCLIBC_HAS_TZ_FILE_READ_MANY=n" >> .config
254
	set_opt PTHREADS_DEBUG_SUPPORT y
255
	set_opt UCLIBC_HAS_TZ_FILE_READ_MANY n
256
	set_opt UCLIBC_SUSV3_LEGACY y
257
	set_opt UCLIBC_SUSV3_LEGACY_MACROS y
248
258
249
	if use iconv ; then
259
	if use iconv ; then
250
		sed -i -e "s:# UCLIBC_HAS_LOCALE is not set:UCLIBC_HAS_LOCALE=y:" .config
260
		set_opt UCLIBC_HAS_LOCALE y
251
		echo "UCLIBC_HAS_XLOCALE=n" >> .config
261
		set_opt UCLIBC_HAS_XLOCALE n
252
		echo "UCLIBC_HAS_GLIBC_DIGIT_GROUPING=y" >> .config
262
		set_opt UCLIBC_HAS_GLIBC_DIGIT_GROUPING y
253
		echo "UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING=y" >> .config
263
		set_opt UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING y
254
264
255
		if use nls ; then
265
		if use nls ; then
256
			echo "UCLIBC_HAS_GETTEXT_AWARENESS=y" >> .config
266
			set_opt UCLIBC_HAS_GETTEXT_AWARENESS y
257
		else
267
		else
258
			echo "UCLIBC_HAS_GETTEXT_AWARENESS=n" >> .config
268
			set_opt UCLIBC_HAS_GETTEXT_AWARENESS n
259
		fi
269
		fi
260
270
261
		if use pregen ; then
271
		if use pregen ; then
262
			echo "UCLIBC_PREGENERATED_LOCALE_DATA=y" >> .config
272
			set_opt UCLIBC_PREGENERATED_LOCALE_DATA y
263
			echo "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA=y" >> .config
273
			set_opt UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA y
264
			if use userlocales ; then
274
			if use userlocales ; then
265
				cp "${DISTDIR}"/${MY_P}-user-locale.tar.gz \
275
				cp "${DISTDIR}"/${MY_P}-user-locale.tar.gz \
266
					extra/locale/uClibc-locale-030818.tgz \
276
					extra/locale/uClibc-locale-030818.tgz \
Lines 271-324 src_unpack() { Link Here
271
					|| die "could not copy locale"
281
					|| die "could not copy locale"
272
			fi
282
			fi
273
		else
283
		else
274
			echo "UCLIBC_PREGENERATED_LOCALE_DATA=n" >> .config
284
			set_opt UCLIBC_PREGENERATED_LOCALE_DATA n
275
		fi
285
		fi
276
	else
286
	else
277
		echo "UCLIBC_HAS_LOCALE=n" >> .config
287
		set_opt UCLIBC_HAS_LOCALE n
278
	fi
288
	fi
279
289
280
	use ipv6 && sed -i -e "s:# UCLIBC_HAS_IPV6 is not set:UCLIBC_HAS_IPV6=y:" .config
290
	use ipv6 && set_opt UCLIBC_HAS_IPV6 y
281
291
282
	# uncomment if you miss wordexp (alsa-lib)
292
	use wordexp && set_opt UCLIBC_HAS_WORDEXP y
283
	use wordexp && sed -i -e "s:# UCLIBC_HAS_WORDEXP is not set:UCLIBC_HAS_WORDEXP=y:" .config
284
293
285
	# we need to do it independently of hardened to get ssp.c built into libc
294
	# we need to do it independently of hardened to get ssp.c built into libc
286
	sed -i -e "s:# UCLIBC_SECURITY.*:UCLIBC_SECURITY=y:" .config
295
287
	echo "UCLIBC_HAS_SSP=y" >> .config
296
	set_opt UCLIBC_HAS_SSP y
288
	echo "SSP_USE_ERANDOM=n" >> .config
297
	set_opt UCLIBC_HAS_SSP_COMPAT y
289
	echo "PROPOLICE_BLOCK_ABRT=n" >> .config
298
	set_opt UCLIBC_HAS_ARC4RANDOM y
290
	if use debug ; then
299
	set_opt PROPOLICE_BLOCK_ABRT n
291
		echo "PROPOLICE_BLOCK_SEGV=y" >> .config
300
	set_opt PROPOLICE_BLOCK_SEGV y
292
		echo "PROPOLICE_BLOCK_KILL=n" >> .config
293
	else
294
		echo "PROPOLICE_BLOCK_SEGV=n" >> .config
295
		echo "PROPOLICE_BLOCK_KILL=y" >> .config
296
	fi
297
301
298
	# arm/mips do not emit PT_GNU_STACK, but if we enable this here
302
	# arm/mips do not emit PT_GNU_STACK, but if we enable this here
299
	# it will be emitted as RWE, ppc has to be checked, x86 needs it
303
	# it will be emitted as RWE, ppc has to be checked, x86 needs it
300
	# this option should be used independently of hardened
304
	# this option should be used independently of hardened
301
	# relro could be also moved out of hardened
305
	# relro could be also moved out of hardened
302
	if has $(tc-arch) x86 ; then
306
	if has $(tc-arch) x86 ; then
303
		echo "UCLIBC_BUILD_NOEXECSTACK=y" >> .config
307
		set_opt UCLIBC_BUILD_NOEXECSTACK y
304
	else
308
	else
305
		echo "UCLIBC_BUILD_NOEXECSTACK=n" >> .config
309
		set_opt UCLIBC_BUILD_NOEXECSTACK n
306
	fi
310
	fi
307
	echo "UCLIBC_BUILD_RELRO=y" >> .config
311
	set_opt UCLIBC_BUILD_RELRO y
308
	if use hardened ; then
312
	if use hardened ; then
309
		if has $(tc-arch) ${PIE_STABLE} ; then
313
		if has $(tc-arch) ${PIE_STABLE} ; then
310
			echo "UCLIBC_BUILD_PIE=y" >> .config
314
			set_opt UCLIBC_BUILD_PIE y
311
		else
315
		else
312
			echo "UCLIBC_BUILD_PIE=n" >> .config
316
			set_opt UCLIBC_BUILD_PIE n
313
		fi
317
		fi
314
		echo "SSP_QUICK_CANARY=n" >> .config
318
		set_opt SSP_QUICK_CANARY n
315
		echo "UCLIBC_BUILD_SSP=y" >> .config
319
		set_opt UCLIBC_BUILD_SSP y
316
		echo "UCLIBC_BUILD_NOW=y" >> .config
320
		set_opt UCLIBC_BUILD_NOW y
317
	else
321
	else
318
		echo "UCLIBC_BUILD_PIE=n" >> .config
322
		set_opt UCLIBC_BUILD_PIE n
319
		echo "SSP_QUICK_CANARY=y" >> .config
323
		set_opt SSP_QUICK_CANARY y
320
		echo "UCLIBC_BUILD_SSP=n" >> .config
324
		set_opt UCLIBC_BUILD_SSP n
321
		echo "UCLIBC_BUILD_NOW=n" >> .config
325
		set_opt UCLIBC_BUILD_NOW n
322
	fi
326
	fi
323
327
324
	# Allow users some custom control over the config
328
	# Allow users some custom control over the config
Lines 341-347 src_unpack() { Link Here
341
	type -p ${cross}ar > /dev/null || cross=""
345
	type -p ${cross}ar > /dev/null || cross=""
342
	sed -i \
346
	sed -i \
343
		-e "/^CROSS_COMPILER_PREFIX/s:=.*:=\"${cross}\":" \
347
		-e "/^CROSS_COMPILER_PREFIX/s:=.*:=\"${cross}\":" \
344
		-e "/^KERNEL_SOURCE/s:=.*:=\"$(alt_build_kprefix)\":" \
348
		-e "/^KERNEL_HEADERS/s:=.*:=\"$(alt_build_kprefix)\":" \
345
		-e "/^SHARED_LIB_LOADER_PREFIX/s:=.*:=\"/$(get_libdir)\":" \
349
		-e "/^SHARED_LIB_LOADER_PREFIX/s:=.*:=\"/$(get_libdir)\":" \
346
		-e "/^DEVEL_PREFIX/s:=.*:=\"/usr\":" \
350
		-e "/^DEVEL_PREFIX/s:=.*:=\"/usr\":" \
347
		-e "/^RUNTIME_PREFIX/s:=.*:=\"/\":" \
351
		-e "/^RUNTIME_PREFIX/s:=.*:=\"/\":" \
Lines 390-398 src_compile() { Link Here
390
	fi
394
	fi
391
395
392
	emake || die "make failed"
396
	emake || die "make failed"
393
	[[ ${CTARGET} != ${CHOST} ]] && return 0
397
	if [[ ${CTARGET} != ${CHOST} ]] ; then
394
398
		emake -C utils hostutils || die "make hostutils failed"
395
	if [[ ${CHOST} == *-uclibc ]] ; then
399
	elif [[ ${CHOST} == *-uclibc ]] ; then
396
		emake utils || die "make utils failed"
400
		emake utils || die "make utils failed"
397
	fi
401
	fi
398
}
402
}
Lines 412-418 src_install() { Link Here
412
416
413
	local target="install"
417
	local target="install"
414
	just_headers && target="install_dev"
418
	just_headers && target="install_dev"
415
	make DESTDIR="${sysroot}" ${target} || die "install failed"
419
	emake DESTDIR="${sysroot}" ${target} || die "install failed"
416
420
417
	# remove files coming from kernel-headers
421
	# remove files coming from kernel-headers
418
	rm -rf "${sysroot}"/usr/include/{linux,asm*}
422
	rm -rf "${sysroot}"/usr/include/{linux,asm*}
Lines 422-427 src_install() { Link Here
422
	# system headers correctly.  See gcc/doc/gccinstall.info
426
	# system headers correctly.  See gcc/doc/gccinstall.info
423
	if [[ ${CTARGET} != ${CHOST} ]] ; then
427
	if [[ ${CTARGET} != ${CHOST} ]] ; then
424
		dosym usr/include /usr/${CTARGET}/sys-include
428
		dosym usr/include /usr/${CTARGET}/sys-include
429
		newbin utils/ldconfig.host ${CTARGET}-ldconfig || die
430
		newbin utils/ldd.host ${CTARGET}-ldd || die
425
		return 0
431
		return 0
426
	fi
432
	fi
427
433

Return to bug 182094