summaryrefslogtreecommitdiff
path: root/sandcastle/images/base/Dockerfile
blob: 6d687f61b31cf072ec88abe2a838ac49b69c498b (plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
FROM debian:bookworm
RUN apt-get update

RUN apt-get install -y \
  autoconf \
  autopoint \
  libtool \
  texinfo \
  libgcrypt-dev \
  libidn11-dev \
  zlib1g-dev \
  libunistring-dev \
  libjansson-dev \
  git \
  recutils \
  libsqlite3-dev \
  libpq-dev \
  postgresql \
  libcurl4-openssl-dev \
  libsodium-dev \
  libqrencode-dev \
  zip \
  jq \
  npm \
  openjdk-17-jre \
  nginx \
  procps \
  curl \
  python3-jinja2 \
  wget \
  curl \
  socat \
  apache2-utils \
  python3-pip \
  python3-sphinx \
  python3-sphinx-rtd-theme \
  python3-venv \
  sqlite3 \
  vim \
  emacs \
  nodejs

# FIXME: Try to use debian packages where possible and otherwise really use
# a venv or per-user installation of the package.
RUN pip3 install --break-system-packages requests click poetry uwsgi htmlark

COPY buildconfig/tags.sh tags.sh

RUN . /tags.sh && git clone git://git.gnunet.org/libmicrohttpd \
  --branch ${TAG_LIBMHD:-master}
RUN . /tags.sh && git clone git://git.gnunet.org/gnunet \
  --branch ${TAG_GNUNET:-master}
RUN . /tags.sh && git clone git://git.taler.net/exchange \
  --branch ${TAG_EXCHANGE:-master}
RUN . /tags.sh && git clone git://git.taler.net/merchant \
  --branch ${TAG_MERCHANT:-master}
RUN . /tags.sh && git clone git://git.taler.net/libeufin \
  --branch ${TAG_LIBEUFIN:-master}
RUN . /tags.sh && git clone git://git.taler.net/taler-merchant-demos \
  --branch ${TAG_MERCHANT_DEMOS:-master}
RUN . /tags.sh && git clone git://git.taler.net/wallet-core \
  --branch ${TAG_WALLET:-master}
RUN . /tags.sh && git clone git://git.taler.net/sync \
  --branch ${TAG_SYNC:-master}

WORKDIR /libmicrohttpd
RUN ./bootstrap
RUN ./configure --disable-doc
RUN make install

WORKDIR /gnunet
RUN ./bootstrap
RUN ./configure --enable-logging=verbose --disable-documentation
RUN make install

WORKDIR /exchange
RUN if . /tags.sh && test "${TAG_EXCHANGE:-}" = "v0.9.0"; then \
  # Init Gana and checkout the v0.9.0-compatible commit.
  git submodule init contrib/gana; \
  git submodule update --remote contrib/gana; \
  # Note: without init first, the following checkout hits "reference is not a tree".
  git -C contrib/gana checkout 6b9824cb4d4561f1167c7f518998a226a82222d6; \
  # Remove master branch tracking the remote
  git -C contrib/gana branch -d master; \
  git -C contrib/gana remote set-url origin .; \
  git -C contrib/gana branch master; \
fi
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" --enable-logging=verbose --disable-doc
RUN make install

WORKDIR /merchant
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" \
  --enable-logging=verbose \
  --disable-doc
RUN make install

WORKDIR /libeufin
RUN ./bootstrap
RUN ./configure
RUN make install

WORKDIR /taler-merchant-demos
RUN ./bootstrap
RUN ./configure
RUN make install

RUN npm install -g pnpm@^7.0.0

WORKDIR /wallet-core
RUN ./bootstrap

WORKDIR ./packages/demobank-ui
RUN ./configure
RUN make install

# Install CLI to provide integration tests.
WORKDIR ../taler-wallet-cli
RUN ./configure
RUN make install

WORKDIR /sync
RUN ./bootstrap
RUN ./configure CFLAGS="-ggdb -O0" \
  --enable-logging=verbose \
  --disable-doc
RUN make install

WORKDIR /