Skip to content

Commit a6a545f

Browse files
committed
update currect upstream changes expect drop 3.0
ref: docker-library/ruby@cfb3148
1 parent 22517e4 commit a6a545f

File tree

9 files changed

+342
-170
lines changed

9 files changed

+342
-170
lines changed

.github/workflows/docker-publish.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,31 @@ defaults:
1313
run:
1414
shell: 'bash -Eeuo pipefail -x {0}'
1515

16+
concurrency:
17+
group: ${{ github.ref }}
18+
cancel-in-progress: true
19+
20+
permissions:
21+
contents: read
22+
1623
jobs:
1724
generate-jobs:
1825
name: Generate Jobs
1926
runs-on: ubuntu-latest
2027
outputs:
2128
strategy: ${{ steps.generate-jobs.outputs.strategy }}
2229
steps:
23-
- uses: actions/checkout@v3
30+
- uses: actions/checkout@v4
2431
- uses: docker-library/bashbrew@HEAD
2532
- id: generate-jobs
2633
name: Generate Jobs
2734
run: |
2835
export BASHBREW_NAMESPACE=jiting
2936
strategy="$("$BASHBREW_SCRIPTS/github-actions/generate.sh" | jq --compact-output --unbuffered '. |= .+ {"max-parallel": 2}')"
30-
echo "strategy=$strategy" >> "$GITHUB_OUTPUT"
31-
jq . <<<"$strategy" # sanity check / debugging aid
37+
EOF="EOF-$RANDOM-$RANDOM-$RANDOM"
38+
echo "strategy<<$EOF" >> "$GITHUB_OUTPUT"
39+
jq <<<"$strategy" . | tee -a "$GITHUB_OUTPUT"
40+
echo "$EOF" >> "$GITHUB_OUTPUT"
3241
3342
build:
3443
needs: generate-jobs
@@ -37,7 +46,7 @@ jobs:
3746
runs-on: ${{ matrix.os }}
3847
steps:
3948
- name: Checkout
40-
uses: actions/checkout@v3
49+
uses: actions/checkout@v4
4150
-
4251
name: Set up QEMU
4352
uses: docker/setup-qemu-action@v2

.github/workflows/verify-templating.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
name: Check For Uncomitted Changes
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v3
16+
- uses: actions/checkout@v4
1717
- name: Apply Templates
1818
run: ./apply-templates.sh
1919
- name: Check Git Status

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
.jq-template.awk
1+
.jq-template.awk
2+
.yq*

Dockerfile.template

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,17 @@ RUN set -eux; \
5050
} >> /usr/local/etc/gemrc
5151

5252
ENV LANG C.UTF-8
53+
54+
# https://www.ruby-lang.org/{{ .post | ltrimstr("/") }}
55+
{{ if env.version == "3.0" then ( -}}
5356
ENV RUBY_MAJOR {{ env.version }}
5457
ENV RUBY_VERSION {{ .version }}
55-
ENV RUBY_DOWNLOAD_SHA256 {{ .sha256 }}
58+
ENV RUBY_DOWNLOAD_SHA256 {{ .sha256.xz }}
59+
{{ ) else ( -}}
60+
ENV RUBY_VERSION {{ .version }}
61+
ENV RUBY_DOWNLOAD_URL {{ .url.xz }}
62+
ENV RUBY_DOWNLOAD_SHA256 {{ .sha256.xz }}
63+
{{ ) end -}}
5664

