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