diff options
author | Danilo Bargen | 2021-12-06 12:29:05 +0100 |
---|---|---|
committer | Danilo Bargen | 2021-12-06 12:29:05 +0100 |
commit | cce65be600669684d0360b0eadd16bc18e69dc2b (patch) | |
tree | a1da1b1639156e3caf726d62a7269707f6de6ff9 | |
download | aur-tezos-serokell.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 31 | ||||
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | Dockerfile | 14 | ||||
-rw-r--r-- | PKGBUILD | 91 | ||||
-rw-r--r-- | build-libusb-and-hidapi.sh | 20 | ||||
-rw-r--r-- | build-tezos.sh | 25 | ||||
-rw-r--r-- | docker-static-build.patch | 22 | ||||
-rw-r--r-- | docker-static-build.sh | 53 | ||||
-rw-r--r-- | protocols.json | 26 | ||||
-rw-r--r-- | static_libs.patch | 142 | ||||
-rw-r--r-- | systemd_sysusers.d_tezos.conf | 2 | ||||
-rw-r--r-- | tezos-node.service | 15 | ||||
-rw-r--r-- | tezos-serokell.install | 21 | ||||
-rwxr-xr-x | update-scripts.sh | 18 |
14 files changed, 485 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..8fdc2a84d6fc --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,31 @@ +pkgbase = tezos-serokell + pkgdesc = Build Tezos from source in a local Podman container using the build scripts by Serokell. + pkgver = 11.0 + pkgrel = 1 + url = https://github.com/serokell/tezos-packaging + install = tezos-serokell.install + arch = x86_64 + license = MIT + makedepends = podman + provides = tezos + conflicts = tezos + source = docker-static-build.sh + source = protocols.json + source = Dockerfile + source = build-libusb-and-hidapi.sh + source = build-tezos.sh + source = static_libs.patch + source = systemd_sysusers.d_tezos.conf + source = tezos-node.service + source = tezos-serokell.install + sha256sums = c9955a43a7cb6811b9f2ced2f4fc757092c5959405298ca887c189acec24f352 + sha256sums = 552c9b3f54049d92f59d649f3b3220b1a4070745204ea7e71d77b4ba3def62a2 + sha256sums = c2c670ec6017f649a5c758fe53d9dcfe40607914a87a543b0c3c3fc1744c9742 + sha256sums = 3efaeb530efbfee94eb842176a120335cf3dfe8aa1d1473922a5e0d709e10c90 + sha256sums = c944539ccc4478b25b2fa18396ec76a38e58c28d6a97c68891317ed2aa80b93d + sha256sums = 8314fdf62ba8440a11a3bdc408cf7e3f5874dced84a0209a7a05075f42a8291b + sha256sums = ef749a4f8cb69da8e400918c3d3e46b3c76743ad876d4a75e6fb1d85d12d2592 + sha256sums = f6c661a12e0ee6cb5df7ba847998d9dcd3cb357494c8de2f770454874a94d274 + sha256sums = a55713bc79b71d56b73db458ab20c0b07750a846d2c7a528f7b04573e0be4c46 + +pkgname = tezos-serokell diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..7386183b92f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +pkg/ +src/ +*.tar.gz +*.tar.gz.asc +*.tar.zst diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000000..f73aa964421b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2020 TQ Tezos <https://tqtezos.com/> +# +# SPDX-License-Identifier: LicenseRef-MIT-TQ +FROM alpine:3.12 +RUN apk update +RUN apk --no-cache --virtual add rsync git m4 build-base patch unzip \ + bubblewrap wget pkgconfig gmp-dev libev-dev hidapi-dev eudev-dev perl opam libusb-dev bash \ + autoconf automake libtool linux-headers cargo libffi-dev zlib-static +COPY ./build/build-libusb-and-hidapi.sh /build-libusb-and-hidapi.sh +RUN /build-libusb-and-hidapi.sh +COPY ./build/static_libs.patch /static.patch +ARG TEZOS_VERSION +COPY ./build/build-tezos.sh /build-tezos.sh +RUN /build-tezos.sh ${TEZOS_VERSION} diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..b7a17abd7357 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,91 @@ +# Maintainer: Danilo Bargen <aur ät dbrgn döt ch> +# +# Note: This assumes that you have a local podman installation configured. +# Alternatively, if you have a Docker installation where your local user +# is in the `docker` group (which is potentially dangerous!), remove the +# `podman` makedependency and remove the `export USE_PODMAN=True` line. + +pkgname=tezos-serokell +pkgver=11.0 +_distver=$pkgver-1 +pkgrel=1 +pkgdesc='Build Tezos from source in a local Podman container using the build scripts by Serokell.' +arch=('x86_64') +url='https://github.com/serokell/tezos-packaging' +license=('MIT') +provides=('tezos') +conflicts=('tezos') +makedepends=('podman') +options=() +depends=() +source=( + # Dir: docker/ + 'docker-static-build.sh' + 'protocols.json' + # Dir: docker/build/ + 'Dockerfile' + 'build-libusb-and-hidapi.sh' + 'build-tezos.sh' + 'static_libs.patch' + # Other files + 'systemd_sysusers.d_tezos.conf' + 'tezos-node.service' + 'tezos-serokell.install' +) +sha256sums=('c9955a43a7cb6811b9f2ced2f4fc757092c5959405298ca887c189acec24f352' + '552c9b3f54049d92f59d649f3b3220b1a4070745204ea7e71d77b4ba3def62a2' + 'c2c670ec6017f649a5c758fe53d9dcfe40607914a87a543b0c3c3fc1744c9742' + '3efaeb530efbfee94eb842176a120335cf3dfe8aa1d1473922a5e0d709e10c90' + 'c944539ccc4478b25b2fa18396ec76a38e58c28d6a97c68891317ed2aa80b93d' + '8314fdf62ba8440a11a3bdc408cf7e3f5874dced84a0209a7a05075f42a8291b' + 'ef749a4f8cb69da8e400918c3d3e46b3c76743ad876d4a75e6fb1d85d12d2592' + 'f6c661a12e0ee6cb5df7ba847998d9dcd3cb357494c8de2f770454874a94d274' + 'a55713bc79b71d56b73db458ab20c0b07750a846d2c7a528f7b04573e0be4c46') +install=${pkgname}.install + +build() { + cd "$srcdir" + + # Config + export USE_PODMAN=True + export TEZOS_VERSION="v${pkgver}" + + # Set up build scripts + DIR="docker" + mkdir -p "$DIR/build/" + cp docker-static-build.sh "$DIR/" + cp protocols.json "$DIR/" + cp Dockerfile "$DIR/build/" + cp build-libusb-and-hidapi.sh "$DIR/build/" + cp build-tezos.sh "$DIR/build/" + cp static_libs.patch "$DIR/build/" + chmod +x "$DIR/build/build-libusb-and-hidapi.sh" + chmod +x "$DIR/build/build-tezos.sh" + + # Build + cd "$DIR" + bash ./docker-static-build.sh +} + +package() { + # Install binaries + mkdir -p "$pkgdir"/usr/bin/ + cp "$srcdir"/docker/tezos-* "$pkgdir"/usr/bin/ + chown root:root "$pkgdir"/usr/bin/* + chmod 755 "$pkgdir"/usr/bin/* + + # Install zcash params + mkdir -p "$pkgdir"/usr/share/zcash-params + install -o root -g root -m 644 "$srcdir"/docker/sapling-output.params "$pkgdir"/usr/share/zcash-params + install -o root -g root -m 644 "$srcdir"/docker/sapling-spend.params "$pkgdir"/usr/share/zcash-params + + # Install systemd service + install -Dm644 "$srcdir"/tezos-node.service \ + "$pkgdir"/usr/lib/systemd/system/tezos-node.service + + # Install sysusers hook + install -Dm644 "$srcdir"/systemd_sysusers.d_tezos.conf \ + "$pkgdir"/usr/lib/sysusers.d/tezos.conf +} + +# vim:set ts=2 sw=2 et: diff --git a/build-libusb-and-hidapi.sh b/build-libusb-and-hidapi.sh new file mode 100644 index 000000000000..5ecfa1a4c1ab --- /dev/null +++ b/build-libusb-and-hidapi.sh @@ -0,0 +1,20 @@ +#! /usr/bin/env bash + +# SPDX-FileCopyrightText: 2020 TQ Tezos <https://tqtezos.com/> +# +# SPDX-License-Identifier: LicenseRef-MIT-TQ + +# This script builds and installs libusb and hidapi libraries. It's required since alpine +# doesn't provide static versions for these libraries, thus we have to compile it ourselves. +set -euo pipefail + +git clone --single-branch --branch v1.0.23 https://github.com/libusb/libusb.git --depth 1 +cd libusb +autoreconf -fvi && ./configure && make && make install + +git clone --single-branch --branch hidapi-0.9.0 https://github.com/libusb/hidapi.git --depth 1 + +cd hidapi +autoreconf -fvi && ./bootstrap && ./configure && make && make install + +rm -rf libusb hidapi diff --git a/build-tezos.sh b/build-tezos.sh new file mode 100644 index 000000000000..900b2ebd8f50 --- /dev/null +++ b/build-tezos.sh @@ -0,0 +1,25 @@ +#! /usr/bin/env bash + +# SPDX-FileCopyrightText: 2020 TQ Tezos <https://tqtezos.com/> +# +# SPDX-License-Identifier: LicenseRef-MIT-TQ + +# This script builds static tezos binaries. It expects patches required for static building to be +# in parent directory, it also accepts tezos version as an argument. +set -euo pipefail + +tezos_version="$1" +git clone --single-branch --branch "$tezos_version" https://gitlab.com/tezos/tezos.git --depth 1 +cd tezos + +git apply ../static.patch +export OPAMYES="true" +wget https://sh.rustup.rs/rustup-init.sh +chmod +x rustup-init.sh +./rustup-init.sh --profile minimal --default-toolchain 1.52.1 -y +source "$HOME/.cargo/env" + +opam init --bare --disable-sandboxing +make build-deps +eval "$(opam env)" && PROFILE="static" make build && make build-sandbox +chmod +w tezos-* diff --git a/docker-static-build.patch b/docker-static-build.patch new file mode 100644 index 000000000000..89eacde2d0a1 --- /dev/null +++ b/docker-static-build.patch @@ -0,0 +1,22 @@ +diff --unified --recursive --text docker.orig/docker-static-build.sh docker.new/docker-static-build.sh +--- docker.orig/docker-static-build.sh 2021-12-06 12:18:10.154949959 +0100 ++++ docker.new/docker-static-build.sh 2021-12-06 12:13:44.724949629 +0100 +@@ -10,8 +10,9 @@ + set -euo pipefail + + binaries=("tezos-admin-client" "tezos-client" "tezos-node" "tezos-signer" "tezos-codec" "tezos-sandbox") ++zcash_params=("sapling-output.params" "sapling-spend.params") + +-for proto in $(jq -r ".active | .[]" ../protocols.json); do ++for proto in $(jq -r ".active | .[]" protocols.json); do + binaries+=("tezos-accuser-$proto" "tezos-baker-$proto" "tezos-endorser-$proto") + done + +@@ -46,4 +47,7 @@ + for b in "${binaries[@]}"; do + "$virtualisation_engine" cp "$container_id:/tezos/$b" "$b" + done ++for p in "${zcash_params[@]}"; do ++ "$virtualisation_engine" cp "$container_id:/tezos/_opam/share/zcash-params/$p" "$p" ++done + "$virtualisation_engine" rm -v "$container_id" diff --git a/docker-static-build.sh b/docker-static-build.sh new file mode 100644 index 000000000000..8abec36b50ae --- /dev/null +++ b/docker-static-build.sh @@ -0,0 +1,53 @@ +#! /usr/bin/env bash + +# SPDX-FileCopyrightText: 2020 TQ Tezos <https://tqtezos.com/> +# +# SPDX-License-Identifier: LicenseRef-MIT-TQ + +# This script builds static tezos-binaries using custom alpine image. +# It expects docker or podman to be installed and configured. + +set -euo pipefail + +binaries=("tezos-admin-client" "tezos-client" "tezos-node" "tezos-signer" "tezos-codec" "tezos-sandbox") +zcash_params=("sapling-output.params" "sapling-spend.params") + +for proto in $(jq -r ".active | .[]" protocols.json); do + binaries+=("tezos-accuser-$proto" "tezos-baker-$proto" "tezos-endorser-$proto") +done + +if [[ "${USE_PODMAN-}" == "True" ]]; then + virtualisation_engine="podman" +else + virtualisation_engine="docker" +fi + +arch="host" + +if [[ -n "${1-}" ]]; then + arch="$1" +fi + +if [[ $arch == "host" ]]; then + docker_file=build/Dockerfile +elif [[ $arch == "aarch64" ]]; then + docker_file=build/Dockerfile.aarch64 +else + echo "Unsupported architecture: $arch" + echo "Only 'host' and 'aarch64' are currently supported" + exit 1 +fi + +if [[ $arch == "aarch64" && $(uname -m) != "x86_64" ]]; then + echo "Compiling for aarch64 is supported only from aarch64 and x86_64" +fi + +"$virtualisation_engine" build -t alpine-tezos -f "$docker_file" --build-arg TEZOS_VERSION="$TEZOS_VERSION" . +container_id="$("$virtualisation_engine" create alpine-tezos)" +for b in "${binaries[@]}"; do + "$virtualisation_engine" cp "$container_id:/tezos/$b" "$b" +done +for p in "${zcash_params[@]}"; do + "$virtualisation_engine" cp "$container_id:/tezos/_opam/share/zcash-params/$p" "$p" +done +"$virtualisation_engine" rm -v "$container_id" diff --git a/protocols.json b/protocols.json new file mode 100644 index 000000000000..ea60d10290ec --- /dev/null +++ b/protocols.json @@ -0,0 +1,26 @@ +{ + "ignored": [ + "demo-counter" + ], + "allowed": [ + "alpha", + "genesis", + "genesis-carthagenet", + "000-Ps9mPmXa", + "001-PtCJ7pwo", + "002-PsYLVpVv", + "003-PsddFKi3", + "004-Pt24m4xi", + "005-PsBABY5H", + "005-PsBabyM1", + "006-PsCARTHA", + "007-PsDELPH1", + "008-PtEdoTez", + "008-PtEdo2Zk", + "009-PsFLoren" + ], + "active": [ + "010-PtGRANAD", + "011-PtHangz2" + ] +} diff --git a/static_libs.patch b/static_libs.patch new file mode 100644 index 000000000000..aed05ad1924b --- /dev/null +++ b/static_libs.patch @@ -0,0 +1,142 @@ +# SPDX-FileCopyrightText: 2020 TQ Tezos <https://tqtezos.com/> +# +# SPDX-License-Identifier: LicenseRef-MIT-TQ +diff --git a/src/bin_client/dune b/src/bin_client/dune +index 00fb3a632..923739d2b 100644 +--- a/src/bin_client/dune ++++ b/src/bin_client/dune +@@ -76,7 +76,9 @@ + -open Tezos_client_commands + -open Tezos_mockup_commands + -open Tezos_client_base_unix +- -linkall))) ++ -linkall ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) + + (rule + (action +diff --git a/src/bin_codec/dune b/src/bin_codec/dune +index f7577c4e5..949d2cbc4 100644 +--- a/src/bin_codec/dune ++++ b/src/bin_codec/dune +@@ -33,7 +33,9 @@ + -open Tezos_clic + -open Tezos_stdlib_unix + -open Tezos_event_logging +- -linkall))) ++ -linkall ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) + + (rule + (action +diff --git a/src/bin_node/dune b/src/bin_node/dune +index 95a8d1af7..ce2ac8e3e 100644 +--- a/src/bin_node/dune ++++ b/src/bin_node/dune +@@ -96,7 +96,8 @@ + -open Tezos_shell_context + -open Tezos_workers + -open Tezos_protocol_updater +- -linkall))) ++ -linkall ++ -ccopt -static))) + + (rule + (action +diff --git a/src/bin_signer/dune b/src/bin_signer/dune +index 26c1fa638..029a50c07 100644 +--- a/src/bin_signer/dune ++++ b/src/bin_signer/dune +@@ -21,4 +21,6 @@ + -open Tezos_rpc_http_server + -open Tezos_rpc_http_client_unix + -open Tezos_stdlib_unix +- -open Tezos_stdlib))) ++ -open Tezos_stdlib ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_010_PtGRANAD/bin_accuser/dune b/src/proto_010_PtGRANAD/bin_accuser/dune +index 11c77973e3..43515f16ed 100644 +--- a/src/proto_010_PtGRANAD/bin_accuser/dune ++++ b/src/proto_010_PtGRANAD/bin_accuser/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_010_PtGRANAD_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_010_PtGRANAD/bin_baker/dune b/src/proto_010_PtGRANAD/bin_baker/dune +index 0535edf13c..f0c85ad447 100644 +--- a/src/proto_010_PtGRANAD/bin_baker/dune ++++ b/src/proto_010_PtGRANAD/bin_baker/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_010_PtGRANAD_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_010_PtGRANAD/bin_endorser/dune b/src/proto_010_PtGRANAD/bin_endorser/dune +index c19a310a8f..6c38226293 100644 +--- a/src/proto_010_PtGRANAD/bin_endorser/dune ++++ b/src/proto_010_PtGRANAD/bin_endorser/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_010_PtGRANAD_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_011_PtHangz2/bin_accuser/dune b/src/proto_011_PtHangz2/bin_accuser/dune +index 11c77973e3..43515f16ed 100644 +--- a/src/proto_011_PtHangz2/bin_accuser/dune ++++ b/src/proto_011_PtHangz2/bin_accuser/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_011_PtHangz2_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_011_PtHangz2/bin_baker/dune b/src/proto_011_PtHangz2/bin_baker/dune +index 0535edf13c..f0c85ad447 100644 +--- a/src/proto_011_PtHangz2/bin_baker/dune ++++ b/src/proto_011_PtHangz2/bin_baker/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_011_PtHangz2_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/proto_011_PtHangz2/bin_endorser/dune b/src/proto_011_PtHangz2/bin_endorser/dune +index c19a310a8f..6c38226293 100644 +--- a/src/proto_011_PtHangz2/bin_endorser/dune ++++ b/src/proto_011_PtHangz2/bin_endorser/dune +@@ -10,4 +10,6 @@ + -open Tezos_client_commands + -open Tezos_baking_011_PtHangz2_commands + -open Tezos_stdlib_unix +- -open Tezos_client_base_unix))) ++ -open Tezos_client_base_unix ++ -ccopt -static ++ -cclib "-lusb-1.0 -lhidapi-libusb -ludev"))) +diff --git a/src/bin_sandbox/dune b/src/bin_sandbox/dune +index 6289c6d124..aa2eb20a29 100644 +--- a/src/bin_sandbox/dune ++++ b/src/bin_sandbox/dune +@@ -2,4 +2,5 @@ + (names main) + (libraries tezos-base + tezos-base.unix +- flextesa)) ++ flextesa) ++ (flags :standard -ccopt -static)) diff --git a/systemd_sysusers.d_tezos.conf b/systemd_sysusers.d_tezos.conf new file mode 100644 index 000000000000..157ee239a6da --- /dev/null +++ b/systemd_sysusers.d_tezos.conf @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home Shell +u tezos - "Tezos Node user" /usr/share/tezos /bin/sh diff --git a/tezos-node.service b/tezos-node.service new file mode 100644 index 000000000000..9f624d4d0537 --- /dev/null +++ b/tezos-node.service @@ -0,0 +1,15 @@ +[Unit] +Description=Tezos node in RPC mode in RPC mode on 127.0.0.1. + +[Service] +Type=simple +User=tezos +Group=tezos +ExecStart=/usr/bin/tezos-node run --rpc-addr=127.0.0.1 +TimeoutStartSec=5 +TimeoutStopSec=180 +Restart=on-failure +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target diff --git a/tezos-serokell.install b/tezos-serokell.install new file mode 100644 index 000000000000..8ac35344a82b --- /dev/null +++ b/tezos-serokell.install @@ -0,0 +1,21 @@ +post_upgrade() { + if [ ! -d "/usr/share/tezos" ]; then + echo "Creating directory /usr/share/tezos..." + mkdir -p -m755 /usr/share/tezos + chown tezos:tezos /usr/share/tezos + fi + if [ ! -f "/usr/share/tezos/.tezos-node/identity.json" ]; then + echo -e "To create a tezos node identity, run\n" + echo -e " $ sudo -u tezos tezos-node identity generate\n" + else + echo "" + fi + echo -e "To start the tezos node on localhost, run\n" + echo -e " $ sudo systemctl start tezos-node\n" + echo -e "To automatically start it on system start:\n" + echo -e " $ sudo systemctl enable tezos-node\n" +} + +post_install() { + post_upgrade +} diff --git a/update-scripts.sh b/update-scripts.sh new file mode 100755 index 000000000000..32c09727de71 --- /dev/null +++ b/update-scripts.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Config +VERSION="11.0-1" + +# Download build scripts +curl -o docker-static-build.sh https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/docker/docker-static-build.sh +curl -o Dockerfile https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/docker/build/Dockerfile +curl -o build-libusb-and-hidapi.sh https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/docker/build/build-libusb-and-hidapi.sh +curl -o build-tezos.sh https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/docker/build/build-tezos.sh +curl -o static_libs.patch https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/docker/build/static_libs.patch + +# Download protocols.json +curl -o protocols.json https://raw.githubusercontent.com/serokell/tezos-packaging/v$VERSION/protocols.json + +# Patch docker-static-build.patch +patch --forward --strip=1 --input="docker-static-build.patch" |