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