aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2017-02-17 07:44:24 +0000
committerTimo Teräs <timo.teras@iki.fi>2017-02-17 08:22:03 +0000
commita95a079d7a562e73276448362141171bef668cab (patch)
tree810dd65e7772b76de91734556092be72843be003 /main
parent7b268e6114d17b132956ea45ae63976f184e5bc8 (diff)
downloadaports-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/APKBUILD1
-rw-r--r--main/gcc/APKBUILD59
-rw-r--r--main/musl/APKBUILD59
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