DRY dist build script

This commit is contained in:
Matthew Little
2020-04-30 00:24:13 +02:00
parent 9bbf448edd
commit 5d1def57a6
8 changed files with 37 additions and 67 deletions

View File

@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
platform: [ windows_x64, macos_x64, linux_x64, linux_musl_x64, linux_musl_x64, linux_armv7, linux_arm64 ]
platform: [ windows-x64, macos-x64, linux-x64, linux-musl-x64, linux-armv7, linux-arm64 ]
steps:
- uses: actions/checkout@v2
@@ -25,5 +25,5 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: dist
name: ${{ matrix.platform }}
path: dist/

View File

@@ -13,5 +13,7 @@ RUN CC=aarch64-linux-gnu-gcc \
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
cargo build --release --workspace=./ --target aarch64-unknown-linux-gnu
RUN mkdir /out && cp -R /src/target/aarch64-unknown-linux-gnu/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/aarch64-unknown-linux-gnu/release /
COPY --from=build /out/blockstack-core /out/blockstack-cli /out/clarity-cli /out/stacks-node /

View File

@@ -13,5 +13,7 @@ RUN CC=arm-linux-gnueabihf-gcc \
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
cargo build --release --workspace=./ --target armv7-unknown-linux-gnueabihf
RUN mkdir /out && cp -R /src/target/armv7-unknown-linux-gnueabihf/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/armv7-unknown-linux-gnueabihf/release /
COPY --from=build /out/blockstack-core /out/blockstack-cli /out/clarity-cli /out/stacks-node /

View File

@@ -13,5 +13,7 @@ RUN CC=musl-gcc \
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc \
cargo build --release --workspace=./ --target x86_64-unknown-linux-musl
RUN mkdir /out && cp -R /src/target/x86_64-unknown-linux-musl/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/x86_64-unknown-linux-musl/release /
COPY --from=build /out/blockstack-core /out/blockstack-cli /out/clarity-cli /out/stacks-node /

View File

@@ -8,5 +8,7 @@ RUN rustup target add x86_64-unknown-linux-gnu
RUN cargo build --release --workspace=./ --target x86_64-unknown-linux-gnu
RUN mkdir /out && cp -R /src/target/x86_64-unknown-linux-gnu/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/x86_64-unknown-linux-gnu/release /
COPY --from=build /out/blockstack-core /out/blockstack-cli /out/clarity-cli /out/stacks-node /

View File

@@ -20,5 +20,7 @@ RUN wget -nc "https://github.com/blockstackpbc/osxcross/releases/download/v1/osx
CARGO_TARGET_X86_64_APPLE_DARWIN_AR=x86_64-apple-darwin18-ar \
cargo build --target x86_64-apple-darwin --release --workspace=./
RUN mkdir /out && cp -R /src/target/x86_64-apple-darwin/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/x86_64-apple-darwin/release /
COPY --from=build /out/blockstack-core /out/blockstack-cli /out/clarity-cli /out/stacks-node /

View File

@@ -11,6 +11,8 @@ RUN apt-get update && apt-get install -y gcc-mingw-w64-x86-64
RUN CC_x86_64_pc_windows_gnu=x86_64-w64-mingw32-gcc \
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc \
cargo build --release --workspace=./ --target x86_64-pc-windows-gnu
RUN mkdir /out && cp -R /src/target/x86_64-pc-windows-gnu/release/. /out
FROM scratch AS export-stage
COPY --from=build /src/target/x86_64-pc-windows-gnu/release /
COPY --from=build /out/blockstack-core.exe /out/blockstack-cli.exe /out/clarity-cli.exe /out/stacks-node.exe /

View File

