diff options
author | Timo Teräs <timo.teras@iki.fi> | 2017-02-17 07:44:24 +0000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-02-17 08:22:03 +0000 |
commit | a95a079d7a562e73276448362141171bef668cab (patch) | |
tree | 810dd65e7772b76de91734556092be72843be003 /main | |
parent | 7b268e6114d17b132956ea45ae63976f184e5bc8 (diff) | |
download | aports-a95a079d7a562e73276448362141171bef668cab.tar.bz2 aports-a95a079d7a562e73276448362141171bef668cab.tar.xz |
scripts/bootstrap.sh, binutils, gcc, musl: improve bootstrap
- requires new abuild (from git until 2.30 is tagged)
- properly build initial musl-dev before c-compiler is available
- mark core aports with options=toolchain, and fix all makedepends
- bootstrap.sh: reorganize and use set -e there
- bootstrap.sh: use new EXTRADEPENDS_* to pull in implicit dependencies
during bootstrap to simplify the script
Diffstat (limited to 'main')
-rw-r--r-- | main/binutils/APKBUILD | 1 | ||||
-rw-r--r-- | main/gcc/APKBUILD | 59 | ||||
-rw-r--r-- | main/musl/APKBUILD | 59 |
3 files changed, 60 insertions, 59 deletions
diff --git a/main/binutils/APKBUILD b/main/binutils/APKBUILD index 8bacc931c2..09ea0962d6 100644 --- a/main/binutils/APKBUILD +++ b/main/binutils/APKBUILD @@ -5,6 +5,7 @@ pkgrel=1 pkgdesc="Tools necessary to build programs" url="http://www.gnu.org/software/binutils/" depends="" +options="toolchain" makedepends_build="bison flex texinfo" makedepends_host="zlib-dev" makedepends="$makedepends_build $makedepends_host" diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD index 32b7fd2c9b..70610f0f47 100644 --- a/main/gcc/APKBUILD +++ b/main/gcc/APKBUILD @@ -2,24 +2,23 @@ pkgname=gcc pkgver=6.3.0 _pkgbase=6.3.0 -_cross="" -[ "$BOOTSTRAP" = "noheaders" ] && pkgname="gcc-pass1" [ "$BOOTSTRAP" = "nolibc" ] && pkgname="gcc-pass2" -[ "$CHOST" != "$CTARGET" ] && _cross="-$CTARGET_ARCH" +[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" +[ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target="" -pkgname="$pkgname$_cross" +pkgname="$pkgname$_target" pkgrel=1 pkgdesc="The GNU Compiler Collection" url="http://gcc.gnu.org" arch="all" license="GPL LGPL" _gccrel=$pkgver-r$pkgrel -depends="binutils$_cross isl" -makedepends_build="paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev" +options="toolchain" +depends="binutils$_target isl" +makedepends_build="gcc$_cross g++$_cross paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev" makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev !gettext-dev" -makedepends="$makedepends_build $makedepends_host" subpackages=" " -[ "$CHOST" = "$CTARGET" ] && subpackages="gcc-doc$_cross" +[ "$CHOST" = "$CTARGET" ] && subpackages="gcc-doc$_target" replaces="libstdc++ binutils" : ${LANG_CXX:=true} @@ -127,30 +126,31 @@ fi _languages=c if $LANG_CXX; then - subpackages="$subpackages libstdc++:libcxx:$CTARGET_ARCH g++$_cross:gpp" + subpackages="$subpackages libstdc++:libcxx:$CTARGET_ARCH g++$_target:gpp" _languages="$_languages,c++" fi if $LANG_OBJC; then - subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_cross:objc" + subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc" _languages="$_languages,objc" fi if $LANG_JAVA; then - subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_cross:java" + subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java" _languages="$_languages,java" fi if $LANG_GO; then - subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_cross:go" + subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go" _languages="$_languages,go" fi if $LANG_FORTRAN; then - subpackages="$subpackages libgfortran::$CTARGET_ARCH gfortran$_cross:gfortran" + subpackages="$subpackages libgfortran::$CTARGET_ARCH gfortran$_target:gfortran" _languages="$_languages,fortran" fi if $LANG_ADA; then - subpackages="$subpackages libgnat::$CTARGET_ARCH gcc-gnat$_cross:gnat" + subpackages="$subpackages libgnat::$CTARGET_ARCH gcc-gnat$_target:gnat" _languages="$_languages,ada" - makedepends="$makedepends gcc-gnat" + makedepends_build="$makedepends_build gcc-gnat$_cross" fi +makedepends="$makedepends_build $makedepends_host" source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$pkgver}/gcc-${_pkgbase:-$pkgver}.tar.bz2 ftp://sourceware.org/pub/java/ecj-4.9.jar @@ -266,15 +266,8 @@ build() { [ "$CHOST" != "$CTARGET" ] && _cross_configure="--disable-bootstrap --with-sysroot=$CBUILDROOT" case "$BOOTSTRAP" in - noheaders) - _bootstrap_configure="--with-newlib --without-headers --disable-shared --enable-threads=no" - ;; - nolibc) - _bootstrap_configure="--with-newlib --disable-shared --enable-threads=no" - ;; - *) - _bootstrap_configure="--enable-shared --enable-threads --enable-tls" - ;; + nolibc) _bootstrap_configure="--with-newlib --disable-shared --enable-threads=no" ;; + *) _bootstrap_configure="--enable-shared --enable-threads --enable-tls" ;; esac $LIBGOMP || _bootstrap_configure="$_bootstrap_configure --disable-libgomp" @@ -405,7 +398,7 @@ libatomic() { replaces="gcc" mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/libatomic.so.* "$subpkgdir"/usr/lib/ || \ + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libatomic.so.* "$subpkgdir"/usr/lib/ || \ return 1 } @@ -414,7 +407,7 @@ libcxx() { depends= mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/libstdc++.so.* "$subpkgdir"/usr/lib/ || \ + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libstdc++.so.* "$subpkgdir"/usr/lib/ || \ return 1 } @@ -423,14 +416,14 @@ gpp() { depends="libstdc++=$_gccrel gcc=$_gccrel libc-dev" mkdir -p "$subpkgdir/$_gcclibexec" \ "$subpkgdir"/usr/bin \ - "$subpkgdir"/usr/${_cross:+$CTARGET/}include \ - "$subpkgdir"/usr/${_cross:+$CTARGET/}lib \ + "$subpkgdir"/usr/${_target:+$CTARGET/}include \ + "$subpkgdir"/usr/${_target:+$CTARGET/}lib \ mv "$pkgdir/$_gcclibexec/cc1plus" "$subpkgdir/$_gcclibexec/" paxmark -pmrs "$subpkgdir/$_gcclibexec/cc1plus" || return 1 - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/*++* "$subpkgdir"/usr/${_cross:+$CTARGET/}lib/ || return 1 - mv "$pkgdir"/usr/${_cross:+$CTARGET/}include/c++ "$subpkgdir"/usr/${_cross:+$CTARGET/}include/ || return 1 + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/*++* "$subpkgdir"/usr/${_target:+$CTARGET/}lib/ || return 1 + mv "$pkgdir"/usr/${_target:+$CTARGET/}include/c++ "$subpkgdir"/usr/${_target:+$CTARGET/}include/ || return 1 mv "$pkgdir"/usr/bin/*++ "$subpkgdir"/usr/bin/ || return 1 } @@ -439,7 +432,7 @@ libobjc() { replaces="objc" depends= mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/libobjc.so.* "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libobjc.so.* "$subpkgdir"/usr/lib/ } objc() { @@ -461,7 +454,7 @@ libgcc() { depends= mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ || \ + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ || \ return 1 } @@ -471,7 +464,7 @@ libgomp() { replaces="gcc" mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/${_cross:+$CTARGET/}lib/libgomp.so.* "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/${_target:+$CTARGET/}lib/libgomp.so.* "$subpkgdir"/usr/lib/ } java() { diff --git a/main/musl/APKBUILD b/main/musl/APKBUILD index d44e05ef2c..81d951ba12 100644 --- a/main/musl/APKBUILD +++ b/main/musl/APKBUILD @@ -9,9 +9,14 @@ arch="all" license="MIT" depends="" depends_dev="!uclibc-dev" +options="toolchain" makedepends="$depends_dev" subpackages="$pkgname-dev $pkgname-dbg libc6-compat:compat:noarch" -[ "$BOOTSTRAP" != "nolibc" ] && subpackages="$subpackages $pkgname-utils" +case "$BOOTSTRAP" in +nocc) pkgname="musl-dev"; subpackages="";; +nolibc) ;; +*) subpackages="$subpackages $pkgname-utils";; +esac source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz 0001-fix-strftime-y-for-negative-years.patch 0002-make-globfree-safe-after-failed-glob-from-over-lengt.patch @@ -33,24 +38,11 @@ source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz builddir="$srcdir"/musl-$pkgver -install_sysroot_headers() { - cd "$builddir" - [ -z "${CBUILDROOT}" ] && die "CBUILDROOT not set" - case "$CARCH" in - aarch64*) ARCH="aarch64" ;; - arm*) ARCH="arm" ;; - x86) ARCH="i386" ;; - x86_64) ARCH="x86_64" ;; - ppc) ARCH="powerpc" ;; - ppc64*) ARCH="powerpc64" ;; - mips*) ARCH="mips" ;; - esac - make ARCH="$ARCH" prefix=/usr DESTDIR="${CBUILDROOT}" install-headers || return 1 -} - build() { cd "$builddir" + [ "$BOOTSTRAP" == "nocc" ] && return 0 + # provide minimal libssp_nonshared.a so we don't need libssp from gcc ${CROSS_COMPILE}gcc $CPPFLAGS $CFLAGS -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o || return 1 ${CROSS_COMPILE}ar r libssp_nonshared.a __stack_chk_fail_local.o || return 1 @@ -79,17 +71,32 @@ build() { package() { cd "$builddir" - make DESTDIR="$pkgdir" install || return 1 - cp libssp_nonshared.a "$pkgdir"/usr/lib || return 1 - - # make LDSO the be the real file, and libc the symlink - local LDSO=$(make -f Makefile --eval "$(echo -e 'print-ldso:\n\t@echo $$(basename $(LDSO_PATHNAME))')" print-ldso) - mv -f "$pkgdir"/usr/lib/libc.so "$pkgdir"/lib/"$LDSO" || return 1 - ln -sf "$LDSO" "$pkgdir"/lib/libc.musl-${CARCH}.so.1 || return 1 - ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/lib/libc.so || return 1 - mkdir -p "$pkgdir"/usr/bin || return 1 - ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/bin/ldd || return 1 + if [ "$BOOTSTRAP" == "nocc" ]; then + case "$CARCH" in + aarch64*) ARCH="aarch64" ;; + arm*) ARCH="arm" ;; + x86) ARCH="i386" ;; + x86_64) ARCH="x86_64" ;; + ppc) ARCH="powerpc" ;; + ppc64*) ARCH="powerpc64" ;; + mips*) ARCH="mips" ;; + esac + + make ARCH="$ARCH" prefix=/usr DESTDIR="$pkgdir" install-headers || return 1 + else + make DESTDIR="$pkgdir" install || return 1 + + cp libssp_nonshared.a "$pkgdir"/usr/lib || return 1 + + # make LDSO the be the real file, and libc the symlink + local LDSO=$(make -f Makefile --eval "$(echo -e 'print-ldso:\n\t@echo $$(basename $(LDSO_PATHNAME))')" print-ldso) + mv -f "$pkgdir"/usr/lib/libc.so "$pkgdir"/lib/"$LDSO" || return 1 + ln -sf "$LDSO" "$pkgdir"/lib/libc.musl-${CARCH}.so.1 || return 1 + ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/lib/libc.so || return 1 + mkdir -p "$pkgdir"/usr/bin || return 1 + ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/bin/ldd || return 1 + fi # remove libintl.h, currently we don't want by default any NLS # and use GNU gettext where needed. the plan is to migrate to |