Skip to content

Commit 8517a42

Browse files
committed
Factor out travis-haskell-env; install deps when needed.
It's too much of a pain to have the entire travis build script be in "eval", so I've factored that part out, meaning we need 2 lines instead of 1 in each repo's "script" section (1 for executing the script, 1 for eval env). We now build libsodium and c-toxcore if needed by the package.
1 parent e7a0c01 commit 8517a42

File tree

4 files changed

+96
-65
lines changed

4 files changed

+96
-65
lines changed

Diff for: .travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ script:
2626
deploy:
2727
provider: releases
2828
token:
29-
secure: "ZvPVLh17t3hU/hRO3zB9CCCRGdA1OQuMRBGSEd48BqSJJS44nbnyDsnW7hnFzXS8v3hJAUYXh9QrWDJvMvRUR6Up7cIXbVPqgcjJjpHrK7Gw6zCExCoJuR3lI7cM9IBZ46x5TvupmK8Xujb8InLvE1GlHjRWlCPLL+05ZVCannYHkhnq/yx99s0nQdu5YVPiqmDstl7i58xlqd2Of8grbc4ezjrA7U3EILpnzQWZK01BtTe6w4P9ICuNS4MlzYyTVg1F1rTJOoxUJh8l/X59E5ro1g+X84visBVBz+JAufvNb1DJO61Ozm4X8U4D64CRETvpyqGGm2bgRYdHzgVyqIe8shLlxXaZejMxx6EqSKX8l6Z5833KZSZgcS+7J2xxvFemQIROe2ad9LFSwmrv0NF6rD9+0CAYd0h+zOB03jkZ54sjz0O1y5CRsvkQVjpQYXx2Ib9Ilp8HS5c11mTgcvgrTk/6cMwwo572rN4QK/lLB5turrXESx5jwHuU2UezfME7MzTm5oEQqxXUhs83p2xH371WlihnC3yqWnMDm03A6VAjPJ3dmadAl5LKdjZKua4RQuN+YPOJFjqigiCtTy6MQamboOg/HfukzpZXCNpBCU++F8w6T8/+UX0UV7ZX4Suhn4sna1cecGhpO1UdxB29hUGP8SNv81FuLR/yRXU="
29+
secure: "TOrUHMITxq2881owr+pe7VlTb4fKHBmnZYm3Vc0+ldK8eF2+D/cg74gA9spDCML95d1hwLJnq9sWnZrndE9Gmpts/uaJyjVQEzcOBE6O4hS1xJI6/2Uq0tJ+/4uu4YL18qbtWhFKjUBaXb4Cu8noAcDrrLUAeQ/VkHsg7E1aFkqIkapb69hPOacDiwZNeUEUX2kIJp3maGKkTSOA9soTTYA/O1Np84SF/xy4j7mGGr1ZmuWONAYnf0m7/dNwrBRy6FALjGhVc6UfBa7NOYf0KJImWlpNtzWffM5+c/Ym9JovlQgO7WBAJW/fQGK67EtPD/dckCFgv2hc57n618/JaWP3ooR/zVE7p1Ny4VXbMZLTM4X6L8kV5NexmFV0SSKn5BCWgcLehSkSgzi6GITeBi6Et/x/x7hO/4qRcKft5sH3hvHoBVzKZDut72Crcix5baDbEIbnLC3YRdaa/JBYMDE0xxG7y+3wVppw4+6g2vOVbacmG9w9w2vM4DAcUFhhJmjmoB5/IzneJvjChoMFo8mrP9JMZfFZBLfX5etJ4msJIPXfmxYWoMD2dcguxGp3VeWvPLFFY6hefZq9wPq2XHy2baGSN+vNUwe9vRqJQNGePNQBWAYTdBedmfAuz1mnDDuv1wvWOzio/nRDLvaBZCxk5wgj8VUjTl1SRUe4fGI="
3030
file: hs-tools-$TRAVIS_TAG.tar.gz
3131
skip_cleanup: true
3232
on:

