Magellan Linux

Contents of /smage/trunk/core/glibc/glibc-2.15-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3611 - (show annotations) (download)
Tue Jul 10 15:03:26 2012 UTC (11 years, 10 months ago) by niro
File size: 19847 byte(s)
-fixed so installation
1 # $Id$
2
3 PNAME="glibc"
4 PVER="2.15"
5 PBUILD="r1"
6
7 SPLIT_PACKAGES="glibc glibc-dev"
8
9 PCAT="sys-libs"
10
11 GLIBC_DEPEND=">= sys-apps/base-files-0.1"
12
13 # we force headers to one specific version
14 # (for x86_64 2.6.12.0-r2 bi-arch headers are needed!)
15 SDEPEND="== sys-kernel/linux-libc-headers-3.4.4
16 ${GLIBC_DEPEND}"
17
18 # functions to include in the mage file
19 SPECIAL_FUNCTIONS="fix_db_files"
20
21 SRCFILE="glibc-${PVER/.0/}.tar.xz"
22 SRCDIR="${BUILDDIR}/glibc-${PVER/.0/}"
23
24 ENVD_REV="1.2"
25
26 sminclude mtools cleanutils alx
27
28 SRC_URI=(
29 ftp://sources.redhat.com/pub/glibc/releases/${SRCFILE}
30 ftp://sources.redhat.com/pub/glibc/snapshots/${SRCFILE}
31 gnu://${PNAME}/${SRCFILE}
32 mirror://${PNAME}/${SRCFILE}
33 mirror://${PNAME}/glibc.envd-${ENVD_REV}
34 mirror://${PNAME}/locale.gen-header
35 mirror://${PNAME}/locale-gen
36 mirror://${PNAME}/${PNAME}-2.12.1-bz4781.patch
37 mirror://${PNAME}/${PNAME}-2.12.1-i686.patch
38 mirror://${PNAME}/${PNAME}-2.12.2-ignore-origin-of-privileged-program.patch
39 mirror://${PNAME}/${PNAME}-2.13-dlclose-search-reset.patch
40 mirror://${PNAME}/${PNAME}-2.14-libdl-crash.patch
41 mirror://${PNAME}/${PNAME}-2.14-reexport-rpc-interface.patch
42 mirror://${PNAME}/${PNAME}-2.14-reinstall-nis-rpc-headers.patch
43 mirror://${PNAME}/${PNAME}-${PVER}-fix-res_query-assert.patch
44 mirror://${PNAME}/${PNAME}-${PVER}-lddebug-scopes.patch
45 mirror://${PNAME}/${PNAME}-${PVER}-revert-c5a0802a.patch
46 mirror://${PNAME}/${PNAME}-${PVER}-scanf.patch
47 mirror://${PNAME}/${PNAME}-${PVER}-ifunc.patch
48 mirror://${PNAME}/${PNAME}-${PVER}-avx.patch
49 mirror://${PNAME}/${PNAME}-${PVER}-strcasecmp-disable-avx.patch
50 mirror://${PNAME}/${PNAME}-${PVER}-gb18030.patch
51 mirror://${PNAME}/${PNAME}-${PVER}-revert-netlink-cache.patch
52 mirror://${PNAME}/${PNAME}-${PVER}-arena.patch
53 mirror://${PNAME}/${PNAME}-${PVER}-negative-result-cache.patch
54 mirror://${PNAME}/${PNAME}-${PVER}-multiarch-x86-strcmp.patch
55 mirror://${PNAME}/${PNAME}-${PVER}-vdso.patch
56 mirror://${PNAME}/${PNAME}-${PVER}-feraiseexcept-plt.patch
57 mirror://${PNAME}/${PNAME}-${PVER}-vfprintf-nargs.patch
58 mirror://${PNAME}/${PNAME}-${PVER}-__libc_res_nquerydomain-out-of-bounds.patch
59 mirror://${PNAME}/${PNAME}-${PVER}-fmtmsg-locking.patch
60 mirror://${PNAME}/${PNAME}-${PVER}-non-signalling-comparisons.patch
61 mirror://${PNAME}/${PNAME}-${PVER}-rintf-rounding.patch
62 mirror://${PNAME}/${PNAME}-${PVER}-nearbyintf-rounding.patch
63 mirror://${PNAME}/${PNAME}-${PVER}-confstr-local-buffer-extent.patch
64 mirror://${PNAME}/${PNAME}-${PVER}-testsuite.patch
65 )
66
67 # sed line: on 2 digits add an zero: 2.7 -> 2.7.0
68 UP2DATE="updatecmd_gnu ${PNAME/-nptl/} | sed 's/^\([0-9]\.[0-9]\$\)/\1.0/'"
69
70 # glibc don't like strong CFLAGS
71 export CFLAGS="${CFLAGS//-O?} -O2"
72 # glibc -> nptl thread don't like striping
73 msetfeature "!strip"
74 # gcc 3.0 - 3.3 needs this:
75 export CFLAGS="${CFLAGS} -finline-limit=2000"
76 export CXXFLAGS="${CFLAGS}"
77 export LDFLAGS="${LDFLAGS//-Wl,--relax}"
78
79 # hack to fix NPTL issues with xen, only required on 32bit arches
80 if [[ ${ARCH} = i*86 ]]
81 then
82 export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs"
83 fi
84
85 # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic
86 # first filter -mtune and -march from flags
87 for flag in ${CFLAGS}
88 do
89 case ${flag} in
90 -mtune=*) continue ;;
91 -march=*) continue ;;
92 esac
93 newflags="${newflags} ${flag}"
94 done
95 export CFLAGS="${newflags}"
96
97 # than add our defaults for glibc
98 [[ ${ARCH} = i*86 ]] && export CFLAGS="${CFLAGS} -march=${ARCH}" # only i*86
99 export CFLAGS="${CFLAGS} -mtune=generic" # all arches
100 export CXXFLAGS="${CFLAGS}"
101
102 # use other linux-headers
103 [[ -z ${ALT_HEADERS} ]] && export ALT_HEADERS="/usr/include"
104
105 # kernel support
106 export ENABLE_KERNEL=2.6.32
107
108 split_info_glibc()
109 {
110 DESCRIPTION="GNU libc6 (also called glibc2) C library with NPTL Threads."
111 DEPEND="${GLIBC_DEPEND}"
112 PROVIDE="virtual/glibc"
113 }
114
115 split_info_glibc-dev()
116 {
117 DESCRIPTION="Development files for sys-libs/glibc-${PVER}."
118 DEPEND="== sys-libs/glibc-${PVER}"
119 }
120
121 src_prepare()
122 {
123 munpack ${SRCFILE} || die
124 cd ${SRCDIR}
125
126 # http://sources.redhat.com/bugzilla/show_bug.cgi?id=4781
127 mpatch ${PNAME}-2.12.1-bz4781.patch || die
128
129 # http://sources.redhat.com/bugzilla/show_bug.cgi?id=411
130 # http://sourceware.org/ml/libc-alpha/2009-07/msg00072.html
131 mpatch ${PNAME}-2.12.1-i686.patch || die
132
133 # security fix, fixes CVE-2010-3847
134 # see: http://www.exploit-db.com/exploits/15274/
135 mpatch ${PNAME}-2.12.2-ignore-origin-of-privileged-program.patch || die
136
137 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=675155e9 (fedora branch)
138 # http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
139 mpatch ${PNAME}-2.14-libdl-crash.patch || die
140
141 # re-export RPC interface until libtirpc is ready as a replacement
142 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (fedora branch)
143 mpatch ${PNAME}-2.14-reexport-rpc-interface.patch || die
144 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=bdd816a3 (fedora branch)
145 mpatch ${PNAME}-2.14-reinstall-nis-rpc-headers.patch || die
146
147 # fix res_query assertion
148 # http://sourceware.org/bugzilla/show_bug.cgi?id=13013
149 mpatch ${PNAME}-${PVER}-fix-res_query-assert.patch || die
150
151 # fix up regcomp/regexec
152 # http://sourceware.org/git/?p=glibc.git;a=commit;h=2ba92745
153 # mpatch ${PNAME}-${PVER}-regex.patch
154
155 # propriety nvidia crash - https://bugzilla.redhat.com/show_bug.cgi?id=737223
156 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0c95ab64 (fedora branch)
157 mpatch ${PNAME}-${PVER}-lddebug-scopes.patch || die
158
159 # revert commit c5a0802a - causes various hangs
160 # https://bugzilla.redhat.com/show_bug.cgi?id=769421
161 # Note: fedora may have actual fix (not submitted upstream yet...)
162 # http://pkgs.fedoraproject.org/gitweb/?p=glibc.git;a=blob_plain;f=glibc-rh552960-2.patch
163 mpatch ${PNAME}-${PVER}-revert-c5a0802a.patch || die
164
165 # fix realloc usage in vfscanf
166 # http://sourceware.org/git/?p=glibc.git;a=commit;h=20b38e03
167 mpatch ${PNAME}-${PVER}-scanf.patch || die
168
169 # fix ifunc relocations
170 # http://sourceware.org/git/?p=glibc.git;a=commit;h=6ee65ed6
171 mpatch ${PNAME}-${PVER}-ifunc.patch || die
172
173 # fix AVX detection
174 # http://sourceware.org/git/?p=glibc.git;a=commit;h=afc5ed09
175 # http://sourceware.org/git/?p=glibc.git;a=commit;h=08cf777f
176 mpatch ${PNAME}-${PVER}-avx.patch || die
177 # and "fix" strcasecmp
178 mpatch ${PNAME}-${PVER}-strcasecmp-disable-avx.patch || die
179
180 # fix GB18030 charmap
181 # http://sourceware.org/bugzilla/show_bug.cgi?id=11837
182 # http://sourceware.org/git/?p=glibc.git;a=commit;h=2a57bd79 (fedora branch)
183 # http://sourceware.org/git/?p=glibc.git;a=commit;h=3d828a61 (fedora branch)
184 mpatch ${PNAME}-${PVER}-gb18030.patch || die
185
186 # fix crash in __nscd_get_mapping if nscd not running
187 # http://sourceware.org/bugzilla/show_bug.cgi?id=13594 (potential fix in comment)
188 # reverts commit 3a2c0242 and other necessary following changes...
189 mpatch ${PNAME}-${PVER}-revert-netlink-cache.patch || die
190
191 # handle ARENA_TEST correctly
192 # http://sourceware.org/git/?p=glibc.git;a=commit;h=41b81892
193 mpatch ${PNAME}-${PVER}-arena.patch || die
194
195 # do not cache negative results in nscd if these are transient
196 # http://sourceware.org/git/?p=glibc.git;a=commit;h=3e1aa84e
197 mpatch ${PNAME}-${PVER}-negative-result-cache.patch || die
198
199 # strcasecmp_l, strncasecmp_l act as strcmp for multiarch x86
200 # http://sourceware.org/git/?p=glibc.git;a=commit;h=0bab47b6
201 mpatch ${PNAME}-${PVER}-multiarch-x86-strcmp.patch || die
202
203 # always set l_used for vDSO.
204 # http://sourceware.org/git/?p=glibc.git;a=commit;h=1f393a11
205 mpatch ${PNAME}-${PVER}-vdso.patch || die
206
207 # fix x86 PLT slot usage for feraiseexcept
208 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7c35ffed
209 mpatch ${PNAME}-${PVER}-feraiseexcept-plt.patch || die
210
211 # vfprintf nargs overflow - CVE-2012-0864
212 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7c1f4834
213 mpatch ${PNAME}-${PVER}-vfprintf-nargs.patch || die
214
215 # avoid out ouf bounds read in __libc_res_nquerydomain
216 # http://sourceware.org/git/?p=glibc.git;a=commit;h=8fdceb2e
217 mpatch ${PNAME}-${PVER}-__libc_res_nquerydomain-out-of-bounds.patch || die
218
219 # make fmtmsg function thread-safe
220 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7724defc
221 mpatch ${PNAME}-${PVER}-fmtmsg-locking.patch || die
222
223 # use non-signaling floating-point comparisons in math functions
224 # http://sourceware.org/git/?p=glibc.git;a=commit;h=92221550
225 mpatch ${PNAME}-${PVER}-non-signalling-comparisons.patch || die
226
227 # fix rintf rounding.
228 # http://sourceware.org/git/?p=glibc.git;a=commit;h=fe45ce09
229 mpatch ${PNAME}-${PVER}-rintf-rounding.patch || die
230
231 # fix nearbyintf rounding
232 # http://sourceware.org/git/?p=glibc.git;a=commit;h=6cbeae47
233 mpatch ${PNAME}-${PVER}-nearbyintf-rounding.patch || die
234
235 # fix varaible scope issue in confstr
236 # http://sourceware.org/git/?p=glibc.git;a=commit;h=ac4c54f0
237 # http://sourceware.org/git/?p=glibc.git;a=commit;h=d6a403f9
238 mpatch ${PNAME}-${PVER}-confstr-local-buffer-extent.patch || die
239
240 # fix testsuite failures with --as-needed
241 # http://sourceware.org/git/?p=glibc.git;a=commit;h=d4c2917f
242 mpatch ${PNAME}-${PVER}-testsuite.patch || die
243
244 # binutils patch needs reconf
245 autoconf --force || die
246
247 # fix permissions on some of the scripts
248 chmod u+x ${SRCDIR}/scripts/*.sh || die
249
250 install -d ${SRCDIR}/build || die
251 cd ${SRCDIR}/build
252
253 if [ ! -f /etc/ld.so.conf ]
254 then
255 touch /etc/ld.so.conf || die
256 fi
257 }
258
259 src_compile()
260 {
261 local myopts
262
263 # generic pathes
264 myopts="--prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info"
265 # disable profiling
266 myopts+=" --disable-profile"
267 # enable addons
268 myopts+=" --enable-add-ons=nptl,libidn"
269 # enable tls
270 myopts+=" --with-tls --with-__thread"
271 # supported kernel-release
272 myopts+=" --enable-kernel=${ENABLE_KERNEL}"
273 # disable cvs and gd support
274 myopts+=" --without-cvs --without-gd"
275 # enable bindnow
276 myopts+=" --enable-bind-now"
277
278 # support multilib lib64 dir (x86_64 only)
279 if [[ ${ARCH} = x86_64 ]]
280 then
281 # first build a -m32 version
282 install -d ${SRCDIR}/build-m32
283 cd ${SRCDIR}/build-m32
284
285 CC="gcc -m32" CXX="g++ -m32" \
286 CFLAGS="${CFLAGS//-march=${ARCH}} -march=i686" \
287 CXXFLAGS="${CXXFLAGS//-march=${ARCH}} -march=i686" \
288 ../configure \
289 --build=${CHOST} \
290 --host=i686-pc-linux-gnu \
291 --libdir=/usr/lib \
292 --libexecdir=/usr/lib/glibc \
293 ${myopts} \
294 || die
295
296 make PARALLELMFLAGS="${MAKEOPTS}" || die
297 fi
298
299 cd ${SRCDIR}/build
300
301 if [[ ${ARCH} = x86_64 ]]; then
302 # make sure the -m64 libs goes really to /lib64
303 echo "slibdir=/$(mlibdir)" >> ${SRCDIR}/build/configparms || die
304 fi
305
306 # kernel-2.6 with nptl needs this
307 ../configure \
308 --build=${CHOST} \
309 --host=${CHOST} \
310 --libdir=/usr/$(mlibdir) \
311 --libexecdir=/usr/$(mlibdir)/glibc \
312 ${myopts} \
313 || die
314
315 make PARALLELMFLAGS="${MAKEOPTS}" || die
316 }
317
318 src_install_glibc()
319 {
320 if [[ ${ARCH} = x86_64 ]]
321 then
322 # install -m32 libs
323 cd ${SRCDIR}/build-m32
324 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/lib rootsbindir=/usr/sbin install || die
325 fi
326
327 cd ${SRCDIR}/build
328 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/$(mlibdir) rootsbindir=/usr/sbin install || die
329
330 # cleanup
331 zapmost ${BINDIR} usr/$(mlibdir)/*.so \
332 usr/$(mlibdir)/*-${PVER}.so.* \
333 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/*.so usr/lib/*.so.*') \
334 usr/sbin/ldconfig \
335 usr/bin/iconv \
336 usr/bin/locale \
337 usr/$(mlibdir)/gconv/IBM850.so \
338 usr/$(mlibdir)/gconv/ISO8859-1.so \
339 usr/$(mlibdir)/gconv/ISO8859-15.so \
340 usr/$(mlibdir)/gconv/UNICODE.so \
341 usr/$(mlibdir)/gconv/gconv-modules \
342 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/gconv/IBM850.so') \
343 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/gconv/ISO8859-1.so') \
344 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/gconv/ISO8859-15.so') \
345 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/gconv/UNICODE.so') \
346 $([[ ${ARCH} = x86_64 ]] && echo 'usr/lib/gconv/gconv-modules') \
347 || die
348
349 # nsswitch configuration file
350 minstalletc ${SRCDIR}/nss/nsswitch.conf || die
351
352 # base environment
353 minstallenv glibc.envd-${ENVD_REV} 00glibc || die
354 if [[ ${ARCH} = x86_64 ]]
355 then
356 MCONFIG="/etc/env.d/00glibc"
357 maddconfig "LDPATH=\"/$(mlibdir)\"" || die
358 maddconfig "LDPATH=\"/usr/$(mlibdir)\"" || die
359 maddconfig "LDPATH=\"/usr/local/$(mlibdir)\"" || die
360 maddconfig "LDPATH=\"/opt/$(mlibdir)\"" || die
361 fi
362
363 # strip all binaries
364 find ${BINDIR} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
365
366 # strip all libraries
367 # want to be safe here; --strip-unneeded seems to cause pthread problems
368 # strip all but libpthread
369 install -d ${BUILDDIR}/thread-backup || die
370 mv ${BINDIR}/usr/$(mlibdir)/lib{pthread,thread_db}* ${BUILDDIR}/thread-backup/ || die
371
372 # now strip
373 find ${BINDIR} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
374 mv -f ${BUILDDIR}/thread-backup/* ${BINDIR}/usr/$(mlibdir)/ || die
375 # remove stale directory
376 rm -rf ${BUILDDIR}/thread-backup || die
377
378 # prepare glibc for installation; slackware method
379 minstalldir /incoming || die
380 mv ${BINDIR}/usr/$(mlibdir)/*.so ${BINDIR}/incoming || die
381 mv ${BINDIR}/usr/$(mlibdir)/*.so.* ${BINDIR}/incoming || die
382 mv ${BINDIR}/incoming ${BINDIR}/usr/$(mlibdir)/incoming || die
383 mv ${BINDIR}/usr/$(mlibdir)/incoming/libSegFault.so ${BINDIR}/usr/$(mlibdir) || die
384 }
385
386 src_install_glibc-dev()
387 {
388 if [[ ${ARCH} = x86_64 ]]
389 then
390 # install -m32 libs
391 cd ${SRCDIR}/build-m32
392 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/lib rootsbindir=/usr/sbin install || die
393 fi
394
395 cd ${SRCDIR}/build
396 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/$(mlibdir) rootsbindir=/usr/sbin install || die
397
398 # cleanup -> in glibc
399 rm -r ${BINDIR}usr/$(mlibdir)/*.so || die
400 rm ${BINDIR}/usr/$(mlibdir)/*.so.* || die
401 rm ${BINDIR}/usr/$(mlibdir)/gconv/IBM850.so || die
402 rm ${BINDIR}/usr/$(mlibdir)/gconv/ISO8859-1.so || die
403 rm ${BINDIR}/usr/$(mlibdir)/gconv/ISO8859-15.so || die
404 rm ${BINDIR}/usr/$(mlibdir)/gconv/UNICODE.so || die
405 rm ${BINDIR}/usr/$(mlibdir)/gconv/gconv-modules || die
406 if [[ ${ARCH} = x86_64 ]]
407 then
408 rm -r ${BINDIR}/usr/lib/*.so || die
409 rm ${BINDIR}/usr/lib/*.so.* || die
410 rm ${BINDIR}/usr/lib/gconv/IBM850.so || die
411 rm ${BINDIR}/usr/lib/gconv/ISO8859-1.so || die
412 rm ${BINDIR}/usr/lib/gconv/ISO8859-15.so || die
413 rm ${BINDIR}/usr/lib/gconv/UNICODE.so || die
414 rm ${BINDIR}/usr/lib/gconv/gconv-modules || die
415 fi
416 rm ${BINDIR}/sbin/ldconfig || die
417 rm ${BINDIR}/usr/bin/iconv || die
418 rm ${BINDIR}/usr/bin/locale || die
419
420 # do not generate the locales here, let it the user do with the locale-gen tool
421 # make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} localedata/install-locales || die
422
423 # install locales list and generate tools
424 # generate locale.gen file from localedata/SUPPORTED file
425 minstalletc locale.gen-header locale.gen || die
426 sed \
427 -e 's:/: :g' \
428 -e 's:\\: :g' \
429 -e 's:SUPPORTED-LOCALES=::' \
430 -e 's:\ \ $::g' \
431 -e '/^#/d' \
432 -e 's:^:#:g' \
433 ${SRCDIR}/localedata/SUPPORTED \
434 >> ${BINDIR}/etc/locale.gen || die
435 minstalldir /usr/sbin || die
436 minstallexec -s locale-gen /usr/sbin || die
437
438 # nscd configuration file
439 minstalletc ${SRCDIR}/nscd/nscd.conf || die
440
441 # gai configuration file
442 minstalletc ${SRCDIR}/posix/gai.conf || die
443
444 # busybox compat
445 local args
446 if [[ $(readlink /bin/cp) = */busybox ]]
447 then
448 args="-f"
449 else
450 args="--remove-destination"
451 fi
452
453 # we use Berlin as default
454 cp ${args} ${BINDIR}/usr/share/zoneinfo/Europe/Berlin ${BINDIR}/etc/localtime || die
455 [ -f ${BINDIR}/etc/ld.so.conf ] && { rm -f ${BINDIR}/etc/ld.so.conf || die; }
456 [ -e ${BINDIR}/etc/ld.so.cache ] && { rm -rf ${BINDIR}/etc/ld.so.cache || die; }
457
458 # strip all binaries
459 find ${BINDIR} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
460
461 # strip all libraries
462 find ${BINDIR} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
463 }
464
465 fix_db_files()
466 {
467 local i
468 local DB_ENTRY="${BUILDDIR}/${PKGNAME}"
469
470 for i in .files .symlinks .dirs
471 do
472 [ ! -f ${DB_ENTRY}/${i} ] && continue
473 [[ -z $(< ${DB_ENTRY}/${i}) ]] && continue
474
475 echo " fixing /$(mlibdir)/incoming from db-entry '${i}' ..."
476
477 # /lib/incoming -> empty line; sed2 removes all empty lines
478 #sed -i -e "s:/$(mlibdir)/incoming.*::g" -e '/^$/d' ${DB_ENTRY}/${i}
479 # do not simply emtpy the line, but change it the the correct path,
480 # so no stale libs are around if the package gets updated!
481 sed -i \
482 -e "s:/$(mlibdir)/incoming:/$(mlibdir):g" \
483 -e "s:/$(mlibdir)/incoming.*::g" \
484 -e '/^$/d' ${DB_ENTRY}/${i}
485 done
486 }
487
488 preinstall_glibc()
489 {
490 add_conf_prot_mask /etc/env.d /etc/nsswitch.conf
491 }
492
493 postinstall_glibc()
494 {
495 # first save the old libpthread.so.0;
496 # it will later used to determinate that there are no stale
497 # libpthreads that breaks ldconfig
498 local OLD_PTHREAD
499 OLD_PTHREAD="$(readlink ${MROOT}/usr/$(mlibdir)/libpthread.so.0)"
500
501 # slackware install method
502
503 # we cannot easily install the glibc libs,
504 # because our tools for cp etc needs them to run
505
506 local file
507
508 echo " Switching to new glibc ..."
509 # swap libraries on the fly:
510 if [ -x /sbin/ldconfig -a -d /usr/$(mlibdir)/incoming ] && [[ -z ${MROOT} ]]
511 then
512 # first create copies of the incoming libraries:
513 cd /usr/$(mlibdir)/incoming
514 for file in $(find /usr/$(mlibdir)/incoming -type f)
515 do
516 if [ ! -r "../$(basename ${file}).incoming" ]
517 then
518 cp -a ${file} ../$(basename ${file}).incoming
519 fi
520 done
521
522 # then switch to them all at once:
523 /sbin/ldconfig -l /usr/$(mlibdir)/*.incoming 2> /dev/null
524
525 # finally, rename them and clean up:
526 cd /usr/$(mlibdir)
527 for file in *.incoming
528 do
529 rm -f $(basename ${file} .incoming)
530 cp -a ${file} $(basename ${file} .incoming)
531 /sbin/ldconfig -l $(basename ${file} .incoming)
532 rm -f ${file}
533 done
534
535 # no ldconfig?
536 # good, it's safe to just jam it on home (and make links below):
537 else
538 (
539 cd ${MROOT}/usr/$(mlibdir)/incoming
540 for file in *
541 do
542 cp -a ${file} ..
543 done
544
545 local my_sym
546 local my_dest
547
548 # rebuild symlinks
549 echo " Recreating Symlinks:"
550 for i in $(find ${MROOT}/usr/$(mlibdir)/incoming -type l)
551 do
552 my_sym="$(readlink ${i})"
553 my_dest="$(basename ${i})"
554
555 echo " ${my_dest} -> ${my_dest}"
556
557 # assure to remove the old ones;
558 [ -L ${MROOT}/usr/$(mlibdir)/"${my_dest}" ] && \
559 rm ${MROOT}/usr/$(mlibdir)/"${my_dest}"
560
561 ln -snf "${my_sym}" ${MROOT}/usr/$(mlibdir)/"${my_dest}"
562 done
563 )
564 fi
565
566 # now, get rid of the temporary directory:
567 rm -rf ${MROOT}/usr/$(mlibdir)/incoming
568
569 # remove stale nptl libpthread-2.?.?.so,
570 # fix only needed for glibc with linuxthreads;
571 # prevent reloc errors such as:
572 # ls: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
573
574 # get our new libpthread.so.0
575 local NEW_PTHREAD
576 NEW_PTHREAD="$(readlink ${MROOT}/usr/$(mlibdir)/libpthread.so.0)"
577
578 if [ "${NEW_PTHREAD}" != "${OLD_PTHREAD}" ]
579 then
580 echo " Removing stale libpthread libraries ..."
581 for file in ${MROOT}/usr/$(mlibdir)/libpthread-*
582 do
583 if [ "$(basename ${file})" != "${NEW_PTHREAD}" ]
584 then
585 rm -f ${file}
586 fi
587 done
588
589 #rm -f /lib/${OLD_PTHREAD}
590
591 ln -snf ${NEW_PTHREAD} ${MROOT}/usr/$(mlibdir)/libpthread.so.0
592 fi
593
594 # now we must fix the mage db files
595 # to stop the annoying errors messages
596 fix_db_files
597 }
598
599 postinstall_glibc-dev()
600 {
601 if [ -x /usr/sbin/iconvconfig ]
602 then
603 # generate fastloading iconv module configuration file.
604 echo " Generate iconv module config ..."
605 /usr/sbin/iconvconfig --prefix=${MROOT}/
606 fi
607
608 # not working with busybox
609 if [[ $(basename $(readlink /sbin/init)) != busybox ]]
610 then
611 # reloading init
612 echo " Reloading init ..."
613 [[ -z ${MROOT} ]] && /sbin/init U &> /dev/null
614 fi
615
616 # generating user def locales
617 echo " Generating user defined locales ..."
618 [[ -z ${MROOT} ]] && /usr/sbin/locale-gen
619 }