[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:
@@ -40,7 +40,8 @@ RUN mkdir src
|
|||||||
|
|
||||||
ENV TARGET=x86_64-unknown-linux-gnu
|
ENV TARGET=x86_64-unknown-linux-gnu
|
||||||
ENV VERSION=gcc-8.3.0-glibc-2.19-kernel-4.9
|
ENV VERSION=gcc-8.3.0-glibc-2.19-kernel-4.9
|
||||||
|
ENV TOOLCHAIN_VERSION_SUFFIX=""
|
||||||
|
|
||||||
# Add entry point.
|
# Add entry point.
|
||||||
COPY build_toolchain.sh .
|
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
|
### Usage
|
||||||
1. First, you need to build a Docker image with crosstool-ng inside. Use `create_image.sh` for it.
|
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.
|
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.
|
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
|
### Example
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ set -eou pipefail
|
|||||||
|
|
||||||
TARGET=$1
|
TARGET=$1
|
||||||
VERSION=$2
|
VERSION=$2
|
||||||
|
TOOLCHAIN_VERSION_SUFFIX=$3
|
||||||
HOME=/home/ct
|
HOME=/home/ct
|
||||||
ZLIB_VERSION=1.2.11
|
ZLIB_VERSION=1.2.11
|
||||||
|
|
||||||
@@ -33,7 +34,12 @@ build_zlib() {
|
|||||||
|
|
||||||
build_archive() {
|
build_archive() {
|
||||||
cd $HOME/x-tools
|
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"
|
mv "$TARGET" "$FULL_NAME"
|
||||||
ARCHIVE_NAME="$FULL_NAME.tar.gz"
|
ARCHIVE_NAME="$FULL_NAME.tar.gz"
|
||||||
tar -czvf "$ARCHIVE_NAME" "$FULL_NAME"
|
tar -czvf "$ARCHIVE_NAME" "$FULL_NAME"
|
||||||
|
|||||||
@@ -5,11 +5,16 @@ CONTAINER_NAME=kotlin-toolchain-builder
|
|||||||
IMAGE_NAME=kotlin-toolchain-builder
|
IMAGE_NAME=kotlin-toolchain-builder
|
||||||
TARGET=$1
|
TARGET=$1
|
||||||
VERSION=$2
|
VERSION=$2
|
||||||
|
TOOLCHAIN_VERSION_SUFFIX="${3:-""}"
|
||||||
|
|
||||||
docker ps -a | grep $CONTAINER_NAME > /dev/null \
|
docker ps -a | grep $CONTAINER_NAME > /dev/null \
|
||||||
&& docker stop $CONTAINER_NAME > /dev/null \
|
&& docker stop $CONTAINER_NAME > /dev/null \
|
||||||
&& docker rm $CONTAINER_NAME > /dev/null
|
&& docker rm $CONTAINER_NAME > /dev/null
|
||||||
|
|
||||||
echo "Running build script in container..."
|
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."
|
echo "Done."
|
||||||
Reference in New Issue
Block a user