summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorsharkdp <davidpeter@web.de>2018-08-18 21:51:19 +0200
committerDavid Peter <sharkdp@users.noreply.github.com>2018-08-19 09:50:24 +0200
commit76be0d3933bc3f86a8537f2319e21a74d6b5a354 (patch)
treef1dba583d3d0bcb20a833773f7723f2d426a4a25 /ci
parente5b8c4471a609991f82183ed6648ffa2b20b130c (diff)
Add arm as a compile target
Diffstat (limited to 'ci')
-rwxr-xr-xci/before_deploy.bash13
-rwxr-xr-xci/before_install.bash29
-rwxr-xr-xci/script.bash14
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