Magellan Linux

Contents of /trunk/core/glibc/glibc-2.15-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12753 - (show annotations) (download)
Mon Jul 2 14:37:15 2012 UTC (11 years, 10 months ago) by niro
File size: 16979 byte(s)
-marked unstable
1 # $Id$
2
3 PNAME="glibc"
4 PVER="2.15"
5 PBUILD="r1"
6
7 PCAT="sys-libs"
8 STATE="unstable"
9
10 DESCRIPTION="GNU libc6 (also called glibc2) C library with NPTL Threads."
11 HOMEPAGE="http://www.gnu.org/software/libc/libc.html"
12
13 DEPEND=">= sys-apps/base-files-0.1"
14
15 # we force headers to one specific version
16 # (for x86_64 2.6.12.0-r2 bi-arch headers are needed!)
17 SDEPEND="== sys-kernel/linux-libc-headers-3.1.8"
18 PROVIDE="virtual/glibc"
19
20 # functions to include in the mage file
21 SPECIAL_FUNCTIONS="fix_db_files"
22
23 SRCFILE="glibc-${PVER/.0/}.tar.xz"
24 SRCDIR="${BUILDDIR}/glibc-${PVER/.0/}"
25
26 sminclude mtools
27
28 SRC_URI=(
29 ftp://sources.redhat.com/pub/glibc/releases/${SRCFILE}
30 ftp://sources.redhat.com/pub/glibc/snapshots/${SRCFILE}
31 gnu://${PNAME}/${SRCFILE}
32 mirror://${PNAME}/${SRCFILE}
33 mirror://${PNAME}/glibc.envd
34 mirror://${PNAME}/locale.gen-header
35 mirror://${PNAME}/locale-gen
36 mirror://${PNAME}/${PNAME}-2.12.1-bz4781.patch
37 mirror://${PNAME}/${PNAME}-2.12.1-i686.patch
38 mirror://${PNAME}/${PNAME}-2.12.2-ignore-origin-of-privileged-program.patch
39 mirror://${PNAME}/${PNAME}-2.13-dlclose-search-reset.patch
40 mirror://${PNAME}/${PNAME}-2.14-libdl-crash.patch
41 mirror://${PNAME}/${PNAME}-2.14-reexport-rpc-interface.patch
42 mirror://${PNAME}/${PNAME}-2.14-reinstall-nis-rpc-headers.patch
43 mirror://${PNAME}/${PNAME}-${PVER}-fix-res_query-assert.patch
44 mirror://${PNAME}/${PNAME}-${PVER}-lddebug-scopes.patch
45 mirror://${PNAME}/${PNAME}-${PVER}-revert-c5a0802a.patch
46 mirror://${PNAME}/${PNAME}-${PVER}-scanf.patch
47 mirror://${PNAME}/${PNAME}-${PVER}-ifunc.patch
48 mirror://${PNAME}/${PNAME}-${PVER}-avx.patch
49 mirror://${PNAME}/${PNAME}-${PVER}-strcasecmp-disable-avx.patch
50 mirror://${PNAME}/${PNAME}-${PVER}-gb18030.patch
51 mirror://${PNAME}/${PNAME}-${PVER}-revert-netlink-cache.patch
52 mirror://${PNAME}/${PNAME}-${PVER}-arena.patch
53 mirror://${PNAME}/${PNAME}-${PVER}-negative-result-cache.patch
54 mirror://${PNAME}/${PNAME}-${PVER}-multiarch-x86-strcmp.patch
55 mirror://${PNAME}/${PNAME}-${PVER}-vdso.patch
56 mirror://${PNAME}/${PNAME}-${PVER}-feraiseexcept-plt.patch
57 mirror://${PNAME}/${PNAME}-${PVER}-vfprintf-nargs.patch
58 mirror://${PNAME}/${PNAME}-${PVER}-__libc_res_nquerydomain-out-of-bounds.patch
59 mirror://${PNAME}/${PNAME}-${PVER}-fmtmsg-locking.patch
60 mirror://${PNAME}/${PNAME}-${PVER}-non-signalling-comparisons.patch
61 mirror://${PNAME}/${PNAME}-${PVER}-rintf-rounding.patch
62 mirror://${PNAME}/${PNAME}-${PVER}-nearbyintf-rounding.patch
63 mirror://${PNAME}/${PNAME}-${PVER}-confstr-local-buffer-extent.patch
64 mirror://${PNAME}/${PNAME}-${PVER}-testsuite.patch
65 )
66
67 # sed line: on 2 digits add an zero: 2.7 -> 2.7.0
68 UP2DATE="updatecmd_gnu ${PNAME/-nptl/} | sed 's/^\([0-9]\.[0-9]\$\)/\1.0/'"
69
70 # glibc don't like strong CFLAGS
71 export CFLAGS="${CFLAGS//-O?} -O2"
72 # glibc -> nptl thread don't like striping
73 msetfeature "!strip"
74 # gcc 3.0 - 3.3 needs this:
75 export CFLAGS="${CFLAGS} -finline-limit=2000"
76 export CXXFLAGS="${CFLAGS}"
77 export LDFLAGS="${LDFLAGS//-Wl,--relax}"
78
79 # hack to fix NPTL issues with xen, only required on 32bit arches
80 if [[ ${ARCH} = i*86 ]]
81 then
82 export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs"
83 fi
84
85 # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic
86 # first filter -mtune and -march from flags
87 for flag in ${CFLAGS}
88 do
89 case ${flag} in
90 -mtune=*) continue ;;
91 -march=*) continue ;;
92 esac
93 newflags="${newflags} ${flag}"
94 done
95 export CFLAGS="${newflags}"
96
97 # than add our defaults for glibc
98 [[ ${ARCH} = i*86 ]] && export CFLAGS="${CFLAGS} -march=${ARCH}" # only i*86
99 export CFLAGS="${CFLAGS} -mtune=generic" # all arches
100 export CXXFLAGS="${CFLAGS}"
101
102 # use other linux-headers
103 [[ -z ${ALT_HEADERS} ]] && export ALT_HEADERS="/usr/include"
104
105 # kernel support
106 export ENABLE_KERNEL=2.6.32
107
108 src_prepare()
109 {
110 munpack ${SRCFILE} || die
111 cd ${SRCDIR}
112
113 # http://sources.redhat.com/bugzilla/show_bug.cgi?id=4781
114 mpatch ${PNAME}-2.12.1-bz4781.patch || die
115
116 # http://sources.redhat.com/bugzilla/show_bug.cgi?id=411
117 # http://sourceware.org/ml/libc-alpha/2009-07/msg00072.html
118 mpatch ${PNAME}-2.12.1-i686.patch || die
119
120 # security fix, fixes CVE-2010-3847
121 # see: http://www.exploit-db.com/exploits/15274/
122 mpatch ${PNAME}-2.12.2-ignore-origin-of-privileged-program.patch || die
123
124 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=675155e9 (fedora branch)
125 # http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
126 mpatch ${PNAME}-2.14-libdl-crash.patch || die
127
128 # re-export RPC interface until libtirpc is ready as a replacement
129 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (fedora branch)
130 mpatch ${PNAME}-2.14-reexport-rpc-interface.patch || die
131 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=bdd816a3 (fedora branch)
132 mpatch ${PNAME}-2.14-reinstall-nis-rpc-headers.patch || die
133
134 # fix res_query assertion
135 # http://sourceware.org/bugzilla/show_bug.cgi?id=13013
136 mpatch ${PNAME}-${PVER}-fix-res_query-assert.patch || die
137
138 # fix up regcomp/regexec
139 # http://sourceware.org/git/?p=glibc.git;a=commit;h=2ba92745
140 # mpatch ${PNAME}-${PVER}-regex.patch
141
142 # propriety nvidia crash - https://bugzilla.redhat.com/show_bug.cgi?id=737223
143 # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0c95ab64 (fedora branch)
144 mpatch ${PNAME}-${PVER}-lddebug-scopes.patch || die
145
146 # revert commit c5a0802a - causes various hangs
147 # https://bugzilla.redhat.com/show_bug.cgi?id=769421
148 # Note: fedora may have actual fix (not submitted upstream yet...)
149 # http://pkgs.fedoraproject.org/gitweb/?p=glibc.git;a=blob_plain;f=glibc-rh552960-2.patch
150 mpatch ${PNAME}-${PVER}-revert-c5a0802a.patch || die
151
152 # fix realloc usage in vfscanf
153 # http://sourceware.org/git/?p=glibc.git;a=commit;h=20b38e03
154 mpatch ${PNAME}-${PVER}-scanf.patch || die
155
156 # fix ifunc relocations
157 # http://sourceware.org/git/?p=glibc.git;a=commit;h=6ee65ed6
158 mpatch ${PNAME}-${PVER}-ifunc.patch || die
159
160 # fix AVX detection
161 # http://sourceware.org/git/?p=glibc.git;a=commit;h=afc5ed09
162 # http://sourceware.org/git/?p=glibc.git;a=commit;h=08cf777f
163 mpatch ${PNAME}-${PVER}-avx.patch || die
164 # and "fix" strcasecmp
165 mpatch ${PNAME}-${PVER}-strcasecmp-disable-avx.patch || die
166
167 # fix GB18030 charmap
168 # http://sourceware.org/bugzilla/show_bug.cgi?id=11837
169 # http://sourceware.org/git/?p=glibc.git;a=commit;h=2a57bd79 (fedora branch)
170 # http://sourceware.org/git/?p=glibc.git;a=commit;h=3d828a61 (fedora branch)
171 mpatch ${PNAME}-${PVER}-gb18030.patch || die
172
173 # fix crash in __nscd_get_mapping if nscd not running
174 # http://sourceware.org/bugzilla/show_bug.cgi?id=13594 (potential fix in comment)
175 # reverts commit 3a2c0242 and other necessary following changes...
176 mpatch ${PNAME}-${PVER}-revert-netlink-cache.patch || die
177
178 # handle ARENA_TEST correctly
179 # http://sourceware.org/git/?p=glibc.git;a=commit;h=41b81892
180 mpatch ${PNAME}-${PVER}-arena.patch || die
181
182 # do not cache negative results in nscd if these are transient
183 # http://sourceware.org/git/?p=glibc.git;a=commit;h=3e1aa84e
184 mpatch ${PNAME}-${PVER}-negative-result-cache.patch || die
185
186 # strcasecmp_l, strncasecmp_l act as strcmp for multiarch x86
187 # http://sourceware.org/git/?p=glibc.git;a=commit;h=0bab47b6
188 mpatch ${PNAME}-${PVER}-multiarch-x86-strcmp.patch || die
189
190 # always set l_used for vDSO.
191 # http://sourceware.org/git/?p=glibc.git;a=commit;h=1f393a11
192 mpatch ${PNAME}-${PVER}-vdso.patch || die
193
194 # fix x86 PLT slot usage for feraiseexcept
195 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7c35ffed
196 mpatch ${PNAME}-${PVER}-feraiseexcept-plt.patch || die
197
198 # vfprintf nargs overflow - CVE-2012-0864
199 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7c1f4834
200 mpatch ${PNAME}-${PVER}-vfprintf-nargs.patch || die
201
202 # avoid out ouf bounds read in __libc_res_nquerydomain
203 # http://sourceware.org/git/?p=glibc.git;a=commit;h=8fdceb2e
204 mpatch ${PNAME}-${PVER}-__libc_res_nquerydomain-out-of-bounds.patch || die
205
206 # make fmtmsg function thread-safe
207 # http://sourceware.org/git/?p=glibc.git;a=commit;h=7724defc
208 mpatch ${PNAME}-${PVER}-fmtmsg-locking.patch || die
209
210 # use non-signaling floating-point comparisons in math functions
211 # http://sourceware.org/git/?p=glibc.git;a=commit;h=92221550
212 mpatch ${PNAME}-${PVER}-non-signalling-comparisons.patch || die
213
214 # fix rintf rounding.
215 # http://sourceware.org/git/?p=glibc.git;a=commit;h=fe45ce09
216 mpatch ${PNAME}-${PVER}-rintf-rounding.patch || die
217
218 # fix nearbyintf rounding
219 # http://sourceware.org/git/?p=glibc.git;a=commit;h=6cbeae47
220 mpatch ${PNAME}-${PVER}-nearbyintf-rounding.patch || die
221
222 # fix varaible scope issue in confstr
223 # http://sourceware.org/git/?p=glibc.git;a=commit;h=ac4c54f0
224 # http://sourceware.org/git/?p=glibc.git;a=commit;h=d6a403f9
225 mpatch ${PNAME}-${PVER}-confstr-local-buffer-extent.patch || die
226
227 # fix testsuite failures with --as-needed
228 # http://sourceware.org/git/?p=glibc.git;a=commit;h=d4c2917f
229 mpatch ${PNAME}-${PVER}-testsuite.patch || die
230
231 # binutils patch needs reconf
232 autoconf --force || die
233
234 # fix permissions on some of the scripts
235 chmod u+x ${SRCDIR}/scripts/*.sh || die
236
237 install -d ${SRCDIR}/build || die
238 cd ${SRCDIR}/build
239
240 if [ ! -f /etc/ld.so.conf ]
241 then
242 touch /etc/ld.so.conf || die
243 fi
244 }
245
246 src_compile()
247 {
248 local myopts
249
250 # generic pathes
251 myopts="--prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info"
252 # disable profiling
253 myopts+=" --disable-profile"
254 # enable addons
255 myopts+=" --enable-add-ons=nptl,libidn"
256 # enable tls
257 myopts+=" --with-tls --with-__thread"
258 # supported kernel-release
259 myopts+=" --enable-kernel=${ENABLE_KERNEL}"
260 # disable cvs and gd support
261 myopts+=" --without-cvs --without-gd"
262 # enable bindnow
263 myopts+=" --enable-bind-now"
264
265 # support multilib lib64 dir (x86_64 only)
266 if [[ ${ARCH} = x86_64 ]]
267 then
268 # first build a -m32 version
269 install -d ${SRCDIR}/build-m32
270 cd ${SRCDIR}/build-m32
271
272 CC="gcc -m32" CXX="g++ -m32" \
273 CFLAGS="${CFLAGS//-march=${ARCH}} -march=i686" \
274 CXXFLAGS="${CXXFLAGS//-march=${ARCH}} -march=i686" \
275 ../configure \
276 --build=${CHOST} \
277 --host=i686-pc-linux-gnu \
278 --libdir=/usr/lib \
279 --libexecdir=/usr/lib/glibc \
280 ${myopts} \
281 || die
282
283 make PARALLELMFLAGS="${MAKEOPTS}" || die
284 fi
285
286 cd ${SRCDIR}/build
287
288 if [[ ${ARCH} = x86_64 ]]; then
289 # make sure the -m64 libs goes really to /lib64
290 echo "slibdir=/$(mlibdir)" >> ${SRCDIR}/build/configparms || die
291 fi
292
293 # kernel-2.6 with nptl needs this
294 ../configure \
295 --build=${CHOST} \
296 --host=${CHOST} \
297 --libdir=/usr/$(mlibdir) \
298 --libexecdir=/usr/$(mlibdir)/glibc \
299 ${myopts} \
300 || die
301
302 make PARALLELMFLAGS="${MAKEOPTS}" || die
303 }
304
305 src_install()
306 {
307 if [[ ${ARCH} = x86_64 ]]
308 then
309 # install -m32 libs
310 cd ${SRCDIR}/build-m32
311 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/lib rootsbindir=/usr/sbin install || die
312 fi
313
314 cd ${SRCDIR}/build
315 make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} slibdir=/usr/$(mlibdir) rootsbindir=/usr/sbin install || die
316
317 # do not generate the locales here, let it the user do with the locale-gen tool
318 # make PARALLELMFLAGS="${MAKEOPTS}" install_root=${BINDIR} localedata/install-locales || die
319
320 # install locales list and generate tools
321 # generate locale.gen file from localedata/SUPPORTED file
322 minstalletc locale.gen-header locale.gen || die
323 sed \
324 -e 's:/: :g' \
325 -e 's:\\: :g' \
326 -e 's:SUPPORTED-LOCALES=::' \
327 -e 's:\ \ $::g' \
328 -e '/^#/d' \
329 -e 's:^:#:g' \
330 ${SRCDIR}/localedata/SUPPORTED \
331 >> ${BINDIR}/etc/locale.gen || die
332 minstalldir /usr/sbin || die
333 minstallexec -s locale-gen /usr/sbin || die
334
335 # nsswitch configuration file
336 minstalletc ${SRCDIR}/nss/nsswitch.conf || die
337
338 # nscd configuration file
339 minstalletc ${SRCDIR}/nscd/nscd.conf || die
340
341 # gai configuration file
342 minstalletc ${SRCDIR}/posix/gai.conf || die
343
344 # we use Berlin as default
345 cp --remove-destination ${BINDIR}/usr/share/zoneinfo/Europe/Berlin ${BINDIR}/etc/localtime || die
346 [ -f ${BINDIR}/etc/ld.so.conf ] && { rm -f ${BINDIR}/etc/ld.so.conf || die; }
347 [ -e ${BINDIR}/etc/ld.so.cache ] && { rm -rf ${BINDIR}/etc/ld.so.cache || die; }
348
349 # base environment
350 minstallenv glibc.envd 00glibc || die
351 if [[ ${ARCH} = x86_64 ]]
352 then
353 MCONFIG="/etc/env.d/00glibc"
354 maddconfig "LDPATH=\"/usr/local/$(mlibdir)\"" || die
355 maddconfig "LDPATH=\"/opt/$(mlibdir)\"" || die
356 fi
357
358 # strip all binaries
359 find ${BINDIR} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
360
361 # strip all libraries
362 # want to be safe here; --strip-unneeded seems to cause pthread problems
363 # strip all but libpthread
364 install -d ${BUILDDIR}/thread-backup || die
365 mv ${BINDIR}/usr/$(mlibdir)/lib{pthread,thread_db}* ${BUILDDIR}/thread-backup/ || die
366
367 # now strip
368 find ${BINDIR} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded || die
369 mv -f ${BUILDDIR}/thread-backup/* ${BINDIR}/usr/$(mlibdir)/ || die
370 # remove stale directory
371 rm -rf ${BUILDDIR}/thread-backup || die
372
373 # prepare glibc for installation; slackware method
374 minstalldir /incoming || die
375 mv ${BINDIR}/usr/$(mlibdir)/*.so ${BINDIR}/incoming || die
376 mv ${BINDIR}/usr/$(mlibdir)/*.so.* ${BINDIR}/incoming || die
377 mv ${BINDIR}/incoming ${BINDIR}/usr/$(mlibdir)/incoming || die
378 mv ${BINDIR}/usr/$(mlibdir)/incoming/libSegFault.so ${BINDIR}/usr/$(mlibdir) || die
379 }
380
381 fix_db_files()
382 {
383 local i
384 local DB_ENTRY="${BUILDDIR}/${PKGNAME}"
385
386 for i in .files .symlinks .dirs
387 do
388 [ ! -f ${DB_ENTRY}/${i} ] && continue
389 [[ -z $(< ${DB_ENTRY}/${i}) ]] && continue
390
391 echo " fixing /$(mlibdir)/incoming from db-entry '${i}' ..."
392
393 # /lib/incoming -> empty line; sed2 removes all empty lines
394 #sed -i -e "s:/$(mlibdir)/incoming.*::g" -e '/^$/d' ${DB_ENTRY}/${i}
395 # do not simply emtpy the line, but change it the the correct path,
396 # so no stale libs are around if the package gets updated!
397 sed -i \
398 -e "s:/$(mlibdir)/incoming:/$(mlibdir):g" \
399 -e "s:/$(mlibdir)/incoming.*::g" \
400 -e '/^$/d' ${DB_ENTRY}/${i}
401 done
402 }
403
404 postinstall()
405 {
406 # first save the old libpthread.so.0;
407 # it will later used to determinate that there are no stale
408 # libpthreads that breaks ldconfig
409 local OLD_PTHREAD
410 OLD_PTHREAD="$(readlink ${MROOT}/usr/$(mlibdir)/libpthread.so.0)"
411
412 # slackware install method
413
414 # we cannot easily install the glibc libs,
415 # because our tools for cp etc needs them to run
416
417 local file
418
419 echo " Switching to new glibc ..."
420 # swap libraries on the fly:
421 if [ -x /sbin/ldconfig -a -d /usr/$(mlibdir)/incoming ] && [[ -z ${MROOT} ]]
422 then
423 # first create copies of the incoming libraries:
424 cd /usr/$(mlibdir)/incoming
425 for file in $(find /usr/$(mlibdir)/incoming -type f)
426 do
427 if [ ! -r "../$(basename ${file}).incoming" ]
428 then
429 cp -a ${file} ../$(basename ${file}).incoming
430 fi
431 done
432
433 # then switch to them all at once:
434 /sbin/ldconfig -l /usr/$(mlibdir)/*.incoming 2> /dev/null
435
436 # finally, rename them and clean up:
437 cd /usr/$(mlibdir)
438 for file in *.incoming
439 do
440 rm -f $(basename ${file} .incoming)
441 cp -a ${file} $(basename ${file} .incoming)
442 /sbin/ldconfig -l $(basename ${file} .incoming)
443 rm -f ${file}
444 done
445
446 # no ldconfig?
447 # good, it's safe to just jam it on home (and make links below):
448 else
449 (
450 cd ${MROOT}/usr/$(mlibdir)/incoming
451 for file in *
452 do
453 cp -a ${file} ..
454 done
455
456 local my_sym
457 local my_dest
458
459 # rebuild symlinks
460 echo " Recreating Symlinks:"
461 for i in $(find ${MROOT}/usr/$(mlibdir)/incoming -type l)
462 do
463 my_sym="$(readlink ${i})"
464 my_dest="$(basename ${i})"
465
466 echo " ${my_dest} -> ${my_dest}"
467
468 # assure to remove the old ones;
469 [ -L ${MROOT}/usr/$(mlibdir)/"${my_dest}" ] && \
470 rm ${MROOT}/usr/$(mlibdir)/"${my_dest}"
471
472 ln -snf "${my_sym}" ${MROOT}/usr/$(mlibdir)/"${my_dest}"
473 done
474 )
475 fi
476
477 # now, get rid of the temporary directory:
478 rm -rf ${MROOT}/usr/$(mlibdir)/incoming
479
480 # remove stale nptl libpthread-2.?.?.so,
481 # fix only needed for glibc with linuxthreads;
482 # prevent reloc errors such as:
483 # ls: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
484
485 # get our new libpthread.so.0
486 local NEW_PTHREAD
487 NEW_PTHREAD="$(readlink ${MROOT}/usr/$(mlibdir)/libpthread.so.0)"
488
489 if [ "${NEW_PTHREAD}" != "${OLD_PTHREAD}" ]
490 then
491 echo " Removing stale libpthread libraries ..."
492 for file in ${MROOT}/usr/$(mlibdir)/libpthread-*
493 do
494 if [ "$(basename ${file})" != "${NEW_PTHREAD}" ]
495 then
496 rm -f ${file}
497 fi
498 done
499
500 #rm -f /lib/${OLD_PTHREAD}
501
502 ln -snf ${NEW_PTHREAD} ${MROOT}/usr/$(mlibdir)/libpthread.so.0
503 fi
504
505 if [ -x /usr/sbin/iconvconfig ]
506 then
507 # generate fastloading iconv module configuration file.
508 echo " Generate iconv module config ..."
509 /usr/sbin/iconvconfig --prefix=${MROOT}/
510 fi
511
512 # reloading init
513 echo " Reloading init ..."
514 [[ -z ${MROOT} ]] && /sbin/init U &> /dev/null
515
516 # generating user def locales
517 echo " Generating user defined locales ..."
518 [[ -z ${MROOT} ]] && /usr/sbin/locale-gen
519
520 # now we must fix the mage db files
521 # to stop the annoying errors messages
522 fix_db_files
523 }