]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blob - glibc/glibc.nm
glibc: Make package work on x86_64.
[people/arne_f/ipfire-3.x.git] / glibc / glibc.nm
1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
5
6 name = glibc
7 version = 2.14.1
8 release = 1
9
10 maintainer = Michael Tremer <michael.tremer@ipfire.org>
11 groups = System/Base
12 url = http://sources.redhat.com/glibc/
13 license = GPLv2+ LGPLv2+
14 summary = The GNU libc libraries.
15
16 description
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.
24 end
25
26 # The version of the ports addon.
27 ports_version = %{version}
28
29 source_dl = http://ftp.gnu.org/gnu/glibc/
30 sources = %{thisapp}.tar.xz glibc-ports-%{ports_version}.tar.xz
31
32 build
33 # Optimize glibc for kernel
34 OPTIMIZED_KERNEL = 2.6.32
35
36 requires
37 audit-devel
38 autoconf
39 automake
40 gettext
41 kernel-headers>=%{OPTIMIZED_KERNEL}
42 libcap-devel
43 libselinux-devel
44 nss-devel
45 texinfo
46 end
47
48 # Build glibc with custom cflags
49 GLIBC_FLAGS = -O3 -g -fasynchronous-unwind-tables -DNDEBUG -fPIC -DPIC
50
51 if "%{DISTRO_ARCH}" == "i686"
52 GLIBC_FLAGS += -march=i686 -mtune=generic
53 end
54
55 if "%{DISTRO_ARCH}" == "x86_64"
56 GLIBC_FLAGS += -mtune=generic
57 end
58
59 export CFLAGS = %{GLIBC_FLAGS}
60 export CXXFLAGS = %{GLIBC_FLAGS}
61
62 export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
63
64 prepare
65 # Extract source tarballs.
66 %{MACRO_EXTRACT_TARBALL}
67
68 # Create link for ports addon.
69 ln -svf ../glibc-ports-%{ports_version} ports
70
71 # Apply the patches.
72 %{MACRO_PATCHES}
73
74 # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
75 # unknown whether this is a bash bug or a Glibc problem. Disable
76 # installation of this locale in order to avoid the problem.
77 sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
78
79 # The ldd shell script contains Bash-specific syntax. Change its default
80 # program interpreter to /bin/bash in case another /bin/sh is installed.
81 sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
82
83 # We don't install pt_chown(1) on the final system, so why install it to
84 # $(TOOLS_DIR):
85 sed -e "/^install.*pt_chown/d" -i login/Makefile
86
87 # Build nscd with -fstack-protector-all, instead of -fstack-protector:
88 sed -e "s/fstack-protector/&-all/" -i nscd/Makefile
89
90 cat %{DIR_SOURCE}/glibc-stack_chk_fail.c > debug/stack_chk_fail.c
91
92 # Use gnu hash style
93 sed -i Makeconfig \
94 -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
95
96 # stdlib/tst-putenvmod is not linked against libc.
97 sed -i stdlib/Makefile \
98 -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g"
99
100 # stdio-common/bug22 hits timeout.
101 sed -i stdio-common/bug22.c \
102 -e "s/#define TIMEOUT.*/#define TIMEOUT 300/"
103
104 # These tests don't work or need more investigation:
105 sed -i dlfcn/Makefile -e "s/default //g"
106
107 sed -i nptl/Makefile \
108 -e "s/tst-mutex5 //g" \
109 -e "s/tst-mutex5a //g" \
110 -e "s/tst-cond11 //g" \
111 -e "s/tst-rwlock6 //g" \
112 -e "s/tst-rwlock7 //g" \
113 -e "s/tst-sem5 //g" \
114 -e "s/tst-cancelx4 //g" \
115 -e "s/tst-cancelx5 //g" \
116 -e "s/tst-cancelx10 //g" \
117 -e "s/tst-cancelx18 //g" \
118 -e "s/tst-signal1 //g"
119
120 # These are known to fail on x86:
121 sed -i rt/Makefile \
122 -e "s/tst-cpuclock1 //g" \
123 -e "s/tst-cpuclock2 //g"
124
125 sed -i elf/Makefile \
126 -e "s/tst-tls1 //g" \
127 -e "s/tst-tls1-static //g" \
128 -e "s/tst-tls2 //g" \
129 -e "s/tst-tls2-static //g" \
130 -e "s/tst-tls3 //g" \
131 -e "s/resolvfail //g" \
132 -e "s/constload1 //g" \
133 -e "s/order //g" \
134 -e "s/lateglobal //g" \
135 -e "s/dblload //g" \
136 -e "s/dblunload //g" \
137 -e "s/reldep6 //g" \
138 -e "s/circleload1 //g" \
139 -e "s/tst-global1 //g" \
140 -e "s/tst-audit2 //g" \
141 -e "s/check-localplt //g" \
142 -e "s/check-localplt.out$$//g"
143
144 sed -i signal/Makefile \
145 -e "s/tst-sigset2//g"
146 end
147
148 configure_options = \
149 --build=%{DISTRO_BUILDTARGET} \
150 --prefix=/usr \
151 --libexecdir=%{libdir}/glibc \
152 --disable-profile \
153 --enable-add-ons \
154 --enable-kernel=%{OPTIMIZED_KERNEL} \
155 --with-selinux \
156 --disable-werror \
157 --enable-experimental-malloc \
158 --enable-bind-now \
159 --enable-nss-crypt
160
161 if "%{DISTRO_ARCH}" == "armv5tel"
162 # Disable hardware FP for ARM.
163 configure_options += \
164 --without-fp
165 end
166
167 build
168 mkdir -p %{DIR_SRC}/glibc-build
169 cd %{DIR_SRC}/glibc-build
170
171 CFLAGS="${CFLAGS} -fno-asynchronous-unwind-tables" \
172 ../%{thisapp}/configure \
173 %{configure_options}
174
175 sed -i config.make \
176 -e "s/^build-pic-default=.*/build-pic-default=yes/"
177
178 # Our GCC is already passing -fPIC, and that's all we want for the libraries.
179 # LDFLAGS.so is appended to so we don't build shared libraries with
180 # DT_TEXTREL (and to tell us if something goes wrong). For now we only build
181 # the libraries, not the programs:
182 echo "build-programs=no" >> configparms
183
184 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
185 CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
186 CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
187
188 # Then build the programs with hardening, so everything possible in
189 # is hardened:
190 echo "# Nothing in here :D" > configparms
191 make PARALLELMFLAGS=%{PARALLELISMFLAGS} \
192 CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}"
193 end
194
195 #test
196 # cd $(DIR_SRC)/glibc-build
197 # make check TIMEOUTFACTOR=16 \
198 # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \
199 # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE"
200 #end
201
202 install
203 cd %{DIR_SRC}/glibc-build
204 make install install_root=%{BUILDROOT}
205
206 # Locales
207 mkdir -pv %{BUILDROOT}/usr/lib/locale
208 # This would install all locales that are supported
209 make localedata/install-locales install_root=%{BUILDROOT}
210
211 # Timezone
212 cp -v --remove-destination %{BUILDROOT}/usr/share/zoneinfo/GMT \
213 %{BUILDROOT}/etc/localtime
214 rm -rf %{BUILDROOT}/usr/share/zoneinfo
215
216 # Configuration
217 cp -vf %{DIR_SOURCE}/{ld.so.conf,nsswitch.conf} %{BUILDROOT}/etc
218 mkdir -pv %{BUILDROOT}/etc/{default,ld.so.conf.d}
219 install -p -m644 %{DIR_APP}/nis/nss %{BUILDROOT}/etc/default/nss
220
221 # Remove unused binaries
222 rm -vf %{BUILDROOT}/sbin/sln \
223 %{BUILDROOT}/usr/bin/rpcinfo
224
225 # Don't distribute linker cache
226 rm -vf %{BUILDROOT}/etc/ld.so.cache
227
228 # Include /usr/lib/gconv/gconv-modules.cache
229 > %{BUILDROOT}%{libdir}/gconv/gconv-modules.cache
230 chmod 644 %{BUILDROOT}%{libdir}/gconv/gconv-modules.cache
231
232 strip -g %{BUILDROOT}%{libdir}/*.o
233
234 # Move some libs to correct place
235 mv -v %{BUILDROOT}/%{lib}/lib{memusage,pcprofile}.so %{BUILDROOT}%{libdir}
236 end
237
238 keep_libraries
239 %{libdir}/libc_nonshared.a
240 %{libdir}/libpthread_nonshared.a
241 end
242 end
243
244 packages
245 package glibc
246 requires = glibc-common=%{thisver}
247 end
248
249 package glibc-common
250 # XXX description and summary are missing
251
252 requires = tzdata
253
254 files
255 /usr/bin
256 /usr/sbin
257 /usr/share
258 !/usr/share/zoneinfo
259 end
260 end
261
262 package glibc-devel
263 summary = Object files for development using standard C libraries.
264 description
265 The glibc-devel package contains the object files necessary
266 for developing programs which use the standard C libraries (which are
267 used by nearly all programs). If you are developing programs which
268 will use the standard C libraries, your system needs to have these
269 standard object files available in order to create the
270 executables.
271
272 Install glibc-devel if you are going to develop programs which will
273 use the standard C libraries.
274 end
275 group = Development/Libraries
276
277 requires = glibc-headers=%{thisver}
278
279 files = %{libdir}/*.a %{libdir}/*.o
280 end
281
282 package glibc-headers
283 description
284 The glibc-headers package contains the header files necessary
285 for developing programs which use the standard C libraries (which are
286 used by nearly all programs). If you are developing programs which
287 will use the standard C libraries, your system needs to have these
288 standard header files available in order to create the
289 executables.
290
291 Install glibc-headers if you are going to develop programs which will
292 use the standard C libraries.
293 end
294
295 requires = kernel-headers
296
297 files
298 /usr/include
299 !/usr/include/linuxthreads
300 !/usr/include/gnu/stubs-[32164]*.h
301 end
302 end
303
304 package nscd
305 summary = A Name Service Caching Daemon (nscd).
306 description
307 Nscd caches name service lookups and can dramatically improve
308 performance with NIS+, and may help with DNS as well.
309 end
310 group = System/Daemons
311
312 files
313 /usr/sbin/nscd
314 end
315 end
316
317 package %{name}-utils
318 summary = Development utilities from GNU C library.
319 description
320 The glibc-utils package contains memusage, a memory usage profiler,
321 mtrace, a memory leak tracer and xtrace, a function call tracer
322 which can be helpful during program debugging.
323 end
324 group = Development/Tools
325
326 files
327 /usr/bin/memusage
328 /usr/bin/memusagestat
329 /usr/bin/mtrace
330 /usr/bin/pcprofiledump
331 /usr/bin/xtrace
332 %{libdir}/libmemusage.so
333 %{libdir}/libpcprofile.so
334 end
335 end
336
337 package %{name}-debuginfo
338 template DEBUGINFO
339 end
340 end