From 6be2d5be9a44d5185e103357a9517977dfcd93a0 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Mon, 21 Jul 2014 10:59:46 +0100 Subject: Move build-essential chunks to definitions --- chunks/binutils.morph | 8 ++ chunks/busybox.morph | 191 ++++++++++++++++++++++++++++++++++ chunks/ccache.morph | 11 ++ chunks/eglibc.morph | 68 ++++++++++++ chunks/fhs-dirs.morph | 50 +++++++++ chunks/gawk.morph | 5 + chunks/gcc.morph | 50 +++++++++ chunks/linux-api-headers.morph | 24 +++++ chunks/make.morph | 5 + chunks/stage1-binutils.morph | 17 +++ chunks/stage1-gcc.morph | 48 +++++++++ chunks/stage2-binutils.morph | 24 +++++ chunks/stage2-busybox.morph | 72 +++++++++++++ chunks/stage2-eglibc.morph | 94 +++++++++++++++++ chunks/stage2-fhs-dirs.morph | 52 +++++++++ chunks/stage2-gawk.morph | 13 +++ chunks/stage2-gcc-fixed-headers.morph | 18 ++++ chunks/stage2-gcc.morph | 76 ++++++++++++++ chunks/stage2-linux-api-headers.morph | 24 +++++ chunks/stage2-make.morph | 13 +++ chunks/stage2-reset-specs.morph | 22 ++++ chunks/zlib.morph | 12 +++ strata/build-essential.morph | 22 ++++ 23 files changed, 919 insertions(+) create mode 100644 chunks/binutils.morph create mode 100644 chunks/busybox.morph create mode 100644 chunks/ccache.morph create mode 100644 chunks/eglibc.morph create mode 100644 chunks/fhs-dirs.morph create mode 100644 chunks/gawk.morph create mode 100644 chunks/gcc.morph create mode 100644 chunks/linux-api-headers.morph create mode 100644 chunks/make.morph create mode 100644 chunks/stage1-binutils.morph create mode 100644 chunks/stage1-gcc.morph create mode 100644 chunks/stage2-binutils.morph create mode 100644 chunks/stage2-busybox.morph create mode 100644 chunks/stage2-eglibc.morph create mode 100644 chunks/stage2-fhs-dirs.morph create mode 100644 chunks/stage2-gawk.morph create mode 100644 chunks/stage2-gcc-fixed-headers.morph create mode 100644 chunks/stage2-gcc.morph create mode 100644 chunks/stage2-linux-api-headers.morph create mode 100644 chunks/stage2-make.morph create mode 100644 chunks/stage2-reset-specs.morph create mode 100644 chunks/zlib.morph diff --git a/chunks/binutils.morph b/chunks/binutils.morph new file mode 100644 index 00000000..bab52672 --- /dev/null +++ b/chunks/binutils.morph @@ -0,0 +1,8 @@ +name: binutils +kind: chunk +build-system: autotools + +configure-commands: +- | + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --with-system-zlib diff --git a/chunks/busybox.morph b/chunks/busybox.morph new file mode 100644 index 00000000..ebc44818 --- /dev/null +++ b/chunks/busybox.morph @@ -0,0 +1,191 @@ +name: busybox +kind: chunk + +configure-commands: +# Busybox's default config has everything enabled. +- make defconfig + +- sed -e 's|.*UDHCPC_DEFAULT_SCRIPT.*|CONFIG_UDHCPC_DEFAULT_SCRIPT="'"$PREFIX"/share/udhcpc/default.script'"|' -i .config +- sed -e 's|.*IFUPDOWN_IFSTATE_PATH.*|CONFIG_IFUPDOWN_IFSTATE_PATH="/run/ifstate"|' -i .config + +# Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin. +- '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' -i .config' + +# We have GAWK, but in GENIVI baseline we want to get rid of it +# - sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config + +# Depends on stuff that was removed since eglibc 2.14. +- sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config + +# Busybox Patch is incompatible enough with GNU Patch that it can't be +# used for GNULib projects built from Git. +- sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config + +# None of this is needed because we have kmod; and it actually breaks the +# Linux build because depmod isn't compatible enough with util-linux's. +- sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config +- sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config +- sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config +- sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config + +# General features that we don't need. +- sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config +- sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config +- sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config +- sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config +- sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config +- sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config +- sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config +- sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config +- sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config +- sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config +- sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config + +# Now turn on some little bits we do need +- sed -e 's/# CONFIG_BBCONFIG is not set/CONFIG_BBCONFIG=y/' -i .config +- sed -e 's/# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set/CONFIG_FEATURE_COMPRESS_BBCONFIG=y/' -i .config +- sed -e 's/# CONFIG_FEATURE_MOUNT_HELPERS is not set/CONFIG_FEATURE_MOUNT_HELPERS=y/' -i .config + + +build-commands: +- make + +install-commands: +- | + set -e + if [ "$PREFIX" = /usr ]; then PREFIX=; fi + make CONFIG_PREFIX="$DESTDIR$PREFIX" install + chmod 6755 "$DESTDIR$PREFIX"/bin/busybox +- | + install -D -m 644 /proc/self/fd/0 "$DESTDIR$PREFIX/lib/systemd/system/crond.service" <<'EOF' + [Unit] + Description=Cron Service + + [Service] + ExecStart=/usr/sbin/crond -f + Restart=always + EOF + +- mkdir -p "$DESTDIR/var/spool/cron/crontabs" + +# Install custom udev rule to run ifup for every network device detected +- | + install -D -m 644 /proc/self/fd/0 "$DESTDIR/lib/udev/rules.d/99-baserock.rule" <<'EOF' + ACTION=="remove", GOTO="baserock_end" + # run ifup for every network device detected + SUBSYSTEM=="net", KERNEL!="lo", ENV{SYSTEMD_WANTS}="ifup@%k.service" + + LABEL="baserock_end" + EOF +- | + install -D -m 644 /proc/self/fd/0 "$DESTDIR$PREFIX/lib/systemd/system/ifup@.service" <<'EOF' + [Unit] + Description=ifup for %I + Before=network.target + + [Service] + Type=oneshot + ExecStart=/sbin/ifup %I + ExecStop=/sbin/ifdown %I + RemainAfterExit=true + EOF + +# Set up DHCP +- mkdir -p "$DESTDIR$PREFIX"/share/udhcpc +- cp examples/udhcp/simple.script "$DESTDIR$PREFIX"/share/udhcpc/default.script + +# Set up NTP +- | + install -D /proc/self/fd/0 "$DESTDIR$PREFIX/sbin" <<'EOF' + #!/bin/sh + # + # Invoke the Busybox ntpd with servers listed in /etc/ntpd.conf, if it + # exists. The servers should be listed one per line, with the first + # word in the line being "server". Any lines that don't start with + # "server" as the first word are ignored. The server name should be + # the second word. Anything else on the line is ignored. + # + # If the config file does not exist, no default servers are used. + + set -eu + + parse_servers() + { + awk '$1 == "server" { for (i=2; i <= NF; ++i) print "-p", $i }' "$1" + } + + if [ -e /etc/ntpd.conf ] + then + exec ntpd $(parse_servers /etc/ntpd.conf) "$@" + else + exec ntpd "$@" + fi + EOF +- | + install -D -m 644 /proc/self/fd/0 "$DESTDIR$PREFIX/lib/systemd/system/ntpd-boot.service" <<'EOF' + [Unit] + Description=Set clock at boot with NTP + Before=network.target + Before=ntpd.service + + [Service] + Type=oneshot + ExecStart=/usr/sbin/run-ntpd-with-config -n -q + Restart=on-failure + RestartSec=15 + EOF +- | + install -D -m 644 /proc/self/fd/0 "$DESTDIR$PREFIX/lib/systemd/system/ntpd.service" <<'EOF' + [Unit] + Description=Keep clock synchronised with NTP + Before=network.target + After=ntpd-boot.service + + [Service] + Type=simple + ExecStart=/usr/sbin/run-ntpd-with-config -n + Restart=on-failure + RestartSec=15 + EOF +- install -d "$DESTDIR/etc" +- | + cat << EOF > "$DESTDIR/etc/ntpd.conf" + server 0.pool.ntp.org + server 1.pool.ntp.org + server 2.pool.ntp.org + server 3.pool.ntp.org + EOF + +# Set up man environment variables +- | + cat << EOF > "$DESTDIR/etc/profile" + # Set default pager to less + export MANPAGER='less -R' + EOF +- | + cat << EOF > "$DESTDIR/etc/man.conf" + # This file is used by man to provide a manpath for those without one by + # examining their PATH environment variable. + # + # Lines beginning with `#' are comments and are ignored. Any combination of + # tabs or spaces may be used as `whitespace' separators. + + MANDATORY_MANPATH /usr/man + MANDATORY_MANPATH /usr/share/man + MANDATORY_MANPATH /usr/local/share/man + EOF + +# Install systemd units +- mkdir -p "$DESTDIR$PREFIX/lib/systemd/system/multi-user.target.wants" +- | + for f in crond.service ntpd.service ntpd-boot.service; do + ln -s "../$f" "$DESTDIR$PREFIX/lib/systemd/system/multi-user.target.wants/" + done diff --git a/chunks/ccache.morph b/chunks/ccache.morph new file mode 100644 index 00000000..b7e98165 --- /dev/null +++ b/chunks/ccache.morph @@ -0,0 +1,11 @@ +name: ccache +kind: chunk +build-system: autotools +install-commands: +- make DESTDIR="$DESTDIR" install +- mkdir -p "$DESTDIR/$PREFIX/lib/ccache" +- | + for cc in gcc cc g++ c++; do + ln -sf "$PREFIX/bin/ccache" "$DESTDIR/$PREFIX/lib/ccache/$cc" + ln -sf "$PREFIX/bin/ccache" "$DESTDIR/$PREFIX/lib/ccache/$TARGET-$cc" + done diff --git a/chunks/eglibc.morph b/chunks/eglibc.morph new file mode 100644 index 00000000..392c1392 --- /dev/null +++ b/chunks/eglibc.morph @@ -0,0 +1,68 @@ +name: eglibc +kind: chunk + +products: +- artifact: eglibc-nss + include: + - etc/nsswitch.conf + - (usr/)?lib/libnss.* +- artifact: eglibc-gconv + include: + - (usr/)?lib/gconv/.* +- artifact: eglibc-libs + include: + - sbin/ldconfig + - lib(32|64)?/ld-.* + - (usr/)?lib(exec)?/pt_chown +- artifact: eglibc-bins + include: + - (usr/)?s?bin/.* + - (usr/)?libexec/getconf/.* # support libs for getconf + - (usr/)?lib/libSegFault\.so(\.\d+)*$ # support lib for catchsegv +- artifact: eglibc-libs + include: + # This is processed after bins, so bins can take libSegFault.so + - (usr/)?lib(32|64)?/lib[^/]*\.so(\.\d+)*$ +- artifact: eglibc-devel + include: + - (usr/)?include/.* + - (usr/)?lib(32|64)?/lib.*\.a + - (usr/)?lib(32|64)?/lib.*\.la + - (usr/)?(lib(32|64)?|share)/pkgconfig/.*\.pc + - (usr/)?lib(32|64)?/.*\.o +- artifact: eglibc-locale + include: + - (usr/)?share/locale/.* + - (usr/)?share/i18n/.* + - (usr/)?share/zoneinfo/.* +- artifact: eglibc-misc + include: [ .* ] + +configure-commands: +- mkdir o + +# Necessary for ARM port +- cd libc && ln -s ../ports ports + +- | + export CFLAGS="-O2 $CFLAGS" + case "$MORPH_ARCH" in + armv7*) + ARCH_CONFIG='--without-fp' ;; + esac + cd o && ../libc/configure \ + $ARCH_CONFIG \ + --prefix="$PREFIX" \ + --disable-profile \ + --enable-kernel=2.6.25 \ + --enable-add-ons=nptl,ports \ + --without-cvs \ + --without-selinux + +build-commands: + - cd o && make localtime=UTC + +install-commands: +- cd o && make install_root="$DESTDIR" localtime=UTC install +- mkdir -p "$DESTDIR/etc" +- install -m 644 -o root -g root nsswitch.conf "$DESTDIR/etc/nsswitch.conf" diff --git a/chunks/fhs-dirs.morph b/chunks/fhs-dirs.morph new file mode 100644 index 00000000..e1c2d2d0 --- /dev/null +++ b/chunks/fhs-dirs.morph @@ -0,0 +1,50 @@ +name: fhs-dirs +kind: chunk +description: create the FHS 2.3 directory hierarchy and the usual files +install-commands: +- sh ./create-fhs-dirs "$DESTDIR" +- install -m 644 passwd "$DESTDIR/etc/passwd" +- install -m 600 shadow "$DESTDIR/etc/shadow" +- install -m 644 interfaces "$DESTDIR/etc/network/interfaces" +- install -m 644 group "$DESTDIR/etc/group" +- install -m 644 ld.so.conf "$DESTDIR/etc/ld.so.conf" +- install -m 644 issue "$DESTDIR/etc/issue" +- install -m 644 services "$DESTDIR/etc/services" +- install -m 644 protocols "$DESTDIR/etc/protocols" +- echo baserock > "$DESTDIR"/etc/hostname +devices: +- filename: /dev/console + uid: 0 + gid: 0 + type: c + major: 5 + minor: 1 + permissions: '0600' +- filename: /dev/full + uid: 0 + gid: 0 + type: c + major: 1 + minor: 7 + permissions: '0666' +- filename: /dev/null + uid: 0 + gid: 0 + type: c + major: 1 + minor: 3 + permissions: '0666' +- filename: /dev/urandom + uid: 0 + gid: 0 + type: c + major: 1 + minor: 9 + permissions: '0666' +- filename: /dev/zero + uid: 0 + gid: 0 + type: c + major: 1 + minor: 5 + permissions: '0666' diff --git a/chunks/gawk.morph b/chunks/gawk.morph new file mode 100644 index 00000000..1ad871c6 --- /dev/null +++ b/chunks/gawk.morph @@ -0,0 +1,5 @@ +name: gawk +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-nls diff --git a/chunks/gcc.morph b/chunks/gcc.morph new file mode 100644 index 00000000..34890ea8 --- /dev/null +++ b/chunks/gcc.morph @@ -0,0 +1,50 @@ +name: gcc +kind: chunk + +configure-commands: +- mkdir o + +# Configure flag notes: +# 1. An attempt to stop anything going in $PREFIX/lib64 (which doesn't +# fully work; we will need to hobble the multilib configuration in +# config/i386/t-linux64 if we really want to kill /lib64). +# 2. Multilib does not make sense in Baserock. +# 3. Optimisation libraries which for now we do without. +# 4. Recommended by Linux From Scratch; required for C++ ABI +# compatibility with other Linux distributions. +# 5. MPFR is built in the GCC tree, we need to locate it. +# 6. Avoid having more than one copy of ZLib in use on the system +- | + case "$MORPH_ARCH" in + armv7lhf) ARCH_CONFIG="--with-arch=armv7-a \ + --with-cpu=cortex-a9 \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_CONFIG="--with-arch=armv7-a" ;; + esac + cd o && \ + ../configure \ + $ARCH_CONFIG \ + --prefix="$PREFIX" \ + `# [1]` --libdir=$PREFIX/lib \ + --disable-nls \ + --enable-languages=c,c++,fortran \ + --enable-shared --enable-threads=posix \ + `# [2]` --disable-multilib \ + `# [3]` --disable-libgomp --without-cloog --without-ppl \ + `# [4]` --enable-__cxa_atexit \ + `# [5]` --with-mpfr-include="$(pwd)/../mpfr/src" \ + --with-mpfr-lib="$(pwd)/mpfr/src/.libs" \ + `# [6]` --with-system-zlib + +build-commands: +- cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install +- ln -s gcc "$DESTDIR/$PREFIX/bin/cc" +- > + for fortran_alias in f77 f90 f95; do + ln -s gfortran "$DESTDIR/$PREFIX/bin/$fortran_alias" + done diff --git a/chunks/linux-api-headers.morph b/chunks/linux-api-headers.morph new file mode 100644 index 00000000..f5e1f5f5 --- /dev/null +++ b/chunks/linux-api-headers.morph @@ -0,0 +1,24 @@ +name: linux-api-headers +kind: chunk + +install-commands: +- make mrproper + +- | + case "$MORPH_ARCH" in + armv7b|armv7l|armv7lhf) + ARCH=arm ;; + x86_32) + ARCH=i386 ;; + x86_64) + ARCH=x86_64 ;; + ppc64) + ARCH=powerpc ;; + *) + echo "Error: unsupported Morph architecture: $MORPH_ARCH" >&2 + exit 1 + esac + export ARCH + make INSTALL_HDR_PATH=dest headers_install +- install -d "$DESTDIR$PREFIX/include" +- cp -r dest/include/* "$DESTDIR/$PREFIX/include" diff --git a/chunks/make.morph b/chunks/make.morph new file mode 100644 index 00000000..1259b342 --- /dev/null +++ b/chunks/make.morph @@ -0,0 +1,5 @@ +name: make +kind: chunk +build-system: autotools +configure-commands: +- ./configure --prefix="$PREFIX" --disable-nls diff --git a/chunks/stage1-binutils.morph b/chunks/stage1-binutils.morph new file mode 100644 index 00000000..b6670d5c --- /dev/null +++ b/chunks/stage1-binutils.morph @@ -0,0 +1,17 @@ +name: stage1-binutils +kind: chunk +build-system: autotools + +configure-commands: +# We set the sysroot location dynamically at runtime by passing -B to GCC, +# so we configure with sysroot=/. Setting the lib path is vital to avoid +# the tools we build linking to the libraries on the host system; the '=' +# makes the path we give relative to the sysroot, which we can then set +# at runtime by passing -Wl,--sysroot to GCC. + +- | + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --build=$(sh config.guess) \ + --host=$(sh config.guess) \ + --target=$TARGET_STAGE1 \ + --with-sysroot="/" --with-lib-path="=$PREFIX/lib" diff --git a/chunks/stage1-gcc.morph b/chunks/stage1-gcc.morph new file mode 100644 index 00000000..0cb03568 --- /dev/null +++ b/chunks/stage1-gcc.morph @@ -0,0 +1,48 @@ +name: stage1-gcc +kind: chunk + +configure-commands: +- mkdir o + +# Configure flag notes: +# 1. Standard flags. See gcc.morph. +# 2. Disable searching /usr/local/include for headers +# 3. The pass 1 compiler needs to find the libraries we build in pass 2. +# Include path must be set explicility, because it defaults to +# $SYSROOT/usr/include rather than $SYSROOT/include. +# FIXME: this flag is not present until GCC 4.6.3! +# 4. Disable stuff that doesn't work when building a cross compiler +# without an existing libc, and generally try to keep this build as +# simple as possible. +- | + cd o && + ../configure \ + $(../morph-arch-config) \ + --build=$(sh ../config.guess) --host=$(sh ../config.guess) \ + --target=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + --disable-bootstrap --disable-nls \ + `# [1]` --libdir="$PREFIX/lib" --disable-multilib --disable-libgomp \ + --without-cloog --without-ppl \ + --with-mpfr-include="$(pwd)/../mpfr/src" \ + --with-mpfr-lib="$(pwd)/mpfr/src/.libs" \ + `# [2]` --with-local-prefix="$PREFIX" \ + `# [3]` --with-native-system-header-dir="$PREFIX/include" \ + `# [4]` --enable-languages=c --disable-decimal-float \ + --disable-libmudflap --disable-libquadmath --disable-libssp \ + --disable-shared --disable-threads --disable-target-libiberty \ + --disable-target-zlib --without-headers --with-newlib \ + --with-system-zlib + +build-commands: +- cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install + +# The file libgcc_eh is required during eglibc's build, but is not created +# because we built GCC with --disable-shared. This is a workaround for +# eglibc's build system being slightly broken. +- | + libgcc_filename=$($DESTDIR$PREFIX/bin/$TARGET_STAGE1-gcc -print-libgcc-file-name) + ln -sv libgcc.a $(echo $libgcc_filename | sed 's/libgcc/&_eh/') diff --git a/chunks/stage2-binutils.morph b/chunks/stage2-binutils.morph new file mode 100644 index 00000000..bc0b18ac --- /dev/null +++ b/chunks/stage2-binutils.morph @@ -0,0 +1,24 @@ +name: stage2-binutils +kind: chunk +build-system: autotools + +configure-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export CXX=false + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + ./configure --prefix="$PREFIX" --disable-nls --disable-werror \ + --build=$(sh config.guess) \ + --host=$TARGET_STAGE1 \ + --target=$TARGET_STAGE1 + +build-commands: +# Nested configure scripts require that we set CPPFLAGS here as well +# (I don't think we should have to .. . at least in GCC, I think +# TARGET_CPPFLAGS may be the answer) +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + make diff --git a/chunks/stage2-busybox.morph b/chunks/stage2-busybox.morph new file mode 100644 index 00000000..dc23d09b --- /dev/null +++ b/chunks/stage2-busybox.morph @@ -0,0 +1,72 @@ +name: stage2-busybox +kind: chunk + +configure-commands: +# Explicitly setting HOSTCC is required because we have a 'gcc' earlier in +# the PATH supplied by the stage2-gcc chunk, which can't execute outside of +# the stage 3 staging area. +- make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- defconfig + +# Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin. +- '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' -i .config' + +# We have GAWK. +- sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config + +# Depends on stuff that was removed since eglibc 2.14. +- sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config + +# Busybox Patch is incompatible enough with GNU Patch that it can't be +# used for GNULib projects built from Git. +- sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config + +# None of this is needed because we have kmod; and it actually breaks the +# Linux build because depmod isn't compatible enough with util-linux's. +- sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config +- sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config +- sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config +- sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config +- sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config + +# General features that we don't need. +- sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config +- sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config +- sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config +- sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config +- sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config +- sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=""/' -i .config +- sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config +- sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config +- sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config +- sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config +- sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config +- sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config +- sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config +- sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config +- sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config +- sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config + +build-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- + +install-commands: +# We expect to be built with a non-standard prefix in stage 2 (i.e. not +# /usr). The install will break if prefix is set to /usr. +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + make CONFIG_PREFIX="$DESTDIR$PREFIX" \ + HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- install && + chmod 6755 "$DESTDIR$PREFIX"/bin/busybox diff --git a/chunks/stage2-eglibc.morph b/chunks/stage2-eglibc.morph new file mode 100644 index 00000000..7e7d6701 --- /dev/null +++ b/chunks/stage2-eglibc.morph @@ -0,0 +1,94 @@ +name: stage2-eglibc +kind: chunk + +configure-commands: +- mkdir o + +# Necessary for ARM port +- cd libc && ln -s ../ports ports + +# Configure flag notes: +# 1. Avoid installing to PREFIX/lib64 on x86_64. +# 2. Location of linux-api-headers. +# 3. Normal flags. See eglibc.morph. +# 4. Force configuration values of certain things that can't be detected +# in a cross-compile. +- | + export CFLAGS="-O2 $CFLAGS" + export CXX=false + case "$MORPH_ARCH" in + armv7*) + ARCH_CONFIG='--without-fp' ;; + esac + cd o && ../libc/configure \ + $ARCH_CONFIG \ + --build=$(../libc/scripts/config.guess) --host=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + `# [1]` --libdir="$PREFIX/lib" \ + `# [2]` --with-headers="$(pwd)/../../$PREFIX/include" \ + `# [3]` --disable-profile --enable-kernel=2.6.25 \ + --enable-add-ons=nptl,ports --without-cvs --without-selinux \ + `# [4]` libc_cv_c_cleanup=yes libc_cv_ctors_header=yes \ + libc_cv_forced_unwind=yes libc_cv_ssp=no + +build-commands: +- cd o && make localtime=UTC + +install-commands: +- cd o && make install_root="$DESTDIR" localtime=UTC install + +# Fix up GCC to handle the sysroot containing eglibc being in a different +# location for each chunk build. +# +# For headers, it's enough to pass -B in the CPPFLAGS. This would work for +# the startup files (crt*.o) as well, except where libtool is involved (in +# which case it strips -B out of your LDFLAGS before calling GCC). We get +# around this by making GCC locate them relative to the environment variable +# STAGE2_SYSROOT, which we can then set along with CPPFLAGS in each stage 2 +# chunk build. +# +# We also force the use of the program loader at PREFIX/lib/ld.so instead +# of its usual home in /lib or /lib64, which is necessary for the output of +# stage 2 to work as a chroot when building stage 3. +- | + sysroot="$(dirname "$(pwd)")" + specs_dir="$(dirname $($TARGET_STAGE1-gcc --print-libgcc-file-name))" + target_specs_dir="$DESTDIR/${specs_dir#$sysroot}" + mkdir -p "$target_specs_dir" + $TARGET_STAGE1-gcc -dumpspecs | + sed -e "s@[gMS]\?crt[1in].o%s@%:getenv(STAGE2_SYSROOT $PREFIX/lib/&)@g" \ + -e "s@/lib\(64\)\?/ld@$PREFIX/lib/ld@g" \ + > "$target_specs_dir/specs-for-sysroot" + + # NASTY HACK # + # We create a symlink to the actual specs here, so that later the + # symlink can be replaced with a dangling link. + # + # This is necessary as we need to have gcc use its internal specs, + # which can differ to the specs generated by `gcc -dumpspecs`. + # + # The dangling symlink will not make it onto the final system, just + # like all other bootstrap only components. + ln -s specs-for-sysroot "$target_specs_dir/specs" + +# Install a symlink for the program interpreter (ld.so) so that binaries +# built in stage 3 before the stage 3 eglibc is built can use it. +# FIXME: get a better way of finding the name of the loader. The lib64 +# path is hardcoded into eglibc in the file +# sysdeps/unix/sysv/linux/configure. +- install -d $DESTDIR/lib +- | + cpu=$(echo $TARGET | cut -d '-' -f 1) + case "$cpu" in + x86_64) + install -d "$DESTDIR/lib64" + ln -s "$PREFIX/lib/ld-linux-x86-64.so.2" \ + "$DESTDIR/lib64/ld-linux-x86-64.so.2" ;; + ppc64) + install -d "$DESTDIR/lib64" + ln -s "$PREFIX/lib/ld64.so.1" \ + "$DESTDIR/lib64/ld64.so.1" ;; + *) + loader=$(basename $(ls "$DESTDIR$PREFIX"/lib/ld-linux*)) + ln -s "$PREFIX/lib/$loader" "$DESTDIR/lib/$loader" + esac diff --git a/chunks/stage2-fhs-dirs.morph b/chunks/stage2-fhs-dirs.morph new file mode 100644 index 00000000..fedb2e8e --- /dev/null +++ b/chunks/stage2-fhs-dirs.morph @@ -0,0 +1,52 @@ +name: stage2-fhs-dirs +kind: chunk +description: create the FHS 2.3 directory hierarchy and the usual files +install-commands: +- sh ./create-fhs-dirs "$DESTDIR" +- rmdir "$DESTDIR/bin" +- ln -s "$PREFIX/bin" "$DESTDIR/bin" +- install -m 644 passwd "$DESTDIR/etc/passwd" +- install -m 600 shadow "$DESTDIR/etc/shadow" +- install -m 644 interfaces "$DESTDIR/etc/network/interfaces" +- install -m 644 group "$DESTDIR/etc/group" +- install -m 644 ld.so.conf "$DESTDIR/etc/ld.so.conf" +- install -m 644 issue "$DESTDIR/etc/issue" +- install -m 644 services "$DESTDIR/etc/services" +- install -m 644 protocols "$DESTDIR/etc/protocols" +- echo baserock > "$DESTDIR"/etc/hostname +devices: +- filename: /dev/console + uid: 0 + gid: 0 + type: c + major: 5 + minor: 1 + permissions: '0600' +- filename: /dev/full + uid: 0 + gid: 0 + type: c + major: 1 + minor: 7 + permissions: '0666' +- filename: /dev/null + uid: 0 + gid: 0 + type: c + major: 1 + minor: 3 + permissions: '0666' +- filename: /dev/urandom + uid: 0 + gid: 0 + type: c + major: 1 + minor: 9 + permissions: '0666' +- filename: /dev/zero + uid: 0 + gid: 0 + type: c + major: 1 + minor: 5 + permissions: '0666' diff --git a/chunks/stage2-gawk.morph b/chunks/stage2-gawk.morph new file mode 100644 index 00000000..6ba77364 --- /dev/null +++ b/chunks/stage2-gawk.morph @@ -0,0 +1,13 @@ +name: stage2-gawk +kind: chunk +build-system: autotools +configure-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export CXX=false + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + ./configure --prefix="$PREFIX" --disable-nls \ + --build=$(sh config.guess) --host=$TARGET_STAGE1 +build-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" make diff --git a/chunks/stage2-gcc-fixed-headers.morph b/chunks/stage2-gcc-fixed-headers.morph new file mode 100644 index 00000000..be8bcdd5 --- /dev/null +++ b/chunks/stage2-gcc-fixed-headers.morph @@ -0,0 +1,18 @@ +name: stage2-gcc-fixed-headers +kind: chunk +install-commands: +# Stage 1 GCC's fixincludes process created a limits.h before there was +# a real limits.h available for the target. This step (taken from Linux +# Linux From Scratch) creates a better one so that stage 2 GCC can compile. +# +# THIS IS A FRAGILE HACK! We need to replace the headers. The only way to +# overwrite files in a staging area is to install a new chunk. +# This is undesired behaviour in the long term, as we want to never +# have overlaps, so this functionality may go away. +- | + libgcc_dir=$(dirname $($TARGET_STAGE1-gcc -print-libgcc-file-name)) + sysroot="$(dirname "$(pwd)")" + target_libgcc_dir="${libgcc_dir#$sysroot}" + mkdir -p "$DESTDIR/$target_libgcc_dir/include-fixed" + cat "gcc/limitx.h" "gcc/glimits.h" "gcc/limity.h" \ + >"$DESTDIR/$target_libgcc_dir/include-fixed/limits.h" diff --git a/chunks/stage2-gcc.morph b/chunks/stage2-gcc.morph new file mode 100644 index 00000000..9beb366d --- /dev/null +++ b/chunks/stage2-gcc.morph @@ -0,0 +1,76 @@ +name: stage2-gcc +kind: chunk + +configure-commands: +- mkdir o + +# In other projects we specify the sysroot location using CPPFLAGS. Here, +# that breaks because GCC compiles stuff for the *build* machine, too ... +# and this requires using the host's compiler, which cannot use the same +# set of CPPFLAGS as the target. If we specify the sysroot using CC instead +# then we don't interfere, because we are only specifying the *host* C +# compiler. +# +# Configure flag notes: +# 1. It's vital that this compiler targets the bootstrap machine +# (TARGET_STAGE1) so that the stage 1 GCC is used instead of the +# compiler of the build machine. +# 2. Disable searching /usr/local/include for headers +# 3. This flag causes the correct --sysroot flag to be passed when calling +# stage 1 GCC. +# 4. C++ is built in stage 3. +# 5. Standard flags. See gcc.morph. +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CC="$TARGET_STAGE1-gcc --sysroot=$STAGE2_SYSROOT" + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + case "$MORPH_ARCH" in + armv7lhf) ARCH_CONFIG="--with-arch=armv7-a \ + --with-cpu=cortex-a9 \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_CONFIG="--with-arch=armv7-a" ;; + esac + cd o && ../configure \ + $ARCH_CONFIG \ + `# [1]` --build=$(sh ../config.guess) \ + --host=$TARGET_STAGE1 \ + --target=$TARGET_STAGE1 \ + --prefix="$PREFIX" \ + `# [2]` --with-local-prefix=$PREFIX \ + `# [3]` --with-build-sysroot="$STAGE2_SYSROOT" \ + --disable-bootstrap \ + --enable-clocale=gnu --enable-shared --enable-threads=posix \ + `# [4]` --enable-languages=c \ + `# [5]` --libdir=$PREFIX/lib \ + --disable-libgomp --disable-multilib --disable-nls \ + --without-cloog --without-ppl \ + --with-mpfr-include="$(pwd)/../mpfr/src" \ + --with-mpfr-lib="$(pwd)/mpfr/src/.libs" + +build-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + cd o && make + +install-commands: +- cd o && make DESTDIR="$DESTDIR" install + +# Stage 3 builds need to link against this file in the location that +# it will be in the final system, so we make a temporary link now. +# +# On x86_64 GCC resolutely installs its libraries into lib64. To fix this +# would require hobbling the MULTILIB_OSDIRNAMES field in +# gcc/config/i386/t-linux64 and this might break things, so for now we +# tolerate the inconsistency. +- | + if [ "$(echo $TARGET | cut -c -6)" = "x86_64" ]; then + libdir=lib64 + else + libdir=lib + fi + + install -d "$DESTDIR/lib" + ln -s "$PREFIX/$libdir/libgcc_s.so" "$DESTDIR/lib/" + ln -s "$PREFIX/$libdir/libgcc_s.so.1" "$DESTDIR/lib/" diff --git a/chunks/stage2-linux-api-headers.morph b/chunks/stage2-linux-api-headers.morph new file mode 100644 index 00000000..68492674 --- /dev/null +++ b/chunks/stage2-linux-api-headers.morph @@ -0,0 +1,24 @@ +name: stage2-linux-api-headers +kind: chunk + +install-commands: +- make mrproper + +- | + case "$MORPH_ARCH" in + armv7b|armv7l|armv7lhf) + ARCH=arm ;; + x86_32) + ARCH=i386 ;; + x86_64) + ARCH=x86_64 ;; + ppc64) + ARCH=powerpc ;; + *) + echo "Error: unsupported Morph architecture: $MORPH_ARCH" >&2 + exit 1 + esac + export ARCH + make INSTALL_HDR_PATH=dest headers_install +- install -d "$DESTDIR$PREFIX/include" +- cp -r dest/include/* "$DESTDIR/$PREFIX/include" diff --git a/chunks/stage2-make.morph b/chunks/stage2-make.morph new file mode 100644 index 00000000..fee819be --- /dev/null +++ b/chunks/stage2-make.morph @@ -0,0 +1,13 @@ +name: stage2-make +kind: chunk +build-system: autotools +configure-commands: +- | + export STAGE2_SYSROOT="$(dirname $(pwd))" + export CPPFLAGS="--sysroot=$STAGE2_SYSROOT" + export CXX=false + export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT" + ./configure --prefix="$PREFIX" --disable-nls \ + --build=$(sh config/config.guess) --host=$TARGET_STAGE1 +build-commands: +- STAGE2_SYSROOT="$(dirname $(pwd))" make diff --git a/chunks/stage2-reset-specs.morph b/chunks/stage2-reset-specs.morph new file mode 100644 index 00000000..535ea928 --- /dev/null +++ b/chunks/stage2-reset-specs.morph @@ -0,0 +1,22 @@ +name: stage2-reset-specs +kind: chunk + +# Nasty hack to get around being unable to reliably add configuration to gcc, +# hence the gcc specs are modified, combined with Baserock's rootfs protection +# preventing specs being modified before builds. +# The limitation is overcome by installing files as part of a chunk, which +# overwrites previous files. +# New specs were added for the bootstrap builds, but after stage2 we start +# having chrooted builds, so the old specs need to be replaced. +# Unfortunately we can't just replace the specs with the ones gcc produces, +# since gcc behaves differently without specs to with specs it produces! +# So we use a **NASTY HACK** to replace the specs symlink with one that +# points to a file that doesn't exist. +install-commands: +- | + STAGE2_SYSROOT="$(dirname "$(pwd)")" + specs_dir="$(dirname $($TARGET_STAGE1-gcc -print-libgcc-file-name))" + target_specs_dir="$DESTDIR/${specs_dir#$STAGE2_SYSROOT}" + mkdir -p "$target_specs_dir" + ln -s "temporary specs removed by baserock bootstrap" \ + "$target_specs_dir/specs" diff --git a/chunks/zlib.morph b/chunks/zlib.morph new file mode 100644 index 00000000..bc5df8a6 --- /dev/null +++ b/chunks/zlib.morph @@ -0,0 +1,12 @@ +name: zlib +kind: chunk +max-jobs: 1 + +configure-commands: + - ./configure --prefix="$PREFIX" + +build-commands: + - make + +install-commands: + - make DESTDIR="$DESTDIR" install diff --git a/strata/build-essential.morph b/strata/build-essential.morph index 2f8d798b..9f8b0392 100644 --- a/strata/build-essential.morph +++ b/strata/build-essential.morph @@ -39,6 +39,7 @@ products: - eglibc-nss chunks: - name: stage1-binutils + morph: chunks/stage1-binutils.morph repo: upstream:binutils-redhat ref: 987eb543a034cddc4eeb103f08f566f24a5f964a unpetrify-ref: baserock/build-essential @@ -46,6 +47,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage1-gcc + morph: chunks/stage1-gcc.morph repo: upstream:gcc-tarball ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 unpetrify-ref: baserock/build-essential @@ -54,6 +56,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-linux-api-headers + morph: chunks/stage2-linux-api-headers.morph repo: upstream:linux ref: eff825d6e284eb0fb04b434429a3e3b2e10cabf8 unpetrify-ref: baserock/build-essential @@ -63,6 +66,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-eglibc + morph: chunks/stage2-eglibc.morph repo: upstream:eglibc2 ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c unpetrify-ref: baserock/2.15-build-essential @@ -73,6 +77,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-binutils + morph: chunks/stage2-binutils.morph repo: upstream:binutils-redhat ref: 987eb543a034cddc4eeb103f08f566f24a5f964a unpetrify-ref: baserock/build-essential @@ -83,6 +88,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-gcc-fixed-headers + morph: chunks/stage2-gcc-fixed-headers.morph repo: upstream:gcc-tarball ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 unpetrify-ref: baserock/build-essential @@ -93,6 +99,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-gcc + morph: chunks/stage2-gcc.morph repo: upstream:gcc-tarball ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 unpetrify-ref: baserock/build-essential @@ -104,6 +111,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-busybox + morph: chunks/stage2-busybox.morph repo: upstream:busybox ref: eeb9014f28e3aa00673a0fad127e7420da4392db unpetrify-ref: baserock/build-essential @@ -114,6 +122,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-fhs-dirs + morph: chunks/stage2-fhs-dirs.morph repo: baserock:baserock/fhs-dirs ref: 41bbb474cd4647ee715bc94c21c161d12a20deb4 unpetrify-ref: master @@ -121,6 +130,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-gawk + morph: chunks/stage2-gawk.morph repo: upstream:gawk ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 unpetrify-ref: baserock/build-essential @@ -131,6 +141,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-make + morph: chunks/stage2-make.morph repo: upstream:make ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba unpetrify-ref: baserock/build-essential @@ -141,6 +152,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: stage2-reset-specs + morph: chunks/stage2-reset-specs.morph repo: upstream:eglibc2 ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c unpetrify-ref: baserock/2.15-build-essential @@ -152,6 +164,7 @@ chunks: build-mode: bootstrap prefix: /tools - name: fhs-dirs + morph: chunks/fhs-dirs.morph repo: baserock:baserock/fhs-dirs ref: 41bbb474cd4647ee715bc94c21c161d12a20deb4 unpetrify-ref: master @@ -168,6 +181,7 @@ chunks: build-mode: staging prefix: /usr - name: linux-api-headers + morph: chunks/linux-api-headers.morph repo: upstream:linux ref: eff825d6e284eb0fb04b434429a3e3b2e10cabf8 unpetrify-ref: baserock/build-essential @@ -184,6 +198,7 @@ chunks: build-mode: staging prefix: /usr - name: eglibc + morph: chunks/eglibc.morph repo: upstream:eglibc2 ref: df0258044f321990eadd647e03095a48ad04c1a8 unpetrify-ref: baserock/2.15-build-essential @@ -205,6 +220,7 @@ chunks: eglibc-nss: build-essential-runtime prefix: /usr - name: zlib + morph: chunks/zlib.morph repo: upstream:zlib ref: db333af7e9b90a23fd7f9cd8dc128123b34bf698 unpetrify-ref: baserock/build-essential @@ -224,6 +240,7 @@ chunks: zlib-libs: build-essential-minimal prefix: /usr - name: binutils + morph: chunks/binutils.morph repo: upstream:binutils-redhat ref: 987eb543a034cddc4eeb103f08f566f24a5f964a unpetrify-ref: baserock/build-essential @@ -242,6 +259,7 @@ chunks: build-mode: staging prefix: /usr - name: busybox + morph: chunks/busybox.morph repo: upstream:busybox ref: bf06394ab87ff22662084c82c1821847c25b7f21 unpetrify-ref: baserock/build-essential @@ -259,6 +277,7 @@ chunks: build-mode: staging prefix: /usr - name: gawk + morph: chunks/gawk.morph repo: upstream:gawk ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 unpetrify-ref: baserock/build-essential @@ -276,6 +295,7 @@ chunks: build-mode: staging prefix: /usr - name: gcc + morph: chunks/gcc.morph repo: upstream:gcc-tarball ref: b0254026149b13782eae26d38435a4c62a002cf0 unpetrify-ref: baserock/build-essential-4.7 @@ -296,6 +316,7 @@ chunks: gcc-libs: build-essential-minimal prefix: /usr - name: make + morph: chunks/make.morph repo: upstream:make ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba unpetrify-ref: baserock/build-essential @@ -313,6 +334,7 @@ chunks: build-mode: staging prefix: /usr - name: ccache + morph: chunks/ccache.morph repo: upstream:ccache ref: 567631456f0899cdf0c382f898d38aadc8901d32 unpetrify-ref: baserock/build-essential -- cgit v1.2.1