summaryrefslogtreecommitdiff
path: root/core/eglibc/PKGBUILD
blob: 87ea5dc275c02db55bb59577470dcfe0fbb12592 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# $Id: PKGBUILD 116984 2011-03-27 06:35:25Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>

# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
# NOTE: valgrind requires rebuilt with each new glibc version

pkgname=eglibc
pkgver=2.13
pkgrel=1
_glibcdate=20110117
pkgdesc="GNU C Library"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.gnu.org/software/libc"
license=('GPL' 'LGPL')
groups=('base')
depends=('linux-api-headers>=2.6.37' 'tzdata')
makedepends=('gcc>=4.4')
backup=(etc/locale.gen
        etc/nscd.conf)
options=('!strip')
install=glibc.install
source=(http://repo.parabolagnulinux.org/other/eglibc-2_13.tar.bz2
        http://repo.parabolagnulinux.org/other/eglibc-linuxthreads-2_13.tar.bz2
        http://repo.parabolagnulinux.org/other/eglibc-localedef-2_13.tar.bz2
        http://repo.parabolagnulinux.org/other/eglibc-ports-2_13.tar.bz2
        nscd
        locale.gen.txt
        locale-gen)

build() {
  cd ${srcdir}
  ln -s eglibc-2_13 eglibc 

  cd eglibc

  # timezone data is in separate package (tzdata)
  sed -i "s/localedata //" Makeconfig 

  for addon in ports ; do
    ln -s ../eglibc-$addon-2_13 $addon 
  done

  install -dm755 ${pkgdir}/etc
  touch ${pkgdir}/etc/ld.so.conf

  cd ${srcdir}
  mkdir build || true
  cd build

  if [[ ${CARCH} = "mips64el" ]]; then
    # mips64el is only supported out of tree.
    extra_addons=",ports"
  fi

  echo "slibdir=/lib" >> configparms

  ${srcdir}/eglibc/configure --prefix=/usr \
      --libdir=/usr/lib --libexecdir=/usr/lib \
      --with-headers=/usr/include \
      --enable-add-ons=nptl,libidn$extra_addons \
      --enable-kernel=2.6.27 \
      --with-tls --with-__thread \
      --enable-bind-now --without-gd \
      --without-cvs --disable-profile \
      --disable-multi-arch
        
  make
}

check() {
  cd ${srcdir}/build

  # some errors are expected - manually check log files
  make -k check || true
}

package() {
  cd ${srcdir}/build
  make install_root=${pkgdir} install

  rm ${pkgdir}/etc/ld.so.{cache,conf}

  install -dm755 ${pkgdir}/etc/rc.d
  install -dm755 ${pkgdir}/usr/sbin
  install -dm755 ${pkgdir}/usr/lib/locale
  install -m644 ${srcdir}/eglibc/nscd/nscd.conf ${pkgdir}/etc/nscd.conf
  install -m755 ${srcdir}/nscd ${pkgdir}/etc/rc.d/nscd
  install -m755 ${srcdir}/locale-gen ${pkgdir}/usr/sbin
  install -m644 ${srcdir}/eglibc/posix/gai.conf ${pkgdir}/etc/gai.conf

  sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf

  # create /etc/locale.gen
  install -m644 ${srcdir}/locale.gen.txt ${pkgdir}/etc/locale.gen
  sed -i "s|/| |g" ${srcdir}/eglibc/localedata/SUPPORTED
  sed -i 's|\\| |g' ${srcdir}/eglibc/localedata/SUPPORTED
  sed -i "s|SUPPORTED-LOCALES=||" ${srcdir}/eglibc/localedata/SUPPORTED
  cat ${srcdir}/eglibc/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen
  sed -i "s|^|#|g" ${pkgdir}/etc/locale.gen

  if [[ ${CARCH} = "x86_64" ]]; then
    # fix for the linker
    sed -i '/RTLDLIST/s%lib64%lib%' ${pkgdir}/usr/bin/ldd
    # Comply with multilib binaries, they look for the linker in /lib64
    mkdir ${pkgdir}/lib64
    cd ${pkgdir}/lib64
    ln -v -s ../lib/ld* .
  fi
  
  # manually strip files as stripping libpthread-*.so and libthread_db.so
  # with the default $STRIP_SHARED breaks gdb and stripping ld-*.so breaks
  # valgrind on x86_64

  cd $pkgdir
  strip $STRIP_BINARIES sbin/{ldconfig,sln} \
                        usr/bin/{gencat,getconf,getent,iconv,locale} \
                        usr/bin/{localedef,pcprofiledump,rpcgen,sprof} \
                        usr/lib/getconf/* \
                        usr/sbin/{iconvconfig,nscd,rpcinfo}
  [[ $CARCH = "i686" ]] && strip $STRIP_BINARIES usr/bin/lddlibc4

  strip $STRIP_STATIC usr/lib/*.a \
                      lib/{{ld,libpthread}-${pkgver},libthread_db-1.0}.so

  strip $STRIP_SHARED lib/{libanl,libBrokenLocale,libc,libcidn,libcrypt}-${pkgver}.so \
                      lib/libnss_{compat,dns,files,hesiod,nis,nisplus}-${pkgver}.so \
                      lib/{libdl,libm,libnsl,libresolv,librt,libutil}-${pkgver}.so \
                      lib/{libmemusage,libpcprofile,libSegFault}.so \
                      usr/lib/{pt_chown,gconv/*.so}
}
md5sums=('b7b17d9c6b5b71b5e5322e04ca63c190'
         '483f37cfdd619e81d8ca9e9d713944b5'
         '4dadb9203b69a3210d53514bb46f41c3'
         '0c5540efc51c0b93996c51b57a8540ae'
         '40cd342e21f71f5e49e32622b25acc52'
         'a3ac6f318d680347bb6e2805d42b73b2'
         'b042647ea7d6f22ad319e12e796bd13e'
         '24dfab6fd244f3773523412588ecc52c'
         '7d0154b7e17ea218c9fa953599d24cc4'
         'b587ee3a70c9b3713099295609afde49'
         '07ac979b6ab5eeb778d55f041529d623'
         '476e9113489f93b348b21e144b6a8fcf')
md5sums=('0f79580a194657aa74e3331d33a3889e'
         'f07ce5e45308fc7e2faaa55f2c766550'
         '40b693a9ce8ab0a8837826160b3419c9'
         '973e16228492b46bf731ad5ce2e06e9f'
         'b587ee3a70c9b3713099295609afde49'
         '07ac979b6ab5eeb778d55f041529d623'
         '476e9113489f93b348b21e144b6a8fcf')