Skip to content

Commit 1add04c

Browse files
authored
Build refactor (Start9Labs#116)
* Add option for Ordinals Spam Filter * update alpine base image to 3.16 * old GPG keys cleanup * update key server * use ssl when installing apk's for finall image * remove apk cache after install * Security update for build dependencies * Automate submodule update handling with make * Build refactor * make arm and x86 build targets update
1 parent 34a82c6 commit 1add04c

File tree

9 files changed

+532
-183
lines changed

9 files changed

+532
-183
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
manager/target/
22
**/*.rs.bk
33
bitcoind.s9pk
4-
image.tar
4+
.DS_Store
55
.vscode/
66
scripts/embassy.js
77
docker-images/

Dockerfile

Lines changed: 25 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
FROM lncm/berkeleydb as berkeleydb
55

66
# Build stage for Bitcoin Core
7-
FROM alpine:3.12 as bitcoin-core
7+
FROM alpine:3.16 as bitcoin-core
88

99
COPY --from=berkeleydb /opt /opt
1010

@@ -24,71 +24,22 @@ RUN apk --no-cache add sqlite-dev
2424
RUN apk --no-cache add zeromq-dev
2525
RUN set -ex \
2626
&& for key in \
27-
9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C \
28-
617C90010B3BD370B0AC7D424BB42E31C79111B8 \
29-
E944AE667CF960B1004BC32FCA662BE18B877A60 \
30-
152812300785C96444D3334D17565732E08E5E41 \
31-
590B7292695AFFA5B672CBB2E13FC145CD3F4304 \
32-
0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 \
33-
912FD3228387123DC97E0E57D5566241A0295FA9 \
34-
04017A2A6D9A0CCDC81D8EC296AB007F1A7ED999 \
35-
C519EBCF3B926298946783EFF6430754120EC2F4 \
36-
18AE2F798E0D239755DA4FD24B79F986CBDF8736 \
37-
101598DC823C1B5F9A6624ABA5E0907A0380E6C3 \
38-
F20F56EF6A067F70E8A5C99FFF95FAA971697405 \
39-
C060A6635913D98A3587D7DB1C2491FFEB0EF770 \
40-
BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 \
41-
6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 \
42-
948444FCE03B05BA5AB0591EC37B1C1D44C786EE \
43-
1C6621605EC50319C463D56C7F81D87985D61612 \
44-
9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 \
45-
D35176BE9264832E4ACA8986BF0792FBE95DC863 \
46-
6F993B250557E7B016ADE5713BDCDA2D87A881D9 \
47-
01CDF4627A3B88AAE4A571C87588242FBE38D3A8 \
48-
D1DBF2C4B96F2DEBF4C16654410108112E7EA81F \
49-
2688F5A9A4BE0F295E921E8A25F27A38A47AD566 \
50-
D3F22A3A4C366C2DCB66D3722DA9C5A7FA81EA35 \
51-
7480909378D544EA6B6DCEB7535B12980BB8A4D3 \
52-
D3CC177286005BB8FF673294C5242A1AB3936517 \
53-
82921A4B88FD454B7EB8CE3C796C4109063D4EAF \
54-
32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC \
55-
4B4E840451149DD7FB0D633477DFAB5C3108B9A8 \
56-
C42AFF7C61B3E44A1454CD3557AF762DB3353322 \
57-
70A1D47DD44F59DF8B22244333E472FE870C7E5D \
58-
30DE693AE0DE9E37B3E7EB6BBFF0F67810C1EED1 \
59-
E463A93F5F3117EEDE6C7316BD02942421F4889F \
60-
B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B \
61-
07DF3E57A548CCFB7530709189BBB8663E2E65CE \
62-
CA03882CB1FC067B5D3ACFE4D300116E1C875A3D \
63-
E777299FC265DD04793070EB944D35F9AC3DB76A \
64-
AD5764F4ADCE1B99BDFD179E12335A271D4D62EC \
65-
9692B91BBF0E8D34DFD33B1882C5C009628ECF0C \
66-
C57E4B42223FDE851D4F69DD28DF2724F241D8EE \
67-
F4FC70F07310028424EFC20A8E4256593F177720 \
68-
D62A803E27E7F43486035ADBBCD04D8E9CCCAC2A \
69-
37EC7D7B0A217CDB4B4E007E7FAB114267E4FA04 \
70-
D762373D24904A3E42F33B08B9A408E71DAAC974 \
71-
133EAC179436F14A5CF1B794860FEB804E669320 \
72-
6A8F9C266528E25AEB1D7731C2371D91CB716EA7 \
73-
A8FC55F3B04BA3146F3492E79303B33A305224CB \
74-
ED9BDF7AD6A55E232E84524257FF9BDBCC301009 \
75-
867345026B6763E8B07EE73AB6737117397F5C4F \
76-
9EDAFF80E080659604F4A76B2EBB056FD847F8A7 \
77-
6DEEF79B050C4072509B743F8C275BC595448867 \
78-
AEC1884398647C47413C1C3FB1179EB7347DC10D \
79-
74E2DEF5D77260B98BC19438099BAD163C70FBFA \
80-
79D00BAC68B56D422F945A8F8E3A8F3247DBCBBF \
81-
71A3B16735405025D447E8F274810B012346C9A6 \
82-
287AE4CA1187C68C08B49CB2D11BD4F33F1DB499 \
83-
F9A8737BF4FF5C89C903DF31DD78544CF91B1514 \
84-
4DAF18FE948E7A965B30F9457E296D555E7F63A7 \
85-
28E72909F1717FE9607754F8A7BEB2621678D37D \
86-
F19F5FF2B0589EC341220045BA03F4DBE0C63FB4 \
27+
152812300785C96444D3334D17565732E08E5E41 \
28+
0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 \
29+
590B7292695AFFA5B672CBB2E13FC145CD3F4304 \
30+
CFB16E21C950F67FA95E558F2EEB9F5CC09526C1 \
31+
F4FC70F07310028424EFC20A8E4256593F177720 \
32+
D1DBF2C4B96F2DEBF4C16654410108112E7EA81F \
33+
287AE4CA1187C68C08B49CB2D11BD4F33F1DB499 \
34+
9DEAE0DC7063249FB05474681E4AED62986CD25D \
35+
3EB0DEE6004A13BE5A0CC758BF2978B068054311 \
36+
ED9BDF7AD6A55E232E84524257FF9BDBCC301009 \
37+
28E72909F1717FE9607754F8A7BEB2621678D37D \
38+
79D00BAC68B56D422F945A8F8E3A8F3247DBCBBF \
8739
; do \
88-
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" || \
89-
gpg --batch --keyserver hkps://pgp.mit.edu --recv-keys "$key" || \
40+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" || \
9041
gpg --batch --keyserver keyserver.pgp.com --recv-keys "$key" || \
91-
gpg --batch --keyserver hkps://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
42+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" || \
9243
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
9344
gpg --batch --keyserver keys.openpgp.org --recv-keys "$key" ; \
9445
done
@@ -100,7 +51,7 @@ ENV BITCOIN_PREFIX=/opt/bitcoin-${BITCOIN_VERSION}
10051
RUN wget https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/SHA256SUMS
10152
RUN wget https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/SHA256SUMS.asc
10253
RUN wget https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}.tar.gz
103-
RUN gpg --verify SHA256SUMS.asc
54+
RUN gpg --verify SHA256SUMS.asc SHA256SUMS
10455
RUN grep " bitcoin-${BITCOIN_VERSION}.tar.gz\$" SHA256SUMS | sha256sum -c -
10556
RUN tar -xzf *.tar.gz
10657

@@ -127,29 +78,28 @@ RUN strip ${BITCOIN_PREFIX}/lib/libbitcoinconsensus.a
12778
RUN strip ${BITCOIN_PREFIX}/lib/libbitcoinconsensus.so.0.0.0
12879

12980
# Build stage for compiled artifacts
130-
FROM alpine:3.13
81+
FROM alpine:3.16
13182

13283
LABEL maintainer.0="João Fonseca (@joaopaulofonseca)" \
13384
maintainer.1="Pedro Branco (@pedrobranco)" \
13485
maintainer.2="Rui Marinho (@ruimarinho)" \
13586
maintainer.3="Aiden McClelland (@dr-bonez)"
13687

137-
RUN apk update
88+
RUN sed -i 's/http\:\/\/dl-cdn.alpinelinux.org/https\:\/\/alpine.global.ssl.fastly.net/g' /etc/apk/repositories
13889
RUN apk --no-cache add \
13990
bash \
14091
curl \
141-
boost-filesystem=1.72.0-r6 \
142-
boost-system=1.72.0-r6 \
143-
boost-thread=1.72.0-r6 \
92+
boost-filesystem \
93+
boost-system \
94+
boost-thread \
14495
libevent \
14596
libzmq \
146-
sqlite-libs \
147-
su-exec \
148-
tini
97+
sqlite-dev \
98+
tini\
99+
yq
100+
RUN rm -rf /var/cache/apk/*
149101

150-
ARG PLATFORM
151102
ARG ARCH
152-
RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${PLATFORM} && chmod +x /usr/local/bin/yq
153103

154104
ENV BITCOIN_DATA=/root/.bitcoin
155105
ARG BITCOIN_VERSION

Makefile

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,72 @@ VERSION_CORE := "24.0.1"
55

66
.DELETE_ON_ERROR:
77

8-
all: verify
8+
all: submodule-update verify
99

1010
clean:
1111
rm -f $(PKG_ID).s9pk
1212
rm -f docker-images/*.tar
1313
rm -f scripts/*.js
1414

1515
verify: $(PKG_ID).s9pk
16-
embassy-sdk verify s9pk $(PKG_ID).s9pk
16+
@embassy-sdk verify s9pk $(PKG_ID).s9pk
17+
@echo " Done!"
18+
@echo " Filesize: $(shell du -h $(PKG_ID).s9pk) is ready"
1719

18-
# for rebuilding just the arm image. will include docker-images/x86_64.tar into the s9pk if it exists
19-
arm: docker-images/aarch64.tar scripts/embassy.js
20-
embassy-sdk pack
20+
# for rebuilding just the arm image.
21+
arm:
22+
@rm -f docker-images/x86_64.tar
23+
ARCH=aarch64 $(MAKE)
2124

22-
# for rebuilding just the x86 image. will include docker-images/aarch64.tar into the s9pk if it exists
23-
x86: docker-images/x86_64.tar scripts/embassy.js
24-
embassy-sdk pack
25+
# for rebuilding just the x86 image.
26+
x86:
27+
@rm -f docker-images/aarch64.tar
28+
ARCH=x86_64 $(MAKE)
2529

2630
$(PKG_ID).s9pk: manifest.yaml assets/compat/* docker-images/aarch64.tar docker-images/x86_64.tar instructions.md scripts/embassy.js
27-
embassy-sdk pack
31+
ifeq ($(ARCH),aarch64)
32+
@echo "embassy-sdk: Preparing aarch64 package ..."
33+
else ifeq ($(ARCH),x86_64)
34+
@echo "embassy-sdk: Preparing x86_64 package ..."
35+
else
36+
@echo "embassy-sdk: Preparing Universal Package ..."
37+
endif
38+
@embassy-sdk pack
2839

2940
install: $(PKG_ID).s9pk
41+
ifeq (,$(wildcard ~/.embassy/config.yaml))
42+
@echo; echo "You must define \"host: http://embassy-server-name.local\" in ~/.embassy/config.yaml config file first"; echo
43+
else
3044
embassy-cli package install $(PKG_ID).s9pk
45+
endif
3146

3247
docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh manager/target/aarch64-unknown-linux-musl/release/bitcoind-manager manifest.yaml check-rpc.sh check-synced.sh migrations/* actions/*
48+
ifeq ($(ARCH),x86_64)
49+
else
3350
mkdir -p docker-images
3451
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --build-arg BITCOIN_VERSION=$(VERSION_CORE) --build-arg ARCH=aarch64 --build-arg PLATFORM=arm64 --platform=linux/arm64 -o type=docker,dest=docker-images/aarch64.tar .
52+
endif
3553

3654
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh manager/target/x86_64-unknown-linux-musl/release/bitcoind-manager manifest.yaml check-rpc.sh check-synced.sh migrations/* actions/*
55+
ifeq ($(ARCH),aarch64)
56+
else
3757
mkdir -p docker-images
3858
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --build-arg BITCOIN_VERSION=$(VERSION_CORE) --build-arg ARCH=x86_64 --build-arg PLATFORM=amd64 --platform=linux/amd64 -o type=docker,dest=docker-images/x86_64.tar .
59+
endif
3960

4061
manager/target/aarch64-unknown-linux-musl/release/bitcoind-manager: $(MANAGER_SRC)
41-
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src start9/rust-musl-cross:aarch64-musl cargo build --release
62+
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:aarch64-musl cargo build --release
4263

4364
manager/target/x86_64-unknown-linux-musl/release/bitcoind-manager: $(MANAGER_SRC)
44-
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src start9/rust-musl-cross:x86_64-musl cargo build --release
65+
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:x86_64-musl cargo build --release
4566

4667
scripts/embassy.js: scripts/**/*.ts
4768
deno bundle scripts/embassy.ts scripts/embassy.js
69+
70+
submodule-update:
71+
@if [ -z "$(shell git submodule status | egrep -v '^ '|awk '{print $$2}')" ]; then \
72+
echo "Submodules are up to date."; \
73+
else \
74+
echo "\nUpdating submodules...\n"; \
75+
git submodule update --init --progress; \
76+
fi

bitcoin

Submodule bitcoin updated 1713 files

docker_entrypoint.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
set -euo pipefail
44

5+
CONFIG_FILE="/root/.bitcoin/start9/config.yaml"
56
export EMBASSY_IP=$(ip -4 route list match 0/0 | awk '{print $3}')
6-
export PEER_TOR_ADDRESS=$(yq e '.peer-tor-address' /root/.bitcoin/start9/config.yaml)
7-
export RPC_TOR_ADDRESS=$(yq e '.rpc-tor-address' /root/.bitcoin/start9/config.yaml)
7+
export PEER_TOR_ADDRESS=$(yq e '.peer-tor-address' "$CONFIG_FILE")
8+
export RPC_TOR_ADDRESS=$(yq e '.rpc-tor-address' "$CONFIG_FILE")
89

9-
# lighttpd -f /root/.bitcoin/httpd.conf
10-
# exec /usr/local/bin/bitcoind-manager
1110
exec tini -p SIGTERM -- bitcoind-manager

icon.png

-6 KB
Loading

0 commit comments

Comments
 (0)