5765
ENV jemalloc_pkgver 3.6.0
5866
ENV jemalloc_sha256 e16c2159dd3c81ca2dc3b5c9ef0d43e1f2f45b04548f42db12e7c12d7bdf84fe
@@ -65,7 +73,10 @@ RUN set -eux; \
6573
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
6674
apk add --no-cache --virtual .ruby-builddeps \
6775
autoconf \
76+
{{ if env.version | rtrimstr("-rc") | IN("3.0", "3.1", "3.2") then ( -}}
77+
{{ # https://github.com/docker-library/ruby/pull/438 -}}
6878
bison \
79+
{{ ) else "" end -}}
6980
bzip2 \
7081
bzip2-dev \
7182
ca-certificates \
@@ -86,7 +97,7 @@ RUN set -eux; \
8697
openssl-dev \
8798
patch \
8899
procps \
89-
{{ if [ "3.0", "3.1", "3.2" ] | index(env.version | rtrimstr("-rc")) then ( -}}
100+
{{ if env.version | rtrimstr("-rc") | IN("3.0", "3.1", "3.2") then ( -}}
90101
readline-dev \
91102
{{ ) else "" end -}}
92103
ruby \
@@ -99,7 +110,10 @@ RUN set -eux; \
99110
savedAptMark="$(apt-mark showmanual)"; \
100111
apt-get update; \
101112
apt-get install -y --no-install-recommends \
113+
{{ if env.version | rtrimstr("-rc") | IN("3.0", "3.1", "3.2") then ( -}}
114+
{{ # https://github.com/docker-library/ruby/pull/438 -}}
102115
bison \
116+
{{ ) else "" end -}}
103117
dpkg-dev \
104118
libgdbm-dev \
105119
ruby \
@@ -111,7 +125,7 @@ RUN set -eux; \
111125
libgdbm-compat-dev \
112126
libglib2.0-dev \
113127
libncurses-dev \
114-
{{ if [ "3.0", "3.1", "3.2" ] | index(env.version | rtrimstr("-rc")) then ( -}}
128+
{{ if env.version | rtrimstr("-rc") | IN("3.0", "3.1", "3.2") then ( -}}
115129
libreadline-dev \
116130
{{ ) else "" end -}}
117131
libxml2-dev \
@@ -204,7 +218,12 @@ RUN set -eux; \
204218
strip --strip-debug "/usr/lib/libjemalloc.so" && rm -rf "/usr/lib/pkgconfig"; \
205219
cd / && rm -rf /jemalloc-stable; \
206220
\
221+
{{ if env.version == "3.0" then ( -}}
222+
{{ if .url.xz != "https://cache.ruby-lang.org/pub/ruby/\(env.version | rtrimstr("-rc"))/ruby-\(.version).tar.xz" then error("url for \(.version) is not as expected!") else "" end -}}
207223
wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"; \
224+
{{ ) else ( -}}
225+
wget -O ruby.tar.xz "$RUBY_DOWNLOAD_URL"; \
226+
{{ ) end -}}
208227
echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum --check --strict; \
209228
\
210229
mkdir -p /usr/src/ruby; \
@@ -267,19 +286,19 @@ RUN set -eux; \
267286
esac; \
268287
{{ ) else "" end -}}
269288
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
270-
{{ if ( [ "3.1" ] | index(env.version) ) then ( -}}
289+
{{ if env.version | rtrimstr("-rc") | IN("3.1") then ( -}}
271290
# add ruby 3.1 jemalloc patch
272291
wget -O 'ruby_31_jemalloc.patch' 'https://raw.githubusercontent.com/fullstaq-ruby/server-edition/main/resources/ruby_31_jemalloc.patch'; \
273292
patch -p1 -ti ruby_31_jemalloc.patch; \
274293
rm ruby_31_jemalloc.patch; \
275294
{{ ) else "" end -}}
276-
{{ if ( [ "3.3-rc" ] | index(env.version) ) then ( -}}
295+
{{ if env.version | IN("3.3-rc") then ( -}}
277296
# add ruby 3.3-rc(preview3) jemalloc patch
278297
wget -O 'ruby_33_preview3_jemalloc.patch' 'https://gist.githubusercontent.com/jitingcn/16c492b36575112febe1c82d3e45fe2a/raw/751ad215e3e2f12a3a00a55f649355826aab4ce4/ruby_33_preview3_jemalloc.patch'; \
279298
patch -p1 -ti ruby_33_preview3_jemalloc.patch; \
280299
rm ruby_33_preview3_jemalloc.patch; \
281300
{{ ) else "" end -}}
282-
{{ if ( [ "3.2" ] | index(env.version) ) then ( -}}
301+
{{ if env.version | rtrimstr("-rc") | IN("3.2") then ( -}}
283302
# add ruby 3.2 jemalloc patch
284303
wget -O 'ruby_32_jemalloc.patch' 'https://gist.githubusercontent.com/jitingcn/4a518dbd1d0112bdb5789a65e6456033/raw/1e378904e1f3766f4faa1c5cb87e045a9bd1f6f2/ruby_32_jemalloc.patch'; \
285304
patch -p1 -ti ruby_32_jemalloc.patch; \
@@ -315,7 +334,7 @@ RUN set -eux; \
315334
apt-mark auto '.*' > /dev/null; \
316335
apt-mark manual $savedAptMark > /dev/null; \
317336
find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
318-
| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \
337+
| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
319338
| sort -u \
320339
| xargs -r dpkg-query --search \
321340
| cut -d: -f1 \
@@ -360,7 +379,9 @@ ENV GEM_HOME /usr/local/bundle
360379
ENV BUNDLE_SILENCE_ROOT_WARNING=1 \
361380
BUNDLE_APP_CONFIG="$GEM_HOME"
362381
ENV PATH $GEM_HOME/bin:$PATH
363-
# adjust permissions of a few directories for running "gem install" as an arbitrary user
364-
RUN mkdir -p "$GEM_HOME" && chmod 1777 "$GEM_HOME"
382+
RUN set -eux; \
383+
mkdir "$GEM_HOME"; \
384+
# adjust permissions of GEM_HOME for running "gem install" as an arbitrary user
385+
chmod 1777 "$GEM_HOME"
365386

366387
CMD [ "irb" ]

apply-templates.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ for version; do
3131

3232
rm -rf "$version/"
3333

34+
if jq -e '.[env.version] | not' versions.json > /dev/null; then
35+
echo "deleting $version ..."
36+
continue
37+
fi
38+
3439
variants="$(jq -r '.[env.version].variants | map(@sh) | join(" ")' versions.json)"
3540
eval "variants=( $variants )"
3641

generate-stackbrew-library.sh

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
#!/usr/bin/env bash
22
set -Eeuo pipefail
33

4-
declare -A aliases=(
5-
[3.2]='3 latest'
6-
)
7-
84
self="$(basename "$BASH_SOURCE")"
95
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
106

@@ -44,17 +40,19 @@ dirCommit() {
4440

4541
getArches() {
4642
local repo="$1"; shift
47-
local officialImagesUrl='https://github.com/docker-library/official-images/raw/master/library/'
43+
local officialImagesBase="${BASHBREW_LIBRARY:-https://github.com/docker-library/official-images/raw/HEAD/library}/"
4844

49-
eval "declare -g -A parentRepoToArches=( $(
50-
find -name 'Dockerfile' -exec awk '
45+
local parentRepoToArchesStr
46+
parentRepoToArchesStr="$(
47+
find -name 'Dockerfile' -exec awk -v officialImagesBase="$officialImagesBase" '
5148
toupper($1) == "FROM" && $2 !~ /^('"$repo"'|scratch|.*\/.*)(:|$)/ {
52-
print "'"$officialImagesUrl"'" $2
49+
printf "%s%s\n", officialImagesBase, $2
5350
}
5451
' '{}' + \
5552
| sort -u \
56-
| xargs bashbrew cat --format '[{{ .RepoName }}:{{ .TagName }}]="{{ join " " .TagEntry.Architectures }}"'
57-
) )"
53+
| xargs -r bashbrew cat --format '["{{ .RepoName }}:{{ .TagName }}"]="{{ join " " .TagEntry.Architectures }}"'
54+
)"
55+
eval "declare -g -A parentRepoToArches=( $parentRepoToArchesStr )"
5856
}
5957
getArches 'ruby'
6058

@@ -71,19 +69,35 @@ join() {
7169
echo "${out#$sep}"
7270
}
7371

72+
declare -A latest=(
73+
#[3]='3.2'
74+
#[latest]='3.2'
75+
)
76+
7477
for version; do
7578
export version
79+
80+
if ! fullVersion="$(jq -er '.[env.version] | if . then .version else empty end' versions.json)"; then
81+
continue
82+
fi
83+
7684
variants="$(jq -r '.[env.version].variants | map(@sh) | join(" ")' versions.json)"
7785
eval "variants=( $variants )"
7886

79-
fullVersion="$(jq -r '.[env.version].version' versions.json)"
80-
8187
versionAliases=(
8288
$fullVersion
8389
$version
84-
${aliases[$version]:-}
8590
)
8691

92+
if [ "$version" = "${version%-rc}" ]; then
93+
for a in "${version%%.*}" latest; do # "3", "latest"
94+
if [ -z "${latest[$a]:-}" ]; then
95+
latest[$a]="$version"
96+
versionAliases+=( "$a" )
97+
fi
98+
done
99+
fi
100+
87101
defaultDebianVariant="$(jq -r '
88102
.[env.version].variants
89103
| map(select(

rust.json

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,83 @@
11
{
22
"rust": {
3-
"version": "1.66.0"
3+
"version": "1.74.1"
44
},
55
"rustup": {
66
"arches": {
77
"amd64": {
88
"glibc": {
99
"arch": "x86_64-unknown-linux-gnu",
10-
"sha256": "5cc9ffd1026e82e7fb2eec2121ad71f4b0f044e88bca39207b3f6b769aaa799c",
11-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/x86_64-unknown-linux-gnu/rustup-init"
10+
"sha256": "0b2f6c8f85a3d02fde2efc0ced4657869d73fccfce59defb4e8d29233116e6db",
11+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-unknown-linux-gnu/rustup-init"
1212
},
1313
"musl": {
1414
"arch": "x86_64-unknown-linux-musl",
15-
"sha256": "95427cb0592e32ed39c8bd522fe2a40a746ba07afb8149f91e936cddb4d6eeac",
16-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/x86_64-unknown-linux-musl/rustup-init"
15+
"sha256": "7aa9e2a380a9958fc1fc426a3323209b2c86181c6816640979580f62ff7d48d4",
16+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-unknown-linux-musl/rustup-init"
1717
}
1818
},
1919
"arm32v5": {
2020
"glibc": {
2121
"arch": "arm-unknown-linux-gnueabi",
22-
"sha256": "0bd9ba41cd40945b4cadc5a8acb3a926c61f7cce5747120a0e213aae1b4ea30a",
23-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/arm-unknown-linux-gnueabi/rustup-init"
22+
"sha256": "1fca5ad0f877f65c76f07bb0cbbe22c28b6e4ba883bf057f1a05636e8e2a4b40",
23+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/arm-unknown-linux-gnueabi/rustup-init"
2424
}
2525
},
2626
"arm32v6": {
2727
"glibc": {
2828
"arch": "arm-unknown-linux-gnueabihf",
29-
"sha256": "aad75c7c586fd5a8cc8a7153d7e574bb7a8bf39b99dd7d9dab7425143fa4a999",
30-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/arm-unknown-linux-gnueabihf/rustup-init"
29+
"sha256": "8f7801e93ec2c80e0253cba0e25c1085f92e8f49c7ddf9930be62d13361bd808",
30+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/arm-unknown-linux-gnueabihf/rustup-init"
3131
}
3232
},
3333
"arm32v7": {
3434
"glibc": {
3535
"arch": "armv7-unknown-linux-gnueabihf",
36-
"sha256": "48c5ecfd1409da93164af20cf4ac2c6f00688b15eb6ba65047f654060c844d85",
37-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/armv7-unknown-linux-gnueabihf/rustup-init"
36+
"sha256": "f21c44b01678c645d8fbba1e55e4180a01ac5af2d38bcbd14aa665e0d96ed69a",
37+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/armv7-unknown-linux-gnueabihf/rustup-init"
3838
}
3939
},
4040
"arm64v8": {
4141
"glibc": {
4242
"arch": "aarch64-unknown-linux-gnu",
43-
"sha256": "e189948e396d47254103a49c987e7fb0e5dd8e34b200aa4481ecc4b8e41fb929",
44-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/aarch64-unknown-linux-gnu/rustup-init"
43+
"sha256": "673e336c81c65e6b16dcdede33f4cc9ed0f08bde1dbe7a935f113605292dc800",
44+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/aarch64-unknown-linux-gnu/rustup-init"
4545
},
4646
"musl": {
4747
"arch": "aarch64-unknown-linux-musl",
48-
"sha256": "7855404cdc50c20040c743800c947b6f452490d47f8590a4a83bc6f75d1d8eda",
49-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/aarch64-unknown-linux-musl/rustup-init"
48+
"sha256": "b1962dfc18e1fd47d01341e6897cace67cddfabf547ef394e8883939bd6e002e",
49+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/aarch64-unknown-linux-musl/rustup-init"
5050
}
5151
},
5252
"i386": {
5353
"glibc": {
5454
"arch": "i686-unknown-linux-gnu",
55-
"sha256": "0e0be29c560ad958ba52fcf06b3ea04435cb3cd674fbe11ce7d954093b9504fd",
56-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/i686-unknown-linux-gnu/rustup-init"
55+
"sha256": "e7b0f47557c1afcd86939b118cbcf7fb95a5d1d917bdd355157b63ca00fc4333",
56+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/i686-unknown-linux-gnu/rustup-init"
5757
}
5858
},
5959
"mips64le": {
6060
"glibc": {
6161
"arch": "mips64el-unknown-linux-gnuabi64",
62-
"sha256": "e69193145f5f2574bf79f355b46dae3d747e8afef511aa015445c51c4d057c6f",
63-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/mips64el-unknown-linux-gnuabi64/rustup-init"
62+
"sha256": "b8a30dd0d0ba34324c5b2399e76ba44e50a036439cb66c92aef62b485fdc97c8",
63+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/mips64el-unknown-linux-gnuabi64/rustup-init"
6464
}
6565
},
6666
"ppc64le": {
6767
"glibc": {
6868
"arch": "powerpc64le-unknown-linux-gnu",
69-
"sha256": "774f62fd927f6c29499a6caee8f534e796161321ec35435788971629bb55af8e",
70-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/powerpc64le-unknown-linux-gnu/rustup-init"
69+
"sha256": "1032934fb154ad2d365e02dcf770c6ecfaec6ab2987204c618c21ba841c97b44",
70+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/powerpc64le-unknown-linux-gnu/rustup-init"
7171
}
7272
},
7373
"s390x": {
7474
"glibc": {
7575
"arch": "s390x-unknown-linux-gnu",
76-
"sha256": "cf5965d0e3b5f53b51d19b84c7cae2996d69277cdf280a9c07fe47418233dde9",
77-
"url": "https://static.rust-lang.org/rustup/archive/1.25.1/s390x-unknown-linux-gnu/rustup-init"
76+
"sha256": "414210ffd294a39ee5963e05d9f5a8435945657a1ddf74b14fd63f6eb898d69e",
77+
"url": "https://static.rust-lang.org/rustup/archive/1.26.0/s390x-unknown-linux-gnu/rustup-init"
7878
}
7979
}
8080
},
81-
"version": "1.25.1"
81+
"version": "1.26.0"
8282
}
8383
}

0 commit comments

Comments
 (0)