Magellan Linux

Contents of /trunk/core/include/buildroot2.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9 - (show annotations) (download)
Fri Oct 10 19:10:23 2008 UTC (15 years, 6 months ago) by niro
File size: 47450 byte(s)
import
1 # $Header: /magellan-cvs/smage/include/buildroot2.sminc,v 1.1 2008/10/06 17:55:09 niro Exp $
2 # Buildroot generic functions
3 sminclude mtools
4
5 # needed vars:
6
7 # TARGET_ARCH="i686" # must be set outside
8 : ${CROSS_CHOST="${ARCH}-cross-linux-gnu"}
9 : ${TARGET_CHOST="${TARGET_ARCH}-pc-linux-gnu"}
10
11 # Destdirs:
12 # the buildroot of the toolchain
13 : ${BUILDROOT_DEST="/opt/buildroot-${TARGET_ARCH}"}
14 # target-tools dest: ${BUILDROOT_DEST}/${TARGET_DEST}
15 : ${TARGET_DEST="/buildroot-tools"}
16 # cross-tools dest: ${BUILDROOT_DEST}/${TARGET_DEST}
17 : ${CROSS_DEST="/cross-tools"}
18
19
20 : ${PNAME="buildroot-${TARGET_ARCH}"}
21 : ${PCATEGORIE="dev-misc"}
22
23 : ${DESCRIPTION="A crosscompile toolchain to compile programms for the ${TARGET_ARCH} arch."}
24 : ${HOMEPAGE="http://magellan-linux.de/"}
25
26 #SDEPEND="${SDEPEND}
27 # == dev-cross/cross-tools-${TARGET_ARCH}-${PVER}"
28
29 # binutils
30 #BINUTILS_PVER="2.18.50.0.3"
31 : ${BINUTILS_SRCFILE="binutils-${BINUTILS_PVER}.tar.bz2"}
32 : ${BINUTILS_SRCDIR="${BUILDDIR}/binutils-${BINUTILS_PVER}"}
33
34 # kernel-headers
35 #LINUX_HEADERS_PVER="2.6.24"
36 : ${LINUX_HEADERS_SRCFILE="linux-${LINUX_HEADERS_PVER}.tar.bz2"}
37 : ${LINUX_HEADERS_SRCDIR="${BUILDDIR}/linux-${LINUX_HEADERS_PVER}"}
38
39 # glibc-headers and libc
40 #GLIBC_PVER="2.7.0"
41 : ${GLIBC_SRCFILE="glibc-${GLIBC_PVER}.tar.bz2"}
42 : ${GLIBC_SRCDIR="${BUILDDIR}/glibc-${GLIBC_PVER}"}
43
44 # gcc
45 #GCC_PVER="4.2.3"
46 : ${GCC_SRCFILE="gcc-${GCC_PVER}.tar.bz2"}
47 : ${GCC_SRCDIR="${BUILDDIR}/gcc-${GCC_PVER}"}
48
49 # ncurses
50 # NCURSES_PVER="5.6"
51 : ${NCURSES_SRCFILE="ncurses-${NCURSES_PVER}.tar.gz"}
52 : ${NCURSES_SRCDIR="${BUILDDIR}/ncurses-${NCURSES_PVER}"}
53
54 # bash
55 # BASH_PVER="3.2"
56 : ${BASH_SRCFILE="bash-${BASH_PVER}.tar.gz"}
57 : ${BASH_SRCDIR="${BUILDDIR}/bash-${BASH_PVER}"}
58
59 # bzip2
60 # BZIP2_PVER="1.0.4"
61 : ${BZIP2_SRCFILE="bzip2-${BZIP2_PVER}.tar.gz"}
62 : ${BZIP2_SRCDIR="${BUILDDIR}/bzip2-${BZIP2_PVER}"}
63
64 # coreutils
65 # COREUTILS_PVER="3.2"
66 : ${COREUTILS_SRCFILE="coreutils-${COREUTILS_PVER}.tar.gz"}
67 : ${COREUTILS_SRCDIR="${BUILDDIR}/coreutils-${COREUTILS_PVER}"}
68
69 # diffutils
70 # DIFFUTILS_PVER="3.2"
71 : ${DIFFUTILS_SRCFILE="diffutils-${DIFFUTILS_PVER}.tar.gz"}
72 : ${DIFFUTILS_SRCDIR="${BUILDDIR}/diffutils-${DIFFUTILS_PVER}"}
73
74 # findutils
75 # FINDUTILS_PVER="3.2"
76 : ${FINDUTILS_SRCFILE="findutils-${FINDUTILS_PVER}.tar.gz"}
77 : ${FINDUTILS_SRCDIR="${BUILDDIR}/findutils-${FINDUTILS_PVER}"}
78
79 # zlib
80 # ZLIB_PVER="3.2"
81 : ${ZLIB_SRCFILE="zlib-${ZLIB_PVER}.tar.gz"}
82 : ${ZLIB_SRCDIR="${BUILDDIR}/zlib-${ZLIB_PVER}"}
83
84 # file
85 # FILE_PVER="3.2"
86 : ${FILE_SRCFILE="file-${FILE_PVER}.tar.gz"}
87 : ${FILE_SRCDIR="${BUILDDIR}/file-${FILE_PVER}"}
88
89 # gawk
90 # GAWK_PVER="3.2"
91 : ${GAWK_SRCFILE="gawk-${GAWK_PVER}.tar.gz"}
92 : ${GAWK_SRCDIR="${BUILDDIR}/gawk-${GAWK_PVER}"}
93
94 # gettext
95 # GETTEXT_PVER="3.2"
96 : ${GETTEXT_SRCFILE="gettext-${GETTEXT_PVER}.tar.gz"}
97 : ${GETTEXT_SRCDIR="${BUILDDIR}/gettext-${GETTEXT_PVER}"}
98
99 # grep
100 # GREP_PVER="3.2"
101 : ${GREP_SRCFILE="grep-${GREP_PVER}.tar.gz"}
102 : ${GREP_SRCDIR="${BUILDDIR}/grep-${GREP_PVER}"}
103
104 # gzip
105 # GZIP_PVER="3.2"
106 : ${GZIP_SRCFILE="gzip-${GZIP_PVER}.tar.gz"}
107 : ${GZIP_SRCDIR="${BUILDDIR}/gzip-${GZIP_PVER}"}
108
109 # make
110 # MAKE_PVER="3.2"
111 : ${MAKE_SRCFILE="make-${MAKE_PVER}.tar.gz"}
112 : ${MAKE_SRCDIR="${BUILDDIR}/make-${MAKE_PVER}"}
113
114 # patch
115 # PATCH_PVER="3.2"
116 : ${PATCH_SRCFILE="patch-${PATCH_PVER}.tar.gz"}
117 : ${PATCH_SRCDIR="${BUILDDIR}/patch-${PATCH_PVER}"}
118
119 # sed
120 # SED_PVER="3.2"
121 : ${SED_SRCFILE="sed-${SED_PVER}.tar.gz"}
122 : ${SED_SRCDIR="${BUILDDIR}/sed-${SED_PVER}"}
123
124 # tar
125 # TAR_PVER="3.2"
126 : ${TAR_SRCFILE="tar-${TAR_PVER}.tar.gz"}
127 : ${TAR_SRCDIR="${BUILDDIR}/tar-${TAR_PVER}"}
128
129 # texinfo
130 # TEXINFO_PVER="3.2"
131 : ${TEXINFO_SRCFILE="texinfo-${TEXINFO_PVER}.tar.gz"}
132 : ${TEXINFO_SRCDIR="${BUILDDIR}/texinfo-${TEXINFO_PVER}"}
133
134 # e2fsprogs
135 # E2FSPROGS_PVER="3.2"
136 : ${E2FSPROGS_SRCFILE="e2fsprogs-${E2FSPROGS_PVER}.tar.gz"}
137 : ${E2FSPROGS_SRCDIR="${BUILDDIR}/e2fsprogs-${E2FSPROGS_PVER}"}
138
139 # util-linux
140 # UTIL_LINUX_PVER="3.2"
141 : ${UTIL_LINUX_SRCFILE="util-linux-ng-${UTIL_LINUX_PVER}.tar.gz"}
142 : ${UTIL_LINUX_SRCDIR="${BUILDDIR}/util-linux-ng-${UTIL_LINUX_PVER}"}
143
144 # initscripts
145 # INITSCRIPTS_PVER="3.2"
146 : ${INITSCRIPTS_SRCFILE="initscripts-${INITSCRIPTS_PVER}.tar.bz2"}
147 : ${INITSCRIPTS_SRCDIR="${BUILDDIR}/initscripts-${INITSCRIPTS_PVER}"}
148
149 # wget
150 # WGET_PVER="3.2"
151 : ${WGET_SRCFILE="wget-${WGET_PVER}.tar.gz"}
152 : ${WGET_SRCDIR="${BUILDDIR}/wget-${WGET_PVER}"}
153
154 # rsync
155 # RSYNC_PVER="3.2"
156 : ${RSYNC_SRCFILE="rsync-${RSYNC_PVER}.tar.gz"}
157 : ${RSYNC_SRCDIR="${BUILDDIR}/rsync-${RSYNC_PVER}"}
158
159 # cvs
160 # CVS_PVER="3.2"
161 : ${CVS_SRCFILE="cvs-${CVS_PVER}.tar.bz2"}
162 : ${CVS_SRCDIR="${BUILDDIR}/cvs-${CVS_PVER}"}
163
164 # perl
165 # PERL_PVER="5.10.0"
166 : ${PERL_SRCFILE="perl-${PERL_PVER}.tar.gz"}
167 : ${PERL_SRCDIR="${BUILDDIR}/perl-${PERL_PVER}"}
168
169 # m4
170 # M4_PVER="1.4.10"
171 : ${M4_SRCFILE="m4-${M4_PVER}.tar.bz2"}
172 : ${M4_SRCDIR="${BUILDDIR}/m4-${M4_PVER}"}
173
174 # bison
175 # BISON_PVER="2.3"
176 : ${BISON_SRCFILE="bison-${BISON_PVER}.tar.bz2"}
177 : ${BISON_SRCDIR="${BUILDDIR}/bison-${BISON_PVER}"}
178
179 # flex
180 # FLEX_PVER="2.5.33"
181 : ${FLEX_SRCFILE="flex-${FLEX_PVER}.tar.bz2"}
182 : ${FLEX_SRCDIR="${BUILDDIR}/flex-${FLEX_PVER}"}
183
184 # fetch sources
185 SRC_URI=(
186 ${SRC_URI[*]}
187 http://www.kernel.org/pub/linux/devel/binutils/${BINUTILS_SRCFILE}
188 mirror://binutils/${BINUTILS_SRCFILE}
189 http://www.kernel.org/pub/linux/kernel/v${LINUX_HEADERS_PVER:0:3}/${LINUX_HEADERS_SRCFILE}
190 mirror://linux-libc-headers/${LINUX_HEADERS_SRCFILE}
191 gnu://glibc/${GLIBC_SRCFILE}
192 mirror://glibc/${GLIBC_SRCFILE}
193 gnu://gcc/gcc-${GCC_PVER}/${GCC_SRCFILE}
194 mirror://gcc/${GCC_SRCFILE}
195 gnu://ncurses/${NCURSES_SRCFILE}
196 mirror://ncurses/${NCURSES_SRCFILE}
197 gnu://bash/${BASH_SRCFILE}
198 mirror://bash/${BASH_SRCFILE}
199 http://www.bzip.org/${BZIP2_PVER}/${BZIP2_SRCFILE}
200 mirror://bzip2/${BZIP2_SRCFILE}
201 gnu://coreutils/${COREUTILS_SRCFILE}
202 mirror://coreutils/${COREUTILS_SRCFILE}
203 mirror://diffutils/${DIFFUTILS_SRCFILE}
204 gnu://findutils/${FINDUTILS_SRCFILE}
205 mirror://findutils/${FINDUTILS_SRCFILE}
206 http://www.zlib.net/${ZLIB_SRCFILE}
207 mirror://zlib/${ZLIB_SRCFILE}
208 ftp://ftp.astron.com/pub/file/${FILE_SRCFILE}
209 ftp://ftp.gw.com/mirrors/pub/unix/file/${FILE_SRCFILE}
210 mirror://file/${FILE_SRCFILE}
211 gnu://gawk/${GAWK_SRCFILE}
212 mirror://gawk/${GAWK_SRCFILE}
213 gnu://gettext/${GETTEXT_SRCFILE}
214 mirror://gettext/${GETTEXT_SRCFILE}
215 gnu://grep/${GREP_SRCFILE}
216 mirror://grep/${GREP_SRCFILE}
217 gnu://gzip/${GZIP_SRCFILE}
218 mirror://gzip/${GZIP_SRCFILE}
219 gnu://make/${MAKE_SRCFILE}
220 mirror://make/${MAKE_SRCFILE}
221 mirror://patch/${PATCH_SRCFILE}
222 gnu://sed/${SED_SRCFILE}
223 mirror://sed/${SED_SRCFILE}
224 gnu://tar/${TAR_SRCFILE}
225 mirror://tar/${TAR_SRCFILE}
226 gnu://texinfo/${TEXINFO_SRCFILE}
227 mirror://texinfo/${TEXINFO_SRCFILE}
228 sourceforge://e2fsprogs/${E2FSPROGS_SRCFILE}
229 mirror://e2fsprogs/${E2FSPROGS_SRCFILE}
230 http://www.kernel.org/pub/linux/utils/util-linux-ng/v${UTIL_LINUX_PVER/%.?/}/${UTIL_LINUX_SRCFILE}
231 mirror://util-linux-ng/${UTIL_LINUX_SRCFILE}
232 mirror://initscripts/${INITSCRIPTS_SRCFILE}
233 gnu://wget/${WGET_SRCFILE}
234 mirror://wget/${WGET_SRCFILE}
235 http://samba.anu.edu.au/ftp/rsync/${RSYNC_SRCFILE}
236 mirror://rsync/${RSYNC_SRCFILE}
237 gnu://non-gnu/cvs/source/stable/${CVS_PVER}/${CVS_SRCFILE}
238 gnu://non-gnu/cvs/source/nightly-snapshots/stable/${CVS_SRCFILE}
239 mirror://cvs/${CVS_SRCFILE}
240 http://ftp.funet.fi/pub/CPAN/src/${PERL_SRCFILE}
241 mirror://perl/${PERL_SRCFILE}
242 gnu://m4/${M4_SRCFILE}
243 mirror://m4/${M4_SRCFILE}
244 gnu://bison/${BISON_SRCFILE}
245 mirror://bison/${BISON_SRCFILE}
246 mirror://flex/${FLEX_SRCFILE}
247 mirror://glibc/glibc-2.3.5-localedef_segfault-1.patch
248 mirror://glibc/glibc-2.3.5-libgcc_eh-1.patch
249 mirror://gcc/gcc-${GCC_PVER}-no-fixincludes.patch
250 mirror://gcc/gcc-${GCC_PVER}-magellan-version.patch
251 mirror://gcc/gcc-${GCC_PVER}-cross-search-paths.patch
252 mirror://gcc/gcc-${GCC_PVER}-specs.patch
253 mirror://texinfo/texinfo-${TEXINFO_PVER}-mbstate-fix.patch
254 mirror://perl/perl-${PERL_PVER}-hardwired-libc.patch
255 )
256
257 # do not get the idea to strip the resulting binaries!
258 # you must have build the strip program on the same arch,
259 # but this is propably not the case. so we force stripping off.
260 NOSTRIP=true
261
262 activate_ccache()
263 {
264 if [[ ${SMAGE_USE_CCACHE} ]]
265 then
266 export PATH="/opt/cross-tools/bin:/usr/$(mlibdir)/ccache/bin:${PATH}"
267 fi
268 }
269
270 deactivate_ccache()
271 {
272 # disable any ccache regardless if user-enabled or mage-enabled
273 if [[ ! -z $(echo ${PATH} | grep "/usr/$(mlibdir)/ccache/bin") ]]
274 then
275 export PATH="$(echo ${PATH} | sed s:/usr/$(mlibdir)/ccache/bin::g)"
276 fi
277 }
278
279 # export2buildroot()
280 # {
281 # local cmd="$@"
282 #
283 # typeset -f die > ${BINDIR}/${BUILDROOT_DEST}/.chrootrc || die
284 # echo "${cmd}" >> ${BINDIR}/${BUILDROOT_DEST}/.chrootrc || die
285 # }
286
287 chrooted()
288 {
289 local cmd="$@"
290 local mount="false"
291 local sources="false"
292
293 # very basic getops
294 for i in $*
295 do
296 case $1 in
297 --mount) mount="true"; cmd="${cmd/--mount/}" ;;
298 --sources) sources="true"; cmd="${cmd/--sources/}" ;;
299 --chrootrc) cmd="/bin/bash /.chrootrc"; cmd="${cmd/--chrootrc/}" ;;
300 esac
301 shift
302 done
303
304 if [[ ${mount} = true ]]
305 then
306 install -d ${BINDIR}/${BUILDROOT_DEST}/{dev,sys,proc} || die
307 mount -t sysfs sysfs ${BINDIR}/${BUILDROOT_DEST}/sys || die
308 mount -t proc proc ${BINDIR}/${BUILDROOT_DEST}/proc || die
309 mount -o bind /dev ${BINDIR}/${BUILDROOT_DEST}/dev || die
310 fi
311
312 if [[ ${sources} = true ]]
313 then
314 install -d ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die
315 mount -o bind ${SOURCEDIR} ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die
316 fi
317
318 chroot ${BINDIR}/${BUILDROOT_DEST} \
319 ${TARGET_DEST}/bin/env -i \
320 HOME=/root TERM="${TERM}" \
321 PS1='\u:\w\$ ' \
322 PATH=/bin:/usr/bin:/sbin:/usr/sbin:${TARGET_DEST}/bin \
323 http_proxy="${http_proxy}" \
324 ftp_proxy="${ftp_proxy}" \
325 no_proxy="${no_proxy}" \
326 ${cmd} #|| die "chroot exit code not null."
327
328 if [[ ${sources} = true ]]
329 then
330 umount ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die
331 fi
332
333 if [[ ${mount} = true ]]
334 then
335 umount ${BINDIR}/${BUILDROOT_DEST}/{dev,proc,sys} || die
336 fi
337 }
338
339 stage1_configure()
340 {
341 ./configure \
342 --build=${CROSS_CHOST} \
343 --host=${TARGET_CHOST} \
344 --prefix=${TARGET_DEST} \
345 "$@" \
346 || die
347 }
348
349 linux_headers_cross_src_prepare()
350 {
351 munpack ${LINUX_HEADERS_SRCFILE} || die
352 }
353
354 linux_headers_cross_src_compile()
355 {
356 cd ${LINUX_HEADERS_SRCDIR}
357 make mrproper || die
358 make ARCH=${ARCH/i*86/x86} headers_check || die
359 }
360
361 linux_headers_cross_src_install()
362 {
363 cd ${LINUX_HEADERS_SRCDIR}
364 make ARCH=${ARCH/i*86/x86} INSTALL_HDR_PATH=${TARGET_DEST} headers_install || die
365 }
366
367
368 binutils_cross_src_prepare()
369 {
370 munpack ${BINUTILS_SRCFILE} || die
371 install -d ${BINUTILS_SRCDIR}/build || die
372 }
373
374 binutils_cross_src_compile()
375 {
376 cd ${BINUTILS_SRCDIR}/build
377
378 AR=ar AS=as \
379 ../configure \
380 --host=${CROSS_CHOST} \
381 --target=${TARGET_CHOST} \
382 --prefix=${CROSS_DEST} \
383 --with-lib-path=${TARGET_DEST}/lib \
384 --disable-nls \
385 --enable-shared \
386 --disable-multilib \
387 || die
388
389 make configure-host || die
390 mmake || die
391 }
392
393 binutils_cross_src_install()
394 {
395 cd ${BINUTILS_SRCDIR}/build
396
397 make install || die
398
399 install -d ${TARGET_DEST}/include || die
400 cp ../include/libiberty.h ${TARGET_DEST}/include || die
401 }
402
403
404 gcc_static_cross_src_prepare()
405 {
406 munpack ${GCC_SRCFILE} || die
407 cd ${GCC_SRCDIR}
408
409 mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die
410 mpatch gcc-${GCC_PVER}-magellan-version.patch || die
411
412 # fixes location of the dynamic linker and not append include
413 # search path to /usr/include
414 # but first set the location to ${TARGET_DEST} and than patch
415 sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \
416 ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die
417
418 # do not search the /usr directory for libgcc_s.so when cross-compiling
419 mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die
420
421 # suppress installation of libiberty, as we will be
422 # using the one from binutils
423 #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die
424
425 # fix up the startfile spec to search /opt/cross-tools/lib
426 # fixes errors like this on the final cross-gcc compilation
427 # /opt/cross-tools/i686-cross-linux-gnu/bin/ld: crti.o: No such file: No such file or directory
428 # collect2: ld returned 1 exit status
429 echo "
430 #undef STARTFILE_PREFIX_SPEC
431 #define STARTFILE_PREFIX_SPEC \"${TARGET_DEST}/lib/\"" >> ${GCC_SRCDIR}/gcc/config/linux.h || die
432
433 # change header search path to look only in $TARGET_DEST/include
434 # and not the hosts own include pathes
435 sed -i "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" \
436 ${GCC_SRCDIR}/gcc/Makefile.in || die
437
438 install -d ${GCC_SRCDIR}/build || die
439 }
440
441 gcc_static_cross_src_compile()
442 {
443 cd ${GCC_SRCDIR}/build
444
445 ../configure \
446 --host=${CROSS_CHOST} \
447 --target=${TARGET_CHOST} \
448 --prefix=${CROSS_DEST} \
449 --with-local-prefix=${TARGET_DEST} \
450 --disable-nls \
451 --disable-shared \
452 --disable-threads \
453 --enable-languages=c \
454 --disable-multilib \
455 || die
456
457 mmake all-gcc || die
458 }
459
460 gcc_static_cross_src_install()
461 {
462 cd ${GCC_SRCDIR}/build
463 make install-gcc || die
464 }
465
466
467 glibc_cross_src_prepare()
468 {
469 munpack ${GLIBC_SRCFILE} || die
470 cd ${GLIBC_SRCDIR}
471
472 # disable binutils -as-needed
473 sed -i 's/^have-as-needed.*/have-as-needed = no/' \
474 ${GLIBC_SRCDIR}/config.make.in || die
475
476 # fix segfault of localdef on arches beside x86-32
477 mpatch glibc-2.3.5-localedef_segfault-1.patch || die
478
479 # remove dependencies on libgcc_eh
480 mpatch glibc-2.3.5-libgcc_eh-1.patch || die
481
482 # fix permissions on some of the scripts
483 chmod u+x ${GLIBC_SRCDIR}/scripts/*.sh || die
484
485 install -d ${GLIBC_SRCDIR}/build || die
486 }
487
488 glibc_cross_src_compile()
489 {
490 cd ${GLIBC_SRCDIR}/build
491
492 local my_glibc_CFLAGS
493 local my_glibc_CXXFLAGS
494 # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic
495 [[ ${TARGET_ARCH} = i*86 ]] && my_glibc_CFLAGS="${CFLAGS} -march=${TARGET_ARCH}" # only i*86
496 my_glibc_CFLAGS="${my_glibc_CFLAGS} -mtune=generic" # all arches
497
498 # force nptl support (may not detected always)
499 echo "libc_cv_forced_unwind=yes" > config.cache || die
500 echo "libc_cv_c_cleanup=yes" >> config.cache || die
501
502 BUILD_CC="gcc" \
503 CC="${TARGET_CHOST}-gcc" \
504 AR="${TARGET_CHOST}-ar" \
505 RANLIB="${TARGET_CHOST}-ranlib" \
506 CFLAGS="${my_glibc_CFLAGS}" \
507 ../configure \
508 --host=${TARGET_CHOST} \
509 --build=${CROSS_CHOST} \
510 --prefix=${TARGET_DEST} \
511 --disable-profile \
512 --enable-add-ons=nptl --with-tls \
513 --with-__thread \
514 --enable-kernel=2.6.0 \
515 --without-cvs \
516 --with-headers=${TARGET_DEST}/include \
517 --with-binutils=${CROSS_DEST}/bin \
518 --cache-file=config.cache \
519 || die
520
521 make PARALLELMFLAGS="-j2" || die
522 }
523
524 glibc_cross_src_install()
525 {
526 cd ${GLIBC_SRCDIR}/build
527 make install || die
528 }
529
530
531 gcc_cross_src_prepare()
532 {
533 munpack ${GCC_SRCFILE} || die
534 cd ${GCC_SRCDIR}
535
536 mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die
537 mpatch gcc-${GCC_PVER}-magellan-version.patch || die
538
539 # fixes location of the dynamic linker and not append include
540 # search path to /usr/include
541 # but first set the location to ${TARGET_DEST} and than patch
542 sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \
543 ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die
544
545 # do not search the /usr directory for libgcc_s.so when cross-compiling
546 mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die
547
548 # suppress installation of libiberty, as we will be
549 # using the one from binutils
550 #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die
551
552 # fix up the startfile spec to search /opt/cross-tools/lib
553 # fixes errors like this on the final cross-gcc compilation
554 # /opt/cross-tools/i686-cross-linux-gnu/bin/ld: crti.o: No such file: No such file or directory
555 # collect2: ld returned 1 exit status
556 echo "
557 #undef STARTFILE_PREFIX_SPEC
558 #define STARTFILE_PREFIX_SPEC \"${TARGET_DEST}/lib/\"" >> ${GCC_SRCDIR}/gcc/config/linux.h || die
559
560 # change header search path to look only in $TARGET_DEST/include
561 # and not the hosts own include pathes
562 sed -i "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" \
563 ${GCC_SRCDIR}/gcc/Makefile.in || die
564
565 # disable -B in configure, so it doesn't pick up the host's header files
566 sed -i '/FLAGS_FOR_TARGET.*\/lib\//s@-B[^ ]*/lib/@@g' configure || die
567
568 install -d ${GCC_SRCDIR}/build || die
569 }
570
571 gcc_cross_src_compile()
572 {
573 cd ${GCC_SRCDIR}/build
574
575 ../configure \
576 --host=${CROSS_CHOST} \
577 --target=${TARGET_CHOST} \
578 --prefix=${CROSS_DEST} \
579 --with-local-prefix=${TARGET_DEST} \
580 --enable-shared \
581 --enable-threads=posix \
582 --enable-__cxa_atexit \
583 --enable-c99 \
584 --enable-long-long \
585 --enable-languages=c,c++ \
586 --disable-nls \
587 --disable-multilib \
588 || die
589
590 make \
591 AS_FOR_TARGET="${TARGET_CHOST}-as" \
592 LD_FOR_TARGET="${TARGET_CHOST}-ld" \
593 || die
594 }
595
596 gcc_cross_src_install()
597 {
598 cd ${GCC_SRCDIR}/build
599 make install || die
600 }
601
602
603 binutils_stage1_src_prepare()
604 {
605 munpack ${BINUTILS_SRCFILE} || die
606 install -d ${BINUTILS_SRCDIR}/build || die
607 }
608
609 binutils_stage1_src_compile()
610 {
611 cd ${BINUTILS_SRCDIR}/build
612
613 ../configure \
614 --build=${CROSS_CHOST} \
615 --host=${TARGET_CHOST} \
616 --target=${TARGET_CHOST} \
617 --prefix=${TARGET_DEST} \
618 --with-lib-path=${TARGET_DEST}/lib \
619 --disable-nls \
620 --enable-shared \
621 --enable-64-bit-bfd \
622 --disable-multilib \
623 || die
624
625 make configure-host || die
626 mmake || die
627 }
628
629 binutils_stage1_src_install()
630 {
631 cd ${BINUTILS_SRCDIR}/build
632
633 make install || die
634
635 install -d ${TARGET_DEST}/include || die
636 cp ../include/libiberty.h ${TARGET_DEST}/include || die
637 }
638
639
640 gcc_stage1_src_prepare()
641 {
642 munpack ${GCC_SRCFILE} || die
643 cd ${GCC_SRCDIR}
644
645 mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die
646 mpatch gcc-${GCC_PVER}-magellan-version.patch || die
647
648 # fixes location of the dynamic linker and not append include
649 # search path to /usr/include
650 # but first set the location to ${TARGET_DEST} and than patch
651 sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \
652 ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die
653
654 # do not search the /usr directory for libgcc_s.so when cross-compiling
655 mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die
656
657 # suppress installation of libiberty, as we will be
658 # using the one from binutils
659 #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die
660
661 # don't search headers in /usr/include
662 sed -i '/#define STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g' gcc/cppdefault.c || die
663
664 # set the directory searched by the fixincludes process for system headers
665 sed -i "s@\(^NATIVE_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" gcc/Makefile.in || die
666
667 install -d ${GCC_SRCDIR}/build || die
668 }
669
670 gcc_stage1_src_compile()
671 {
672 cd ${GCC_SRCDIR}/build
673
674 ../configure \
675 --build=${CROSS_CHOST} \
676 --host=${TARGET_CHOST} \
677 --target=${TARGET_CHOST} \
678 --prefix=${TARGET_DEST} \
679 --with-local-prefix=${TARGET_DEST} \
680 --disable-nls \
681 --enable-shared \
682 --enable-threads=posix \
683 --enable-__cxa_atexit \
684 --enable-long-long \
685 --enable-c99 \
686 --enable-cstdio=stdio \
687 --enable-languages=c,c++ \
688 --disable-libstdcxx-pch \
689 || die
690
691 make AS_FOR_TARGET="${AS}" LD_FOR_TARGET="${LD}" || die
692 }
693
694 gcc_stage1_src_install()
695 {
696 cd ${GCC_SRCDIR}/build
697 make install || die
698 }
699
700
701 ncurses_stage1_src_prepare()
702 {
703 munpack ${NCURSES_SRCFILE} || die
704 }
705
706 ncurses_stage1_src_compile()
707 {
708 cd ${NCURSES_SRCDIR}
709
710 stage1_configure \
711 --with-shared \
712 --without-debug \
713 --without-ada \
714 --enable-overwrite \
715 --with-build-cc=gcc \
716 || die
717
718 mmake || die
719 }
720
721 ncurses_stage1_src_install()
722 {
723 cd ${NCURSES_SRCDIR}
724 mmake install || die
725 }
726
727
728 bash_stage1_src_prepare()
729 {
730 munpack ${BASH_SRCFILE} || die
731 }
732
733 bash_stage1_src_compile()
734 {
735 cd ${BASH_SRCDIR}
736
737 # while cross-compiling, bash test for the presence of named pipes etc
738 echo "ac_cv_func_mmap_fixed_mapped=yes" > config.cache
739 echo "ac_cv_func_strcoll_works=yes" >> config.cache
740 echo "ac_cv_func_working_mktime=yes" >> config.cache
741 echo "bash_cv_func_sigsetjmp=present" >> config.cache
742 echo "bash_cv_getcwd_malloc=yes" >> config.cache
743 echo "bash_cv_job_control_missing=present" >> config.cache
744 echo "bash_cv_printf_a_format=yes" >> config.cache
745 echo "bash_cv_sys_named_pipes=present" >> config.cache
746 echo "bash_cv_ulimit_maxfds=yes" >> config.cache
747 echo "bash_cv_under_sys_siglist=yes" >> config.cache
748 echo "bash_cv_unusable_rtsigs=no" >> config.cache
749 echo "gt_cv_int_divbyzero_sigfpe=yes" >> config.cache
750
751 stage1_configure \
752 --without-bash-malloc \
753 --cache-file=config.cache \
754 || die
755
756 mmake || die
757 }
758
759 bash_stage1_src_install()
760 {
761 cd ${BASH_SRCDIR}
762 mmake install || die
763
764 # use bash as default shell
765 ln -snf bash ${TARGET_DEST}/bin/sh || die
766 }
767
768
769 bzip2_stage1_src_prepare()
770 {
771 munpack ${BZIP2_SRCFILE} || die
772 cd ${BZIP2_SRCDIR}
773
774 # disable testsuite; won't work on multi-arch/cross build
775 sed -i 's@^\(all:.*\) test@\1@g' Makefile || die
776 }
777
778 bzip2_stage1_src_compile()
779 {
780 cd ${BZIP2_SRCDIR}
781 mmake CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" || die
782 }
783
784 bzip2_stage1_src_install()
785 {
786 cd ${BZIP2_SRCDIR}
787 mmake PREFIX=${TARGET_DEST} install || die
788 }
789
790
791 coreutils_stage1_src_prepare()
792 {
793 munpack ${COREUTILS_SRCFILE} || die
794 }
795
796 coreutils_stage1_src_compile()
797 {
798 cd ${COREUTILS_SRCDIR}
799
800 # configure can not properly determine how to get free space
801 # and 'df' will not be built
802 #echo "fu_cv_sys_stat_statfs2_bsize=yes" > config.cache
803
804 # from debian
805 # configure can not properly determine how to get free space
806 # and 'df' will not be built
807 #
808 # fixes include/stdio.h:718: error: conflicting types for 'rpl_fseeko'
809 # see: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480706
810 #
811 # coreutils 6.10 needs a patch for the gettime issue
812 # see: http://bugs.gentoo.org/show_bug.cgi?id=207560
813 # (appling outside)
814 #
815 echo 'gl_cv_func_tzset_clobber=no' > config.cache
816 echo 'jm_cv_func_gettimeofday_clobber=no' >> config.cache
817 echo 'utils_cv_localtime_cache=no' >> config.cache
818 echo 'ac_cv_func_futimesat=yes' >> config.cache
819 echo 'ac_cv_prog_cc_c99=${ac_cv_prog_cc_c99=-std=gnu99}' >> config.cache
820 echo 'ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=-std=gnu99}' >> config.cache
821 echo 'fu_cv_sys_stat_statfs2_bsize=yes' >> config.cache
822 echo 'gl_cv_struct_dirent_d_ino=yes' >> config.cache
823 echo 'ac_cv_func_malloc_0_nonnull=yes' >> config.cache
824 echo 'ac_cv_func_realloc_0_nonnull=yes' >> config.cache
825 echo 'gl_cv_header_working_fcntl_h=yes' >> config.cache
826 echo 'gl_cv_func_gnu_getopt=yes' >> config.cache
827 echo 'ac_cv_func_calloc_0_nonnull=yes' >> config.cache
828 echo 'gl_cv_func_fflush_stdin=yes' >> config.cache
829 echo 'gl_cv_func_wcwidth_works=yes' >> config.cache
830 echo 'ac_cv_func_fnmatch_gnu=yes' >> config.cache
831 echo 'gl_cv_func_getcwd_null=yes' >> config.cache
832 echo 'ac_cv_func_memcmp_working=yes' >> config.cache
833 echo 'gl_cv_func_signbit=yes' >> config.cache
834 echo 'ac_cv_func_lstat_empty_string_bug=no' >> config.cache
835 echo 'gl_cv_func_working_acl_get_file=yes' >> config.cache
836 echo 'gl_cv_func_fchownat_nofollow_works=yes' >> config.cache
837
838 stage1_configure --cache-file=config.cache || die
839 mmake || die
840 }
841
842 coreutils_stage1_src_install()
843 {
844 cd ${COREUTILS_SRCDIR}
845 mmake install || die
846 }
847
848
849 diffutils_stage1_src_prepare()
850 {
851 munpack ${DIFFUTILS_SRCFILE} || die
852 }
853
854 diffutils_stage1_src_compile()
855 {
856 cd ${DIFFUTILS_SRCDIR}
857 stage1_configure || die
858 mmake || die
859 }
860
861 diffutils_stage1_src_install()
862 {
863 cd ${DIFFUTILS_SRCDIR}
864 mmake install || die
865 }
866
867
868 findutils_stage1_src_prepare()
869 {
870 munpack ${FINDUTILS_SRCFILE} || die
871 }
872
873 findutils_stage1_src_compile()
874 {
875 cd ${FINDUTILS_SRCDIR}
876 stage1_configure || die
877 mmake || die
878 }
879
880 findutils_stage1_src_install()
881 {
882 cd ${FINDUTILS_SRCDIR}
883 mmake install || die
884 }
885
886
887 zlib_stage1_src_prepare()
888 {
889 munpack ${ZLIB_SRCFILE} || die
890 }
891
892 zlib_stage1_src_compile()
893 {
894 cd ${ZLIB_SRCDIR}
895 # zlib uses a non standart configure
896 ./configure --prefix=${TARGET_DEST} --shared || die
897 mmake || die
898 }
899
900 zlib_stage1_src_install()
901 {
902 cd ${FINDUTILS_SRCDIR}
903 mmake install || die
904 }
905
906
907 file_stage1_src_prepare()
908 {
909 munpack ${FILE_SRCFILE} || die
910 }
911
912 file_stage1_src_compile()
913 {
914 cd ${FILE_SRCDIR}
915 stage1_configure || die
916 mmake || die
917 }
918
919 file_stage1_src_install()
920 {
921 cd ${FILE_SRCDIR}
922 mmake install || die
923 }
924
925
926 gawk_stage1_src_prepare()
927 {
928 munpack ${GAWK_SRCFILE} || die
929 }
930
931 gawk_stage1_src_compile()
932 {
933 cd ${GAWK_SRCDIR}
934 stage1_configure || die
935 mmake || die
936 }
937
938 gawk_stage1_src_install()
939 {
940 cd ${GAWK_SRCDIR}
941 mmake install || die
942 }
943
944
945 gettext_stage1_src_prepare()
946 {
947 munpack ${GETTEXT_SRCFILE} || die
948 }
949
950 gettext_stage1_src_compile()
951 {
952 cd ${GETTEXT_SRCDIR}/gettext-tools
953
954 # fixes compilation; configure assume that wcwidth is broken
955 echo "gl_cv_func_wcwidth_works=yes" > config.cache
956 stage1_configure --disable-shared --cache-file=config.cache || die
957
958 # only built neccessary stuff
959 mmake -C gnulib-lib || die
960 mmake -C src msgfmt || die
961 }
962
963 gettext_stage1_src_install()
964 {
965 cd ${GETTEXT_SRCDIR}/gettext-tools
966
967 # only install neccessary stuff
968 install -m0755 src/msgfmt ${TARGET_DEST}/bin || die
969 }
970
971
972 grep_stage1_src_prepare()
973 {
974 munpack ${GREP_SRCFILE} || die
975 }
976
977 grep_stage1_src_compile()
978 {
979 cd ${GREP_SRCDIR}
980 stage1_configure --disable-perl-regexp || die
981 mmake || die
982 }
983
984 grep_stage1_src_install()
985 {
986 cd ${GREP_SRCDIR}
987 mmake install || die
988 }
989
990
991 gzip_stage1_src_prepare()
992 {
993 munpack ${GZIP_SRCFILE} || die
994 }
995
996 gzip_stage1_src_compile()
997 {
998 cd ${GZIP_SRCDIR}
999 stage1_configure || die
1000 mmake || die
1001 }
1002
1003 gzip_stage1_src_install()
1004 {
1005 cd ${GZIP_SRCDIR}
1006 mmake install || die
1007 }
1008
1009
1010 make_stage1_src_prepare()
1011 {
1012 munpack ${MAKE_SRCFILE} || die
1013 }
1014
1015 make_stage1_src_compile()
1016 {
1017 cd ${MAKE_SRCDIR}
1018 stage1_configure || die
1019 mmake || die
1020 }
1021
1022 make_stage1_src_install()
1023 {
1024 cd ${MAKE_SRCDIR}
1025 mmake install || die
1026 }
1027
1028
1029 patch_stage1_src_prepare()
1030 {
1031 munpack ${PATCH_SRCFILE} || die
1032 }
1033
1034 patch_stage1_src_compile()
1035 {
1036 cd ${PATCH_SRCDIR}
1037 stage1_configure || die
1038 mmake || die
1039 }
1040
1041 patch_stage1_src_install()
1042 {
1043 cd ${PATCH_SRCDIR}
1044 mmake install || die
1045 }
1046
1047
1048 sed_stage1_src_prepare()
1049 {
1050 munpack ${SED_SRCFILE} || die
1051 }
1052
1053 sed_stage1_src_compile()
1054 {
1055 cd ${SED_SRCDIR}
1056 stage1_configure || die
1057 mmake || die
1058 }
1059
1060 sed_stage1_src_install()
1061 {
1062 cd ${SED_SRCDIR}
1063 mmake install || die
1064 }
1065
1066
1067 tar_stage1_src_prepare()
1068 {
1069 munpack ${TAR_SRCFILE} || die
1070 }
1071
1072 tar_stage1_src_compile()
1073 {
1074 cd ${TAR_SRCDIR}
1075
1076 # fixes compilation; configure assume that wcwidth is broken
1077 echo "gl_cv_func_wcwidth_works=yes" > config.cache
1078
1079 stage1_configure --cache-file=config.cache || die
1080 mmake || die
1081 }
1082
1083 tar_stage1_src_install()
1084 {
1085 cd ${TAR_SRCDIR}
1086 mmake install || die
1087 }
1088
1089
1090 texinfo_stage1_src_prepare()
1091 {
1092 munpack ${TEXINFO_SRCFILE} || die
1093 cd ${TEXINFO_SRCDIR}
1094
1095 # fixes a build error due to mbstate being undefined
1096 mpatch texinfo-${TEXINFO_PVER}-mbstate-fix.patch || die
1097 }
1098
1099 texinfo_stage1_src_compile()
1100 {
1101 cd ${TEXINFO_SRCDIR}
1102
1103
1104 # forcefully override any activated ccache support,
1105 # which may break the built
1106 deactivate_ccache
1107
1108 # sometimes texinfo includes the termcap.h from host system instead from our buildroot
1109 # see http://www.linuxquestions.org/questions/linux-from-scratch-13/compiling-temporary-system-tools-628818/
1110 CPPFLAGS="-I${TARGET_DEST}/include" \
1111 LDFLAGS="-L${TARGET_DEST}/lib" \
1112 stage1_configure || die
1113 mmake -C tools/gnulib/lib || die
1114 mmake -C tools || die
1115 mmake || die
1116
1117 # re-activate ccache
1118 activate_ccache
1119 }
1120
1121 texinfo_stage1_src_install()
1122 {
1123 cd ${TEXINFO_SRCDIR}
1124 mmake install || die
1125 }
1126
1127
1128 e2fsprogs_stage1_src_prepare()
1129 {
1130 munpack ${E2FSPROGS_SRCFILE} || die
1131 install -d ${E2FSPROGS_SRCDIR} || die
1132 }
1133
1134 e2fsprogs_stage1_src_compile()
1135 {
1136 cd ${E2FSPROGS_SRCDIR}
1137
1138 # lfs method
1139 # stage1_configure \
1140 # --with-cc="${CC}" \
1141 # --with-linker="${LD}" \
1142 # --enable-elf-shlibs \
1143 # --disable-evms \
1144 # || die
1145
1146 # lfs not working, trying this one: http://www.oesf.org/forum/index.php?showtopic=1370
1147 CC="${TARGET_CHOST}-gcc" \
1148 LINKER="${TARGET_CHOST}-g++" \
1149 COMPILER="${TARGET_CHOST}-gcc" \
1150 stage1_configure --enable-elf-shlibs --disable-evms || die
1151 # libs only
1152 mmake libs || die
1153 }
1154
1155 e2fsprogs_stage1_src_install()
1156 {
1157 cd ${E2FSPROGS_SRCDIR}
1158 # install libs only
1159 mmake install-libs || die
1160 }
1161
1162
1163 util_linux_stage1_src_prepare()
1164 {
1165 munpack ${UTIL_LINUX_SRCFILE} || die
1166 }
1167
1168 util_linux_stage1_src_compile()
1169 {
1170 cd ${UTIL_LINUX_SRCDIR}
1171
1172 stage1_configure || die
1173
1174 # compile only {u,}mount and more
1175 mmake -C mount mount umount || die
1176 mmake -C text-utils more || die
1177 }
1178
1179 util_linux_stage1_src_install()
1180 {
1181 cd ${UTIL_LINUX_SRCDIR}
1182
1183 # install only {u,}mount and more
1184 install -m0755 mount/{,u}mount text-utils/more ${TARGET_DEST}/bin || die
1185 }
1186
1187 wget_stage1_src_prepare()
1188 {
1189 munpack ${WGET_SRCFILE} || die
1190 cd ${WGET_SRCDIR}
1191
1192 # enable passive mode by default
1193 sed -i 's:#passive_ftp = off:passive_ftp = on:g' doc/sample.wgetrc || die
1194 }
1195
1196 wget_stage1_src_compile()
1197 {
1198 cd ${WGET_SRCDIR}
1199 stage1_configure || die
1200 mmake || die
1201 }
1202
1203 wget_stage1_src_install()
1204 {
1205 cd ${WGET_SRCDIR}
1206 mmake install || die
1207 }
1208
1209
1210 rsync_stage1_src_prepare()
1211 {
1212 munpack ${RSYNC_SRCFILE} || die
1213 }
1214
1215 rsync_stage1_src_compile()
1216 {
1217 cd ${RSYNC_SRCDIR}
1218 stage1_configure --with-rsyncd-conf=/etc/rsyncd.conf --with-included-popt || die
1219 mmake || die
1220 }
1221
1222 rsync_stage1_src_install()
1223 {
1224 cd ${RSYNC_SRCDIR}
1225 mmake install || die
1226 }
1227
1228
1229 cvs_stage1_src_prepare()
1230 {
1231 munpack ${CVS_SRCFILE} || die
1232 }
1233
1234 cvs_stage1_src_compile()
1235 {
1236 cd ${CVS_SRCDIR}
1237 stage1_configure --enable-client --disable-server || die
1238 mmake || die
1239 }
1240
1241 cvs_stage1_src_install()
1242 {
1243 cd ${CVS_SRCDIR}
1244 mmake install || die
1245 }
1246
1247
1248 perl_minimal_stage1_src_prepare()
1249 {
1250 munpack ${PERL_SRCFILE} || die
1251 cd ${PERL_SRCDIR}
1252
1253 mpatch perl-${PERL_PVER}-hardwired-libc.patch || die
1254 }
1255
1256 perl_minimal_stage1_src_compile()
1257 {
1258 cd ${PERL_SRCDIR}
1259
1260 ./configure.gnu \
1261 --prefix=${TARGET_DEST} \
1262 -Dstatic_ext='Data/Dumper IO Fcntl POSIX' \
1263 -Dcc="${CC}" \
1264 || die
1265
1266 mmake perl utilities || die
1267 }
1268
1269 perl_minimal_stage1_src_install()
1270 {
1271 cd ${PERL_SRCDIR}
1272
1273 install -m0755 perl pod/pod2man ${TARGET_DEST}/bin || die
1274 install -d ${TARGET_DEST}/lib/perl${PERL_PVER:0:1}/${PERL_PVER} || die
1275 cp -Rv lib/* ${TARGET_DEST}/lib/perl${PERL_PVER:0:1}/${PERL_PVER} || die
1276 minstalldir ${BUILDROOT_DEST}/usr/bin || die
1277 mlink ${TARGET_DEST}/bin/perl ${BUILDROOT_DEST}/usr/bin || die
1278 }
1279
1280
1281 m4_stage1_src_prepare()
1282 {
1283 munpack ${M4_SRCFILE} || die
1284 }
1285
1286 m4_stage1_src_compile()
1287 {
1288 cd ${M4_SRCDIR}
1289
1290 stage1_configure --enable-changeword || die
1291 mmake || die
1292 }
1293
1294 m4_stage1_src_install()
1295 {
1296 cd ${M4_SRCDIR}
1297 mmake install || die
1298 }
1299
1300
1301 bison_stage1_src_prepare()
1302 {
1303 munpack ${BISON_SRCFILE} || die
1304 }
1305
1306 bison_stage1_src_compile()
1307 {
1308 cd ${BISON_SRCDIR}
1309
1310 stage1_configure || die
1311 mmake || die
1312 }
1313
1314 bison_stage1_src_install()
1315 {
1316 cd ${BISON_SRCDIR}
1317 mmake install || die
1318 }
1319
1320
1321 flex_stage1_src_prepare()
1322 {
1323 munpack ${FLEX_SRCFILE} || die
1324 }
1325
1326 flex_stage1_src_compile()
1327 {
1328 cd ${FLEX_SRCDIR}
1329
1330 stage1_configure || die
1331 mmake || die
1332 }
1333
1334 flex_stage1_src_install()
1335 {
1336 cd ${FLEX_SRCDIR}
1337 mmake install || die
1338 }
1339
1340 filesystem_stage2_src_prepare()
1341 {
1342 munpack ${INITSCRIPTS_SRCFILE} || die
1343 }
1344
1345
1346 filesystem_stage2_src_install()
1347 {
1348 local magerc="${BINDIR}/${BUILDROOT_DEST}/etc/mage.rc"
1349
1350 mkeepdir ${BUILDROOT_DEST}/etc || die
1351 install -m0644 /etc/mage.rc ${magerc} || die
1352 install -m0644 /etc/resolv.conf ${BINDIR}/${BUILDROOT_DEST}/etc || die
1353 sed -i "s:\(ARCH=\).*:\1\"${TARGET_ARCH}\":" ${magerc} || die
1354 MAGERC="${magerc}" \
1355 MROOT="${BINDIR}/${BUILDROOT_DEST}" \
1356 mage srcinstall base-files || die
1357
1358 # essential symlinks for the toolchain
1359 mlink ${TARGET_DEST}/bin/bash ${BUILDROOT_DEST}/bin || die
1360 mlink ${TARGET_DEST}/bin/cat ${BUILDROOT_DEST}/bin || die
1361 mlink ${TARGET_DEST}/bin/echo ${BUILDROOT_DEST}/bin || die
1362 mlink ${TARGET_DEST}/bin/grep ${BUILDROOT_DEST}/bin || die
1363 mlink ${TARGET_DEST}/bin/pwd ${BUILDROOT_DEST}/bin || die
1364 mlink ${TARGET_DEST}/bin/rm ${BUILDROOT_DEST}/bin || die
1365 mlink ${TARGET_DEST}/bin/stty ${BUILDROOT_DEST}/bin || die
1366 mlink ${TARGET_DEST}/bin/file ${BUILDROOT_DEST}/usr/bin || die
1367 # x86_64 multilib support
1368 if [[ ${TARGET_ARCH} = x86_64 ]]
1369 then
1370 mlink ${TARGET_DEST}/lib/libgcc_s.so ${BUILDROOT_DEST}/usr/lib64 || die
1371 mlink ${TARGET_DEST}/lib/libgcc_s.so.1 ${BUILDROOT_DEST}/usr/lib64 || die
1372 mlink ${TARGET_DEST}/lib/libstd\* ${BUILDROOT_DEST}/usr/lib || die
1373 else
1374 mlink ${TARGET_DEST}/lib/libgcc_s.so ${BUILDROOT_DEST}/usr/lib || die
1375 mlink ${TARGET_DEST}/lib/libgcc_s.so.1 ${BUILDROOT_DEST}/usr/lib || die
1376 mlink ${TARGET_DEST}/lib/libstd\* ${BUILDROOT_DEST}/usr/lib || die
1377 fi
1378 mlink bash ${BUILDROOT_DEST}/bin/sh || die
1379
1380 # basic passwd @ group file
1381 install -m0644 ${INITSCRIPTS_SRCDIR}/etc/group ${BINDIR}/${BUILDROOT_DEST}/etc || die
1382 install -m0644 ${INITSCRIPTS_SRCDIR}/etc/passwd ${BINDIR}/${BUILDROOT_DEST}/etc || die
1383
1384 # essential files for logging
1385 memptyfile ${BUILDROOT_DEST}/var/run/utmp || die
1386 memptyfile ${BUILDROOT_DEST}/var/log/btmp || die
1387 memptyfile ${BUILDROOT_DEST}/var/log/lastlog || die
1388 memptyfile ${BUILDROOT_DEST}/var/log/wtmp || die
1389 # permissions
1390 mchown root:utmp ${BUILDROOT_DEST}/var/run/utmp || die
1391 mchown root:utmp ${BUILDROOT_DEST}/var/log/lastlog || die
1392 mchmod 0664 ${BUILDROOT_DEST}/var/run/utmp || die
1393 mchmod 0664 ${BUILDROOT_DEST}/var/log/lastlog || die
1394 mchmod 0600 ${BUILDROOT_DEST}/var/log/btmp || die
1395 }
1396
1397
1398 mage_stage2_src_install()
1399 {
1400 MAGERC="${BINDIR}/${BUILDROOT_DEST}/etc/mage.rc" \
1401 MROOT="${BINDIR}/${BUILDROOT_DEST}" \
1402 mage srcinstall mage || die
1403
1404 minstalldir ${BUILDROOT_DEST}/${MAGEDIR} || die
1405 minstalldir ${BUILDROOT_DEST}/${SMAGESCRIPTSDIR} || die
1406 minstalldir ${BUILDROOT_DEST}/${BUILDDIR} || die
1407
1408 # link default profile of the host system
1409 mlink $(readlink /etc/mage-profile) ${BUILDROOT_DEST}/etc/mage-profile || die
1410
1411 chrooted /sbin/mage update
1412 chrooted /sbin/smage2 update
1413 }
1414
1415
1416 # linux_headers_stage2_src_prepare()
1417 # {
1418 # munpack ${LINUX_HEADERS_SRCFILE} || die
1419 # }
1420 #
1421 # linux_headers_stage2_src_compile()
1422 # {
1423 # cd ${LINUX_HEADERS_SRCDIR}
1424 # make mrproper || die
1425 # make ARCH=${ARCH/i*86/x86} headers_check || die
1426 # }
1427 #
1428 # linux_headers_stage2_src_install()
1429 # {
1430 # cd ${LINUX_HEADERS_SRCDIR}
1431 # make ARCH=${ARCH/i*86/x86} INSTALL_HDR_PATH=/usr headers_install || die
1432 # }
1433
1434 linux_headers_stage2_src_install()
1435 {
1436 chrooted --mount --sources /sbin/mage srcinstall linux-libc-headers || die
1437 }
1438
1439 # glibc_stage2_src_prepare()
1440 # {
1441 # munpack ${GLIBC_SRCFILE} ${BUILDROOT}/${BUILDDIR} || die
1442 # cd ${BUILDROOT}/${GLIBC_SRCDIR}
1443 #
1444 # # disable binutils -as-needed
1445 # sed -i 's/^have-as-needed.*/have-as-needed = no/' \
1446 # ${BUILDROOT}/${GLIBC_SRCDIR}/config.make.in || die
1447 #
1448 # # fix segfault of localdef on arches beside x86-32
1449 # mpatch glibc-2.3.5-localedef_segfault-1.patch || die
1450 #
1451 # # fix permissions on some of the scripts
1452 # chmod u+x ${BUILDROOT}/${GLIBC_SRCDIR}/scripts/*.sh || die
1453 #
1454 # install -d ${BUILDROOT}/${GLIBC_SRCDIR}/build || die
1455 # }
1456 #
1457 # glibc_stage2_src_compile()
1458 # {
1459 # cd ${GLIBC_SRCDIR}/build
1460 #
1461 # local my_glibc_CFLAGS
1462 # local my_glibc_CXXFLAGS
1463 # # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic
1464 # [[ ${TARGET_ARCH} = i*86 ]] && my_glibc_CFLAGS="${CFLAGS} -march=${TARGET_ARCH}" # only i*86
1465 # my_glibc_CFLAGS="${my_glibc_CFLAGS} -mtune=generic" # all arches
1466 #
1467 # # force nptl support (may not detected always)
1468 # echo "libc_cv_forced_unwind=yes" > config.cache || die
1469 # echo "libc_cv_c_cleanup=yes" >> config.cache || die
1470 #
1471 # BUILD_CC="gcc" \
1472 # CC="${TARGET_CHOST}-gcc" \
1473 # AR="${TARGET_CHOST}-ar" \
1474 # RANLIB="${TARGET_CHOST}-ranlib" \
1475 # CFLAGS="${my_glibc_CFLAGS}" \
1476 # ../configure \
1477 # --host=${TARGET_CHOST} \
1478 # --build=${CROSS_CHOST} \
1479 # --prefix=${TARGET_DEST} \
1480 # --disable-profile \
1481 # --enable-add-ons=nptl --with-tls \
1482 # --with-__thread \
1483 # --enable-kernel=2.6.0 \
1484 # --without-cvs \
1485 # --with-headers=${TARGET_DEST}/include \
1486 # --with-binutils=${CROSS_DEST}/bin \
1487 # --cache-file=config.cache \
1488 # || die
1489 #
1490 # make PARALLELMFLAGS="-j2" || die
1491 # }
1492
1493 glibc_stage2_src_install()
1494 {
1495 chrooted --mount --sources NODEPS=true mage srcinstall glibc-nptl || die
1496 }
1497
1498 stage2_adjusting_toolchain()
1499 {
1500 local linker
1501 local libdir
1502 local linker_adjusted
1503 linker=$(basename $(chrooted readelf -l ${TARGET_DEST}/bin/ls | grep interpreter | sed 's/.*interpreter: \(.*\)]/\1/'))
1504
1505 case ${TARGET_ARCH} in
1506 x86_64) libdir=lib64 ;;
1507 *) libdir=lib ;;
1508 esac
1509
1510 chrooted gcc -dumpspecs | \
1511 sed -e "s:${TARGET_DEST}/${libdir}/${linker}:/${libdir}/${linker}:g" \
1512 -e "/\*startfile_prefix_spec:/{n;s@.*@/usr/${libdir}/ @}" \
1513 -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' \
1514 > ${BINDIR}/${BUILDROOT_DEST}/$(dirname $(chrooted gcc --print-libgcc-file-name))/specs \
1515 || die
1516
1517 # test it
1518 echo 'main(){}' > ${BINDIR}/${BUILDROOT_DEST}/dummy.c || die
1519 chrooted gcc /dummy.c -v -Wl,--verbose &> /dummy.log || die
1520 linker_adjusted=$(chrooted readelf -l /a.out | grep interpreter | sed 's/.*interpreter: \(.*\)]/\1/')
1521 if [[ ${linker_adjusted} != /${libdir}/${linker} ]]
1522 then
1523 die "broken toolchain: ${linker_adjusted} != /${libdir}/${linker}"
1524 fi
1525 }
1526
1527 #binutils_stage2_src_prepare() { return 0; }
1528 #binutils_stage2_src_compile() { return 0; }
1529 binutils_stage2_src_install()
1530 {
1531 chrooted --mount --sources AR=ar NODEPS=true mage srcinstall binutils || die
1532 }
1533
1534
1535 #gcc_stage2_src_prepare() { return 0; }
1536 #gcc_stage2_src_compile() { return 0; }
1537 gcc_stage2_src_install()
1538 {
1539 # gcc is splitted into two packages: libstc++ and gcc
1540 chrooted --mount --sources NODEPS=true mage srcinstall libstdc++ || die
1541 chrooted --mount --sources NODEPS=true mage srcinstall gcc || die
1542 }
1543
1544
1545 buildroot_clean()
1546 {
1547 # prune packages
1548 # chrooted /sbin/mage update || die
1549 chrooted /sbin/mage clean || die
1550
1551 # prune sources
1552 if [[ -d ${BUILDROOT_DEST}/${SOURCEDIR} ]]
1553 then
1554 rm -rf ${BUILDROOT_DEST}/${SOURCEDIR} || die
1555 fi
1556
1557 # # prune install db
1558 # if [[ -d ${BUILDROOT_DEST}/${INSTALLDB} ]]
1559 # then
1560 # rm -rf ${BUILDROOT_DEST}/${INSTALLDB} || die
1561 # fi
1562 }
1563
1564 buildroot_src_prepare()
1565 {
1566 if [[ -e ${TARGET_DEST} ]] || [[ -L ${TARGET_DEST} ]]
1567 then
1568 echo
1569 echo "Please uninstall any buildroot packages first."
1570 echo "To build the tools I'll create a fake symlink to ${TARGET_DEST},"
1571 echo "so this directory must not exist."
1572 echo
1573 die "${TARGET_DEST} exists."
1574 fi
1575
1576 if [[ -e ${CROSS_DEST} ]] || [[ -L ${CROSS_DEST} ]]
1577 then
1578 echo
1579 echo "Please uninstall any buildroot packages first."
1580 echo "To build the tools I'll create a fake symlink to ${CROSS_DEST},"
1581 echo "so this directory must not exist."
1582 echo
1583 die "${CROSS_DEST} exists."
1584 fi
1585
1586 if [[ ${CHOST} = ${TARGET_CHOST} ]]
1587 then
1588 echo
1589 echo "\$CHOST and \$TARGET_CHOST have the same values."
1590 echo " CHOST=${CHOST}"
1591 echo " TARGET_CHOST=${TARGET_CHOST}"
1592 echo
1593 echo "You cannot build a buildroot with these settings,"
1594 echo "please use the native gcc-\${ARCH} builds."
1595 echo
1596 die "\$CHOST equal \$TARGET_CHOST."
1597 fi
1598
1599 # create a fake build-root
1600 install -d ${BINDIR}${BUILDROOT_DEST}${TARGET_DEST} || die
1601 ln -snf ${BINDIR}${BUILDROOT_DEST}${TARGET_DEST} ${TARGET_DEST} || die
1602
1603 # create a fake cross-root
1604 install -d ${BINDIR}${BUILDROOT_DEST}${CROSS_DEST} || die
1605 ln -snf ${BINDIR}${BUILDROOT_DEST}${CROSS_DEST} ${CROSS_DEST} || die
1606 }
1607
1608 buildroot_src_compile()
1609 {
1610 # setup a proper build environment
1611 export PATH=${CROSS_DEST}/bin:${PATH}
1612
1613 # setup cross-compilation tools
1614
1615 ####################################
1616 # toolchain - cross: linux-headers #
1617 ####################################
1618 linux_headers_cross_src_prepare
1619 linux_headers_cross_src_compile
1620 linux_headers_cross_src_install
1621
1622
1623 ###############################
1624 # toolchain - cross: binutils #
1625 ###############################
1626 binutils_cross_src_prepare
1627 binutils_cross_src_compile
1628 binutils_cross_src_install
1629
1630 # remove BINUTILS_SRCDIR
1631 rm -rf ${BINUTILS_SRCDIR} || die
1632
1633 #################################
1634 # toolchain - cross: gcc-static #
1635 #################################
1636 gcc_static_cross_src_prepare
1637 gcc_static_cross_src_compile
1638 gcc_static_cross_src_install
1639
1640 # remove GCC_SRCDIR
1641 rm -rf ${GCC_SRCDIR} || die
1642
1643
1644 ############################
1645 # toolchain - cross: glibc #
1646 ############################
1647 glibc_cross_src_prepare
1648 glibc_cross_src_compile
1649 glibc_cross_src_install
1650
1651
1652 ##########################
1653 # toolchain - cross: gcc #
1654 ##########################
1655 gcc_cross_src_prepare
1656 gcc_cross_src_compile
1657 gcc_cross_src_install
1658
1659 # remove GCC_SRCDIR
1660 rm -rf ${GCC_SRCDIR} || die
1661
1662
1663 # export TOOLCHAIN Variables
1664 export CC="${TARGET_CHOST}-gcc"
1665 export CXX="${TARGET_CHOST}-g++"
1666 export AR="${TARGET_CHOST}-ar"
1667 export AS="${TARGET_CHOST}-as"
1668 export RANLIB="${TARGET_CHOST}-ranlib"
1669 export LD="${TARGET_CHOST}-ld"
1670 export STRIP="${TARGET_CHOST}-strip"
1671
1672
1673 ################################
1674 # toolchain - stage1: binutils #
1675 ################################
1676 binutils_stage1_src_prepare
1677 binutils_stage1_src_compile
1678 binutils_stage1_src_install
1679
1680
1681 ###########################
1682 # toolchain - stage1: gcc #
1683 ###########################
1684 gcc_stage1_src_prepare
1685 gcc_stage1_src_compile
1686 gcc_stage1_src_install
1687
1688
1689 ###############################
1690 # toolchain - stage1: ncurses #
1691 ###############################
1692 ncurses_stage1_src_prepare
1693 ncurses_stage1_src_compile
1694 ncurses_stage1_src_install
1695
1696
1697 ############################
1698 # toolchain - stage1: bash #
1699 ############################
1700 bash_stage1_src_prepare
1701 bash_stage1_src_compile
1702 bash_stage1_src_install
1703
1704
1705 #############################
1706 # toolchain - stage1: bzip2 #
1707 #############################
1708 bzip2_stage1_src_prepare
1709 bzip2_stage1_src_compile
1710 bzip2_stage1_src_install
1711
1712
1713 #################################
1714 # toolchain - stage1: coreutils #
1715 #################################
1716 coreutils_stage1_src_prepare
1717 coreutils_stage1_src_compile
1718 coreutils_stage1_src_install
1719
1720
1721 #################################
1722 # toolchain - stage1: diffutils #
1723 #################################
1724 diffutils_stage1_src_prepare
1725 diffutils_stage1_src_compile
1726 diffutils_stage1_src_install
1727
1728
1729 #################################
1730 # toolchain - stage1: findutils #
1731 #################################
1732 findutils_stage1_src_prepare
1733 findutils_stage1_src_compile
1734 findutils_stage1_src_install
1735
1736
1737 ############################
1738 # toolchain - stage1: zlib #
1739 ############################
1740 zlib_stage1_src_prepare
1741 zlib_stage1_src_compile
1742 zlib_stage1_src_install
1743
1744
1745 ############################
1746 # toolchain - stage1: file #
1747 ############################
1748 file_stage1_src_prepare
1749 file_stage1_src_compile
1750 file_stage1_src_install
1751
1752
1753 ############################
1754 # toolchain - stage1: gawk #
1755 ############################
1756 gawk_stage1_src_prepare
1757 gawk_stage1_src_compile
1758 gawk_stage1_src_install
1759
1760
1761 ###############################
1762 # toolchain - stage1: gettext #
1763 ###############################
1764 gettext_stage1_src_prepare
1765 gettext_stage1_src_compile
1766 gettext_stage1_src_install
1767
1768
1769 ############################
1770 # toolchain - stage1: grep #
1771 ############################
1772 grep_stage1_src_prepare
1773 grep_stage1_src_compile
1774 grep_stage1_src_install
1775
1776
1777 ############################
1778 # toolchain - stage1: gzip #
1779 ############################
1780 gzip_stage1_src_prepare
1781 gzip_stage1_src_compile
1782 gzip_stage1_src_install
1783
1784
1785 ############################
1786 # toolchain - stage1: make #
1787 ############################
1788 make_stage1_src_prepare
1789 make_stage1_src_compile
1790 make_stage1_src_install
1791
1792
1793 #############################
1794 # toolchain - stage1: patch #
1795 #############################
1796 patch_stage1_src_prepare
1797 patch_stage1_src_compile
1798 patch_stage1_src_install
1799
1800
1801 ###########################
1802 # toolchain - stage1: sed #
1803 ###########################
1804 sed_stage1_src_prepare
1805 sed_stage1_src_compile
1806 sed_stage1_src_install
1807
1808
1809 ###########################
1810 # toolchain - stage1: tar #
1811 ###########################
1812 tar_stage1_src_prepare
1813 tar_stage1_src_compile
1814 tar_stage1_src_install
1815
1816
1817 ###############################
1818 # toolchain - stage1: texinfo #
1819 ###############################
1820 texinfo_stage1_src_prepare
1821 texinfo_stage1_src_compile
1822 texinfo_stage1_src_install
1823
1824
1825 #################################
1826 # toolchain - stage1: e2fsprogs #
1827 #################################
1828 e2fsprogs_stage1_src_prepare
1829 e2fsprogs_stage1_src_compile
1830 e2fsprogs_stage1_src_install
1831
1832
1833 ##################################
1834 # toolchain - stage1: util-linux #
1835 ##################################
1836 util_linux_stage1_src_prepare
1837 util_linux_stage1_src_compile
1838 util_linux_stage1_src_install
1839
1840
1841 ############################
1842 # toolchain - stage1: wget #
1843 ############################
1844 wget_stage1_src_prepare
1845 wget_stage1_src_compile
1846 wget_stage1_src_install
1847
1848
1849 #############################
1850 # toolchain - stage1: rsync #
1851 #############################
1852 rsync_stage1_src_prepare
1853 rsync_stage1_src_compile
1854 rsync_stage1_src_install
1855
1856
1857 ###########################
1858 # toolchain - stage1: cvs #
1859 ###########################
1860 cvs_stage1_src_prepare
1861 cvs_stage1_src_compile
1862 cvs_stage1_src_install
1863
1864
1865 ####################################
1866 # toolchain - stage1: perl minimal #
1867 ####################################
1868 # perl is needed by the final glibc
1869 perl_minimal_stage1_src_prepare
1870 perl_minimal_stage1_src_compile
1871 perl_minimal_stage1_src_install
1872
1873
1874 ##########################
1875 # toolchain - stage1: m4 #
1876 ##########################
1877 # m4 is needed by the final binutils
1878 m4_stage1_src_prepare
1879 m4_stage1_src_compile
1880 m4_stage1_src_install
1881
1882
1883 #############################
1884 # toolchain - stage1: bison #
1885 #############################
1886 # bison is needed by the final binutils
1887 bison_stage1_src_prepare
1888 bison_stage1_src_compile
1889 bison_stage1_src_install
1890
1891
1892 ############################
1893 # toolchain - stage1: flex #
1894 ############################
1895 # flex is needed by the final binutils
1896 flex_stage1_src_prepare
1897 flex_stage1_src_compile
1898 flex_stage1_src_install
1899
1900
1901 ########################################
1902 # basesystem - stage2: base filesystem #
1903 ########################################
1904 filesystem_stage2_src_prepare
1905 filesystem_stage2_src_install
1906
1907
1908 #############################
1909 # basesystem - stage2: mage #
1910 #############################
1911 mage_stage2_src_install
1912
1913
1914 ######################################
1915 # basesystem - stage2: linux-headers #
1916 ######################################
1917 # linux_headers_stage2_src_prepare
1918 # linux_headers_stage2_src_compile
1919 linux_headers_stage2_src_install
1920
1921
1922 ##############################
1923 # basesystem - stage2: glibc #
1924 ##############################
1925 #glibc_stage2_src_prepare
1926 #glibc_stage2_src_compile
1927 glibc_stage2_src_install
1928
1929 ################################################
1930 # basesystem - stage2: adjusting the toolchain #
1931 ################################################
1932 stage2_adjusting_toolchain
1933
1934
1935 #################################
1936 # basesystem - stage2: binutils #
1937 #################################
1938 #binutils_stage2_src_prepare
1939 #binutils_stage2_src_compile
1940 binutils_stage2_src_install
1941
1942
1943 ############################
1944 # basesystem - stage2: gcc #
1945 ############################
1946 #gcc_stage2_src_prepare
1947 #gcc_stage2_src_compile
1948 gcc_stage2_src_install
1949
1950 # cleanup
1951 # buildroot_clean
1952 }
1953
1954 buildroot_src_install()
1955 {
1956 # remove unneeded man and info pages to save some space
1957 local dir
1958 for dir in info man
1959 do
1960 [ -d ${BINDIR}/${dir} ] && { rm -rf ${BINDIR}/${dir} || die; }
1961 done
1962
1963 # remove ${TARGET_DEST} fake root symlink
1964 [[ -L ${TARGET_DEST} ]] && { rm ${TARGET_DEST} || die; }
1965 [[ -L ${CROSS_DEST} ]] && { rm ${CROSS_DEST} || die; }
1966
1967 # # setup environment
1968 # install -d ${BINDIR}/etc/env.d || die
1969 #
1970 # echo "PATH=${TARGET_DEST}/bin" > ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die
1971 # echo "ROOTPATH=${TARGET_DEST}/bin" >> ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die
1972 # echo "LDPATH=${TARGET_DEST}/lib" >> ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die
1973
1974 # # enter buildroot script
1975 #chroot /var/tmp/magebuild/builded /buildroot-tools/bin/env -i HOME=/root TERM="${TERM}" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/buildroot-tools/bin /buildroot-tools/bin/bash --login +h
1976
1977 echo "Building of ${PNAME}-toolchain finished ..."
1978 }
1979
1980 export_inherits buildroot src_prepare src_compile src_install