Skip to content

Commit f0f6180

Browse files
authored
Merge pull request #34 from jonas/ubuntu-18.04
Update docker builds to use Ubuntu 18.04
2 parents 497c6b4 + e852803 commit f0f6180

File tree

5 files changed

+60
-40
lines changed

5 files changed

+60
-40
lines changed

.travis.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ compiler: gcc
44

55
script:
66
- docker-compose build $TEST_ENV
7-
- docker run --rm -ti scala-native-bindgen:$TEST_ENV /usr/include/ctype.h -name ctype --
8-
- docker-compose run --rm sbt-test
7+
- docker-compose run $TEST_ENV
98

109
matrix:
1110
include:
12-
- env: TEST_ENV=ubuntu-16.04-llvm-dev
13-
- env: TEST_ENV=ubuntu-16.04-llvm-6.0
14-
- env: TEST_ENV=ubuntu-16.04-llvm-5.0
11+
- env: TEST_ENV=ubuntu-18.04-llvm-dev
12+
- env: TEST_ENV=ubuntu-18.04-llvm-6.0
13+
- env: TEST_ENV=ubuntu-18.04-llvm-5.0

Dockerfile

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,25 @@
1-
ARG UBUNTU_VERSION=16.04
1+
ARG UBUNTU_VERSION=18.04
22
FROM ubuntu:$UBUNTU_VERSION
33

44
RUN set -x \
55
&& apt update \
6-
&& apt install -y apt-transport-https \
6+
&& apt install -y apt-transport-https gnupg2 ca-certificates \
77
&& echo "deb https://dl.bintray.com/sbt/debian /" > /etc/apt/sources.list.d/sbt.list \
88
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 \
99
&& apt update \
10-
&& apt install -y curl build-essential openjdk-8-jdk-headless sbt \
10+
&& apt install -y curl build-essential openjdk-8-jdk-headless sbt cmake make \
1111
&& rm -rf /var/lib/apt/lists/*
1212

13-
WORKDIR /cmake
14-
ARG CMAKE_ARCHIVE=cmake-3.11.2-Linux-x86_64
15-
RUN curl https://cmake.org/files/v3.11/$CMAKE_ARCHIVE.tar.gz | tar zxf - \
16-
&& for i in bin share; do \
17-
cp -r /cmake/$CMAKE_ARCHIVE/$i/* /usr/$i/; \
18-
done \
19-
&& rm -rf /cmake
20-
2113
ARG LLVM_VERSION=6.0
14+
ENV LLVM_VERSION=$LLVM_VERSION
2215
# LLVM dev versions do not have a "-x.y" version suffix.
2316
ARG LLVM_DEB_COMPONENT=-$LLVM_VERSION
2417
RUN set -x \
2518
&& curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
2619
&& . /etc/lsb-release \
2720
&& echo "deb https://apt.llvm.org/$DISTRIB_CODENAME/ llvm-toolchain-$DISTRIB_CODENAME$LLVM_DEB_COMPONENT main" > /etc/apt/sources.list.d/llvm.list \
2821
&& apt update \
29-
&& apt install -y clang-$LLVM_VERSION libclang-$LLVM_VERSION-dev make \
22+
&& apt install -y clang-$LLVM_VERSION libclang-$LLVM_VERSION-dev \
3023
&& rm -rf /var/lib/apt/lists/*
3124

32-
WORKDIR /src/target
33-
COPY . /src
34-
RUN cmake .. && make VERBOSE=1
35-
36-
ENTRYPOINT ["/src/target/scalaBindgen"]
25+
WORKDIR /src

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,24 @@ cd target
2525
cmake ..
2626
make
2727
./scalaBindgen /usr/include/ctype.h -name ctype --
28+
```
29+
30+
Alternatively, you can use [docker-compose] to build and test the program:
31+
32+
```sh
33+
# Build the docker image with LLVM version 6.0.
34+
docker-compose build ubuntu-18.04-llvm-6.0
35+
# Build the bindgen tool and run the tests.
36+
docker-compose run --rm ubuntu-18.04-llvm-6.0
37+
# Run the bindgen tool inside the container.
38+
docker-compose run --rm ubuntu-18.04-llvm-6.0 target/scalaBindgen -name union tests/samples/Union.h --
2839
```
2940

3041
[CMake]: https://cmake.org/
3142
[LLVM]: https://llvm.org/
3243
[Clang]: https://clang.llvm.org/
3344
[Scala Native setup guide]: http://www.scala-native.org/en/latest/user/setup.html
45+
[docker-compose]: https://docs.docker.com/compose/
3446

3547
## Testing
3648

docker-compose.yml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
11
version: '3'
22

33
services:
4-
ubuntu-16.04-llvm-dev:
5-
image: scala-native-bindgen:ubuntu-16.04-llvm-dev
4+
ubuntu-18.04-llvm-dev:
5+
image: scalabindgen/scala-native-bindgen:ubuntu-18.04-llvm-dev
66
build:
77
context: .
88
args:
9-
- UBUNTU_VERSION=16.04
9+
- UBUNTU_VERSION=18.04
1010
- LLVM_VERSION=7
1111
- LLVM_DEB_COMPONENT=
12+
command: scripts/test.sh
13+
volumes:
14+
- .:/src
15+
- ${HOME}/.ivy2:/root/.ivy2
16+
- ${HOME}/.sbt:/root/.sbt
1217

13-
ubuntu-16.04-llvm-6.0:
14-
image: scala-native-bindgen:ubuntu-16.04-llvm-6.0
18+
ubuntu-18.04-llvm-6.0:
19+
image: scalabindgen/scala-native-bindgen:ubuntu-18.04-llvm-6.0
1520
build:
1621
context: .
1722
args:
18-
- UBUNTU_VERSION=16.04
23+
- UBUNTU_VERSION=18.04
1924
- LLVM_VERSION=6.0
25+
command: scripts/test.sh
26+
volumes:
27+
- .:/src
28+
- ${HOME}/.ivy2:/root/.ivy2
29+
- ${HOME}/.sbt:/root/.sbt
2030

21-
ubuntu-16.04-llvm-5.0:
22-
image: scala-native-bindgen:ubuntu-16.04-llvm-5.0
31+
ubuntu-18.04-llvm-5.0:
32+
image: scalabindgen/scala-native-bindgen:ubuntu-18.04-llvm-5.0
2333
build:
2434
context: .
2535
args:
26-
- UBUNTU_VERSION=16.04
36+
- UBUNTU_VERSION=18.04
2737
- LLVM_VERSION=5.0
28-
29-
sbt-test:
30-
image: scala-native-bindgen:${TEST_ENV}
31-
entrypoint:
32-
- sh
33-
- -c
34-
- |
35-
cd /src/tests
36-
sbt compile test
38+
command: scripts/test.sh
3739
volumes:
40+
- .:/src
3841
- ${HOME}/.ivy2:/root/.ivy2
3942
- ${HOME}/.sbt:/root/.sbt

scripts/test.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
3+
# Bash strict mode
4+
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
5+
set -euo pipefail
6+
IFS=$'\n\t'
7+
8+
if [[ ! -e target/.llvm-version ]] || [[ "$(<target/.llvm-version)" != "${LLVM_VERSION:-}" ]]; then
9+
rm -rf target
10+
mkdir -p target
11+
echo "${LLVM_VERSION:-}" > target/.llvm-version
12+
(cd target && cmake ..)
13+
make -C target
14+
fi
15+
16+
cd tests
17+
sbt "${@:-test}"

0 commit comments

Comments
 (0)