├── 1 └── Dockerfile ├── .gitattributes ├── .github └── workflows │ ├── ci.yml │ └── verify-templating.yml ├── .gitignore ├── 1-rc └── Dockerfile ├── 2-rc └── Dockerfile ├── Dockerfile.template ├── README.md ├── apply-templates.sh ├── generate-stackbrew-library.sh ├── run.sh ├── update.sh ├── versions.json └── versions.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | /*/**/Dockerfile linguist-generated 2 | /Dockerfile*.template linguist-language=Dockerfile 3 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: GitHub CI 2 | 3 | on: 4 | pull_request: 5 | push: 6 | schedule: 7 | - cron: 0 0 * * 0 8 | 9 | defaults: 10 | run: 11 | shell: 'bash -Eeuo pipefail -x {0}' 12 | 13 | jobs: 14 | 15 | generate-jobs: 16 | name: Generate Jobs 17 | runs-on: ubuntu-latest 18 | outputs: 19 | strategy: ${{ steps.generate-jobs.outputs.strategy }} 20 | steps: 21 | - uses: actions/checkout@v4 22 | - uses: docker-library/bashbrew@HEAD 23 | - id: generate-jobs 24 | name: Generate Jobs 25 | run: | 26 | export BASHBREW_NAMESPACE='tianon' 27 | image="${GITHUB_REPOSITORY##*/}" 28 | image="${image#docker-}" 29 | export GITHUB_REPOSITORY="$image" 30 | strategy="$("$BASHBREW_SCRIPTS/github-actions/generate.sh")" 31 | strategy="$("$BASHBREW_SCRIPTS/github-actions/munge-i386.sh" -c <<<"$strategy")" 32 | echo "strategy=$strategy" >> "$GITHUB_OUTPUT" 33 | jq . <<<"$strategy" # sanity check / debugging aid 34 | 35 | test: 36 | needs: generate-jobs 37 | strategy: ${{ fromJson(needs.generate-jobs.outputs.strategy) }} 38 | name: ${{ matrix.name }} 39 | runs-on: ${{ matrix.os }} 40 | steps: 41 | - uses: actions/checkout@v4 42 | - name: Prepare Environment 43 | run: ${{ matrix.runs.prepare }} 44 | - name: Pull Dependencies 45 | run: ${{ matrix.runs.pull }} 46 | - name: Build ${{ matrix.name }} 47 | run: ${{ matrix.runs.build }} 48 | - name: History ${{ matrix.name }} 49 | run: ${{ matrix.runs.history }} 50 | - name: Test ${{ matrix.name }} 51 | run: ${{ matrix.runs.test }} 52 | - name: '"docker images"' 53 | run: ${{ matrix.runs.images }} 54 | -------------------------------------------------------------------------------- /.github/workflows/verify-templating.yml: -------------------------------------------------------------------------------- 1 | name: Verify Templating 2 | 3 | on: 4 | pull_request: 5 | push: 6 | 7 | defaults: 8 | run: 9 | shell: 'bash -Eeuo pipefail -x {0}' 10 | 11 | jobs: 12 | apply-templates: 13 | name: Check For Uncomitted Changes 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - name: Apply Templates 18 | run: ./apply-templates.sh 19 | - name: Check Git Status 20 | run: | 21 | status="$(git status --short)" 22 | [ -z "$status" ] 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .jq-template.awk 2 | -------------------------------------------------------------------------------- /1-rc/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" 3 | # 4 | # PLEASE DO NOT EDIT IT DIRECTLY. 5 | # 6 | 7 | FROM alpine:3.21 8 | 9 | RUN set -eux; \ 10 | addgroup -g 1000 user; \ 11 | adduser -u 1000 -G user -D user 12 | 13 | # https://github.com/syncthing/syncthing/releases 14 | ENV SYNCTHING_VERSION 1.29.7-rc.3 15 | 16 | RUN set -eux; \ 17 | apkArch="$(apk --print-arch)"; \ 18 | case "$apkArch" in \ 19 | 'x86') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-386-v1.29.7-rc.3.tar.gz'; sha256='c254d0c0daea48516cf53eff3c1819b0cb200eb48d8593b9c363186fccbf04fb' ;; \ 20 | 'x86_64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-amd64-v1.29.7-rc.3.tar.gz'; sha256='bd691855ffe9f5d1831f2a8aeadb69fcd9820665bf11b0700e0a056358212680' ;; \ 21 | 'armhf') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm-v1.29.7-rc.3.tar.gz'; sha256='76a3b7f8b5cf597f0e41fd1c50e6a60a610fd11f5c644ce5b52b9082e8f8758e' ;; \ 22 | 'armv7') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm-v1.29.7-rc.3.tar.gz'; sha256='76a3b7f8b5cf597f0e41fd1c50e6a60a610fd11f5c644ce5b52b9082e8f8758e' ;; \ 23 | 'aarch64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm64-v1.29.7-rc.3.tar.gz'; sha256='ad1272e253f05969bd18e3bab422f88bec1d1f668d541a015273bfd0c9c6bb58' ;; \ 24 | 'ppc64le') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-ppc64le-v1.29.7-rc.3.tar.gz'; sha256='d8e8bc6f0281550e6ae0b731ae9cb58b17ae2a42a06fd6d32615e317073ce47b' ;; \ 25 | 'riscv64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-riscv64-v1.29.7-rc.3.tar.gz'; sha256='f77c14222333081c9bd5c86d9bf6221c3240737d29d5b9220586e3c6b39fdbc2' ;; \ 26 | 's390x') url='https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-s390x-v1.29.7-rc.3.tar.gz'; sha256='4fd2a702d317fbd5b812335e09ef834e33064a3a69a2090a4f97849e74fb6705' ;; \ 27 | *) echo >&2 "error: unsupported architecture: '$apkArch'"; exit 1 ;; \ 28 | esac; \ 29 | tarball="$(basename "$url")"; \ 30 | wget -O "$tarball" "$url"; \ 31 | echo "$sha256 *$tarball" | sha256sum -c -; \ 32 | dir="${tarball%.tar.*}"; \ 33 | bin="$dir/syncthing"; \ 34 | tar -xvf "$tarball" "$bin"; \ 35 | rm "$tarball"; \ 36 | mv "$bin" /usr/local/bin/; \ 37 | rmdir "$dir"; \ 38 | # smoke test 39 | syncthing --help 40 | 41 | USER user 42 | CMD ["syncthing"] 43 | -------------------------------------------------------------------------------- /1/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" 3 | # 4 | # PLEASE DO NOT EDIT IT DIRECTLY. 5 | # 6 | 7 | FROM alpine:3.21 8 | 9 | RUN set -eux; \ 10 | addgroup -g 1000 user; \ 11 | adduser -u 1000 -G user -D user 12 | 13 | # https://github.com/syncthing/syncthing/releases 14 | ENV SYNCTHING_VERSION 1.29.6 15 | 16 | RUN set -eux; \ 17 | apkArch="$(apk --print-arch)"; \ 18 | case "$apkArch" in \ 19 | 'x86') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-386-v1.29.6.tar.gz'; sha256='64009d988cd7cecd48bd84fd206f5ec555584cd6195b296938845ce79e56d4fe' ;; \ 20 | 'x86_64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-amd64-v1.29.6.tar.gz'; sha256='422ae49c7f35a8b786596c73f6968fcb79fd50dfa559cf17dbb0cdf07e3b2537' ;; \ 21 | 'armhf') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm-v1.29.6.tar.gz'; sha256='68dd086aba83073a0eb35148dcb7acd011b008e2e74385bdfffaf1eff266e6f7' ;; \ 22 | 'armv7') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm-v1.29.6.tar.gz'; sha256='68dd086aba83073a0eb35148dcb7acd011b008e2e74385bdfffaf1eff266e6f7' ;; \ 23 | 'aarch64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm64-v1.29.6.tar.gz'; sha256='7bf0b75dcca970eedf9fb59325a546257f694eab06239d18b364f647bf6e9992' ;; \ 24 | 'ppc64le') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-ppc64le-v1.29.6.tar.gz'; sha256='998eb17af40816a5ed8b65f24fb966f8d3d8d9695be75d443832896fb38ab7cf' ;; \ 25 | 'riscv64') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-riscv64-v1.29.6.tar.gz'; sha256='272a84794cff6d4d697862fa03e590cb76ba35a3b9c32e4c2d2140eadc283ebe' ;; \ 26 | 's390x') url='https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-s390x-v1.29.6.tar.gz'; sha256='ba620c8c00b5d084a26d72da8dad582c44776e131fb893b04922c32f155f4b65' ;; \ 27 | *) echo >&2 "error: unsupported architecture: '$apkArch'"; exit 1 ;; \ 28 | esac; \ 29 | tarball="$(basename "$url")"; \ 30 | wget -O "$tarball" "$url"; \ 31 | echo "$sha256 *$tarball" | sha256sum -c -; \ 32 | dir="${tarball%.tar.*}"; \ 33 | bin="$dir/syncthing"; \ 34 | tar -xvf "$tarball" "$bin"; \ 35 | rm "$tarball"; \ 36 | mv "$bin" /usr/local/bin/; \ 37 | rmdir "$dir"; \ 38 | # smoke test 39 | syncthing --help 40 | 41 | USER user 42 | CMD ["syncthing"] 43 | -------------------------------------------------------------------------------- /2-rc/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" 3 | # 4 | # PLEASE DO NOT EDIT IT DIRECTLY. 5 | # 6 | 7 | FROM alpine:3.21 8 | 9 | RUN set -eux; \ 10 | addgroup -g 1000 user; \ 11 | adduser -u 1000 -G user -D user 12 | 13 | # https://github.com/syncthing/syncthing/releases 14 | ENV SYNCTHING_VERSION 2.0.0-rc.18 15 | 16 | RUN set -eux; \ 17 | apkArch="$(apk --print-arch)"; \ 18 | case "$apkArch" in \ 19 | 'x86') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-386-v2.0.0-rc.18.tar.gz'; sha256='c1dde7f62b55c36d3a57f605ad244bd3b516ab3a858c277230cdeb42d0126f3e' ;; \ 20 | 'x86_64') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-amd64-v2.0.0-rc.18.tar.gz'; sha256='b443d07c8f8e1c57894f28f0f48757734d99c53ea544c50d9b12687d48bb9d4a' ;; \ 21 | 'armhf') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm-v2.0.0-rc.18.tar.gz'; sha256='ac86b395dfd16a69140d2469361057ba59218097c667a87354b3967d05ed81ae' ;; \ 22 | 'armv7') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm-v2.0.0-rc.18.tar.gz'; sha256='ac86b395dfd16a69140d2469361057ba59218097c667a87354b3967d05ed81ae' ;; \ 23 | 'aarch64') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm64-v2.0.0-rc.18.tar.gz'; sha256='f373cc87c9949a57aa97ee7765017589b4a286ac3cd7ec9db1b2d6098ac0b8ee' ;; \ 24 | 'ppc64le') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-ppc64le-v2.0.0-rc.18.tar.gz'; sha256='84e1ddcd489730566edc6be78ae0d3f60ed637918f675bcec651abb992a874c2' ;; \ 25 | 'riscv64') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-riscv64-v2.0.0-rc.18.tar.gz'; sha256='9efe1f5ae9a00ef76deee75b435ec23bfe6830d0a3ab413cb0d51ba84cf59e3f' ;; \ 26 | 's390x') url='https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-s390x-v2.0.0-rc.18.tar.gz'; sha256='c78b0b6ad724d244c70c855e1daa3290f8073dede68c54e69b764e101f747c66' ;; \ 27 | *) echo >&2 "error: unsupported architecture: '$apkArch'"; exit 1 ;; \ 28 | esac; \ 29 | tarball="$(basename "$url")"; \ 30 | wget -O "$tarball" "$url"; \ 31 | echo "$sha256 *$tarball" | sha256sum -c -; \ 32 | dir="${tarball%.tar.*}"; \ 33 | bin="$dir/syncthing"; \ 34 | tar -xvf "$tarball" "$bin"; \ 35 | rm "$tarball"; \ 36 | mv "$bin" /usr/local/bin/; \ 37 | rmdir "$dir"; \ 38 | # smoke test 39 | syncthing --help 40 | 41 | USER user 42 | CMD ["syncthing"] 43 | -------------------------------------------------------------------------------- /Dockerfile.template: -------------------------------------------------------------------------------- 1 | FROM alpine:3.21 2 | 3 | RUN set -eux; \ 4 | addgroup -g 1000 user; \ 5 | adduser -u 1000 -G user -D user 6 | 7 | # https://github.com/syncthing/syncthing/releases 8 | ENV SYNCTHING_VERSION {{ .version }} 9 | 10 | RUN set -eux; \ 11 | apkArch="$(apk --print-arch)"; \ 12 | case "$apkArch" in \ 13 | {{ .arches | map( -}} 14 | {{ .apkArch // empty | @sh }}) url={{ .url | @sh }}; sha256={{ .sha256 | @sh }} ;; \ 15 | {{ ) | add -}} 16 | *) echo >&2 "error: unsupported architecture: '$apkArch'"; exit 1 ;; \ 17 | esac; \ 18 | tarball="$(basename "$url")"; \ 19 | wget -O "$tarball" "$url"; \ 20 | echo "$sha256 *$tarball" | sha256sum -c -; \ 21 | dir="${tarball%.tar.*}"; \ 22 | bin="$dir/syncthing"; \ 23 | tar -xvf "$tarball" "$bin"; \ 24 | rm "$tarball"; \ 25 | mv "$bin" /usr/local/bin/; \ 26 | rmdir "$dir"; \ 27 | # smoke test 28 | syncthing --help 29 | 30 | USER user 31 | CMD ["syncthing"] 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | See [`Dockerfile`](https://github.com/tianon/docker-syncthing/blob/master/1/Dockerfile) and [example `run.sh` script](https://github.com/tianon/docker-syncthing/blob/master/run.sh) for usage. 2 | -------------------------------------------------------------------------------- /apply-templates.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -Eeuo pipefail 3 | 4 | [ -f versions.json ] # run "versions.sh" first 5 | 6 | jqt='.jq-template.awk' 7 | if [ -n "${BASHBREW_SCRIPTS:-}" ]; then 8 | jqt="$BASHBREW_SCRIPTS/jq-template.awk" 9 | elif [ "$BASH_SOURCE" -nt "$jqt" ]; then 10 | # https://github.com/docker-library/bashbrew/blob/master/scripts/jq-template.awk 11 | wget -qO "$jqt" 'https://github.com/docker-library/bashbrew/raw/9f6a35772ac863a0241f147c820354e4008edf38/scripts/jq-template.awk' 12 | fi 13 | 14 | if [ "$#" -eq 0 ]; then 15 | versions="$(jq -r 'keys_unsorted | map(@sh) | join(" ")' versions.json)" 16 | eval "set -- $versions" 17 | fi 18 | 19 | generated_warning() { 20 | cat <<-EOH 21 | # 22 | # NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" 23 | # 24 | # PLEASE DO NOT EDIT IT DIRECTLY. 25 | # 26 | 27 | EOH 28 | } 29 | 30 | for version; do 31 | export version 32 | 33 | rm -rf "$version/" 34 | mkdir -p "$version" 35 | 36 | echo "processing $version ..." 37 | 38 | { 39 | generated_warning 40 | gawk -f "$jqt" Dockerfile.template 41 | } > "$version/Dockerfile" 42 | done 43 | -------------------------------------------------------------------------------- /generate-stackbrew-library.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | declare -A aliases=( 5 | [1]='latest' 6 | [2-rc]='rc' 7 | ) 8 | 9 | self="$(basename "$BASH_SOURCE")" 10 | cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" 11 | 12 | versions=( */ ) 13 | versions=( "${versions[@]%/}" ) 14 | 15 | # get the most recent commit which modified any of "$@" 16 | fileCommit() { 17 | git log -1 --format='format:%H' HEAD -- "$@" 18 | } 19 | 20 | # get the most recent commit which modified "$1/Dockerfile" or any file COPY'd from "$1/Dockerfile" 21 | dirCommit() { 22 | local dir="$1"; shift 23 | ( 24 | cd "$dir" 25 | fileCommit \ 26 | Dockerfile \ 27 | $(git show HEAD:./Dockerfile | awk ' 28 | toupper($1) == "COPY" { 29 | for (i = 2; i < NF; i++) { 30 | print $i 31 | } 32 | } 33 | ') 34 | ) 35 | } 36 | 37 | cat <<-EOH 38 | # this file is generated via https://github.com/tianon/docker-syncthing/blob/$(fileCommit "$self")/$self 39 | 40 | Maintainers: Tianon Gravi (@tianon) 41 | GitRepo: https://github.com/tianon/docker-syncthing.git 42 | EOH 43 | 44 | # prints "$2$1$3$1...$N" 45 | join() { 46 | local sep="$1"; shift 47 | local out; printf -v out "${sep//%/%%}%s" "$@" 48 | echo "${out#$sep}" 49 | } 50 | 51 | for version in "${versions[@]}"; do 52 | export version 53 | 54 | commit="$(dirCommit "$version")" 55 | 56 | fullVersion="$(jq -r '.[env.version].version' versions.json)" 57 | 58 | rcVersion="${version%-rc}" 59 | 60 | versionAliases=() 61 | if [ "$version" = "$rcVersion" ]; then 62 | while [ "$fullVersion" != "$rcVersion" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do 63 | versionAliases+=( $fullVersion ) 64 | fullVersion="${fullVersion%[.-]*}" 65 | done 66 | else 67 | versionAliases+=( $fullVersion ) 68 | fi 69 | versionAliases+=( 70 | $version 71 | ${aliases[$version]:-} 72 | ) 73 | 74 | from="$(awk '$1 == "FROM" { print $2; exit }' "$version/Dockerfile")" # TODO multi-stage build?? 75 | fromArches="$(bashbrew remote arches --json "$from" | jq -c '.arches | keys')" 76 | arches="$(jq -r --argjson fromArches "$fromArches" ' 77 | $fromArches - ($fromArches - (.[env.version].arches | keys)) 78 | | join(", ") 79 | ' versions.json)" 80 | [ -n "$arches" ] 81 | 82 | echo 83 | cat <<-EOE 84 | Tags: $(join ', ' "${versionAliases[@]}") 85 | GitCommit: $commit 86 | Directory: $version 87 | Architectures: $arches 88 | EOE 89 | done 90 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "$HOME" = '/home/user' ]; then 5 | echo >&2 'uh oh, HOME=/home/user' 6 | exit 1 7 | fi 8 | 9 | mkdir -p "$HOME/.config/syncthing" 10 | 11 | set -x 12 | docker run -d \ 13 | --name syncthing \ 14 | --restart always \ 15 | --user "$(id -u):$(id -g)" \ 16 | -v "$HOME:$HOME" \ 17 | -v "$HOME/.config/syncthing:/home/user/.config/syncthing" \ 18 | -v /etc:/etc \ 19 | -v /mnt:/mnt \ 20 | --net host \ 21 | -e STNODEFAULTFOLDER=1 \ 22 | -e STNOUPGRADE=1 \ 23 | tianon/syncthing:1 "$@" 24 | timeout 10s docker logs -f syncthing || true 25 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -Eeuo pipefail 3 | 4 | cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | ./versions.sh "$@" 7 | ./apply-templates.sh "$@" 8 | -------------------------------------------------------------------------------- /versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": { 3 | "commit": "0bf21d9db21b9e94327b8d385cc9818b50cc8a14", 4 | "ref": "refs/tags/v1.29.6^{}", 5 | "tag": "v1.29.6", 6 | "version": "1.29.6", 7 | "arches": { 8 | "dragonfly-amd64": { 9 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-dragonfly-amd64-v1.29.6.tar.gz", 10 | "sha256": "a02645b6943c12e59c701f8d9e4fbae12f22ba110d50826b32cdb5e8778fe22b", 11 | "apkArch": null 12 | }, 13 | "freebsd-i386": { 14 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-386-v1.29.6.tar.gz", 15 | "sha256": "602d18f73a375e979e8fffbb5fe0f172d816731c8d74cbd8034c5b31824fad19", 16 | "apkArch": null 17 | }, 18 | "freebsd-amd64": { 19 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-amd64-v1.29.6.tar.gz", 20 | "sha256": "a57552d4f691a0184cda643c331d401d0156e4aaf717ecba831c26f02cd15f1a", 21 | "apkArch": null 22 | }, 23 | "freebsd-arm32v5": { 24 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-arm-v1.29.6.tar.gz", 25 | "sha256": "2a7fb64edbd7bb3c53fcebd39817e8c76164d5db8902919e9a5eb5bc5dcf217c", 26 | "apkArch": null 27 | }, 28 | "freebsd-arm32v6": { 29 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-arm-v1.29.6.tar.gz", 30 | "sha256": "2a7fb64edbd7bb3c53fcebd39817e8c76164d5db8902919e9a5eb5bc5dcf217c", 31 | "apkArch": null 32 | }, 33 | "freebsd-arm32v7": { 34 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-arm-v1.29.6.tar.gz", 35 | "sha256": "2a7fb64edbd7bb3c53fcebd39817e8c76164d5db8902919e9a5eb5bc5dcf217c", 36 | "apkArch": null 37 | }, 38 | "freebsd-arm64v8": { 39 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-freebsd-arm64-v1.29.6.tar.gz", 40 | "sha256": "349b32deba95769dc25d837a2bb5adc9a56a72a977e784d06e4f4ca843546eff", 41 | "apkArch": null 42 | }, 43 | "illumos-amd64": { 44 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-illumos-amd64-v1.29.6.tar.gz", 45 | "sha256": "5ca474c9eafdab2b0b2a7b05e0a528d098f6cdc364c68d1e1b94d9bfba0e22d3", 46 | "apkArch": null 47 | }, 48 | "i386": { 49 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-386-v1.29.6.tar.gz", 50 | "sha256": "64009d988cd7cecd48bd84fd206f5ec555584cd6195b296938845ce79e56d4fe", 51 | "apkArch": "x86" 52 | }, 53 | "amd64": { 54 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-amd64-v1.29.6.tar.gz", 55 | "sha256": "422ae49c7f35a8b786596c73f6968fcb79fd50dfa559cf17dbb0cdf07e3b2537", 56 | "apkArch": "x86_64" 57 | }, 58 | "arm32v5": { 59 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm-v1.29.6.tar.gz", 60 | "sha256": "68dd086aba83073a0eb35148dcb7acd011b008e2e74385bdfffaf1eff266e6f7", 61 | "apkArch": null 62 | }, 63 | "arm32v6": { 64 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm-v1.29.6.tar.gz", 65 | "sha256": "68dd086aba83073a0eb35148dcb7acd011b008e2e74385bdfffaf1eff266e6f7", 66 | "apkArch": "armhf" 67 | }, 68 | "arm32v7": { 69 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm-v1.29.6.tar.gz", 70 | "sha256": "68dd086aba83073a0eb35148dcb7acd011b008e2e74385bdfffaf1eff266e6f7", 71 | "apkArch": "armv7" 72 | }, 73 | "arm64v8": { 74 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-arm64-v1.29.6.tar.gz", 75 | "sha256": "7bf0b75dcca970eedf9fb59325a546257f694eab06239d18b364f647bf6e9992", 76 | "apkArch": "aarch64" 77 | }, 78 | "loong64": { 79 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-loong64-v1.29.6.tar.gz", 80 | "sha256": "bb513fc18a87b2a4f5e7233e2ca188b60ccecd19d6125fbc96c6498309598c6e", 81 | "apkArch": null 82 | }, 83 | "mips": { 84 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-mips-v1.29.6.tar.gz", 85 | "sha256": "0a843b4e45a13a9003986d408c456700caadb55221134a3df3c9442ea93ddcdb", 86 | "apkArch": null 87 | }, 88 | "mips64": { 89 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-mips64-v1.29.6.tar.gz", 90 | "sha256": "ea4f499b1649e964872687dd25e5f4b920dba56a6df6365f94ee1ef1fb23734e", 91 | "apkArch": null 92 | }, 93 | "mips64le": { 94 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-mips64le-v1.29.6.tar.gz", 95 | "sha256": "5f58952929501b66f45b1525179a245624155c4253d0d59521b99a22ce9a1007", 96 | "apkArch": null 97 | }, 98 | "mipsle": { 99 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-mipsle-v1.29.6.tar.gz", 100 | "sha256": "9c5d8ea41a089fce5a8cd602f5daa853e5d2d4e345e7c39c5687c88f9f54ea61", 101 | "apkArch": null 102 | }, 103 | "ppc64": { 104 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-ppc64-v1.29.6.tar.gz", 105 | "sha256": "46cefdd83e32e94b404abb255778f994d82e88e7e24d19c822cc732775a267ad", 106 | "apkArch": null 107 | }, 108 | "ppc64le": { 109 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-ppc64le-v1.29.6.tar.gz", 110 | "sha256": "998eb17af40816a5ed8b65f24fb966f8d3d8d9695be75d443832896fb38ab7cf", 111 | "apkArch": "ppc64le" 112 | }, 113 | "riscv64": { 114 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-riscv64-v1.29.6.tar.gz", 115 | "sha256": "272a84794cff6d4d697862fa03e590cb76ba35a3b9c32e4c2d2140eadc283ebe", 116 | "apkArch": "riscv64" 117 | }, 118 | "s390x": { 119 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-linux-s390x-v1.29.6.tar.gz", 120 | "sha256": "ba620c8c00b5d084a26d72da8dad582c44776e131fb893b04922c32f155f4b65", 121 | "apkArch": "s390x" 122 | }, 123 | "netbsd-amd64": { 124 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-netbsd-amd64-v1.29.6.tar.gz", 125 | "sha256": "5348b156eb762e6ceba273c29261de6b7695aa6df1fb41267eb3898fd2f0c2d3", 126 | "apkArch": null 127 | }, 128 | "netbsd-arm32v5": { 129 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-netbsd-arm-v1.29.6.tar.gz", 130 | "sha256": "04b294e9931fc10ec1077b5bb139e2390f6484ae6f51817675bb0587180abb20", 131 | "apkArch": null 132 | }, 133 | "netbsd-arm32v6": { 134 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-netbsd-arm-v1.29.6.tar.gz", 135 | "sha256": "04b294e9931fc10ec1077b5bb139e2390f6484ae6f51817675bb0587180abb20", 136 | "apkArch": null 137 | }, 138 | "netbsd-arm32v7": { 139 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-netbsd-arm-v1.29.6.tar.gz", 140 | "sha256": "04b294e9931fc10ec1077b5bb139e2390f6484ae6f51817675bb0587180abb20", 141 | "apkArch": null 142 | }, 143 | "netbsd-arm64v8": { 144 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-netbsd-arm64-v1.29.6.tar.gz", 145 | "sha256": "e5331d52aada6ac952c3550151ce5432ec55044b53d06408e0db56ce06e8c365", 146 | "apkArch": null 147 | }, 148 | "openbsd-i386": { 149 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-386-v1.29.6.tar.gz", 150 | "sha256": "83fc8df55fa5a35f1e1a811ff94223521d8f4a381d92cb6aee12165717f849c5", 151 | "apkArch": null 152 | }, 153 | "openbsd-amd64": { 154 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-amd64-v1.29.6.tar.gz", 155 | "sha256": "cb8fffe0431dffff155f4242501e22ab88a473f6be06c89b834c022c0b79fbc8", 156 | "apkArch": null 157 | }, 158 | "openbsd-arm32v5": { 159 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-arm-v1.29.6.tar.gz", 160 | "sha256": "3065a08bff9f2260914c428b091df368aa80282db541231a9b4bbfade5998d0c", 161 | "apkArch": null 162 | }, 163 | "openbsd-arm32v6": { 164 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-arm-v1.29.6.tar.gz", 165 | "sha256": "3065a08bff9f2260914c428b091df368aa80282db541231a9b4bbfade5998d0c", 166 | "apkArch": null 167 | }, 168 | "openbsd-arm32v7": { 169 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-arm-v1.29.6.tar.gz", 170 | "sha256": "3065a08bff9f2260914c428b091df368aa80282db541231a9b4bbfade5998d0c", 171 | "apkArch": null 172 | }, 173 | "openbsd-arm64v8": { 174 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-arm64-v1.29.6.tar.gz", 175 | "sha256": "3d029ee049993b2b0dc5c56040be33bd058660c36b1b8180e7f6851233df1a39", 176 | "apkArch": null 177 | }, 178 | "openbsd-riscv64": { 179 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-openbsd-riscv64-v1.29.6.tar.gz", 180 | "sha256": "2156c03b4300e22ea4b27c7547ac052af540bcffa5ce3ea825ec28f3b48b9695", 181 | "apkArch": null 182 | }, 183 | "solaris-amd64": { 184 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-solaris-amd64-v1.29.6.tar.gz", 185 | "sha256": "fb13a55ab4fb84c1426aaa49281ca3adae9df0e82dcb8f1075c9d3b623539dde", 186 | "apkArch": null 187 | }, 188 | "darwin-amd64": { 189 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-macos-amd64-v1.29.6.zip", 190 | "sha256": "a13d9ba9bcc6ee7c4ed1b7f81d5010f039604b0af31abb570cfb499f21f17178", 191 | "apkArch": null 192 | }, 193 | "darwin-arm64v8": { 194 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-macos-arm64-v1.29.6.zip", 195 | "sha256": "3f98943271d2950a5a73c2e95c14547be654f3e548aa704d131013d2da48feda", 196 | "apkArch": null 197 | }, 198 | "windows-i386": { 199 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-386-v1.29.6.zip", 200 | "sha256": "aab5677388ee12452ffa87f32a9ee1beb6ae80a0ce3eb4e6512cad81410b1725", 201 | "apkArch": null 202 | }, 203 | "windows-amd64": { 204 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-amd64-v1.29.6.zip", 205 | "sha256": "68dd18fd3d48f7187f3c86622ec5e817c23d7dcb83be0dbd76f70be8c96e770a", 206 | "apkArch": null 207 | }, 208 | "windows-arm32v5": { 209 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-arm-v1.29.6.zip", 210 | "sha256": "4de9a7c4522307aae59014dbe783c112fa214a763af471c355173456aa1c26c4", 211 | "apkArch": null 212 | }, 213 | "windows-arm32v6": { 214 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-arm-v1.29.6.zip", 215 | "sha256": "4de9a7c4522307aae59014dbe783c112fa214a763af471c355173456aa1c26c4", 216 | "apkArch": null 217 | }, 218 | "windows-arm32v7": { 219 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-arm-v1.29.6.zip", 220 | "sha256": "4de9a7c4522307aae59014dbe783c112fa214a763af471c355173456aa1c26c4", 221 | "apkArch": null 222 | }, 223 | "windows-arm64v8": { 224 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.6/syncthing-windows-arm64-v1.29.6.zip", 225 | "sha256": "3caae410824bae79d4933c0fd4c378efb12a2ac676b14fd5c0ea41b3a0a1485d", 226 | "apkArch": null 227 | } 228 | } 229 | }, 230 | "1-rc": { 231 | "commit": "40660c5fb70556e9b1529de751de140c3142ade0", 232 | "ref": "refs/tags/v1.29.7-rc.3^{}", 233 | "tag": "v1.29.7-rc.3", 234 | "version": "1.29.7-rc.3", 235 | "arches": { 236 | "dragonfly-amd64": { 237 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-dragonfly-amd64-v1.29.7-rc.3.tar.gz", 238 | "sha256": "e594cd8f38c62cc844b3efa146f78cf280ca1495f19d321d4d5503c24b821bf0", 239 | "apkArch": null 240 | }, 241 | "freebsd-i386": { 242 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-386-v1.29.7-rc.3.tar.gz", 243 | "sha256": "ca00f9ed25b76a72def93668728c2a1b7c8cca839de0f0059b236684e0f4f7c1", 244 | "apkArch": null 245 | }, 246 | "freebsd-amd64": { 247 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-amd64-v1.29.7-rc.3.tar.gz", 248 | "sha256": "43ac648cf70417c5592be47e4e8b455488a74ffba0350227fb5e8f3cd43ed38a", 249 | "apkArch": null 250 | }, 251 | "freebsd-arm32v5": { 252 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-arm-v1.29.7-rc.3.tar.gz", 253 | "sha256": "6c66df0bdeb44759542a767b1d0fbc2b83da062cc956a2bff2a8a414b2413a35", 254 | "apkArch": null 255 | }, 256 | "freebsd-arm32v6": { 257 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-arm-v1.29.7-rc.3.tar.gz", 258 | "sha256": "6c66df0bdeb44759542a767b1d0fbc2b83da062cc956a2bff2a8a414b2413a35", 259 | "apkArch": null 260 | }, 261 | "freebsd-arm32v7": { 262 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-arm-v1.29.7-rc.3.tar.gz", 263 | "sha256": "6c66df0bdeb44759542a767b1d0fbc2b83da062cc956a2bff2a8a414b2413a35", 264 | "apkArch": null 265 | }, 266 | "freebsd-arm64v8": { 267 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-freebsd-arm64-v1.29.7-rc.3.tar.gz", 268 | "sha256": "262ed421a7d853ac7b4e4efa58e4363ffb8d222f78568f7052e49a2d5a1a86de", 269 | "apkArch": null 270 | }, 271 | "illumos-amd64": { 272 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-illumos-amd64-v1.29.7-rc.3.tar.gz", 273 | "sha256": "70b2b0697a1953444740ae9544faf89923cb6fa9afe4ca238183353c8331b601", 274 | "apkArch": null 275 | }, 276 | "i386": { 277 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-386-v1.29.7-rc.3.tar.gz", 278 | "sha256": "c254d0c0daea48516cf53eff3c1819b0cb200eb48d8593b9c363186fccbf04fb", 279 | "apkArch": "x86" 280 | }, 281 | "amd64": { 282 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-amd64-v1.29.7-rc.3.tar.gz", 283 | "sha256": "bd691855ffe9f5d1831f2a8aeadb69fcd9820665bf11b0700e0a056358212680", 284 | "apkArch": "x86_64" 285 | }, 286 | "arm32v5": { 287 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm-v1.29.7-rc.3.tar.gz", 288 | "sha256": "76a3b7f8b5cf597f0e41fd1c50e6a60a610fd11f5c644ce5b52b9082e8f8758e", 289 | "apkArch": null 290 | }, 291 | "arm32v6": { 292 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm-v1.29.7-rc.3.tar.gz", 293 | "sha256": "76a3b7f8b5cf597f0e41fd1c50e6a60a610fd11f5c644ce5b52b9082e8f8758e", 294 | "apkArch": "armhf" 295 | }, 296 | "arm32v7": { 297 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm-v1.29.7-rc.3.tar.gz", 298 | "sha256": "76a3b7f8b5cf597f0e41fd1c50e6a60a610fd11f5c644ce5b52b9082e8f8758e", 299 | "apkArch": "armv7" 300 | }, 301 | "arm64v8": { 302 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-arm64-v1.29.7-rc.3.tar.gz", 303 | "sha256": "ad1272e253f05969bd18e3bab422f88bec1d1f668d541a015273bfd0c9c6bb58", 304 | "apkArch": "aarch64" 305 | }, 306 | "loong64": { 307 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-loong64-v1.29.7-rc.3.tar.gz", 308 | "sha256": "364030f74d4b1ce780e0174b82ad7c1424111f737c7d3ec0a4848836dee5c1a4", 309 | "apkArch": null 310 | }, 311 | "mips": { 312 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-mips-v1.29.7-rc.3.tar.gz", 313 | "sha256": "2f3b73f422cb38fe5bb8b37038d36437aa64851f1351def0b2cde5210b9b037e", 314 | "apkArch": null 315 | }, 316 | "mips64": { 317 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-mips64-v1.29.7-rc.3.tar.gz", 318 | "sha256": "c188d03cf52b62f17795bf80d48713f22b0872871488fddd1eb4157c413c01d0", 319 | "apkArch": null 320 | }, 321 | "mips64le": { 322 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-mips64le-v1.29.7-rc.3.tar.gz", 323 | "sha256": "cfa0108a5f76066509e3ff5931fcd5d7841837edf846239a5daa328061ca7012", 324 | "apkArch": null 325 | }, 326 | "mipsle": { 327 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-mipsle-v1.29.7-rc.3.tar.gz", 328 | "sha256": "099142f8c92a18a3ee3fbd6dd9c99a3665054d00668431552f442befecafd7aa", 329 | "apkArch": null 330 | }, 331 | "ppc64": { 332 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-ppc64-v1.29.7-rc.3.tar.gz", 333 | "sha256": "b9f889b1b8f28c0c069f1445947947889d32858e1c1e3fc998bf56e5cc0f90eb", 334 | "apkArch": null 335 | }, 336 | "ppc64le": { 337 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-ppc64le-v1.29.7-rc.3.tar.gz", 338 | "sha256": "d8e8bc6f0281550e6ae0b731ae9cb58b17ae2a42a06fd6d32615e317073ce47b", 339 | "apkArch": "ppc64le" 340 | }, 341 | "riscv64": { 342 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-riscv64-v1.29.7-rc.3.tar.gz", 343 | "sha256": "f77c14222333081c9bd5c86d9bf6221c3240737d29d5b9220586e3c6b39fdbc2", 344 | "apkArch": "riscv64" 345 | }, 346 | "s390x": { 347 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-linux-s390x-v1.29.7-rc.3.tar.gz", 348 | "sha256": "4fd2a702d317fbd5b812335e09ef834e33064a3a69a2090a4f97849e74fb6705", 349 | "apkArch": "s390x" 350 | }, 351 | "netbsd-amd64": { 352 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-netbsd-amd64-v1.29.7-rc.3.tar.gz", 353 | "sha256": "4911c9451f49994120f8d04940cd1523fd7452e590b94ef2605cb2ccc96a9f84", 354 | "apkArch": null 355 | }, 356 | "netbsd-arm32v5": { 357 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-netbsd-arm-v1.29.7-rc.3.tar.gz", 358 | "sha256": "86209a2f111376971bf9afc8b885f82f4dbed71358c11c652c06ad67b9db01ca", 359 | "apkArch": null 360 | }, 361 | "netbsd-arm32v6": { 362 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-netbsd-arm-v1.29.7-rc.3.tar.gz", 363 | "sha256": "86209a2f111376971bf9afc8b885f82f4dbed71358c11c652c06ad67b9db01ca", 364 | "apkArch": null 365 | }, 366 | "netbsd-arm32v7": { 367 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-netbsd-arm-v1.29.7-rc.3.tar.gz", 368 | "sha256": "86209a2f111376971bf9afc8b885f82f4dbed71358c11c652c06ad67b9db01ca", 369 | "apkArch": null 370 | }, 371 | "netbsd-arm64v8": { 372 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-netbsd-arm64-v1.29.7-rc.3.tar.gz", 373 | "sha256": "f95c876c1db8ef8abd053c68b0dd4216183764f31ba8f94f3627ea0465dfadcf", 374 | "apkArch": null 375 | }, 376 | "openbsd-i386": { 377 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-386-v1.29.7-rc.3.tar.gz", 378 | "sha256": "b5ab2d2eaa233b01f203e0c0ed4e3eac52d8346b23e993948268b2d115cbf521", 379 | "apkArch": null 380 | }, 381 | "openbsd-amd64": { 382 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-amd64-v1.29.7-rc.3.tar.gz", 383 | "sha256": "bf54cd50f384b421cbf0b3a0af4d774191717d8e5edb4844eae13a33248cddc0", 384 | "apkArch": null 385 | }, 386 | "openbsd-arm32v5": { 387 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-arm-v1.29.7-rc.3.tar.gz", 388 | "sha256": "b192596b1d97d25f2f3ebf815ab2642466ba334651041c3777b531953e99af80", 389 | "apkArch": null 390 | }, 391 | "openbsd-arm32v6": { 392 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-arm-v1.29.7-rc.3.tar.gz", 393 | "sha256": "b192596b1d97d25f2f3ebf815ab2642466ba334651041c3777b531953e99af80", 394 | "apkArch": null 395 | }, 396 | "openbsd-arm32v7": { 397 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-arm-v1.29.7-rc.3.tar.gz", 398 | "sha256": "b192596b1d97d25f2f3ebf815ab2642466ba334651041c3777b531953e99af80", 399 | "apkArch": null 400 | }, 401 | "openbsd-arm64v8": { 402 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-arm64-v1.29.7-rc.3.tar.gz", 403 | "sha256": "f13e51f14eb4f6b0aaf8d7b3927ac90757d4d8e175b0c2f217db1401ce66f73c", 404 | "apkArch": null 405 | }, 406 | "openbsd-riscv64": { 407 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-openbsd-riscv64-v1.29.7-rc.3.tar.gz", 408 | "sha256": "7e2d9ff46db59607dcab983bd64daa401fae08104f7aa73913a63985b9083e59", 409 | "apkArch": null 410 | }, 411 | "solaris-amd64": { 412 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-solaris-amd64-v1.29.7-rc.3.tar.gz", 413 | "sha256": "308966b62e7d6e9e5f1a3013664710cd165bcd1ab2578b10034703937136d291", 414 | "apkArch": null 415 | }, 416 | "darwin-amd64": { 417 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-macos-amd64-v1.29.7-rc.3.zip", 418 | "sha256": "0130ffb249064e7c41478a51fdcbbd194681afd0099a541c7c317ba4bc930745", 419 | "apkArch": null 420 | }, 421 | "darwin-arm64v8": { 422 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-macos-arm64-v1.29.7-rc.3.zip", 423 | "sha256": "c3b83426f8b317a16028af51d5946dccf4a25cfb83da921e81c5faa188a31d68", 424 | "apkArch": null 425 | }, 426 | "windows-i386": { 427 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-386-v1.29.7-rc.3.zip", 428 | "sha256": "424558ed1546df7269c926d79dd705e3bf155797ebda168db2d0b6dc1cbb66a9", 429 | "apkArch": null 430 | }, 431 | "windows-amd64": { 432 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-amd64-v1.29.7-rc.3.zip", 433 | "sha256": "86621e85fc5af9e3be98c40406f6057b46ccc9aafb4e43365c48c0ae7290b594", 434 | "apkArch": null 435 | }, 436 | "windows-arm32v5": { 437 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-arm-v1.29.7-rc.3.zip", 438 | "sha256": "149b39f34b7b4877c8d3dfed6d19fcb23687401e68001af595ca99b377a1467b", 439 | "apkArch": null 440 | }, 441 | "windows-arm32v6": { 442 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-arm-v1.29.7-rc.3.zip", 443 | "sha256": "149b39f34b7b4877c8d3dfed6d19fcb23687401e68001af595ca99b377a1467b", 444 | "apkArch": null 445 | }, 446 | "windows-arm32v7": { 447 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-arm-v1.29.7-rc.3.zip", 448 | "sha256": "149b39f34b7b4877c8d3dfed6d19fcb23687401e68001af595ca99b377a1467b", 449 | "apkArch": null 450 | }, 451 | "windows-arm64v8": { 452 | "url": "https://github.com/syncthing/syncthing/releases/download/v1.29.7-rc.3/syncthing-windows-arm64-v1.29.7-rc.3.zip", 453 | "sha256": "0543a1bf9e19a52b65b4daaaba969edf7a42db0b5a6a12bd35d3bd83ae5fecaf", 454 | "apkArch": null 455 | } 456 | } 457 | }, 458 | "2-rc": { 459 | "commit": "79bac43800108aaf5bbf9e39c34930e99e207c28", 460 | "ref": "refs/tags/v2.0.0-rc.18^{}", 461 | "tag": "v2.0.0-rc.18", 462 | "version": "2.0.0-rc.18", 463 | "arches": { 464 | "freebsd-i386": { 465 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-386-v2.0.0-rc.18.tar.gz", 466 | "sha256": "db66d54b82eb53421516f3542e4d35a35085f0c9b53549825bd2211adaf2acd4", 467 | "apkArch": null 468 | }, 469 | "freebsd-amd64": { 470 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-amd64-v2.0.0-rc.18.tar.gz", 471 | "sha256": "6cb0ceb0bb08666ffbdd13b4d3d3f8ebe893bf00a5027456b754a0779dd4d68f", 472 | "apkArch": null 473 | }, 474 | "freebsd-arm32v5": { 475 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-arm-v2.0.0-rc.18.tar.gz", 476 | "sha256": "1f634b7315ab32226d956168b52217cff1425ceb43d5f2d5cff3face72d31239", 477 | "apkArch": null 478 | }, 479 | "freebsd-arm32v6": { 480 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-arm-v2.0.0-rc.18.tar.gz", 481 | "sha256": "1f634b7315ab32226d956168b52217cff1425ceb43d5f2d5cff3face72d31239", 482 | "apkArch": null 483 | }, 484 | "freebsd-arm32v7": { 485 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-arm-v2.0.0-rc.18.tar.gz", 486 | "sha256": "1f634b7315ab32226d956168b52217cff1425ceb43d5f2d5cff3face72d31239", 487 | "apkArch": null 488 | }, 489 | "freebsd-arm64v8": { 490 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-freebsd-arm64-v2.0.0-rc.18.tar.gz", 491 | "sha256": "18b3b0220373a1580c2d47f9cee469bcb2ed4026129953ba3e3345fc67c9d4d2", 492 | "apkArch": null 493 | }, 494 | "i386": { 495 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-386-v2.0.0-rc.18.tar.gz", 496 | "sha256": "c1dde7f62b55c36d3a57f605ad244bd3b516ab3a858c277230cdeb42d0126f3e", 497 | "apkArch": "x86" 498 | }, 499 | "amd64": { 500 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-amd64-v2.0.0-rc.18.tar.gz", 501 | "sha256": "b443d07c8f8e1c57894f28f0f48757734d99c53ea544c50d9b12687d48bb9d4a", 502 | "apkArch": "x86_64" 503 | }, 504 | "arm32v5": { 505 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm-v2.0.0-rc.18.tar.gz", 506 | "sha256": "ac86b395dfd16a69140d2469361057ba59218097c667a87354b3967d05ed81ae", 507 | "apkArch": null 508 | }, 509 | "arm32v6": { 510 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm-v2.0.0-rc.18.tar.gz", 511 | "sha256": "ac86b395dfd16a69140d2469361057ba59218097c667a87354b3967d05ed81ae", 512 | "apkArch": "armhf" 513 | }, 514 | "arm32v7": { 515 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm-v2.0.0-rc.18.tar.gz", 516 | "sha256": "ac86b395dfd16a69140d2469361057ba59218097c667a87354b3967d05ed81ae", 517 | "apkArch": "armv7" 518 | }, 519 | "arm64v8": { 520 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-arm64-v2.0.0-rc.18.tar.gz", 521 | "sha256": "f373cc87c9949a57aa97ee7765017589b4a286ac3cd7ec9db1b2d6098ac0b8ee", 522 | "apkArch": "aarch64" 523 | }, 524 | "loong64": { 525 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-loong64-v2.0.0-rc.18.tar.gz", 526 | "sha256": "7d79b9c7f1b71dd8b67730080bcf5634aef51ecffae2a314f43e96d4859aac08", 527 | "apkArch": null 528 | }, 529 | "mips": { 530 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-mips-v2.0.0-rc.18.tar.gz", 531 | "sha256": "077e0b3c5a54af009fc155aa1bdf0220674533f3e65fcdecfab90394b88e2dab", 532 | "apkArch": null 533 | }, 534 | "mips64": { 535 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-mips64-v2.0.0-rc.18.tar.gz", 536 | "sha256": "2a9d034fbe687123164f8d165b8a8d6e775829800423c9525ea5205ef6e5352e", 537 | "apkArch": null 538 | }, 539 | "mips64le": { 540 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-mips64le-v2.0.0-rc.18.tar.gz", 541 | "sha256": "b78af3d0d67955d8e545df013e50b3ac5cab1fd2823f479814162a1669675aac", 542 | "apkArch": null 543 | }, 544 | "mipsle": { 545 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-mipsle-v2.0.0-rc.18.tar.gz", 546 | "sha256": "36cc46f3b1cb6a22404c6fb26dd13f6e09ae757b60286fe51deaf8da7abec581", 547 | "apkArch": null 548 | }, 549 | "ppc64le": { 550 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-ppc64le-v2.0.0-rc.18.tar.gz", 551 | "sha256": "84e1ddcd489730566edc6be78ae0d3f60ed637918f675bcec651abb992a874c2", 552 | "apkArch": "ppc64le" 553 | }, 554 | "riscv64": { 555 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-riscv64-v2.0.0-rc.18.tar.gz", 556 | "sha256": "9efe1f5ae9a00ef76deee75b435ec23bfe6830d0a3ab413cb0d51ba84cf59e3f", 557 | "apkArch": "riscv64" 558 | }, 559 | "s390x": { 560 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-linux-s390x-v2.0.0-rc.18.tar.gz", 561 | "sha256": "c78b0b6ad724d244c70c855e1daa3290f8073dede68c54e69b764e101f747c66", 562 | "apkArch": "s390x" 563 | }, 564 | "openbsd-amd64": { 565 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-openbsd-amd64-v2.0.0-rc.18.tar.gz", 566 | "sha256": "1448f8ab292e5152e6d94586438758cae8f60a0ebb6bc264b665eb0e6bc58a0c", 567 | "apkArch": null 568 | }, 569 | "openbsd-arm64v8": { 570 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-openbsd-arm64-v2.0.0-rc.18.tar.gz", 571 | "sha256": "8aa7fdf20095e2492a7bb2518f20ebc6a70a5b70852fa36dc084b306945ac6ce", 572 | "apkArch": null 573 | }, 574 | "darwin-amd64": { 575 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-macos-amd64-v2.0.0-rc.18.zip", 576 | "sha256": "ee6c3e8a51cc53e16552e3c2c0284cb928e67d6b449546f3e48140ed8c862170", 577 | "apkArch": null 578 | }, 579 | "darwin-arm64v8": { 580 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-macos-arm64-v2.0.0-rc.18.zip", 581 | "sha256": "8083eaf58254439f2fefac0a33cdbaa60f2fd81517e0d2e446b1174a7166772f", 582 | "apkArch": null 583 | }, 584 | "windows-i386": { 585 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-windows-386-v2.0.0-rc.18.zip", 586 | "sha256": "6a1856f0ace2588a4005a70dcaf67979bcfa90b3049ef494397d836963fdae49", 587 | "apkArch": null 588 | }, 589 | "windows-amd64": { 590 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-windows-amd64-v2.0.0-rc.18.zip", 591 | "sha256": "1519e3cd88869cfd7ea79f02045f34077d4add522a0a5200d6a13b5fa9156f03", 592 | "apkArch": null 593 | }, 594 | "windows-arm64v8": { 595 | "url": "https://github.com/syncthing/syncthing/releases/download/v2.0.0-rc.18/syncthing-windows-arm64-v2.0.0-rc.18.zip", 596 | "sha256": "40d0e520b3b5f8ad74935b8f2635f616e9de871f4a79ded5d69a9f970b7a91ee", 597 | "apkArch": null 598 | } 599 | } 600 | } 601 | } 602 | -------------------------------------------------------------------------------- /versions.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -Eeuo pipefail 3 | 4 | if [ -z "${TIANON_DOCKERFILES:-}" ] && [ -x ~/docker/dockerfiles/.libs/git.sh ]; then 5 | TIANON_DOCKERFILES=~/docker/dockerfiles 6 | fi 7 | [ -d "$TIANON_DOCKERFILES" ] 8 | source "$TIANON_DOCKERFILES/.libs/git.sh" 9 | 10 | versions=( "$@" ) 11 | if [ ${#versions[@]} -eq 0 ]; then 12 | versions=( */ ) 13 | json='{}' 14 | else 15 | json="$(< versions.json)" 16 | fi 17 | versions=( "${versions[@]%/}" ) 18 | 19 | hook_version() { 20 | local rcVersion="${folder%-rc}" 21 | case "$3" in 22 | "$rcVersion" | "$rcVersion"[.-]*) 23 | return 0 24 | ;; 25 | esac 26 | return 1 27 | } 28 | versions_hooks+=( hook_version ) 29 | 30 | hook_rc-status() { 31 | local rc=1 ga=0 32 | if [[ "$folder" == *-rc ]]; then 33 | rc=0 ga=1 34 | fi 35 | if ! hook_no-prereleases "$@"; then 36 | return "$rc" 37 | fi 38 | return "$ga" 39 | } 40 | versions_hooks+=( hook_rc-status ) 41 | 42 | hook_sha256() { 43 | local version="$3" 44 | local sha256 urlBase="https://github.com/syncthing/syncthing/releases/download/v$version" 45 | sha256="$(wget -qO- "$urlBase/sha256sum.txt.asc")" || return 1 46 | local json 47 | json="$(jq <<<"$sha256" -csR --arg urlBase "$urlBase" -L"$TIANON_DOCKERFILES/.libs" ' 48 | include "lib" 49 | ; 50 | split("\n") 51 | | map( 52 | capture("^(?[0-9a-f]{64}) [ *](?syncthing-(?[^.-]+)-(?[^.-]+)-v[0-9.-]+[.].*)$") 53 | | select(.goos == "macos" and .goarch == "universal" | not) 54 | | .goos |= ({ 55 | "macos": "darwin", 56 | }[.] // .) 57 | | .arch = ({ 58 | "386": "i386", 59 | "arm": ("arm32v5", "arm32v6", "arm32v7"), # https://github.com/syncthing/syncthing/blob/541572781b1b089ad7fb5cac124858166410d5c7/.github/workflows/build-syncthing.yaml#L19 (GOARM: "5") 60 | "arm64": "arm64v8", 61 | }[.goarch] // .goarch) 62 | | if .goos == "linux" then . else 63 | .arch = .goos + "-" + .arch 64 | end 65 | | { (.arch): { 66 | url: ($urlBase + "/" + .file), 67 | sha256: .sha256, 68 | apkArch: (.arch | apk_arch), 69 | } } 70 | ) 71 | | { arches: add } 72 | ')" || return 1 73 | jq <<<"$json" -e '.arches | has("amd64") and has("arm64v8")' > /dev/null || return 1 # sanity check 74 | printf '%s\n' "$json" 75 | } 76 | versions_hooks+=( hook_sha256 ) 77 | 78 | for folder in "${versions[@]}"; do 79 | export folder 80 | 81 | echo "finding $folder ..." 82 | doc="$(git-tags 'https://github.com/syncthing/syncthing.git')" 83 | 84 | json="$(jq <<<"$json" -c --argjson doc "$doc" '.[env.folder] = $doc')" 85 | done 86 | 87 | jq <<<"$json" 'to_entries | sort_by(.key) | from_entries' > versions.json 88 | --------------------------------------------------------------------------------