]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blob - glibc/glibc.nm
glibc: Package glibc locale in glibc-common package.
[people/amarx/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.15
8 release = 3
9 thisapp = %{name}-2.15-a316c1f
10
11 maintainer = Michael Tremer <michael.tremer@ipfire.org>
12 groups = System/Base
13 url = http://sources.redhat.com/glibc/
14 license = GPLv2+ LGPLv2+
15 summary = The GNU libc libraries.
16
17 description
18 The glibc package contains standard libraries which are used by
19 multiple programs on the system. In order to save disk space and
20 memory, as well as to make upgrading easier, common system code is
21 kept in one place and shared between programs. This particular package
22 contains the most important sets of shared libraries: the standard C
23 library and the standard math library. Without these two libraries, a
24 Linux system will not function.
25 end
26
27 # The version of the ports addon.
28 ports_version = 2.15-8a70b2d
29
30 source_dl = http://ftp.gnu.org/gnu/glibc/
31 sources = %{thisapp}.tar.gz glibc-ports-%{ports_version}.tar.gz
32
33 build
34 # Optimize glibc for kernel
35 OPTIMIZED_KERNEL = 2.6.32
36
37 requires
38 audit-devel
39 autoconf
40 automake
41 gettext
42 kernel-headers>=%{OPTIMIZED_KERNEL}
43 libcap-devel
44 libselinux-devel
45 nss-devel
46 texinfo
47 end
48
49 # Build glibc with custom cflags
50 GLIBC_FLAGS = -O3 -g -fasynchronous-unwind-tables -DNDEBUG -fPIC -DPIC
51
52 if "%{DISTRO_ARCH}" == "i686"
53 GLIBC_FLAGS += -march=i686 -mtune=generic
54 end
55
56 if "%{DISTRO_ARCH}" == "x86_64"
57 GLIBC_FLAGS += -mtune=generic
58 end
59
60 export CFLAGS = %{GLIBC_FLAGS}
61 export CXXFLAGS = %{GLIBC_FLAGS}
62
63 export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
64
65 prepare
66 # Extract source tarballs.
67 %{MACRO_EXTRACT_TARBALL}
68
69 # Create link for ports addon.
70 ln -svf ../glibc-ports-%{ports_version} ports
71
72 # Apply the patches.
73 %{MACRO_PATCHES}
74
75 # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is
76 # unknown whether this is a bash bug or a Glibc problem. Disable
77 # installation of this locale in order to avoid the problem.
78 sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
79
80 # The ldd shell script contains Bash-specific syntax. Change its default
81 # program interpreter to /bin/bash in case another /bin/sh is installed.
82 sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
83
84 # We don't install pt_chown(1) on the final system, so why install it to
85 # $(TOOLS_DIR):
86 sed -e "/^install.*pt_chown/d" -i login/Makefile
87
88 # Build nscd with -fstack-protector-all, instead of -fstack-protector:
89 sed -e "s/fstack-protector/&-all/" -i nscd/Makefile
90
91 cat %{DIR_SOURCE}/glibc-stack_chk_fail.c > debug/stack_chk_fail.c
92
93 # Use gnu hash style
94 sed -i Makeconfig \
95 -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
96
97 # stdlib/tst-putenvmod is not linked against libc.
98 sed -i stdlib/Makefile \
99 -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g"
100
101 # stdio-common/bug22 hits timeout.
102 sed -i stdio-common/bug22.c \
103 -e "s/#define TIMEOUT.*/#define TIMEOUT 300/"
104
105 # These tests don't work or need more investigation:
106 sed -i dlfcn/Makefile -e "s/default //g"
107
108 sed -i nptl/Makefile \
109 -e "s/tst-mutex5 //g" \
110 -e "s/tst-mutex5a //g" \
111 -e "s/tst-cond11 //g" \
112 -e "s/tst-rwlock6 //g" \
113 -e "s/tst-rwlock7 //g" \
114 -e "s/tst-sem5 //g" \
115 -e "s/tst-cancelx4 //g" \
116 -e "s/tst-cancelx5 //g" \
117 -e "s/tst-cancelx10 //g" \
118 -e "s/tst-cancelx18 //g" \
119 -e "s/tst-signal1 //g"
120
121 # These are known to fail on x86:
122 sed -i rt/Makefile \
123 -e "s/tst-cpuclock1 //g" \
124 -e "s/tst-cpuclock2 //g"
125
126 sed -i elf/Makefile \
127 -e "s/tst-tls1 //g" \
128 -e "s/tst-tls1-static //g" \
129 -e "s/tst-tls2 //g" \
130 -e "s/tst-tls2-static //g" \
131 -e "s/tst-tls3 //g" \
132 -e "s/resolvfail //g" \
133 -e "s/constload1 //g" \
134 -e "s/order //g" \
135 -e "s/lateglobal //g" \
136 -e "s/dblload //g" \
137 -e "s/dblunload //g" \
138 -e "s/reldep6 //g" \
139 -e "s/circleload1 //g" \
140 -e "s/tst-global1 //g" \
141 -e "s/tst-audit2 //g" \
142 -e "s/check-localplt //g" \
143 -e "s/check-localplt.out$$//g"
144
145 sed -i signal/Makefile \
146 -e "s/tst-sigset2//g"
147 end
148
149 configure_options = \
150 --build=%{DISTRO_BUILDTARGET} \
151 --prefix=/usr \
152 --libexecdir=%{libdir}/glibc \
153 --disable-profile \
154 --enable-add-ons \
155 --enable-kernel=%{OPTIMIZED_KERNEL} \
156 --with-selinux \
157 --disable-werror \
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/lib/locale
259 !/usr/share/zoneinfo
260 end
261 end
262
263 package glibc-devel
264 summary = Object files for development using standard C libraries.
265 description
266 The glibc-devel package contains the object files necessary
267 for developing programs which use the standard C libraries (which are
268 used by nearly all programs). If you are developing programs which
269 will use the standard C libraries, your system needs to have these
270 standard object files available in order to create the
271 executables.
272
273 Install glibc-devel if you are going to develop programs which will
274 use the standard C libraries.
275 end
276 group = Development/Libraries
277
278 requires = glibc-headers=%{thisver}
279
280 files = %{libdir}/*.a %{libdir}/*.o
281 end
282
283 package glibc-headers
284 description
285 The glibc-headers package contains the header files necessary
286 for developing programs which use the standard C libraries (which are
287 used by nearly all programs). If you are developing programs which
288 will use the standard C libraries, your system needs to have these
289 standard header files available in order to create the
290 executables.
291
292 Install glibc-headers if you are going to develop programs which will
293 use the standard C libraries.
294 end
295
296 requires = kernel-headers
297
298 files
299 /usr/include
300 !/usr/include/linuxthreads
301 !/usr/include/gnu/stubs-[32164]*.h
302 end
303 end
304
305 package nscd
306 summary = A Name Service Caching Daemon (nscd).
307 description
308 Nscd caches name service lookups and can dramatically improve
309 performance with NIS+, and may help with DNS as well.
310 end
311 group = System/Daemons
312
313 files
314 /usr/sbin/nscd
315 end
316 end
317
318 package %{name}-utils
319 summary = Development utilities from GNU C library.
320 description
321 The glibc-utils package contains memusage, a memory usage profiler,
322 mtrace, a memory leak tracer and xtrace, a function call tracer
323 which can be helpful during program debugging.
324 end
325 group = Development/Tools
326
327 files
328 /usr/bin/memusage
329 /usr/bin/memusagestat
330 /usr/bin/mtrace
331 /usr/bin/pcprofiledump
332 /usr/bin/xtrace
333 %{libdir}/libmemusage.so
334 %{libdir}/libpcprofile.so
335 end
336 end
337
338 package %{name}-debuginfo
339 template DEBUGINFO
340 end
341 end