wok view glibc-base/receipt @ rev 12911

glibc-base: ARM use Eglibc and files in sysroot with standard paths
author Christophe Lincoln <pankso@slitaz.org>
date Tue May 29 17:48:30 2012 +0000 (2012-05-29)
parents 4d4b18813d25
children a0c05eb46f42
line source
1 # SliTaz package receipt.
3 PACKAGE="glibc-base"
4 VERSION="2.14.1"
5 CATEGORY="base-system"
6 SHORT_DESC="GNU libc minimal libraries and UTF-8 support for SliTaz."
7 WEB_SITE="http://www.gnu.org/software/libc/"
8 MAINTAINER="pankso@slitaz.org"
9 WANTED="glibc"
10 HOST_ARCH="i486 arm x86_64"
12 # Locales include by default, other locales are in: glibc-locale
13 DEFAULT_LOCALE="de_DE en_US en_GB es_ES fr_FR it_IT pt_BR pt_PT ru_RU"
15 # Handle multiarch compilation.
16 case "$ARCH" in
17 arm) VERSION="2.13" WANTED="" ;;
18 x86_64) VERSION="2.13" WANTED="" ;;
19 esac
21 # Rules to gen a SliTaz package suitable for Tazpkg.
22 #
23 # Full glibc is very long to compile (see package glibc for more
24 # informations). You can use the precompiled package available on
25 # SliTaz mirror to build a distro without recompiling glibc.
26 #
28 # i18n
29 get_locales()
30 {
31 local path=$1
32 for i in $DEFAULT_LOCALE
33 do
34 cp $install/$path/i18n/locales/$i $fs/usr/share/i18n/locales
35 done
36 }
38 genpkg_rules()
39 {
40 # Mkdir's.
41 for dir in $(cat $stuff/mkdir.list)
42 do
43 mkdir -p ${fs}$dir
44 done
46 case "$ARCH" in
47 arm)
48 # Eglibc is cross compiled by cross to have a toolchain so we can
49 # use these files instead of recooking it. ARM use Eglibc
50 echo "Using cross compiled Eglibc..."
51 install=/cross/$ARCH/sysroot
53 # /usr/{bin,share} /usr/lib/gconv
54 for file in $(cat $stuff/arm-files.list)
55 do
56 cp -a ${install}$file ${fs}$file
57 done
59 # libs
60 for lib in libcrypt libm libc libresolv librt libutil libpthread \
61 libnss_* libnsl libanl libdl
62 do
63 cp -a $install/lib/${lib}-*.so $fs/lib
64 cp -a $install/lib/${lib}.so* $fs/lib
65 cp -a $install/usr/lib/${lib}.so $fs/usr/lib
66 done
67 cp -a $install/lib/ld-*.so* $fs/lib
68 cp -a $install/usr/lib/libc_nonshared.a $fs/usr/lib
69 cp -a $install/usr/lib/libpthread_nonshared.a $fs/usr/lib
70 cp $install/etc/rpc $fs/etc
71 touch $fs/etc/ld.so.conf
72 touch $fs/etc/ld.so.cache
73 get_locales "usr/share" ;;
74 x86_64)
75 # EXPERIMENTAL: Glibc is cross compiled by cross to have a
76 # toolchain so we can use these files instead of recooking it.
77 echo "Using cross compiled Glibc..."
78 install=/usr/cross/$ARCH
80 # /usr/{bin,share} /usr/lib/gconv
81 for file in $(cat $stuff/arm-files.list)
82 do
83 cp -a ${install}$file ${fs}/usr/$file
84 done
86 # /lib
87 for lib in libcrypt libm libc libresolv librt libutil libpthread \
88 libnss_* libnsl libanl libdl
89 do
90 cp -a $install/lib/${lib}-*.so $fs/lib
91 cp -a $install/lib/${lib}.so* $fs/lib
92 done
93 cp -a $install/lib/ld-*.so* $fs/lib
94 cp -a $install/lib/libc_nonshared.a $fs/lib
95 cp -a $install/lib/libpthread_nonshared.a $fs/lib
96 cp $install/etc/rpc $fs/etc
97 touch $fs/etc/ld.so.conf
98 get_locales "share"
99 # Fix libraries search path
100 sed -i s"|/usr/cross/$ARCH||"g $fs/lib/libc.so
101 sed -i s"|/usr/cross/$ARCH||"g $fs/lib/libpthread.so ;;
102 *)
103 # Copy all files specified in stuff/files.list. We get the files
104 # from glibc package.
105 for file in $(cat $stuff/wanted-files.list)
106 do
107 cp -a ${install}$file ${fs}$file
108 done
109 get_locales "usr/share"
110 esac
111 }
113 # Remove an eventual locale-archive since we use directories.
114 pre_install()
115 {
116 rm -f $root/usr/lib/locale/locale-archive
117 }
119 # Glibc-base is auto-updated in chroot but when cross-compiling we need
120 # to have /usr/cross/$ARCH search path in libc.so
121 post_install()
122 {
123 # x86_64
124 if echo $root | grep -q /usr/cross/x86_64; then
125 echo "Fixing x86_64: $root/lib/libc.so"
126 cat > $root/lib/libc.so << EOT
127 OUTPUT_FORMAT(elf64-x86-64)
128 GROUP ( $root/lib/libc.so.6 $root/lib/libc_nonshared.a AS_NEEDED ( $root/lib/ld-linux-x86-64.so.2 ) )
129 EOT
130 fi
131 }