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 # The version of the ports addon.
27 ports_version = %{version}
29 source_dl = http://ftp.gnu.org/gnu/glibc/
30 sources = %{thisapp}.tar.xz glibc-ports-%{ports_version}.tar.xz
33 # Optimize glibc for kernel
34 OPTIMIZED_KERNEL = 2.6.32
41 kernel-headers>=%{OPTIMIZED_KERNEL}
47 # Build glibc with custom cflags
48 GLIBC_FLAGS = -O3 -g -fasynchronous-unwind-tables -DNDEBUG -DPIC
50 if "%{DISTRO_ARCH}" == "i686"
51 GLIBC_FLAGS += -march=i686 -mtune=generic
52 elif "%{DISTRO_ARCH}" == "x86_64"
53 GLIBC_FLAGS += -mtune=generic
56 export CFLAGS = %{GLIBC_FLAGS}
57 export CXXFLAGS = %{GLIBC_FLAGS}
59 export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
62 # Extract source tarballs.
63 %{MACRO_EXTRACT_TARBALL}
65 # Create link for ports addon.
66 ln -svf ../glibc-ports-%{ports_version} ports
71 if [ "%{DISTRO_ARCH}" = "armv5tel" ]; then
73 -e "s/libc_cv_gcc_static_libgcc=-static-libgcc/libc_cv_gcc_static_libgcc=/"
76 # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
77 # unknown whether this is a bash bug or a Glibc problem. Disable
78 # installation of this locale in order to avoid the problem.
79 sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
81 # The ldd shell script contains Bash-specific syntax. Change its default
82 # program interpreter to /bin/bash in case another /bin/sh is installed.
83 sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
85 # We don't install pt_chown(1) on the final system, so why install it to
87 sed -e "/^install.*pt_chown/d" -i login/Makefile
89 # Build nscd with -fstack-protector-all, instead of -fstack-protector:
90 sed -e "s/fstack-protector/&-all/" -i nscd/Makefile
92 cat %{DIR_SOURCE}/glibc-stack_chk_fail.c > debug/stack_chk_fail.c
96 -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
98 # stdlib/tst-putenvmod is not linked against libc.
99 sed -i stdlib/Makefile \
100 -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g"
102 # stdio-common/bug22 hits timeout.
103 sed -i stdio-common/bug22.c \
104 -e "s/#define TIMEOUT.*/#define TIMEOUT 300/"
106 # These tests don't work or need more investigation:
107 sed -i dlfcn/Makefile -e "s/default //g"
109 sed -i nptl/Makefile \
110 -e "s/tst-mutex5 //g" \
111 -e "s/tst-mutex5a //g" \
112 -e "s/tst-cond11 //g" \
113 -e "s/tst-rwlock6 //g" \
114 -e "s/tst-rwlock7 //g" \
115 -e "s/tst-sem5 //g" \
116 -e "s/tst-cancelx4 //g" \
117 -e "s/tst-cancelx5 //g" \
118 -e "s/tst-cancelx10 //g" \
119 -e "s/tst-cancelx18 //g" \
120 -e "s/tst-signal1 //g"
122 # These are known to fail on x86:
124 -e "s/tst-cpuclock1 //g" \
125 -e "s/tst-cpuclock2 //g"
127 sed -i elf/Makefile \
128 -e "s/tst-tls1 //g" \
129 -e "s/tst-tls1-static //g" \
130 -e "s/tst-tls2 //g" \
131 -e "s/tst-tls2-static //g" \
132 -e "s/tst-tls3 //g" \
133 -e "s/resolvfail //g" \
134 -e "s/constload1 //g" \
136 -e "s/lateglobal //g" \
138 -e "s/dblunload //g" \
140 -e "s/circleload1 //g" \
141 -e "s/tst-global1 //g" \
142 -e "s/tst-audit2 //g" \
143 -e "s/check-localplt //g" \
144 -e "s/check-localplt.out$$//g"
146 sed -i signal/Makefile \
147 -e "s/tst-sigset2//g"
150 configure_options = \
151 --build=%{DISTRO_BUILDTARGET} \
152 --host=%{DISTRO_BUILDTARGET} \
154 --libexecdir=/usr/lib/glibc \
157 --enable-kernel=%{OPTIMIZED_KERNEL} \
163 --enable-experimental-malloc \
167 if "%{DISTRO_ARCH}" == "armv5tel"
168 # Disable hardware FP for ARM.
169 configure_options += \
174 mkdir -p %{DIR_SRC}/glibc-build
175 cd %{DIR_SRC}/glibc-build
177 CFLAGS="${CFLAGS} -fno-asynchronous-unwind-tables" \
178 ../%{thisapp}/configure \
182 -e "s/^build-pic-default=.*/build-pic-default=yes/"
184 # Our GCC is already passing -fPIC, and that's all we want for the libraries.
185 # LDFLAGS.so is appended to so we don't build shared libraries with
186 # DT_TEXTREL (and to tell us if something goes wrong). For now we only build
187 # the libraries, not the programs:
188 echo "build-programs=no" >> configparms
190 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
191 CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
192 CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
194 # Then build the programs with hardening, so everything possible in
196 echo "# Nothing in here :D" > configparms
197 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
198 CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}"
202 # cd $(DIR_SRC)/glibc-build
203 # make check TIMEOUTFACTOR=16 \
204 # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
205 # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
209 cd %{DIR_SRC}/glibc-build
210 make install install_root=%{BUILDROOT}
213 mkdir -pv %{BUILDROOT}/usr/lib/locale
214 # This would install all locales that are supported
215 make localedata/install-locales install_root=%{BUILDROOT}
218 cp -v --remove-destination %{BUILDROOT}/usr/share/zoneinfo/GMT \
219 %{BUILDROOT}/etc/localtime
220 rm -rf %{BUILDROOT}/usr/share/zoneinfo
223 cp -vf %{DIR_SOURCE}/{ld.so.conf,nsswitch.conf} %{BUILDROOT}/etc
224 mkdir -pv %{BUILDROOT}/etc/{default,ld.so.conf.d}
225 install -p -m644 %{DIR_APP}/nis/nss %{BUILDROOT}/etc/default/nss
227 # Remove unused binaries
228 rm -vf %{BUILDROOT}/sbin/sln \
229 %{BUILDROOT}/usr/bin/rpcinfo
231 # Don't distribute linker cache
232 rm -vf %{BUILDROOT}/etc/ld.so.cache
234 # Include /usr/lib/gconv/gconv-modules.cache
235 > %{BUILDROOT}/usr/lib/gconv/gconv-modules.cache
236 chmod 644 %{BUILDROOT}/usr/lib/gconv/gconv-modules.cache
238 strip -g %{BUILDROOT}/usr/lib/*.o
240 # Move some libs to correct place
241 mv -v %{BUILDROOT}/lib/lib{memusage,pcprofile}.so %{BUILDROOT}/usr/lib/
245 /usr/lib/libc_nonshared.a
246 /usr/lib/libpthread_nonshared.a
252 requires = glibc-common=%{thisver}
256 # XXX description and summary are missing
269 summary = Object files for development using standard C libraries.
271 The glibc-devel package contains the object files necessary
272 for developing programs which use the standard C libraries (which are
273 used by nearly all programs). If you are developing programs which
274 will use the standard C libraries, your system needs to have these
275 standard object files available in order to create the
278 Install glibc-devel if you are going to develop programs which will
279 use the standard C libraries.
281 group = Development/Libraries
283 requires = glibc-headers=%{thisver}
285 files = /usr/lib/*.a /usr/lib/*.o
288 package glibc-headers
290 The glibc-headers package contains the header files necessary
291 for developing programs which use the standard C libraries (which are
292 used by nearly all programs). If you are developing programs which
293 will use the standard C libraries, your system needs to have these
294 standard header files available in order to create the
297 Install glibc-headers if you are going to develop programs which will
298 use the standard C libraries.
301 requires = kernel-headers
305 !/usr/include/linuxthreads
306 !/usr/include/gnu/stubs-[32164]*.h
311 summary = A Name Service Caching Daemon (nscd).
313 Nscd caches name service lookups and can dramatically improve
314 performance with NIS+, and may help with DNS as well.
316 group = System/Daemons
323 package %{name}-utils
324 summary = Development utilities from GNU C library.
326 The glibc-utils package contains memusage, a memory usage profiler,
327 mtrace, a memory leak tracer and xtrace, a function call tracer
328 which can be helpful during program debugging.
330 group = Development/Tools
334 /usr/bin/memusagestat
336 /usr/bin/pcprofiledump
338 /usr/lib/libmemusage.so
339 /usr/lib/libpcprofile.so
343 package %{name}-debuginfo