SHELL := /bin/bash SAFE_VAULT_VERSION := $(shell grep "^version" < Cargo.toml | head -n 1 | awk '{ print $$3 }' | sed 's/\"//g') COMMIT_HASH := $(shell git rev-parse --short HEAD) USER_ID := $(shell id -u) GROUP_ID := $(shell id -g) UNAME_S := $(shell uname -s) PWD := $(shell echo $$PWD) UUID := $(shell uuidgen | sed 's/-//g') DEPLOY_PATH := deploy DEPLOY_PROD_PATH := ${DEPLOY_PATH}/prod build: rm -rf artifacts mkdir artifacts ifeq ($(UNAME_S),Linux) docker run --name "safe-vault-build-${UUID}" \ -v "${PWD}":/usr/src/safe-cli:Z \ -u ${USER_ID}:${GROUP_ID} \ maidsafe/safe-vault-build:build \ cargo build --release docker cp "safe-vault-build-${UUID}":/target . docker rm "safe-vault-build-${UUID}" else cargo build --release endif find target/release -maxdepth 1 -type f -exec cp '{}' artifacts \; build-container: rm -rf target/ docker rmi -f maidsafe/safe-vault-build:build docker build -f Dockerfile.build -t maidsafe/safe-vault-build:build \ --build-arg build_type="non-mock" . build-mock-container: rm -rf target/ docker rmi -f maidsafe/safe-vault-build:build-mock docker build -f Dockerfile.build -t maidsafe/safe-vault-build:build-mock \ --build-arg build_type="mock" . push-container: docker push maidsafe/safe-vault-build:build push-mock-container: docker push maidsafe/safe-vault-build:build-mock musl: ifneq ($(UNAME_S),Linux) @echo "This target only applies to Linux." @exit 1 endif rm -rf target rm -rf artifacts mkdir artifacts docker run --name "safe-vault-build-${UUID}" \ -v "${PWD}":/usr/src/safe_vault:Z \ -e CC=musl-gcc \ -e OPENSSL_INCLUDE_DIR=/usr/local/musl/include \ -e OPENSSL_LIB_DIR=/usr/local/musl/lib \ -e RUSTFLAGS='-C linker=musl-gcc' \ -u ${USER_ID}:${GROUP_ID} \ maidsafe/safe-vault-build:build \ cargo build --release --target x86_64-unknown-linux-musl --verbose docker cp "safe-vault-build-${UUID}":/target . docker rm "safe-vault-build-${UUID}" find target/x86_64-unknown-linux-musl/release \ -maxdepth 1 -type f -exec cp '{}' artifacts \; package-commit_hash-artifacts-for-deploy: rm -f *.tar rm -rf ${DEPLOY_PATH} mkdir -p ${DEPLOY_PROD_PATH} tar -C artifacts/prod/x86_64-unknown-linux-musl/release \ -cvf safe_vault-${COMMIT_HASH}-x86_64-unknown-linux-musl.tar safe_vault tar -C artifacts/prod/x86_64-pc-windows-gnu/release \ -cvf safe_vault-${COMMIT_HASH}-x86_64-pc-windows-gnu.tar safe_vault.exe tar -C artifacts/prod/x86_64-apple-darwin/release \ -cvf safe_vault-${COMMIT_HASH}-x86_64-apple-darwin.tar safe_vault mv *.tar ${DEPLOY_PROD_PATH} .ONESHELL: package-version-artifacts-for-deploy: rm -f *.zip *.tar.gz rm -rf ${DEPLOY_PATH} mkdir -p ${DEPLOY_PROD_PATH} zip -j safe_vault-${SAFE_VAULT_VERSION}-x86_64-unknown-linux-musl.zip \ artifacts/prod/x86_64-unknown-linux-musl/release/safe_vault zip -j safe_vault-${SAFE_VAULT_VERSION}-x86_64-pc-windows-gnu.zip \ artifacts/prod/x86_64-pc-windows-gnu/release/safe_vault.exe zip -j safe_vault-${SAFE_VAULT_VERSION}-x86_64-apple-darwin.zip \ artifacts/prod/x86_64-apple-darwin/release/safe_vault tar -C artifacts/prod/x86_64-unknown-linux-musl/release \ -zcvf safe_vault-${SAFE_VAULT_VERSION}-x86_64-unknown-linux-musl.tar.gz safe_vault tar -C artifacts/prod/x86_64-pc-windows-gnu/release \ -zcvf safe_vault-${SAFE_VAULT_VERSION}-x86_64-pc-windows-gnu.tar.gz safe_vault.exe tar -C artifacts/prod/x86_64-apple-darwin/release \ -zcvf safe_vault-${SAFE_VAULT_VERSION}-x86_64-apple-darwin.tar.gz safe_vault mv *.zip ${DEPLOY_PROD_PATH} mv *.tar.gz ${DEPLOY_PROD_PATH}