summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@gmail.com>2014-07-21 10:59:46 +0100
committerRichard Maw <richard.maw@codethink.co.uk>2014-07-24 16:53:05 +0100
commit6be2d5be9a44d5185e103357a9517977dfcd93a0 (patch)
treee09852e02622f01cea9c94f1e6c389b7450dff40
parentb2f120b8edc40237bb387cfe480d08ac960ee8aa (diff)
downloaddefinitions-6be2d5be9a44d5185e103357a9517977dfcd93a0.tar.gz
Move build-essential chunks to definitions
-rw-r--r--chunks/binutils.morph8
-rw-r--r--chunks/busybox.morph191
-rw-r--r--chunks/ccache.morph11
-rw-r--r--chunks/eglibc.morph68
-rw-r--r--chunks/fhs-dirs.morph50
-rw-r--r--chunks/gawk.morph5
-rw-r--r--chunks/gcc.morph50
-rw-r--r--chunks/linux-api-headers.morph24
-rw-r--r--chunks/make.morph5
-rw-r--r--chunks/stage1-binutils.morph17
-rw-r--r--chunks/stage1-gcc.morph48
-rw-r--r--chunks/stage2-binutils.morph24
-rw-r--r--chunks/stage2-busybox.morph72
-rw-r--r--chunks/stage2-eglibc.morph94
-rw-r--r--chunks/stage2-fhs-dirs.morph52
-rw-r--r--chunks/stage2-gawk.morph13
-rw-r--r--chunks/stage2-gcc-fixed-headers.morph18
-rw-r--r--chunks/stage2-gcc.morph76
-rw-r--r--chunks/stage2-linux-api-headers.morph24
-rw-r--r--chunks/stage2-make.morph13
-rw-r--r--chunks/stage2-reset-specs.morph22
-rw-r--r--chunks/zlib.morph12
-rw-r--r--strata/build-essential.morph22
23 files changed, 919 insertions, 0 deletions
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