[Toolchain] Archive versioning

Allow toolchain builder to add a suffix to toolchain name.
It is useful for rebuilding the same toolchain in different environment.

(cherry picked from commit 83148fc5bb4e8bcc5afcf119df53ec1bc854be17)
This commit is contained in:
Sergey Bogolepov
2021-03-03 11:39:42 +07:00
committed by Space
parent bd614aba0b
commit 357f2be14e
4 changed files with 17 additions and 4 deletions
@@ -40,7 +40,8 @@ RUN mkdir src
ENV TARGET=x86_64-unknown-linux-gnu
ENV VERSION=gcc-8.3.0-glibc-2.19-kernel-4.9
ENV TOOLCHAIN_VERSION_SUFFIX=""
# Add entry point.
COPY build_toolchain.sh .
ENTRYPOINT "/bin/bash" "build_toolchain.sh" ${TARGET} ${VERSION}
ENTRYPOINT "/bin/bash" "build_toolchain.sh" ${TARGET} ${VERSION} ${TOOLCHAIN_VERSION_SUFFIX}
@@ -8,8 +8,9 @@ This directory contains a set of scripts and configuration files that allow one
### Usage
1. First, you need to build a Docker image with crosstool-ng inside. Use `create_image.sh` for it.
2. Now you can build an actual toolchain. To pick one, take a look inside `toolchains` folder.
It is organized as `$TARGET/$VERSION`. Then run `./run_container.sh $TARGET $VERSION`. Building a toolchain might take a while (~17 minutes on Ryzen 5 3600).
It is organized as `$TARGET/$VERSION`. Then run `./run_container.sh $TARGET $VERSION $TOOLCHAIN_VERSION_SUFFIX`. Building a toolchain might take a while (~17 minutes on Ryzen 5 3600).
Once ready, an archive will be placed in `artifacts` folder.
`$TOOLCHAIN_VERSION_SUFFIX` is an optional argument that adds suffix to the end of toolchain name.
### Example
```bash
@@ -4,6 +4,7 @@ set -eou pipefail
TARGET=$1
VERSION=$2
TOOLCHAIN_VERSION_SUFFIX=$3
HOME=/home/ct
ZLIB_VERSION=1.2.11
@@ -33,7 +34,12 @@ build_zlib() {
build_archive() {
cd $HOME/x-tools
FULL_NAME=$TARGET-$VERSION
if [ -z "$TOOLCHAIN_VERSION_SUFFIX" ]
then
FULL_NAME="$TARGET-$VERSION"
else
FULL_NAME="$TARGET-$VERSION-$TOOLCHAIN_VERSION_SUFFIX"
fi
mv "$TARGET" "$FULL_NAME"
ARCHIVE_NAME="$FULL_NAME.tar.gz"
tar -czvf "$ARCHIVE_NAME" "$FULL_NAME"
@@ -5,11 +5,16 @@ CONTAINER_NAME=kotlin-toolchain-builder
IMAGE_NAME=kotlin-toolchain-builder
TARGET=$1
VERSION=$2
TOOLCHAIN_VERSION_SUFFIX="${3:-""}"
docker ps -a | grep $CONTAINER_NAME > /dev/null \
&& docker stop $CONTAINER_NAME > /dev/null \
&& docker rm $CONTAINER_NAME > /dev/null
echo "Running build script in container..."
docker run -it -v "$PWD"/artifacts:/artifacts --env TARGET="$TARGET" --env VERSION="$VERSION" --name=$CONTAINER_NAME $IMAGE_NAME
docker run -it -v "$PWD"/artifacts:/artifacts \
--env TARGET="$TARGET" \
--env VERSION="$VERSION" \
--env TOOLCHAIN_VERSION_SUFFIX="$TOOLCHAIN_VERSION_SUFFIX" \
--name=$CONTAINER_NAME $IMAGE_NAME
echo "Done."