diff options
author | sharkdp <davidpeter@web.de> | 2018-08-18 21:51:19 +0200 |
---|---|---|
committer | David Peter <sharkdp@users.noreply.github.com> | 2018-08-19 09:50:24 +0200 |
commit | 76be0d3933bc3f86a8537f2319e21a74d6b5a354 (patch) | |
tree | f1dba583d3d0bcb20a833773f7723f2d426a4a25 /ci | |
parent | e5b8c4471a609991f82183ed6648ffa2b20b130c (diff) |
Add arm as a compile target
Diffstat (limited to 'ci')
-rwxr-xr-x | ci/before_deploy.bash | 13 | ||||
-rwxr-xr-x | ci/before_install.bash | 29 | ||||
-rwxr-xr-x | ci/script.bash | 14 |
3 files changed, 53 insertions, 3 deletions
diff --git a/ci/before_deploy.bash b/ci/before_deploy.bash index 42dd3986..74ed6040 100755 --- a/ci/before_deploy.bash +++ b/ci/before_deploy.bash @@ -11,17 +11,24 @@ pack() { local tempdir local out_dir local package_name + local gcc_prefix tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp) out_dir=$(pwd) package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET" + if [[ $TARGET == "arm-unknown-linux-gnueabihf" ]]; then + gcc_prefix="arm-linux-gnueabihf-" + else + gcc_prefix="" + fi + # create a "staging" directory mkdir "$tempdir/$package_name" # copying the main binary cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/" - strip "$tempdir/$package_name/$PROJECT_NAME" + "${gcc_prefix}"strip "$tempdir/$package_name/$PROJECT_NAME" # readme and license cp README.md "$tempdir/$package_name" @@ -50,8 +57,8 @@ make_deb() { architecture=i386 ;; *) - echo "ERROR: unknown target" >&2 - return 1 + echo "make_deb: skipping target '${TARGET}'" >&2 + return 0 ;; esac version=${TRAVIS_TAG#v} diff --git a/ci/before_install.bash b/ci/before_install.bash new file mode 100755 index 00000000..709be7d5 --- /dev/null +++ b/ci/before_install.bash @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -ex + +if [ "$TRAVIS_OS_NAME" != linux ]; then + exit 0 +fi + +sudo apt-get update + +# needed for musl targets +sudo apt-get install -y musl-tools + +# needed to build deb packages +sudo apt-get install -y fakeroot + +# needed for i686 linux gnu target +if [[ $TARGET == i686-unknown-linux-gnu ]]; then + sudo apt-get install -y gcc-multilib +fi + +# needed for cross-compiling for arm +if [[ $TARGET == arm-unknown-linux-gnueabihf ]]; then + sudo apt-get install -y \ + gcc-4.8-arm-linux-gnueabihf \ + binutils-arm-linux-gnueabihf \ + libc6-armhf-cross \ + libc6-dev-armhf-cross +fi diff --git a/ci/script.bash b/ci/script.bash new file mode 100755 index 00000000..321dcb14 --- /dev/null +++ b/ci/script.bash @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -ex + +# Incorporate TARGET env var to the build and test process +cargo build --target "$TARGET" --verbose + +# We cannot run arm executables on linux +if [[ $TARGET != arm-unknown-linux-gnueabihf ]]; then + cargo test --target "$TARGET" --verbose + + # Run 'bat' on its own source code and the README + cargo run --target "$TARGET" -- src/main.rs README.md --paging=never +fi |