@@ -6,63 +6,21 @@ script_path="$(dirname "$0")"
src_dir="$(dirname "$script_path")"
cd "$src_dir"
build_linux_x64 () {
dist_archive="dist/stacks-blockchain-linux-x64.tar.bz2"
rm -rf $dist_archive dist/linux-x64
DOCKER_BUILDKIT=1 docker build -o dist/linux-x64 -f ./build-scripts/Dockerfile.linux-x64 .
tar cfvj $dist_archive -C dist/linux-x64 blockstack-core blockstack-cli clarity-cli stacks-node
rm -rf dist/linux-x64
}
build_linux_musl_x64 () {
dist_archive="dist/stacks-blockchain-linux-musl-x64.tar.bz2"
rm -rf $dist_archive dist/linux-musl-x64
DOCKER_BUILDKIT=1 docker build -o dist/linux-musl-x64 -f ./build-scripts/Dockerfile.linux-musl-x64 .
tar cfvj $dist_archive -C dist/linux-musl-x64 blockstack-core blockstack-cli clarity-cli stacks-node
rm -rf dist/linux-musl-x64
}
build_linux_armv7 () {
dist_archive="dist/stacks-blockchain-linux-armv7.tar.bz2"
rm -rf $dist_archive dist/linux-armv7
DOCKER_BUILDKIT=1 docker build -o dist/linux-armv7 -f ./build-scripts/Dockerfile.linux-armv7 .
tar cfvj $dist_archive -C dist/linux-armv7 blockstack-core blockstack-cli clarity-cli stacks-node
rm -rf dist/linux-armv7
}
build_linux_arm64 () {
dist_archive="dist/stacks-blockchain-linux-arm64.tar.bz2"
rm -rf $dist_archive dist/linux-arm64
DOCKER_BUILDKIT=1 docker build -o dist/linux-arm64 -f ./build-scripts/Dockerfile.linux-arm64 .
tar cfvj $dist_archive -C dist/linux-arm64 blockstack-core blockstack-cli clarity-cli stacks-node
rm -rf dist/linux-arm64
}
build_macos_x64 () {
dist_archive="dist/stacks-blockchain-macos-x64.tar.bz2"
rm -rf $dist_archive dist/macos-x64
DOCKER_BUILDKIT=1 docker build -o dist/macos-x64 -f ./build-scripts/Dockerfile.macos-x64 .
tar cfvj $dist_archive -C dist/macos-x64 blockstack-core blockstack-cli clarity-cli stacks-node
rm -rf dist/macos-x64
}
build_windows_x64 () {
dist_archive="dist/stacks-blockchain-windows-x64.tar.bz2"
rm -rf $dist_archive dist/windows-x64
DOCKER_BUILDKIT=1 docker build -o dist/windows-x64 -f ./build-scripts/Dockerfile.windows-x64 .
tar cfvj $dist_archive -C dist/windows-x64 blockstack-core.exe blockstack-cli.exe clarity-cli.exe stacks-node.exe
rm -rf dist/windows-x64
build_platform () {
echo "Building $1"
rm -rf dist/$1
DOCKER_BUILDKIT=1 docker build -o dist/$1 -f ./build-scripts/Dockerfile.$1 .
}
case $DIST_TARGET_FILTER in
(*[![:blank:]]*)
case $DIST_TARGET_FILTER in
linux_x64) build_linux_x64 ;;
linux_musl_x64) build_linux_musl_x64 ;;
linux_armv7) build_linux_armv7 ;;
linux_arm64) build_linux_arm64 ;;
windows_x64) build_windows_x64 ;;
macos_x64) build_macos_x64 ;;
linux-x64) build_platform linux-x64 ;;
linux-musl-x64) build_platform linux-musl-x64 ;;
linux-armv7) build_platform linux-armv7 ;;
linux-arm64) build_platform linux-arm64 ;;
windows-x64) build_platform windows-x64 ;;
macos-x64) build_platform macos-x64 ;;
*)
echo "Invalid dist target filter '$DIST_TARGET_FILTER'"
exit 1
@@ -71,11 +29,11 @@ case $DIST_TARGET_FILTER in
;;
(*)
echo "Building distrubtions for all targets."
build_linux_x64
build_linux_musl_x64
build_linux_armv7
build_linux_arm64
build_windows_x64
build_macos_x64
build_platform linux-x64
build_platform linux-musl-x64
build_platform linux-armv7
build_platform linux-arm64
build_platform windows-x64
build_platform macos-x64
;;
esac
esac