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://www.gnu.org/software/libc/libc.html
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 = 3.2
40 kernel-headers >= %{OPTIMIZED_KERNEL}
46 # Build glibc with custom cflags
47 GLIBC_FLAGS = -O3 -g -fasynchronous-unwind-tables -DNDEBUG
49 if "%{DISTRO_ARCH}" == "i686"
50 GLIBC_FLAGS += -march=i686 -mtune=generic
53 if "%{DISTRO_ARCH}" == "x86_64"
54 GLIBC_FLAGS += -mtune=generic
57 export CFLAGS = %{GLIBC_FLAGS}
58 export CXXFLAGS = %{GLIBC_FLAGS}
60 export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
63 # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
64 # unknown whether this is a bash bug or a Glibc problem. Disable
65 # installation of this locale in order to avoid the problem.
66 sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
68 # The ldd shell script contains Bash-specific syntax. Change its default
69 # program interpreter to /bin/bash in case another /bin/sh is installed.
70 sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
72 # We don't install pt_chown(1) on the final system
73 sed -e "/^install.*pt_chown/d" -i login/Makefile
75 # Build nscd with -fstack-protector-all, instead of -fstack-protector:
76 sed -e "s/fstack-protector/&-strong/" -i nscd/Makefile
80 -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
82 # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html
83 sed -e "s/PIC/SHARED/g" -i sysdeps/arm/{set,__long}jmp.S
87 --build=%{DISTRO_BUILDTARGET} \
89 --libexecdir=%{libdir}/glibc \
92 --enable-kernel=%{OPTIMIZED_KERNEL} \
95 --enable-obsolete-rpc \
96 --with-bugurl=http://bugtracker.ipfire.org \
99 if "%{DISTRO_ARCH}" == "armv5tel"
100 # Disable hardware FP for ARM.
101 configure_options += \
106 mkdir -p %{DIR_SRC}/glibc-build
107 cd %{DIR_SRC}/glibc-build
109 CFLAGS="${CFLAGS} -fno-asynchronous-unwind-tables" \
110 ../%{thisapp}/configure \
113 # Our GCC is already passing -fPIC, and that's all we want for the libraries.
114 # LDFLAGS.so is appended to so we don't build shared libraries with
115 # DT_TEXTREL (and to tell us if something goes wrong). For now we only build
116 # the libraries, not the programs:
117 echo "build-programs=no" >> configparms
119 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
120 CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
121 CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
123 # Then build the programs with hardening, so everything possible in
125 echo "# Nothing in here :D" > configparms
126 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
127 CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}"
131 cd %{DIR_SRC}/glibc-build
132 make install install_root=%{BUILDROOT}
135 mkdir -pv %{BUILDROOT}/usr/lib/locale
136 # This would install all locales that are supported
137 make localedata/install-locales install_root=%{BUILDROOT}
140 cp -vf %{DIR_SOURCE}/{ld.so.conf,nsswitch.conf} %{BUILDROOT}/etc
141 mkdir -pv %{BUILDROOT}/etc/{default,ld.so.conf.d}
142 install -p -m644 %{DIR_APP}/nis/nss %{BUILDROOT}/etc/default/nss
144 if [ "%{DISTRO_ARCH}" = "armv7hl" ]; then
145 ln -svf ld-linux-armhf.so.3 %{BUILDROOT}/lib/ld-linux.so.3
148 # Remove unused binaries
149 rm -vf %{BUILDROOT}/sbin/sln \
150 %{BUILDROOT}/usr/bin/rpcinfo
152 # Don't distribute linker cache
153 rm -vf %{BUILDROOT}/etc/ld.so.cache
155 # Include /usr/lib/gconv/gconv-modules.cache
156 > %{BUILDROOT}%{libdir}/gconv/gconv-modules.cache
157 chmod 644 %{BUILDROOT}%{libdir}/gconv/gconv-modules.cache
159 strip -g %{BUILDROOT}%{libdir}/*.o
161 # Move some libs to correct place
162 mv -v %{BUILDROOT}/%{lib}/lib{memusage,pcprofile}.so %{BUILDROOT}%{libdir}
164 # Fix library permissions.
165 chmod 755 %{BUILDROOT}%{libdir}/lib*.so*
167 # rquota.x and rquota.h are now provided by quota
168 rm -vf %{BUILDROOT}%{includedir}/rpcsvc/rquota.[hx]
172 %{libdir}/libc_nonshared.a
173 %{libdir}/libmvec_nonshared.a
174 %{libdir}/libpthread_nonshared.a
180 if "%{DISTRO_ARCH}" == "armv7hl"
181 provides += ld-linux.so.3
182 provides += ld-linux.so.3(GLIBC_2.4)
183 provides += ld-linux.so.3(GLIBC_PRIVATE)
191 kernel < %{OPTIMIZED_KERNEL}
195 glibc-common < %{thisver}
204 glibc-headers = %{thisver}
205 kernel-headers >= %{OPTIMIZED_KERNEL}
209 glibc-headers = %{thisver}
213 glibc-headers < %{thisver}
216 files += %{libdir}/*.[ao]
220 summary = A Name Service Caching Daemon (nscd).
222 Nscd caches name service lookups and can dramatically improve
223 performance with NIS+, and may help with DNS as well.
225 group = System/Daemons
232 package %{name}-utils
233 summary = Development utilities from GNU C library.
235 The glibc-utils package contains memusage, a memory usage profiler,
236 mtrace, a memory leak tracer and xtrace, a function call tracer
237 which can be helpful during program debugging.
239 group = Development/Tools
243 /usr/bin/memusagestat
245 /usr/bin/pcprofiledump
247 %{libdir}/libmemusage.so
248 %{libdir}/libpcprofile.so
252 package %{name}-debuginfo