1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
10 maintainer = Michael Tremer <michael.tremer@ipfire.org>
12 url = http://sources.redhat.com/glibc/
13 license = GPLv2+ LGPLv2+
14 summary = The GNU libc libraries.
17 The glibc package contains standard libraries which are used by
18 multiple programs on the system. In order to save disk space and
19 memory, as well as to make upgrading easier, common system code is
20 kept in one place and shared between programs. This particular package
21 contains the most important sets of shared libraries: the standard C
22 library and the standard math library. Without these two libraries, a
23 Linux system will not function.
26 source_dl = http://ftp.gnu.org/gnu/glibc/
27 sources = %{thisapp}.tar.xz
30 # Optimize glibc for kernel
31 OPTIMIZED_KERNEL = 2.6.32
38 kernel-headers>=%{OPTIMIZED_KERNEL}
44 # Build glibc with custom cflags
45 GLIBC_FLAGS = -O3 -g -fasynchronous-unwind-tables -DNDEBUG -DPIC
47 if "%{DISTRO_ARCH}" == "i686"
48 GLIBC_FLAGS += -march=i686 -mtune=generic
49 elif "%{DISTRO_ARCH}" == "x86_64"
50 GLIBC_FLAGS += -mtune=generic
53 export CFLAGS = %{GLIBC_FLAGS}
54 export CXXFLAGS = %{GLIBC_FLAGS}
56 export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
59 # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
60 # unknown whether this is a bash bug or a Glibc problem. Disable
61 # installation of this locale in order to avoid the problem.
62 sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
64 # The ldd shell script contains Bash-specific syntax. Change its default
65 # program interpreter to /bin/bash in case another /bin/sh is installed.
66 sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
68 # We don't install pt_chown(1) on the final system, so why install it to
70 sed -e "/^install.*pt_chown/d" -i login/Makefile
72 # Build nscd with -fstack-protector-all, instead of -fstack-protector:
73 sed -e "s/fstack-protector/&-all/" -i nscd/Makefile
75 cat %{DIR_SOURCE}/glibc-stack_chk_fail.c > debug/stack_chk_fail.c
79 -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
81 # stdlib/tst-putenvmod is not linked against libc.
82 sed -i stdlib/Makefile \
83 -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g"
85 # stdio-common/bug22 hits timeout.
86 sed -i stdio-common/bug22.c \
87 -e "s/#define TIMEOUT.*/#define TIMEOUT 300/"
89 # These tests don't work or need more investigation:
90 sed -i dlfcn/Makefile -e "s/default //g"
92 sed -i nptl/Makefile \
93 -e "s/tst-mutex5 //g" \
94 -e "s/tst-mutex5a //g" \
95 -e "s/tst-cond11 //g" \
96 -e "s/tst-rwlock6 //g" \
97 -e "s/tst-rwlock7 //g" \
99 -e "s/tst-cancelx4 //g" \
100 -e "s/tst-cancelx5 //g" \
101 -e "s/tst-cancelx10 //g" \
102 -e "s/tst-cancelx18 //g" \
103 -e "s/tst-signal1 //g"
105 # These are known to fail on x86:
107 -e "s/tst-cpuclock1 //g" \
108 -e "s/tst-cpuclock2 //g"
110 sed -i elf/Makefile \
111 -e "s/tst-tls1 //g" \
112 -e "s/tst-tls1-static //g" \
113 -e "s/tst-tls2 //g" \
114 -e "s/tst-tls2-static //g" \
115 -e "s/tst-tls3 //g" \
116 -e "s/resolvfail //g" \
117 -e "s/constload1 //g" \
119 -e "s/lateglobal //g" \
121 -e "s/dblunload //g" \
123 -e "s/circleload1 //g" \
124 -e "s/tst-global1 //g" \
125 -e "s/tst-audit2 //g" \
126 -e "s/check-localplt //g" \
127 -e "s/check-localplt.out$$//g"
129 sed -i signal/Makefile \
130 -e "s/tst-sigset2//g"
134 mkdir %{DIR_SRC}/glibc-build
135 cd %{DIR_SRC}/glibc-build
137 CFLAGS="${CFLAGS} -fno-asynchronous-unwind-tables" \
138 ../%{thisapp}/configure \
139 --build=%{DISTRO_BUILDTARGET} \
140 --host=%{DISTRO_BUILDTARGET} \
142 --libexecdir=/usr/lib/glibc \
145 --enable-kernel=%{OPTIMIZED_KERNEL} \
151 --enable-experimental-malloc \
156 -e "s/^build-pic-default=.*/build-pic-default=yes/"
158 # Our GCC is already passing -fPIC, and that's all we want for the libraries.
159 # LDFLAGS.so is appended to so we don't build shared libraries with
160 # DT_TEXTREL (and to tell us if something goes wrong). For now we only build
161 # the libraries, not the programs:
162 echo "build-programs=no" >> configparms
164 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
165 CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
166 CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
168 # Then build the programs with hardening, so everything possible in
170 echo "# Nothing in here :D" > configparms
171 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
172 CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}"
176 # cd $(DIR_SRC)/glibc-build
177 # make check TIMEOUTFACTOR=16 \
178 # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
179 # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
183 cd %{DIR_SRC}/glibc-build
184 make install install_root=%{BUILDROOT}
187 mkdir -pv %{BUILDROOT}/usr/lib/locale
188 # This would install all locales that are supported
189 make localedata/install-locales install_root=%{BUILDROOT}
192 cp -v --remove-destination %{BUILDROOT}/usr/share/zoneinfo/GMT \
193 %{BUILDROOT}/etc/localtime
194 rm -rf %{BUILDROOT}/usr/share/zoneinfo
197 cp -vf %{DIR_SOURCE}/{ld.so.conf,nsswitch.conf} %{BUILDROOT}/etc
198 mkdir -pv %{BUILDROOT}/etc/{default,ld.so.conf.d}
199 install -p -m644 %{DIR_APP}/nis/nss %{BUILDROOT}/etc/default/nss
201 # Remove unused binaries
202 rm -vf %{BUILDROOT}/sbin/sln \
203 %{BUILDROOT}/usr/bin/rpcinfo
205 # Don't distribute linker cache
206 rm -vf %{BUILDROOT}/etc/ld.so.cache
208 # Include /usr/lib/gconv/gconv-modules.cache
209 > %{BUILDROOT}/usr/lib/gconv/gconv-modules.cache
210 chmod 644 %{BUILDROOT}/usr/lib/gconv/gconv-modules.cache
212 strip -g %{BUILDROOT}/usr/lib/*.o
214 # Move some libs to correct place
215 mv -v %{BUILDROOT}/lib/lib{memusage,pcprofile}.so %{BUILDROOT}/usr/lib/
219 /usr/lib/libc_nonshared.a
220 /usr/lib/libpthread_nonshared.a
226 requires = glibc-common=%{thisver}
230 # XXX description and summary are missing
243 summary = Object files for development using standard C libraries.
245 The glibc-devel package contains the object files necessary
246 for developing programs which use the standard C libraries (which are
247 used by nearly all programs). If you are developing programs which
248 will use the standard C libraries, your system needs to have these
249 standard object files available in order to create the
252 Install glibc-devel if you are going to develop programs which will
253 use the standard C libraries.
255 group = Development/Libraries
257 requires = glibc-headers=%{thisver}
259 files = /usr/lib/*.a /usr/lib/*.o
262 package glibc-headers
264 The glibc-headers package contains the header files necessary
265 for developing programs which use the standard C libraries (which are
266 used by nearly all programs). If you are developing programs which
267 will use the standard C libraries, your system needs to have these
268 standard header files available in order to create the
271 Install glibc-headers if you are going to develop programs which will
272 use the standard C libraries.
275 requires = kernel-headers
279 !/usr/include/linuxthreads
280 !/usr/include/gnu/stubs-[32164]*.h
285 summary = A Name Service Caching Daemon (nscd).
287 Nscd caches name service lookups and can dramatically improve
288 performance with NIS+, and may help with DNS as well.
290 group = System/Daemons
297 package %{name}-utils
298 summary = Development utilities from GNU C library.
300 The glibc-utils package contains memusage, a memory usage profiler,
301 mtrace, a memory leak tracer and xtrace, a function call tracer
302 which can be helpful during program debugging.
304 group = Development/Tools
308 /usr/bin/memusagestat
310 /usr/bin/pcprofiledump
312 /usr/lib/libmemusage.so
313 /usr/lib/libpcprofile.so