Diff for: bin/travis-haskell

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
# Determine the Haskell package we're building.
6+
PACKAGE=$(echo "$TRAVIS_REPO_SLUG" | sed -e 's|^[^/]*/hs-||')
7+
8+
# Usage: bash <(curl -s https://raw.githubusercontent.com/TokTok/hs-tools/master/bin/travis-haskell) script
9+
travis-script() {
10+
# Install the latest CI support tools.
11+
VERSION=$(curl -L -s -H 'Accept: application/json' \
12+
"https://github.com/TokTok/hs-tools/releases/latest" \
13+
| egrep -o '"v[0-9][^"]+"' \
14+
| egrep -o '[^"]+')
15+
TOOLS_URL="https://github.com/Toktok/hs-tools/releases/download/$VERSION/hs-tools-$VERSION.tar.gz"
16+
curl -L -s "$TOOLS_URL" | tar xz -C "$HOME"
17+
18+
# Where to find libraries.
19+
export LD_LIBRARY_PATH=$HOME/.local/lib
20+
export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig
21+
22+
NEED_SODIUM=$(stack ls dependencies --test | grep saltine > /dev/null && echo 1)
23+
NEED_TOXCORE=$(grep 'extra-libraries:.*toxcore' *.cabal > /dev/null && echo 1)
24+
25+
if [ -n "$NEED_SODIUM" ]; then
26+
NEED_TOXCORE=1
27+
fi
28+
29+
# libsodium
30+
if [ "$NEED_SODIUM" == 1 -a ! -f $HOME/.local/lib/libsodium.so ]; then
31+
git clone --depth=1 --branch=stable https://github.com/jedisct1/libsodium
32+
cd libsodium
33+
./configure --prefix=$HOME/.local
34+
make install -j$(nproc)
35+
fi
36+
37+
# c-toxcore
38+
if [ "$NEED_SODIUM" == 1 -a ! -f $HOME/.local/lib/libtoxcore.so ]; then
39+
git clone --depth=1 https://github.com/TokTok/c-toxcore
40+
cd c-toxcore
41+
cmake -B_build -H. -DCMAKE_INSTALL_PREFIX:PATH=$HOME/.local \
42+
-DBUILD_TOXAV=OFF \
43+
-DBOOTSTRAP_DAEMON=OFF \
44+
-DAUTOTEST=OFF \
45+
-DDHT_BOOTSTRAP=OFF
46+
make -C_build install -j$(nproc)
47+
fi
48+
49+
# Run the build/test/deploy (optional) cycle.
50+
hlint .
51+
stylish-haskell-lhs -i .
52+
git diff --exit-code
53+
stack --no-terminal test --coverage \
54+
--extra-include-dirs=$HOME/.local/include \
55+
--extra-lib-dirs=$HOME/.local/lib
56+
shc "$PACKAGE" testsuite
57+
stack sdist --tar-dir .
58+
}
59+
60+
# Usage: eval $(travis-haskell env)
61+
travis-env() {
62+
# Check that the tag we're building and trying to release agrees with the
63+
# version number in Cabal.
64+
if [ -n "$TRAVIS_TAG" ]; then
65+
VERSION="${TRAVIS_TAG/v/}"
66+
if [ ! -f "$PACKAGE-$VERSION.tar.gz" ]; then
67+
echo 'echo "Package versions or name mismatch"'
68+
echo 'ls'
69+
echo 'exit 1'
70+
exit 1
71+
fi
72+
else
73+
VERSION=""
74+
fi
75+
76+
# Export variables here to make them available in the deploy step.
77+
cat <<EOF
78+
export PACKAGE="$PACKAGE"
79+
export VERSION="$VERSION"
80+
EOF
81+
}
82+
83+
# Usage: travis-haskell deploy
84+
travis-deploy() {
85+
# No "set -x" here, because we don't want to print the username/password on the
86+
# Travis console.
87+
set +x
88+
89+
mkdir -p "$HOME/.stack/upload"
90+
echo "{\"username\":\"$HACKAGE_USERNAME\",\"password\":\"$HACKAGE_PASSWORD\"}" \
91+
> "$HOME/.stack/upload/credentials.json"
92+
stack --no-terminal upload .
93+
}
94+
95+
travis-$1

Diff for: bin/travis-haskell-deploy

-10
This file was deleted.

Diff for: bin/travis-haskell-script

-54
This file was deleted.

0 commit comments

Comments
 (0)