docker/bootstrap: Add a few tools to bootstrap in a container
* The bootstrap process will pick up on local toolchains such as clang and use them instead of the correct gcc cross-tools. * This limits environmental factors which can break bootstrap. Change-Id: Iacdd2a44cf26e18f838c9251fb9eddfbcb12565e
This commit is contained in:
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
FROM debian
|
||||
|
||||
ENV DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y git nasm autoconf automake texinfo flex \
|
||||
bison gawk build-essential unzip wget zip less zlib1g-dev \
|
||||
libcurl4-openssl-dev genisoimage libtool mtools gcc-multilib \
|
||||
u-boot-tools util-linux device-tree-compiler bc
|
||||
|
||||
ENV GIT_BUILDTOOLS="https://git.haiku-os.org/buildtools"
|
||||
ENV GIT_HAIKU="https://git.haiku-os.org/haiku"
|
||||
ENV GIT_HAIKUPORTER="https://github.com/haikuports/haikuporter.git"
|
||||
ENV GIT_HAIKUPORTS="https://github.com/haikuports/haikuports.git"
|
||||
ENV GIT_HAIKUPORTS_CROSS="https://github.com/haikuports/haikuports.cross.git"
|
||||
|
||||
ADD prep.sh /usr/local/bin/prep
|
||||
ADD crosstools.sh /usr/local/bin/crosstools
|
||||
ADD bootstrap.sh /usr/local/bin/bootstrap
|
||||
|
||||
ENV WORKPATH="/work"
|
||||
ENV PATH="$PATH:$WORKPATH/bin"
|
||||
|
||||
WORKDIR "/work"
|
||||
VOLUME ["/work"]
|
||||
|
||||
ENTRYPOINT ["/bin/bash", "-c"]
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
default:
|
||||
docker build . -t docker.io/haiku/bootstrap
|
||||
clean:
|
||||
docker rm docker.io/haiku/bootstrap
|
||||
docker volume rm bootstrap_work
|
||||
init:
|
||||
docker run -v bootstrap_work:/work docker.io/haiku/bootstrap prep
|
||||
crosstools:
|
||||
docker run -e TARGET_ARCH=$(TARGET_ARCH) -v bootstrap_work:/work docker.io/haiku/bootstrap crosstools
|
||||
bootstrap:
|
||||
docker run -e TARGET_ARCH=$(TARGET_ARCH) -v bootstrap_work:/work docker.io/haiku/bootstrap bootstrap
|
||||
enter:
|
||||
docker run -it -e TARGET_ARCH=$(TARGET_ARCH) -v bootstrap_work:/work docker.io/haiku/bootstrap /bin/bash -l
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
# Haiku bootstrap in a container
|
||||
|
||||
1) make
|
||||
2) make init
|
||||
3) TARGET_ARCH=arm make crosstools
|
||||
4) TARGET_ARCH=arm make bootstrap
|
||||
5) ```make enter``` lets you enter the container and poke around.
|
||||
6) profit!
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! -d $WORKPATH ]; then
|
||||
echo "$WORKPATH is not available!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src ]; then
|
||||
echo "$WORKPATH/src is not available!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $TARGET_ARCH ]; then
|
||||
echo "TARGET_ARCH isn't set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GENERATED=$WORKPATH/generated.$TARGET_ARCH
|
||||
|
||||
cd $GENERATED
|
||||
jam -q @bootstrap-raw
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! -d $WORKPATH ]; then
|
||||
echo "$WORKPATH is not available!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src ]; then
|
||||
echo "$WORKPATH/src is not available!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z $TARGET_ARCH ]; then
|
||||
echo "TARGET_ARCH isn't set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GENERATED=$WORKPATH/generated.$TARGET_ARCH
|
||||
mkdir -p $GENERATED
|
||||
|
||||
echo "Beginning a bootstrap build for $TARGET_ARCH at $GENERATED..."
|
||||
|
||||
cd $GENERATED
|
||||
$WORKPATH/src/haiku/configure -j4 --build-cross-tools $TARGET_ARCH $WORKPATH/src/buildtools \
|
||||
--bootstrap $WORKPATH/src/haikuporter/haikuporter $WORKPATH/src/haikuports.cross $WORKPATH/src/haikuports
|
||||
|
||||
echo "If everything was successful, your next step is 'make bootstrap'"
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! -d $WORKPATH ]; then
|
||||
echo "$WORKPATH is not available!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src ]; then
|
||||
mkdir $WORKPATH/src
|
||||
fi
|
||||
|
||||
# These we clone or pull updates on
|
||||
if [ ! -d $WORKPATH/src/buildtools ]; then
|
||||
git clone $GIT_BUILDTOOLS $WORKPATH/src/buildtools
|
||||
else
|
||||
git -C $WORKPATH/src/buildtools pull --rebase
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src/haikuporter ]; then
|
||||
git clone $GIT_HAIKUPORTER $WORKPATH/src/haikuporter
|
||||
else
|
||||
git -C $WORKPATH/src/buildtools pull --rebase
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src/haikuports ]; then
|
||||
git clone $GIT_HAIKUPORTS $WORKPATH/src/haikuports
|
||||
else
|
||||
git -C $WORKPATH/src/haikuports pull --rebase
|
||||
fi
|
||||
|
||||
|
||||
# These we just clone since modifications are likely
|
||||
if [ ! -d $WORKPATH/src/haikuports.cross ]; then
|
||||
git clone $GIT_HAIKUPORTS_CROSS $WORKPATH/src/haikuports.cross
|
||||
fi
|
||||
|
||||
if [ ! -d $WORKPATH/src/haiku ]; then
|
||||
git clone $GIT_HAIKU $WORKPATH/src/haiku
|
||||
fi
|
||||
|
||||
mkdir $WORKPATH/bin
|
||||
if [ ! -f $WORKPATH/bin/jam ]; then
|
||||
cd $WORKPATH/src/buildtools/jam
|
||||
make
|
||||
cp -f bin.linuxx86/jam $WORKPATH/bin/jam
|
||||
cd -
|
||||
fi
|
||||
Reference in New Issue
Block a user