dev
sh 119 lines 4.22 KB
Raw
1 #!/usr/bin/env bash
2 set -euo pipefail
3 cd "$(dirname $0)"
4
5 CW_DOCKER_REGISTRY="${CW_DOCKER_REGISTRY:-localhost/cake-tech/cake_wallet}"
6 CW_DOCKER_USE_CLOUD="${CW_DOCKER_USE_CLOUD:-}"
7
8 SCRIPT_DIR="$(pwd)"
9 REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
10
11 image_exists() {
12 docker image inspect "$1" &>/dev/null
13 }
14
15 tinysha() {
16 cat "$@" | sha256sum | cut -c1-6
17 }
18
19 build() {
20 local name="$1"; shift
21 local version=$1; shift
22 if [[ "x$CW_DOCKER_USE_CLOUD" == "xtrue" ]]
23 then
24 set +e
25 docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | \
26 grep "^${CW_DOCKER_REGISTRY}:android-deps-" | \
27 awk '{print $2}' | \
28 xargs -r docker rmi
29 docker pull "$CW_DOCKER_REGISTRY:android-deps-${name}-$(tinysha "$SCRIPT_DIR/Dockerfile.${name}")-${version}"
30 set -e
31 fi
32 if image_exists "$CW_DOCKER_REGISTRY:android-deps-${name}-$(tinysha "$SCRIPT_DIR/Dockerfile.${name}")-${version}"; then
33 echo "==> skipping $name (image already exists)"
34 return 0
35 fi
36 echo "==> building $name"
37 docker build \
38 --platform linux/amd64 \
39 --file "$SCRIPT_DIR/Dockerfile.${name}" \
40 --tag "$CW_DOCKER_REGISTRY:android-deps-${name}-$(tinysha "$SCRIPT_DIR/Dockerfile.${name}")-${version}" \
41 "$@" \
42 "$REPO_ROOT"
43 if [[ "x$CW_DOCKER_USE_CLOUD" == "xtrue" ]]
44 then
45 docker push "$CW_DOCKER_REGISTRY:android-deps-${name}-$(tinysha "$SCRIPT_DIR/Dockerfile.${name}")-${version}"
46 fi
47 }
48
49 img() {
50 echo "$CW_DOCKER_REGISTRY:android-deps-${1}-$(tinysha "$SCRIPT_DIR/Dockerfile.${1}")-${2}"
51 }
52
53 base_ver="latest"
54 torch_ver="$(tinysha $SCRIPT_DIR/Dockerfile.torch $REPO_ROOT/scripts/prepare_torch.sh $REPO_ROOT/scripts/android/build_torch.sh)"
55 reown_ver=$(tinysha $SCRIPT_DIR/Dockerfile.reown $REPO_ROOT/scripts/prepare_reown.sh $REPO_ROOT/scripts/android/build_reown_deps.sh)
56 bitbox_ver=$(tinysha $SCRIPT_DIR/Dockerfile.bitbox $REPO_ROOT/scripts/build_bitbox_flutter.sh)
57 monero_ver=$(tinysha $SCRIPT_DIR/Dockerfile.monero $REPO_ROOT/scripts/prepare_moneroc.sh $REPO_ROOT/scripts/android/build_monero_all.sh)
58 mwebd_ver=$(tinysha $SCRIPT_DIR/Dockerfile.mwebd $REPO_ROOT/pubspec_overrides.yaml $(find $REPO_ROOT/cw_mweb/go -type f))
59 zcash_ver=$(tinysha $SCRIPT_DIR/Dockerfile.zcash $REPO_ROOT/scripts/prepare_zcash.sh $REPO_ROOT/scripts/android/build_zcash.sh)
60 decred_ver=$(tinysha $SCRIPT_DIR/Dockerfile.torch $SCRIPT_DIR/Dockerfile.decred $REPO_ROOT/scripts/android/build_decred.sh $REPO_ROOT/cw_decred/pubspec.yaml)
61 echo $base_ver $torch_ver $reown_ver $bitbox_ver $monero_ver $mwebd_ver $zcash_ver $decred_ver > /tmp/docker_build_versions
62 final_ver=$(tinysha /tmp/docker_build_versions)
63
64 docker create --name temp_extract $(img final $final_ver) \
65 && cd $REPO_ROOT \
66 && docker cp temp_extract:/w.top w.top \
67 && rsync -av w.top/ . \
68 && rm -rf w.top \
69 && docker rm temp_extract \
70 && echo "cache ok" \
71 && exit 0 \
72 || echo "cache miss oh"
73
74 docker rm temp_extract || true
75
76 build base "$base_ver"
77
78 build bitbox "$bitbox_ver" --build-arg BASE_IMAGE="$(img base "$base_ver")"
79
80 build mwebd "$mwebd_ver" --build-arg BASE_IMAGE="$(img base "$base_ver")"
81
82 build reown "$reown_ver" --build-arg BASE_IMAGE="$(img base "$base_ver")"
83
84 build monero "$monero_ver" --build-arg BASE_IMAGE="$(img base "$base_ver")"
85
86 build zcash "$zcash_ver" --build-arg BASE_IMAGE="$(img base "$base_ver")"
87
88 build torch "$torch_ver" \
89 --build-arg BASE_IMAGE="$(img base "$base_ver")"
90
91 build decred "$decred_ver" \
92 --build-arg BASE_IMAGE="$(img base "$base_ver")" \
93 --build-arg TORCH_IMAGE="$(img torch "$torch_ver")"
94
95 build final $final_ver \
96 --build-arg BASE_IMAGE="$(img base $base_ver)" \
97 --build-arg TORCH_IMAGE="$(img torch $torch_ver)" \
98 --build-arg REOWN_IMAGE="$(img reown $reown_ver)" \
99 --build-arg BITBOX_IMAGE="$(img bitbox $bitbox_ver)" \
100 --build-arg MONERO_IMAGE="$(img monero $monero_ver)" \
101 --build-arg DECRED_IMAGE="$(img decred $decred_ver)" \
102 --build-arg MWEBD_IMAGE="$(img mwebd $mwebd_ver)" \
103 --build-arg ZCASH_IMAGE="$(img zcash $zcash_ver)"
104
105 echo "done: $(img final $final_ver)"
106 echo $(img final $final_ver) > /tmp/cakewallet_docker
107
108
109 docker create --name temp_extract $(img final $final_ver) \
110 && cd $REPO_ROOT \
111 && docker cp temp_extract:/w.top w.top \
112 && rsync -av w.top/ . \
113 && rm -rf w.top \
114 && docker rm temp_extract \
115 && echo "cache ok" \
116 && exit 0
117
118 echo idk.
119 exit 1