Skip to content

Commit b050926

Browse files
author
Jason Mobarak
authored
Ubuntu 14.04 support (#1)
* Ubuntu 14.04 support * Fix logging to figure out what's failing * Re-encrypt AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / GITHUB_TOKEN * Manually build cmake since llvm requires a later version of cmake than what ubuntu 14.04 provides by default * Don't build/push of docker tag is already pushed Also trap logging so it doesn't overflow Travis. * Add a ticker * Don't eval DEBUG without default * Add some debugging * Add --no-tty to build with re-directed input/output * Echo every 10 seconds * Use a volume to make rebuilds easier * Build speed and travis fix-ups + Add support for --no-tty to more places and fix the non "--no-tty" support + Use a volume to (try to) speed up file access for the compilation + Fix more locations where the new docker_nametag file was not used * Shellcheck everything * Fix sysroot for c++
1 parent a15624e commit b050926

16 files changed

+313
-89
lines changed

.travis.sh

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,61 @@
11
#!/bin/bash
22

3-
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
4-
file_names=`curl "https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST/files" | jq '.[] | .filename' | tr '\n' ' ' | tr '"' ' '`
3+
set -euo pipefail
4+
IFS=$'\n\t'
5+
6+
if [[ -n "${TRAVIS_PULL_REQUEST:-}" ]] || [[ -n "${TRAVIS_COMMIT_RANGE:-}" ]]; then
7+
8+
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
9+
file_names=$(curl "https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST/files" \
10+
| jq '.[] | .filename' | tr '\n' ' ' | tr '"' ' ')
11+
else
12+
file_names=$( (git diff --name-only "$TRAVIS_COMMIT_RANGE" || echo "") \
13+
| tr '\n' ' ' )
14+
fi
15+
516
else
6-
file_names=`(git diff --name-only $TRAVIS_COMMIT_RANGE || echo "") | tr '\n' ' '`
17+
echo "WARNING: No travis information present, assuming this is a non-travis test run..." >&2
18+
NO_TRAVIS=y
719
fi
820

9-
if echo $file_names | grep -q "Dockerfile"; then
10-
./base.bash
21+
### Setup activity ticker
22+
23+
(
24+
while true; do
25+
echo '...'
26+
sleep 10
27+
done
28+
)&
29+
TICKER_PID=$!
30+
trap 'kill ${TICKER_PID:-} ${BUILD_PID:-}' EXIT
31+
32+
### base.bash
33+
34+
if [[ -z "${NO_TRAVIS:-}" ]]; then
35+
if echo "$file_names" | grep -q "Dockerfile"; then
36+
echo -n 'Building base image (if needed) ... '
37+
make base &>/tmp/base.bash.log
38+
echo 'DONE.'
39+
fi
1140
fi
1241

13-
./build.bash --arch=$ARCH
42+
### build.bash
43+
44+
echo 'Running build of llvm-obfuscator... '
45+
46+
make "ARCH=$ARCH" NO_TTY=y build &>/tmp/build.bash.log &
47+
BUILD_PID=$!
48+
49+
wait $BUILD_PID
50+
51+
echo 'DONE.'
52+
53+
### build_example.bash
1454

1555
if [[ $ARCH = arm ]]; then
16-
./build_example.bash
56+
57+
echo -n 'Building example project... '
58+
make NO_TTY=y build-example &>/tmp/build_example.bash.log
59+
60+
echo 'DONE.'
1761
fi

.travis.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,28 @@ after_success:
2121
- travis_wait tar -C output -cJf "llvm-obfuscator-$ARCH.txz" .
2222
- ./publish.sh llvm-obfuscator-$ARCH.txz
2323

24+
after_failure:
25+
- if [[ -e /tmp/base.bash.log ]]; then echo "*** base.bash.log ***"; fi
26+
- if [[ -e /tmp/base.bash.log ]]; then tail -n 500 /tmp/base.bash.log; fi
27+
- if [[ -e /tmp/build.bash.log ]]; then echo "*** build.bash.log ***"; fi
28+
- if [[ -e /tmp/build.bash.log ]]; then tail -n 500 /tmp/build.bash.log; fi
29+
- if [[ -e /tmp/build_example.bash.log ]]; then echo "*** build_example.bash.log ***"; fi
30+
- if [[ -e /tmp/build_example.bash.log ]]; then tail -n 500 /tmp/build_example.bash.log; fi
31+
2432
env:
2533
global:
2634
- DOCKER_USER=swiftnav
2735
# Secure keys below are encrypted with travis encrypt gem
2836
# Example encryption: travis encrypt AWS_SECRET_ACCESS_KEY=foo
2937
# See https://docs.travis-ci.com/user/encryption-keys/
3038
# AWS_ACCESS_KEY_ID
31-
- secure: "c6DtuP/y6lcJDhwjpLk/d3T9Oo1Fy9EW9mr0OsBQSq/5ctJsFtRxRsHVr2HtSD41Hd4de7xZoxGrk7kSDtrGxT7uRQwLREzaPRf0Vq/hjWcsfs/4vg6M5zhYrAYUSA28V7r7c2qmRiMLrHxnnzem56wwQG9Cn9kLSUg5Vx0kE4XayEdWKHlps9CP0d6ytgjqmUe0yBV9qJMGkMH/lp+LyK7HWo79iUrWBar+nTBxEeiEVFQqOOESB+LXBawx97L5+NWDL0IVvhkr78FU8XM/lV6gddulw5yOuruJ6bjznRaA6AbPx1dxf8o0ptP8QwgFsVQ/hlXc9cOwtRkobiktsVnDVtm2kuZwwUgRUa8i0A8PzG6w2SxR78UGBVxygDfrUQcQJ/zGIyqEehIi3drx9qEKMwjDoM2OS0b962Bld1Ex9glJdBbtO+TKFuYYU8/wEzzAF3IGMLC2CJ/L7r7IFcs6Y61KbicdUq1AY+Fx2RUpKJoZmQfknpi6IvZd1/1O5w5kqiAoKScqaAfZ5f84MBS6/CtLArFzWxWCliorBL9tW7NNGqtQ5kR+tBZ9/BLnvuNoMOnXlWJOhY9e4nCQeCAGG2AQ5LgcMGqrIcOiAEXHxg0fhuveygHkCd6Qjz5iJKIjrBokbwXZ2cms4ocLSxuJ2olNZXd0RgWKLrjrDhk="
39+
- secure: "Xwd+CuZwKCMF7zPnpE/05ZkUTfhPSft2SiWPXVEBDV2l6Ze6UQZUbjfA1/VIG/hnKTBxNP52apxH5bctHkSjF6oPgmxdOvUSwGx4kIaXYdz2gnGXfLUOJIUaXnZFNrWS66grqv0+oyv599KA8W/GoTEUARBupZN5gP0WDtCTcuBIfqUgBAjXvxMeLg2ixnZKnrCGvySsUEn6L8HVXO3XDdJKmkaBOC6G5JWdnrOL1ixyETDX8hbXCMaCOiibv1TNXOUDBrv62C7A8AnStSfSiDGzUpi/vx2HWsz2JlUBSc0bWz8PqkL7wUM/aUyGH5Er742kK9cUVLKfeiluw8krx8bLWM1W/8K7veQ3vDxyikB3SpqT/FCxDwgpQTtLUm7F4pFXRDmyhVueq3enX4oOyesYjLNwfTj0RPNOnF2sOQOyDju7VLWNoS56Tow74VaBGzxIcDnDu9deG+HDFiQtrw6tkn5B9IKS8N1ue2A1CF3QM325UjKCmBykSgomy8baaBEnNfyBFQU7L5pobvGsDoaB4dgm1YHdtYEBtFIGHEnKeAt5SzT7R6tuiABMT3SJ5Sr6n2zG7oi2bwC/CR0ch5/mZ460N76axJwLD+ORGwdCuxGII7VF4KetLFk9nkUnWRBFgU9n/m9vuN13xpAZbGblc1+WO7V1i0dnZ7uz4O4="
3240
# AWS_SECRET_ACCESS_KEY
33-
- secure: "I025brJmSPMRp2oAvEYRB/xzqhVNYFJRoQnV8CjdV8uHYXOquHZGFyzLOCT1lRRGJ81geqa5uhWJ6e36sKd9kgk4IXW+DH5aPpOzv2B8p8dJKITIjUP7OpnIRghCsnb8JMFWqZUZ3YhmYShQY/eVByNneAyGLIYh6gsQyfqvoodf0t6ExlgNBLvJPWYfOz+dwpx+zE2HRim1+RRfdOYVMsvTmu5rrHTHn1fWqCbQCjarpvphNFTlgKU2mhxOhcSo4HR8xsYE6GbLc+ysufRLAqTOTMMPg9THiOdJqc1ZtXEvaw0StUeTEbIJlQSAV/lydRvQb1npJHFffoWy1ZdZEIjuX5ZkQkDvh/8TR6AJtGd4QUH3hEKsA5LhUrxgSZRCUMW5JyqWyiu7wC2Q9n2kpKUaDQKL6YfzKpzRa7txCf6YTIoUbzI9797UJUO6fgGgOQJzYhOUsFV23YyOsLete1bRuQkRKl3tmlv+KuoUlxxVtaO2kMWh33CHeE9z986pf1jsiMoHzk1D+tnGtL4lotFK2gQv7Ws9XlsBog0fNuh80kZ4P/hVQAM9TShesR+ebAPLckr334V8zjEdkiyz251fATYL5V7DY2iAZMA187ynz1HgZEopob0Gkz0kcrVI3JAvM8sxmXAEBDmoqysm3gAOQoFDgmjgdQtJW/1RrUE="
41+
- secure: "tZ9Nmrz9hFdoc5Wdv4LBuBsfziISti2IRp8lCuU9T1uR0QZucwgL/oUdBV4MvHPj8+quD74s8h2I9XT3LhZUkxuPrZI2n++HGf+Er0gd805U+vyANszdYf12VRsTSc5WzD2SjtpbkkkWA7QxegvitBf6LwV3OjIcCqdydzbMjKTbogfOnN+HOY+3jkWsr2tyrV+JtCQbDi+C9Clc5L3X7ed38NjX0X64Pyjg8lpeI298E02wCdyF0a8osX0CrqMgK532g2C3Relrd4k4lKjf/X4mfdNbWJlPK+hv57VWrm7TuiT5fWk4SfGRMp6Y6xFuOnhWiRAYRxssS/dyd1sOXTh89YmZ/al4IrmtmRIigaZBVb7r+hRImdsT2dtRpVQ3OEVtuq1LNrx3n14Iy1JYohzGZ+8Pqolw0527uB5Y0/NzFMiDdvsM2O/MgbThgBJXfkMFhuakEYZ0VbbFQD8yLPmKY1tGxYYcMaphq6jZBLErDOAhKPeQrHkpyxuNHlujDnfFXUN4C0BwIJYCVEXyrDiW5ad0vKGJj9P6+bCt823WL4NMlUbH+YyPS8S84G2KbmaUslGYPoQOy+lfdMe/p4H9jIkzjGtvAau9cyqvWuXH/hv0zJ3NwI3iALTOdihs92KetRjuugo8rRJ+cZ3YogCffjEIwXsRs55JYSmk7HY="
3442
# GITHUB_TOKEN
35-
- secure: "XnCmNEVc2qh1nvKNhEn4/yaeQNWGlAGH/7lSaKjK3LoJDeP4w1rCPs9jghpPes+9rUNEh4e3ekmKGUGIqJwRuzQPWM+zHza4WK4oXs43rd2hyfhRb2y+niLpTNc+RuiGtLobyc3IX3HaUeN6Bf9x9R49/3jxY/+lgYKhQ29Pw25CumQvQQjq6SYRyhndnrXeLQ4LWzSYEPpwYSQ5F7VEDs7FN3tX0IvfJlN+SiP+f8DHdMqoyPOBnDdEodt/erMcO7gm9inhZ6hWvGSJwi5nLd+SI2qlHFgRAFRugPe0kk2FBiBHpGYBPE7cJzKStJrQGQz7dVGgHwcgJrp5T9//HZtp2LH5iGNue+mdDeMtX5zShY+UhvXEX5/nnREHFz/9IFvz57MHqrEjjyxufOVHBnJM/5NVroKxgwUyxojSQZYxNKqzs046nVPHn5QWaseoeC1vxZ6XfxeMjv1Y/9L7OJfFgf4EFukhS/oPv/szrKBiKeBWTq36yQa2Fi+K/UNsE/IzD3RxftOSqz2Nev6fjl/t+keSFtJH/GWskmaKD+vuMkFSKeg8SXE+yZspkkFzAImCiQI5vWJhzzQK/qjoLonvrtwXObqXQU3JY7LfRZzNgNGXebWegw0DLFkAvoV8FxLCHhC+50eK5bob8UM0z7I02cibacim7iKmaP0G4W8="
36-
- secure: "hhoYAlpElWzp9zzPmofdGYk5mNn/L0SdT+x7L040MFk+8VKKtRbJId4LlRSNfIA+zxgylL56/Jnth10aR7yq9fOhoN0oXvZeIAycz4TnXsPlCFmk8h3gBTYpYhcQ0Hy/tFe4XTOjjZuLIRZZQPuR93VEL/r3iHk6RYkj6f2jy6WpwKFAia7/3ng1zDR5Ixa9T7SwIKUu6l2PIqBml7irT2x0RJxoPhh6/8ol8XqLHdRohGLksAfC5GDBp3WqmvYaBp3TkBzDhfG4lIxghBcHK0a02EYiC0EdPkpaa9IBtn5KcjPgtPwdY6Gq/Yx77fmrufxUoY1IK+nfrIlyAptzSUWssJuKzdXSPUMAtPyN3jm2L0wMgLwpcHwhzCUelDlPdvUM6GM+Jt+MK6H4QE79uQTC7lO7wtpNqnWqkFmqlhN8+/K93sjXtgqEm/aIUGp4WXGbCK5pKcq4Fd0j6LK5ytHAxP3HqobfxfQafeyDlP8c9/heQw8DHRK1Vgm/LO7uCi1i/GIadCf2OCSnT517mTUjTeg+N8q7x5tvD+pWcaijOlYeHgypoa2KveBsOZnLqOpYMYAnbk7Zq8BBJAv1dds+XFZYYGsV8fsr/TXuv4pKg3vj4MXhxsTWpvoTA7JEu1fCSqIjNcluvumpGlHRXLU/SchB/WTXwCEiAadrqcs="
43+
- secure: "T1wlLXyhfGnMNMPtHv2FspxsWG09hVZgaucSJ6IxN+PZBbgjLb/TMSlqqLXfIzx6s0SuQIzX1xZE8lb/uOzfLtjmxBdc4dGYLW+qR4AwkghQl2DGMK+hzGAi9ZbeCGKWtX7cN4WxLN1tpcTyQBCC8LcnP0xVxd+7Znytdezmlr86ce2d8dmUo+kyLdN+vhEUnch9zhMpuZI+TxV2HQqCS/6e31myP+3Xzw3B6o6uF8dYZ0QlWlNU4KjUNNAD7cLqkxNd38E7wFrQJdyrk03/hZanatl2mcL7Te5Uxo5sWN5WteTNwq8dCKXiEXpkEqP1++4wWTQDeQWoPjHlhHzO4MxGAdEUnlFWafsV78OJvr/gwV0UxDFmfadPwGG/xPPJMyNJjXwDyeztswknbVaNZdbRXp3m7Iri+bWCvOZE9N7rGde/5q0JOz9rwJXRDMPnp7+lyupHQQIdswNpkFraHz3eZ/h4n+Dkr3RtkW0M6ZpPR+/r18uD7jwm/Ye73E9wzq1b6sL0knX/OEwBv3FVvaBaA4SWzb1glDlru8BKnZfVIZ/UxYas6FqGN6H9ROyCHtva86ffv7HvvnB/gUqcOfY5si7WvtPVApIc9kfILcSWEchRWTHQIeUOdEUBfoq8/Km0BL6gguOO9Ge9zzOrdo0NThh8x7NoE0DhHdQctJY="
44+
# DOCKER_PASS
45+
- secure: "qEmUT+mBsHjLkrBYMZWiLl8+ZXq9UAv+DyMDww+N74hPtGiZxMqLuVIFq94qR/WhiI9zd7k+tjhy6TcgD8rpKoQnQSGXcotFGq6typ3UWEV0ekt40IMV5nBqopqGGIBVIHNfXjq0OTeYTF2eGncpNnznJHAQi8Dvj7vD99y5GA5RoZGSdsiqTyxBGMvZ0cE0QApkb1MH3lBVRzBuh6dotpa1RBlGR+i2xbcH3nAqy5RB38wZgMedAPnlUfg+uB+IQiF8+hbuSmHzADiabNLBkkB/UCOz59k/JkaeN+2gnyP6/so+SpOe1BKfpxKBcN74O4n056ZLDBRjTod2YSc49dKqxhZhQijwNJfFi3Tt5iNrFYdU3KPeqqfNLoQKmbBTKjGXbxHHXm3lnUuCTZH0Yd9QGKSAwn5kxDRy6DuyNMUGwFtu8YxzirwTJiQR6ayodMCMWjZCXuxUc0I5I2Y64CsofRWkuMbznjE4wJwptVPzTwIxkZnMt+aWVoQTXBtZVpiHf4CTJb65dyLDXeMOwhYnKzwLUrvvHHpOm7GygvAbbeDAzHumTDvt7s5nl2VwHNLmTK3TizvvpQCucIjG8M8dEd7iu4VRZh/rxGxV9MJ2qUNETa6hnfX+Z2xaLTcgYAG5z7p60sThPfFfYLopdJL1dO5eA/EncPzuQuh087w="
3746
matrix:
3847
- ARCH=x86
3948
- ARCH=arm

Dockerfile

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,22 @@
88
# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
99
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
1010

11-
FROM ubuntu:16.04
11+
FROM ubuntu:14.04
1212

1313
RUN mkdir /work
1414
WORKDIR /work
1515

1616
RUN apt-get update \
17-
&& apt-get install -y build-essential \
17+
&& apt-get install -y wget \
18+
&& wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
19+
&& echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main" \
20+
>/etc/apt/sources.list.d/llvm40.list \
21+
&& apt-get update \
22+
&& apt-get install -y libcurl4-openssl-dev \
23+
checkinstall \
24+
build-essential \
1825
bison \
1926
flex \
20-
cmake \
2127
ninja-build \
2228
llvm-4.0 \
2329
llvm-4.0-dev \
@@ -32,9 +38,18 @@ RUN apt-get update \
3238
libstdc++6-armhf-cross \
3339
binutils-dev \
3440
binutils-multiarch-dev \
35-
python
36-
37-
RUN git clone --depth=1 --single-branch -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git obfuscator-llvm
41+
python \
42+
&& mkdir -p cmake-build && cd cmake-build \
43+
&& wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz \
44+
&& tar -xvzf cmake-3.10.1.tar.gz \
45+
&& cd cmake-3.10.1 \
46+
&& ./configure \
47+
&& make -j4 \
48+
&& checkinstall -yD make install \
49+
&& cd .. && rm -rf cmake-* \
50+
&& apt-get -y --force-yes remove checkinstall \
51+
&& apt-get clean \
52+
&& rm -rf /var/lib/apt/lists/*
3853

3954
COPY cpp_wrapper.py /bin
4055
RUN chmod +x /bin/cpp_wrapper.py

Makefile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
SCRIPTS := .travis.sh \
2+
base.bash \
3+
build.bash \
4+
build_example.bash \
5+
publish.sh \
6+
run_build_shell.bash \
7+
stage_sysroot.bash \
8+
9+
check:
10+
docker run -v $(CURDIR):/mnt koalaman/shellcheck -x $(SCRIPTS)
11+
12+
check-%:
13+
docker run -v $(CURDIR):/mnt koalaman/shellcheck -x $*.bash
14+
15+
ifeq ($(NO_TTY),y)
16+
NO_TTY_ARG := --no-tty
17+
else
18+
NO_TTY_ARG :=
19+
endif
20+
21+
base: check-base
22+
$(CURDIR)/base.bash $(NO_TTY_ARG)
23+
24+
build: check-build
25+
$(CURDIR)/build.bash $(NO_TTY_ARG) --arch=$(ARCH)
26+
27+
stage: check-stage_sysroot
28+
$(CURDIR)/stage_sysroot.bash $(NO_TTY_ARG)
29+
30+
build-example: check-build_example
31+
$(CURDIR)/build_example.bash $(NO_TTY_ARG)
32+
33+
run: check-run_build_shell
34+
$(CURDIR)/run_build_shell.bash $(NO_TTY_ARG)

base.bash

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,50 @@
1010
# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
1111
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
1212

13-
DOCKER_NAMETAG=swiftnav/arm-llvm-obf:4.0
13+
set -euo pipefail
14+
IFS=$'\n\t'
1415

15-
docker build -f Dockerfile -t $DOCKER_NAMETAG .
16+
[[ -z "${DEBUG:-}" ]] || set -x
1617

17-
docker login --username="$DOCKER_USER" --password="$DOCKER_PASS"
18-
docker push $DOCKER_NAMETAG
18+
[[ -n "${DOCKER_USER:-}" ]] || {
19+
echo "DOCKER_USER: must not be empty"
20+
exit 1
21+
}
22+
23+
[[ -n "${DOCKER_PASS:-}" ]] || {
24+
echo "DOCKER_PASS: must not be empty"
25+
exit 1
26+
}
27+
28+
DOCKER_NAMETAG=$(cat docker_nametag)
29+
30+
query_build_pushed() {
31+
32+
local repo_tag=$1; shift
33+
34+
repo_tag=${repo_tag##*:}
35+
36+
TOKEN=$(curl -s -H "Content-Type: application/json" \
37+
-X POST -d '{"username": "'"${DOCKER_USER}"'", "password": "'"${DOCKER_PASS}"'"}' \
38+
https://hub.docker.com/v2/users/login/ | jq -r .token)
39+
40+
ORG=swiftnav
41+
REPO=arm-llvm-obf
42+
43+
curl -s -H "Authorization: JWT ${TOKEN}" \
44+
https://hub.docker.com/v2/repositories/${ORG}/${REPO}/tags/?page_size=100 \
45+
| jq '.results | .[] | .name' \
46+
| grep "$repo_tag"
47+
}
48+
49+
if [[ -n "$(query_build_pushed "$DOCKER_NAMETAG")" ]]; then
50+
echo "Build already pushed, exiting..."
51+
exit 0
52+
fi
53+
54+
docker build \
55+
--force-rm --no-cache \
56+
-f Dockerfile -t "$DOCKER_NAMETAG" .
57+
58+
echo "$DOCKER_PASS" | docker login --username="$DOCKER_USER" --password-stdin
59+
docker push "$DOCKER_NAMETAG"

bin/arm-linux-gnueabihf-clang

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ else
3131
D=$( (cd `dirname $0`/../.. >/dev/null; pwd -P) )
3232
R=$D/sysroot
3333

34-
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu"
34+
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu:${R}/usr/x86_64-linux-gnu/arm-linux-gnueabihf"
3535

3636
TOOLCHAIN_OPTS="\
3737
\

bin/arm-linux-gnueabihf-clang++

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ else
3434
D=$( (cd `dirname $0`/../.. >/dev/null; pwd -P) )
3535
R=$D/sysroot
3636

37-
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu"
37+
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu:${R}/usr/x86_64-linux-gnu/arm-linux-gnueabihf"
3838

3939
TOOLCHAIN_OPTS="\
4040
\
@@ -44,8 +44,8 @@ else
4444
-B ${R}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8 \
4545
\
4646
-I ${R}/usr/arm-linux-gnueabihf/include \
47-
-I ${R}/usr/arm-linux-gnueabihf/include/c++/4.8.5 \
48-
-I ${R}/usr/arm-linux-gnueabihf/include/c++/4.8.5/arm-linux-gnueabihf \
47+
-I ${R}/usr/arm-linux-gnueabihf/include/c++/4.8.4 \
48+
-I ${R}/usr/arm-linux-gnueabihf/include/c++/4.8.4/arm-linux-gnueabihf \
4949
\
5050
-L ${R}/usr/arm-linux-gnueabi/libhf \
5151
-L ${R}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8 \

bin/arm-linux-gnueabihf-objcopy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
D=$( (cd `dirname $0`/../.. >/dev/null; pwd -P) )
1414
R=$D/sysroot
1515

16-
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu"
16+
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu:${R}/usr/x86_64-linux-gnu/arm-linux-gnueabihf"
1717

1818
exec ${R}/usr/bin/arm-linux-gnueabihf-objcopy $@
1919

bin/arm-linux-gnueabihf-strip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
D=$( (cd `dirname $0`/../.. >/dev/null; pwd -P) )
1414
R=$D/sysroot
1515

16-
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu"
16+
export LD_LIBRARY_PATH="${R}/usr/lib/x86_64-linux-gnu:${R}/usr/x86_64-linux-gnu/arm-linux-gnueabihf"
1717

1818
exec ${R}/usr/bin/arm-linux-gnueabihf-strip $@

build.bash

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,45 @@
1010
# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
1111
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
1212

13-
DOCKER_NAMETAG=swiftnav/arm-llvm-obf:4.0
13+
set -euo pipefail
14+
IFS=$'\n\t'
1415

15-
set -x
16-
set -e
16+
DOCKER_NAMETAG=$(cat docker_nametag)
1717

18-
mkdir -p build
1918
mkdir -p output/opt
2019

21-
MAKE_PACKAGES=
2220
VERBOSE=
21+
NO_TTY=
2322

2423
while [[ $# -gt 0 ]]; do
2524
case $1 in
26-
--verbose)
27-
VERBOSE="-v"
28-
shift
29-
;;
30-
--arch=x86)
31-
ARCH="X86"
32-
shift
33-
;;
34-
--arch=arm)
35-
ARCH="ARM"
36-
shift
37-
;;
25+
--verbose)
26+
VERBOSE="-v"
27+
shift
28+
;;
29+
--arch=x86)
30+
ARCH="X86"
31+
shift
32+
;;
33+
--arch=arm)
34+
ARCH="ARM"
35+
shift
36+
;;
37+
--no-tty)
38+
NO_TTY=--no-tty
39+
shift
40+
;;
41+
*) shift ;;
3842
esac
3943
done
4044

45+
if [[ -z "${ARCH:-}" ]]; then
46+
echo "Error: must specify --arch=<arm|x86>"
47+
exit 1
48+
fi
49+
50+
set -x
51+
4152
CMAKE_COMMAND="\
4253
cmake -G Ninja \
4354
/work/obfuscator-llvm \
@@ -50,18 +61,33 @@ CMAKE_COMMAND="\
5061
-DLLVM_BINUTILS_INCDIR=/usr/include \
5162
-DLLVM_INCLUDE_TESTS=OFF"
5263

53-
PATCH_COMMAND="git apply /patches/*.patch"
64+
PATCH_COMMAND="{ git apply /patches/*.patch || : ; }"
65+
66+
if [[ -z "$NO_TTY" ]]; then
67+
INTERACTIVE=("-i" "-t")
68+
else
69+
INTERACTIVE=()
70+
fi
5471

55-
docker run -i -t --rm \
56-
-v $PWD/build:/work/build \
57-
-v $PWD/output/opt:/opt \
58-
-v $PWD/patches:/patches \
72+
# shellcheck disable=SC2068
73+
docker run ${INTERACTIVE[@]:-} --rm \
74+
-v "$PWD/output/opt:/opt" \
75+
-v "$PWD/patches:/patches" \
76+
-v obfuscator-llvm:/work/obfuscator-llvm \
77+
-v obfuscator-llvm-build:/work/build \
5978
"$DOCKER_NAMETAG" \
60-
/bin/bash -c "cd /work/obfuscator-llvm \
79+
/bin/bash -c "if [ ! -d /work/obfuscator-llvm/.git ]; then \
80+
git clone --depth=1 --single-branch -b llvm-4.0 \
81+
https://github.com/obfuscator-llvm/obfuscator.git \
82+
obfuscator-llvm;
83+
else \
84+
(cd /work/obfuscator-llvm && git pull); \
85+
fi \
86+
&& cd /work/obfuscator-llvm \
6187
&& $PATCH_COMMAND \
6288
&& cd /work/build \
6389
&& $CMAKE_COMMAND \
6490
&& ninja $VERBOSE \
6591
&& ninja $VERBOSE install"
6692

67-
./stage_sysroot.bash
93+
./stage_sysroot.bash $NO_TTY

0 commit comments

Comments
 (0)