/
Dockerfile
66 lines (66 loc) · 3.34 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
FROM debian:stretch-slim
LABEL maintainer "Dave Curylo <dave@curylo.org>, Michael Hendricks <michael@ndrix.org>"
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libarchive13 \
libgmp10 \
libossp-uuid16 \
libssl1.1 \
ca-certificates \
libdb5.3 \
libpcre3 \
libedit2 \
libgeos-c1v5 \
libspatialindex4v5 \
unixodbc \
odbc-postgresql \
tdsodbc \
libmariadbclient18 \
libsqlite3-0 \
libserd-0-0 \
libraptor2-0 && \
dpkgArch="$(dpkg --print-architecture)" && \
{ [ "$dpkgArch" = 'armhf' ] || [ "$dpkgArch" = 'armel' ] || apt-get install -y --no-install-recommends librocksdb4.5; } && \
rm -rf /var/lib/apt/lists/*
RUN set -eux; \
SWIPL_VER=7.7.14; \
SWIPL_CHECKSUM=91ac11bad692261b567e409f485cb19fa061a0c4175ec18e1c09ef88c05cf7ab; \
BUILD_DEPS='make gcc g++ wget git autoconf libarchive-dev libgmp-dev libossp-uuid-dev libpcre3-dev libreadline-dev libedit-dev libssl-dev zlib1g-dev libdb-dev unixodbc-dev libsqlite3-dev libserd-dev libraptor2-dev libgeos++-dev libspatialindex-dev'; \
dpkgArch="$(dpkg --print-architecture)"; \
[ "$dpkgArch" = 'armhf' ] || [ "$dpkgArch" = 'armel' ] || BUILD_DEPS="$BUILD_DEPS librocksdb-dev"; \
apt-get update; apt-get install -y --no-install-recommends $BUILD_DEPS; rm -rf /var/lib/apt/lists/*; \
mkdir /tmp/src; \
cd /tmp/src; \
wget http://www.swi-prolog.org/download/devel/src/swipl-$SWIPL_VER.tar.gz; \
echo "$SWIPL_CHECKSUM swipl-$SWIPL_VER.tar.gz" >> swipl-$SWIPL_VER.tar.gz-CHECKSUM; \
sha256sum -c swipl-$SWIPL_VER.tar.gz-CHECKSUM; \
tar -xzf swipl-$SWIPL_VER.tar.gz; \
cd swipl-$SWIPL_VER; \
sed -e '/PREFIX=$HOME/c\PREFIX=/usr' \
-e '/# export DISABLE_PKGS/c\export DISABLE_PKGS="jpl xpce"' \
-e 's/# *\(EXTRA.*--disable-libdirversion\)/\1/' \
build.templ > build; \
chmod u+x build; ./build; \
mkdir -p /usr/lib/swipl/pack; \
cd /usr/lib/swipl/pack; \
rm -rf /tmp/src; \
# usage: install_addin addin-name git-url git-commit
install_addin () { \
git clone "$2" "$1"; \
git -C "$1" checkout -q "$3"; \
if [ "$1" = 'space' ]; then (cd "$1"; ln -s configure.ac configure.in); fi; \
# the prosqlite plugin lib directory must be removed?
if [ "$1" = 'prosqlite' ]; then rm -rf "$1/lib"; fi; \
swipl -g "pack_rebuild($1)" -t halt; \
find "$1" -mindepth 1 -maxdepth 1 ! -name lib ! -name prolog ! -name pack.pl -exec rm -rf {} +; \
find "$1" -name .git -exec rm -rf {} +; \
}; \
dpkgArch="$(dpkg --print-architecture)"; \
install_addin space https://github.com/JanWielemaker/space.git cd6fefa63317a7a6effb61a1c5aee634ebe2ca05; \
install_addin prosqlite https://github.com/nicos-angelopoulos/prosqlite.git a1d915d07933ece27ea5fd68f07c83d10583e7a0; \
[ "$dpkgArch" = 'armhf' ] || [ "$dpkgArch" = 'armel' ] || install_addin rocksdb https://github.com/JanWielemaker/rocksdb.git 29eaee6fcdb6dce690ed187ef68b80ee94739412; \
[ "$dpkgArch" = 'armhf' ] || [ "$dpkgArch" = 'armel' ] || install_addin hdt https://github.com/JanWielemaker/hdt.git e0a0eff87fc3318434cb493690c570e1255ed30e; \
install_addin rserve_client https://github.com/JanWielemaker/rserve_client.git 72838bbfa3976a83d19fb38bdae04378e30f4b0d; \
apt-get purge -y --auto-remove $BUILD_DEPS
ENV LANG C.UTF-8
CMD ["swipl"]