Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-libs/uclibc-ng/
Date: Wed, 08 Feb 2017 15:22:49
Message-Id: 1486567360.568fb817e2be78887e108bf0594cfdde74517322.blueness@gentoo
1 commit: 568fb817e2be78887e108bf0594cfdde74517322
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Wed Feb 8 15:22:21 2017 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Wed Feb 8 15:22:40 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=568fb817
7
8 sys-libs/uclibc-ng: version bump to 1.0.22, keyword masked
9
10 Package-Manager: portage-2.3.3
11
12 sys-libs/uclibc-ng/Manifest | 1 +
13 sys-libs/uclibc-ng/uclibc-ng-1.0.22.ebuild | 412 +++++++++++++++++++++++++++++
14 2 files changed, 413 insertions(+)
15
16 diff --git a/sys-libs/uclibc-ng/Manifest b/sys-libs/uclibc-ng/Manifest
17 index 4d9b5bd98c..b741059944 100644
18 --- a/sys-libs/uclibc-ng/Manifest
19 +++ b/sys-libs/uclibc-ng/Manifest
20 @@ -3,3 +3,4 @@ DIST uClibc-ng-1.0.17.tar.bz2 2769872 SHA256 fb4ab60698256d110bf30678a4cb27f14b3
21 DIST uClibc-ng-1.0.18.tar.bz2 2754404 SHA256 71b2d401025c1235a061cfc80d394760fb37f3611566e105b39dd034f6ed001c SHA512 579ddf4470d684979ba00b71545e7c34ca48d0ad58767222835f95c1401dea5435b6a945390c992e027cc59f2b419a9d835081d08c9d2e6db8b8ddeeed24f5cd WHIRLPOOL 60cd9cc03668af81988d603edc637a8d3dba8276bc0d71e6e915263119c8cf629d293e2da73a57def5b07732cd37f35527b1bc7d3ef01ff09dd6fcc2cf7d3a59
22 DIST uClibc-ng-1.0.19.tar.bz2 2748768 SHA256 139c495d8f71ec31da97e0330b056302ff40f0acba66988fcd737cfb4eb445ed SHA512 d385eca25c4a356b01b6d7acaef63daeeb172769d6306525fb95f62e818aca354cf04fae15af65bc346f19dcfdc601f87e52a8dc95f528d7392648d1b056fe63 WHIRLPOOL 1cc6b64df85df5f9e8c15c9cad3ed5641add20f402657a7d9c6283527ba7feac3c90ce293f2b15578c6d816c19018467336e50cd469a46482c2e4168f2addaf5
23 DIST uClibc-ng-1.0.20.tar.bz2 2414313 SHA256 0d0ee9d4df82958f65088f446ffd7548d88deb1f1b949f9ec3e673decb910597 SHA512 c0d4fc442f087d9bf994a7b84fa12cfae96f2980061cbb39b1c2cf243692d44fcab79d4a686ac5a7889b9081682aa13d013da0ad99cb30ad2b7150bdb19de0de WHIRLPOOL 16035dd540629aa453e023b6ea96eab5e577579e7bb940ed3411107ffd12bc78148e7a14222184207ae40633d30871d9e583c3456a04cc28b96dfd40b287e713
24 +DIST uClibc-ng-1.0.22.tar.bz2 2435181 SHA256 430bebc26545022c5c3e9cebd4ee682db0053b94235e0be5df7eeab7ff19a9e0 SHA512 d29a14813f6b795fbd380a9593742f696cd32ec8fd22001ce092382ca0059357bc921b8eac7d0a6ae2a9cab724b0ddd15f9959ec789b4824a5db820cbd00b6e7 WHIRLPOOL 14336e9e159585472a9a01cb69acc0cb59d8df89769e532c4deec4c1a6a0056d8ff091904163ad9ab29c2c5107fe57f3241c8d4e898fe831f21b1a8e685aaec1
25
26 diff --git a/sys-libs/uclibc-ng/uclibc-ng-1.0.22.ebuild b/sys-libs/uclibc-ng/uclibc-ng-1.0.22.ebuild
27 new file mode 100644
28 index 0000000000..53955c73c9
29 --- /dev/null
30 +++ b/sys-libs/uclibc-ng/uclibc-ng-1.0.22.ebuild
31 @@ -0,0 +1,412 @@
32 +# Copyright 1999-2017 Gentoo Foundation
33 +# Distributed under the terms of the GNU General Public License v2
34 +# $Id$
35 +
36 +EAPI="6"
37 +
38 +inherit flag-o-matic multilib savedconfig toolchain-funcs versionator
39 +
40 +if [[ ${PV} == "9999" ]] ; then
41 + EGIT_REPO_URI="git://uclibc-ng.org/git/uclibc-ng"
42 + inherit git-r3
43 + MY_P=uclibc-ng-${PV}
44 +else
45 + MY_P=uClibc-ng-${PV}
46 +fi
47 +
48 +DESCRIPTION="C library for developing embedded Linux systems"
49 +HOMEPAGE="http://www.uclibc-ng.org/"
50 +if [[ ${PV} != "9999" ]] ; then
51 + PATCH_VER=""
52 + SRC_URI="http://downloads.uclibc-ng.org/releases/${PV}/${MY_P}.tar.bz2"
53 + #KEYWORDS="-* ~amd64 ~arm ~mips ~ppc ~x86"
54 + KEYWORDS=""
55 +fi
56 +
57 +LICENSE="LGPL-2"
58 +SLOT="0"
59 +IUSE="debug hardened iconv ipv6 rpc symlink-compat crosscompile_opts_headers-only"
60 +RESTRICT="strip"
61 +
62 +# 1) We can't upgrade from uclibc to uclibc-ng via a soft blocker since portage
63 +# will delete the ld.so sym link prematurely and break the system. So we
64 +# will hard block and give manual migration instructions.
65 +# 2) Currently uclibc and uclibc-ng's iconv are in bad shape. We've been using
66 +# the breakout library. The disadvantage here is that we have to sprinkle
67 +# LDFAGS=-liconv on build systems that need to link against libiconv.
68 +RDEPEND="
69 + !!sys-libs/uclibc
70 + iconv? ( dev-libs/libiconv )"
71 +
72 +S=${WORKDIR}/${MY_P}
73 +
74 +export CBUILD=${CBUILD:-${CHOST}}
75 +export CTARGET=${CTARGET:-${CHOST}}
76 +if [[ ${CHOST} == ${CTARGET} ]] ; then
77 + if [[ ${CATEGORY} == cross-* ]] ; then
78 + export CTARGET=${CATEGORY#cross-}
79 + fi
80 +fi
81 +
82 +is_crosscompile() {
83 + [[ ${CHOST} != ${CTARGET} ]]
84 +}
85 +
86 +alt_build_kprefix() {
87 + if [[ ${CBUILD} == ${CHOST} && ${CHOST} == ${CTARGET} ]] ; then
88 + echo /usr/include
89 + else
90 + echo /usr/${CTARGET}/usr/include
91 + fi
92 +}
93 +
94 +just_headers() {
95 + use crosscompile_opts_headers-only && is_crosscompile
96 +}
97 +
98 +uclibc_endian() {
99 + # XXX: this wont work for a toolchain which is bi-endian, but we
100 + # dont have any such thing at the moment, so not a big deal
101 + touch "${T}"/endian.s
102 + $(tc-getAS ${CTARGET}) "${T}"/endian.s -o "${T}"/endian.o
103 + case $(file "${T}"/endian.o) in
104 + *" MSB "*) echo "BIG";;
105 + *" LSB "*) echo "LITTLE";;
106 + *) echo "NFC";;
107 + esac
108 + rm -f "${T}"/endian.{s,o}
109 +}
110 +
111 +kconfig_q_opt() {
112 + local flag=$1; shift
113 + case ${flag} in
114 + y|n) ;;
115 + *) flag=$(usex ${flag} y n) ;;
116 + esac
117 +
118 + local var="defs_${flag}"
119 + eval "${var}+=( $* )"
120 +}
121 +
122 +get_opt() {
123 + (
124 + unset ${1}
125 + . ${2:-"${S}"/.config}
126 + echo ${!1}
127 + )
128 +}
129 +
130 +make_oldconfig() {
131 + yes "" 2>/dev/null | emake -s oldconfig >/dev/null
132 +}
133 +
134 +make_config() {
135 + restore_config .config
136 + if [ -f .config ]; then
137 + make_oldconfig
138 + return 0
139 + else
140 + ewarn "Could not locate user configfile, so we will save a default one"
141 + fi
142 +
143 + emake ARCH=$1 defconfig >/dev/null
144 +
145 + local defs_{y,n}
146 +
147 + # These are forced off
148 + defs_n=(
149 + DOASSERTS
150 + DODEBUG_PT
151 + HAS_NO_THREADS
152 + PROPOLICE_BLOCK_ABRT
153 + SSP_QUICK_CANARY
154 + SUPPORT_LD_DEBUG_EARLY
155 + UCLIBC_HAS_CTYPE_UNSAFE
156 + UCLIBC_HAS_LOCALE
157 + UCLIBC_HAS_SSP_COMPAT
158 + )
159 +
160 + # These are forced on
161 + defs_y=(
162 + COMPAT_ATEXIT
163 + DO_C99_MATH
164 + DO_XSI_MATH
165 + FORCE_SHAREABLE_TEXT_SEGMENTS
166 + LDSO_GNU_HASH_SUPPORT
167 + LDSO_PRELINK_SUPPORT
168 + LDSO_PRELOAD_FILE_SUPPORT
169 + LDSO_RUNPATH_OF_EXECUTABLE
170 + LDSO_STANDALONE_SUPPORT
171 + MALLOC_GLIBC_COMPAT
172 + PROPOLICE_BLOCK_SEGV
173 + PTHREADS_DEBUG_SUPPORT
174 + UCLIBC_HAS_ARC4RANDOM
175 + UCLIBC_HAS_BACKTRACE
176 + UCLIBC_HAS_BSD_RES_CLOSE
177 + UCLIBC_HAS_CONTEXT_FUNCS
178 + UCLIBC_HAS_CTYPE_CHECKED
179 + UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
180 + UCLIBC_HAS_FENV
181 + UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE
182 + UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
183 + UCLIBC_HAS_FOPEN_LARGEFILE_MODE
184 + UCLIBC_HAS_FTS
185 + UCLIBC_HAS_FTW
186 + UCLIBC_HAS_GETPT
187 + UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
188 + UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
189 + UCLIBC_HAS_GNU_GLOB
190 + UCLIBC_HAS_HEXADECIMAL_FLOATS
191 + UCLIBC_HAS_LIBNSL_STUB
192 + UCLIBC_HAS_LIBRESOLV_STUB
193 + UCLIBC_HAS_LIBUTIL
194 + UCLIBC_HAS_NFTW
195 + UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
196 + UCLIBC_HAS_OBSTACK
197 + UCLIBC_HAS_PRINTF_M_SPEC
198 + UCLIBC_HAS_PROGRAM_INVOCATION_NAME
199 + UCLIBC_HAS_RESOLVER_SUPPORT
200 + UCLIBC_HAS_SHA256_CRYPT_IMPL
201 + UCLIBC_HAS_SHA512_CRYPT_IMPL
202 + UCLIBC_HAS_SSP
203 + UCLIBC_HAS_STUBS
204 + UCLIBC_HAS_SYS_ERRLIST
205 + UCLIBC_HAS_SYS_SIGLIST
206 + UCLIBC_HAS_THREADS_NATIVE
207 + UCLIBC_HAS_TZ_FILE_READ_MANY
208 + UCLIBC_HAS_UTMP
209 + UCLIBC_HAS_UTMPX
210 + UCLIBC_HAS_WCHAR
211 + UCLIBC_HAS_WORDEXP
212 + UCLIBC_NTP_LEGACY
213 + UCLIBC_SUPPORT_AI_ADDRCONFIG
214 + UCLIBC_SUSV2_LEGACY
215 + UCLIBC_SUSV3_LEGACY
216 + UCLIBC_SUSV3_LEGACY_MACROS
217 + UCLIBC_SUSV4_LEGACY
218 + UCLIBC_USE_NETLINK
219 + )
220 +
221 + sed -i -e '/ARCH_.*_ENDIAN/d' .config
222 + kconfig_q_opt y "ARCH_WANTS_$(uclibc_endian)_ENDIAN"
223 +
224 + kconfig_q_opt debug DODEBUG
225 + kconfig_q_opt debug SUPPORT_LD_DEBUG
226 + kconfig_q_opt debug UCLIBC_HAS_PROFILING
227 +
228 + kconfig_q_opt ipv6 UCLIBC_HAS_IPV6
229 +
230 + kconfig_q_opt rpc UCLIBC_HAS_RPC
231 + kconfig_q_opt rpc UCLIBC_HAS_FULL_RPC
232 + kconfig_q_opt rpc UCLIBC_HAS_REENTRANT_RPC
233 +
234 + kconfig_q_opt hardened UCLIBC_BUILD_NOEXECSTACK
235 + kconfig_q_opt hardened UCLIBC_BUILD_NOW
236 + kconfig_q_opt hardened UCLIBC_BUILD_PIE
237 + kconfig_q_opt hardened UCLIBC_BUILD_RELRO
238 + kconfig_q_opt hardened UCLIBC_BUILD_SSP
239 +
240 + local count def
241 + for count in 1 2 ; do
242 + # Run twice as some config opts depend on others being enabled first.
243 + for def in ${defs_y[@]} ; do
244 + sed -i -e "s|.*\<${def}\>.*set|${def}=y|g" .config
245 + done
246 + for def in ${defs_n[@]} ; do
247 + sed -i -e "s|${def}=y|# ${def} is not set|g" .config
248 + done
249 + make_oldconfig
250 + done
251 +
252 + einfo "Enabled options:"
253 + for def in ${defs_y[@]} ; do
254 + einfo " " $(grep "^${def}=y" .config || echo "could not find ${def}")
255 + done
256 + einfo "Disabled options:"
257 + for def in ${defs_n[@]} ; do
258 + einfo " " $(grep "^# ${def} is not set" .config || echo "could not find ${def}")
259 + done
260 +
261 + # setup build and run paths
262 + sed -i \
263 + -e "/^CROSS_COMPILER_PREFIX/s|=.*|=\"${CTARGET}-\"|" \
264 + -e "/^KERNEL_HEADERS/s|=.*|=\"$(alt_build_kprefix)\"|" \
265 + -e "/^SHARED_LIB_LOADER_PREFIX/s|=.*|=\"/$(get_libdir)\"|" \
266 + -e "/^DEVEL_PREFIX/s|=.*|=\"/usr\"|" \
267 + -e "/^RUNTIME_PREFIX/s|=.*|=\"/\"|" \
268 + -e "/^UCLIBC_EXTRA_CFLAGS/s|=.*|=\"${UCLIBC_EXTRA_CFLAGS}\"|" \
269 + .config || die
270 +
271 + make_oldconfig
272 +}
273 +
274 +pkg_setup() {
275 + # Make sure our CHOST is a uclibc toolchain for native compiling
276 + if [[ ${CHOST} == ${CTARGET} ]]; then
277 + case ${CHOST} in
278 + *-uclinux*|*-uclibc*) ;;
279 + *) die "Use sys-devel/crossdev to build a uclibc toolchain" ;;
280 + esac
281 + fi
282 +
283 + # uClibc-ng doesn't carry old Linux threads, and since we force
284 + # threading our only choice is NPTL which requires i486 and later.
285 + [[ ${CTARGET} == i386* ]] && die "i386 can't support Native Posix Threads (NPTL)."
286 +}
287 +
288 +src_prepare() {
289 + local version subversion extraversion
290 +
291 + # uclibc-ng tries to create a two sym link with ld.so,
292 + # ld-uClibc.so.{0,MAJOR_VERSION} -> ld-uClibc-<version>.so
293 + # where MAJOR_VERSION != 0 indicates the ABI verison.
294 + # We want to get rid of this and just have ABI = 0.
295 + eapply "${FILESDIR}"/uclibc-compat-r1.patch
296 +
297 + # We need to change the major.minor.sublevel of uclibc-ng.
298 + # Upstream sets MAJOR_VERSION = 1 which breaks runtime linking.
299 + # If we really want the ABI bump, we'll have to hack the gcc
300 + # spec file and change the '*link:' rule.
301 + version=( $(get_version_components) )
302 + if [[ -z ${version[1]} ]]; then
303 + subversion=0
304 + extraversion=0
305 + else
306 + subversion=${version[1]}
307 + if [[ -z ${version[2]} ]]; then
308 + extraversion=0
309 + else
310 + extraversion=.${version[2]}
311 + fi
312 + fi
313 +
314 + sed -i \
315 + -e "/^MAJOR_VERSION/s|:=.*|:= 0|" \
316 + -e "/^MINOR_VERSION/s|:=.*|:= ${version[0]}|" \
317 + -e "/^SUBLEVEL/s|:=.*|:= ${subversion}|" \
318 + -e "/^EXTRAVERSION/s|:=.*|:= ${extraversion}|" \
319 + Rules.mak || die
320 +
321 + eapply_user
322 +}
323 +
324 +src_configure() {
325 + # Map our toolchain arch name to the name expected by uClibc-ng.
326 + local target=$(tc-arch)
327 + case ${target} in
328 + amd64) target="x86_64";;
329 + arm) target="arm";;
330 + mips) target="mips";;
331 + ppc) target="powerpc";;
332 + x86) target="i386";;
333 + esac
334 +
335 + # Do arch specific configuration by changing the defaults in
336 + # extra/Configs/Config.<arch>. If these are not overridden
337 + # by an save .config, they will be selected by default.
338 +
339 + # For i386, i486, i586 and i686
340 + local cpu
341 + if [[ ${target} == "i386" ]]; then
342 + [[ ${CTARGET} == i[456]86* ]] && cpu="${CTARGET:1:1}86"
343 + sed -i -e "s|default CONFIG_686|default CONFIG_${cpu:-486}|" \
344 + extra/Configs/Config.i386 || die
345 + fi
346 +
347 + # For arm
348 + if [[ ${target} == "arm" ]]; then
349 + sed -i -e '/Build for EABI/a \\tdefault y' extra/Configs/Config.arm
350 + fi
351 +
352 + # We set HOSTCC to the proper tuple rather than just 'gcc'
353 + sed -i -e "s|^HOSTCC.*=.*|HOSTCC=$(tc-getBUILD_CC)|" Rules.mak
354 +
355 + make_config ${target}
356 +
357 + einfo
358 + einfo "Runtime Prefix: /"
359 + einfo "Devel Prefix: /usr"
360 + einfo "Kernel Prefix: $(alt_build_kprefix)"
361 + einfo "CBUILD: ${CBUILD}"
362 + einfo "CHOST: ${CHOST}"
363 + einfo "CTARGET: ${CTARGET}"
364 + einfo "ABI: ${ABI}"
365 + einfo "ENDIAN: $(uclibc_endian)"
366 + einfo
367 +}
368 +
369 +src_compile() {
370 + emake headers
371 + just_headers && return 0
372 +
373 + emake
374 + if is_crosscompile ; then
375 + emake -C utils hostutils
376 + else
377 + emake utils
378 + fi
379 +}
380 +
381 +src_test() {
382 + is_crosscompile && return 0
383 +
384 + # assert test fails on pax/grsec enabled kernels
385 + # normal vfork test fails in sandbox (both glibc/uclibc)
386 + emake UCLIBC_ONLY=1 check
387 +}
388 +
389 +src_install() {
390 + local sysroot=${D}
391 + is_crosscompile && sysroot+="/usr/${CTARGET}"
392 +
393 + local target="install"
394 + just_headers && target="install_headers"
395 + emake DESTDIR="${sysroot}" ${target}
396 +
397 + save_config .config
398 +
399 + # remove files coming from kernel-headers
400 + rm -rf "${sysroot}"/usr/include/{linux,asm*}
401 +
402 + # Make sure we install the sys-include symlink so that when
403 + # we build a 2nd stage cross-compiler, gcc finds the target
404 + # system headers correctly. See gcc/doc/gccinstall.info
405 + if is_crosscompile ; then
406 + dosym usr/include /usr/${CTARGET}/sys-include
407 + if ! just_headers && [[ -n $(get_opt HAVE_SHARED) ]] ; then
408 + newbin utils/ldconfig.host ${CTARGET}-ldconfig
409 + newbin utils/ldd.host ${CTARGET}-ldd
410 + fi
411 + return 0
412 + fi
413 +
414 + if use symlink-compat; then
415 + dosym libc.so.0 "${DESTDIR}"/lib/libcrypt.so.0
416 + dosym libc.so.0 "${DESTDIR}"/lib/libdl.so.0
417 + dosym libc.so.0 "${DESTDIR}"/lib/libm.so.0
418 + dosym libc.so.0 "${DESTDIR}"/lib/libpthread.so.0
419 + dosym libc.so.0 "${DESTDIR}"/lib/librt.so.0
420 + dosym libc.so.0 "${DESTDIR}"/lib/libresolv.so.0
421 + dosym libc.so.0 "${DESTDIR}"/lib/libubacktrace.so.0
422 + dosym libc.so.0 "${DESTDIR}"/lib/libutil.so.0
423 + fi
424 +
425 + emake DESTDIR="${D}" install_utils
426 + dobin extra/scripts/getent
427 + dodoc README docs/*.txt
428 +}
429 +
430 +pkg_postinst() {
431 + is_crosscompile && return 0
432 +
433 + if [ ! -e "${ROOT}"/etc/TZ ] ; then
434 + ewarn "Please remember to set your timezone in /etc/TZ"
435 + mkdir -p "${ROOT}"/etc
436 + echo "UTC" > "${ROOT}"/etc/TZ
437 + fi
438 + [ "${ROOT}" != "/" ] && return 0
439 + # update cache before reloading init
440 + ldconfig
441 + # reload init ...
442 + /sbin/telinit U 2>/dev/null
443 +}