-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathmake_release
More file actions
executable file
·88 lines (75 loc) · 2.46 KB
/
make_release
File metadata and controls
executable file
·88 lines (75 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
set -euxo pipefail
# if darwin, add PATH="/usr/local/opt/bison/bin:$PATH"
if [[ $OSTYPE == "darwin"* ]]; then
export PATH="/opt/homebrew/opt/bison/bin:$PATH"
fi
bison --version
TAG=$(git describe --exact-match HEAD)
RELEASE_DIR=${RELEASE_DIR:-"tmp/releases/${TAG}-$(uname -s)/"}
./script/test.sh
rm -rf "${RELEASE_DIR}"
mkdir -p "${RELEASE_DIR}"
mkdir -p "${RELEASE_DIR}/lib/"
mkdir -p "${RELEASE_DIR}/include/"
target="${TARGET:-native}"
case "$target" in
native)
cargo build
cargo build --release
release_tarball_os="$(uname -s)"
release_tarball_arch="$(uname -m)"
cargo_target_dir_prefix=""
;;
aarch64-unknown-linux-gnu)
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu libc6-dev-arm64-cross
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \
TARGET_CC=aarch64-linux-gnu-gcc \
TARGET_AR=aarch64-linux-gnu-ar \
cargo build --target aarch64-unknown-linux-gnu
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \
TARGET_CC=aarch64-linux-gnu-gcc \
TARGET_AR=aarch64-linux-gnu-ar \
cargo build --release --target aarch64-unknown-linux-gnu
cargo_target_dir_prefix="aarch64-unknown-linux-gnu/"
# This is kind of a hack, since we're assuming we're on a Linux host.
release_tarball_os="Linux"
release_tarball_arch="aarch64"
;;
*)
echo "Unknown cross-compilation target $target"
exit 1
;;
esac
cargo_dir="target/${cargo_target_dir_prefix}"
cp "${cargo_dir}release/rubyfmt-main" "${RELEASE_DIR}/rubyfmt"
pwd
cp "${cargo_dir}debug/rubyfmt-main" "${RELEASE_DIR}/rubyfmt-debug"
pwd
# shellcheck disable=2012
RELEASE_LIB=$(find ${cargo_dir}release/ | grep -i 'librubyfmt-.*\.a$')
cp "$RELEASE_LIB" "${RELEASE_DIR}/lib/librubyfmt.a"
pwd
# shellcheck disable=2012
DEBUG_LIB=$(find ${cargo_dir}debug/ | grep -i 'librubyfmt-.*\.a$')
cp "$DEBUG_LIB" "${RELEASE_DIR}/lib/librubyfmt-debug.a"
pwd
cp librubyfmt/include/rubyfmt.h "${RELEASE_DIR}/include/rubyfmt.h"
pwd
cp RELEASE_README.md "${RELEASE_DIR}/RELEASE_README"
# check the binary
case "$target" in
native)
RES=$(echo 'a(1)' | "${RELEASE_DIR}/rubyfmt")
if [ "$RES" != "a(1)" ]; then
echo "formatting failed"
exit 1
fi
;;
*)
;;
esac
tar -cvz -f "rubyfmt-${TAG}-${release_tarball_os}-${release_tarball_arch}.tar.gz" "${RELEASE_DIR}"