Skip to content

Add 7.0.0 - #424

Merged
tianon merged 3 commits into
docker-library:masterfrom
infosiftr:7.0
Jul 21, 2026
Merged

Add 7.0.0#424
tianon merged 3 commits into
docker-library:masterfrom
infosiftr:7.0

Conversation

@yosifkit

@yosifkit yosifkit commented Jul 1, 2026

Copy link
Copy Markdown
Member

Comment thread Dockerfile.template
# redmine needs a rails update that includes https://github.com/rails/rails/pull/57266
# before it will handle the renamed timezones (they just fail to show in the redmine selector)
if env.variant == "trixie" and IN(env.version; "6.0", "6.1") then
if env.variant == "trixie" and IN(env.version; "6.0", "6.1", "7.0") then

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still needed because there isn't even a rails release with the fix.

@yosifkit

yosifkit commented Jul 1, 2026

Copy link
Copy Markdown
Member Author

Still working through the failures: it looks like we'll have to drop a few architectures from Debian Bookworm images since it doesn't have a new enough rust available; for Trixie, we can use backports to get a new enough rust.

@walkero-gr

Copy link
Copy Markdown

@yosifkit Maybe that is a duplicate of #423

@yosifkit

yosifkit commented Jul 3, 2026

Copy link
Copy Markdown
Member Author
+ runDeps='so:libc.musl-x86_64.so.1
so:libcrypto.so.3
so:libgcc_s.so.1
so:libmariadb.so.3
so:libpq-ruby-pg.so.1
so:libssl.so.3
so:libsybdb.so.5'
+ apk add --no-network --virtual .redmine-rundeps so:libc.musl-x86_64.so.1 so:libcrypto.so.3 so:libgcc_s.so.1 so:libmariadb.so.3 so:libpq-ruby-pg.so.1 so:libssl.so.3 so:libsybdb.so.5
WARNING: opening from cache https://dl-cdn.alpinelinux.org/alpine/v3.23/main/x86_64/APKINDEX.tar.gz: No such file or directory
WARNING: opening from cache https://dl-cdn.alpinelinux.org/alpine/v3.23/community/x86_64/APKINDEX.tar.gz: No such file or directory
ERROR: unable to select packages:
  .redmine-rundeps-20260701.170400:
    masked in: cache
    satisfies: world[.redmine-rundeps=20260701.170400]
  so:libpq-ruby-pg.so.1 (no such package):
    required by: .redmine-rundeps-20260701.170400[so:libpq-ruby-pg.so.1]

The scanelf/awk change is to fix this error (the ruby-pg gem now bundles its own libpq.so, but under a custom name). I'm not sold on the changes and would love a simpler fix.

@yosifkit yosifkit mentioned this pull request Jul 3, 2026
@col-panic col-panic mentioned this pull request Jul 8, 2026
@stefangweichinger

Copy link
Copy Markdown

I don't fully understand: is there a showstopper or does the suggested fix work, but hasn't been merged yet?
I am just curious for release-7 ;-) thanks for your work

@tianon

tianon commented Jul 9, 2026

Copy link
Copy Markdown
Member

The workarounds necessary here are heinous and point to / are likely hiding much deeper problems that we'd like to dig into further before we blindly accept them.

@stefangweichinger

Copy link
Copy Markdown

I understand and agree: no rush, quality first. I wish for success, thanks for your work.

@yosifkit

Copy link
Copy Markdown
Member Author

Just so that I put it somewhere, here is the diff that I needed to attempt building 7.0 arm32vX on Alpine. It still doesn't build (they fail with the same problem as i386 Alpine), and I didn't want to keep it in the final because it won't be used, but didn't want to lose the effort. Without this change, they fail to build because bundle install/gem pulls in arm-linux pre-compiled libraries that are linked to glibc (gjtorikian/commonmarker#476). So, in the end, all 32-bit architectures will be dropped from 7.0 Alpine images. And all but amd64 and arm64v8 will still be unavailable on bookworm-based images (just like 6.1) because the rust is too old.

diff --git a/Dockerfile.template b/Dockerfile.template
index 3b13775..43009e5 100644
--- a/Dockerfile.template
+++ b/Dockerfile.template
@@ -251,13 +251,26 @@ RUN set -eux; \
 		echo "$adapter:" >> ./config/database.yml; \
 		echo "  adapter: $adapter" >> ./config/database.yml; \
 	done; \
-{{ if is_alpine then "" else ( -}}
+{{
+	# 6.0/alpine already sets this via ENV
+	if is_alpine and IN(env.version; "6.0") then "" else (
+-}}
+{{ def archVar: if is_alpine then "apkArch" else "dpkgArch" end -}}
+{{ if is_alpine then ( -}}
+# some ruby gems (like commonmarker) don't publish for musl except on amd64/arm64v8
+# force them to compile so that they don't pull the `arm-linux` version which doesn't work on musl
+{{ ) else ( -}}
 # ruby gems (like nokogiri) don't publish arm32v5-compatible, pre-compiled libraries
 # force them to compile so that they don't pull arm32v[6-7] libraries
-	arch="$(dpkg --print-architecture)"; \
-	if [ "$arch" = 'armel' ]; then \
-		gosu redmine bundle config set force_ruby_platform true; \
-	fi; \
+{{ ) end -}}
+	{{ archVar }}="$({{ if is_alpine then "apk --print-arch" else "dpkg --print-architecture" end }})"; \
+	case "${{ archVar }}" in \
+		{{ if is_alpine then "armhf|armv7" else "armel" end }}) \
+			gosu redmine bundle config set force_ruby_platform true; \
+			;; \
+	esac; \
+{{ ) end -}}
+{{ if is_alpine then "" else ( -}}
 # nokogiri's vendored libxml2 + libxslt do not build on mips64le, so use the apt packages when building
 	gosu redmine bundle config set build.nokogiri --use-system-libraries; \
 {{ ) end -}}
build error:
error[E0063]: missing fields `_bitfield_1` and `_bitfield_align_1` in
initializer of `timespec`
-->
/home/redmine/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/magnus-0.8.2/src/time.rs:141:9
    |
141 |         Self {
    |         ^^^^ missing `_bitfield_1` and `_bitfield_align_1`

error[E0063]: missing fields `_bitfield_1` and `_bitfield_align_1` in
initializer of `timespec`
-->
/home/redmine/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/magnus-0.8.2/src/time.rs:288:28
    |
288 |         let mut timespec = timespec {
|                            ^^^^^^^^ missing `_bitfield_1` and
`_bitfield_align_1`

error[E0063]: missing fields `_bitfield_1` and `_bitfield_align_1` in
initializer of `timespec`
-->
/home/redmine/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/magnus-0.8.2/src/time.rs:397:28
    |
397 |         let mut timespec = timespec {
|                            ^^^^^^^^ missing `_bitfield_1` and
`_bitfield_align_1`

For more information about this error, try `rustc --explain E0063`.
error: could not compile `magnus` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
make: *** [Makefile:578: target/release/libcommonmarker.so] Error 101

make failed, exit code 2

Gem files will remain installed in /usr/local/bundle/gems/commonmarker-2.8.2 for
inspection.
Results logged to
/usr/local/bundle/extensions/x86-linux-musl/4.0.0/commonmarker-2.8.2/gem_make.out

/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:139:in
'Gem::Ext::Builder.run'
/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:65:in 'block in
Gem::Ext::Builder.make'
  /usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:57:in 'Array#each'
/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:57:in
'Gem::Ext::Builder.make'
/usr/local/lib/ruby/4.0.0/rubygems/ext/ext_conf_builder.rb:44:in
'Gem::Ext::ExtConfBuilder.build'
/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:218:in
'Gem::Ext::Builder#build_extension'
/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:250:in 'block in
Gem::Ext::Builder#build_extensions'
  /usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:249:in 'Array#each'
/usr/local/lib/ruby/4.0.0/rubygems/ext/builder.rb:249:in
'Gem::Ext::Builder#build_extensions'
/usr/local/lib/ruby/4.0.0/rubygems/installer.rb:809:in
'Gem::Installer#build_extensions'
/usr/local/lib/ruby/4.0.0/bundler/rubygems_gem_installer.rb:112:in
'Bundler::RubyGemsGemInstaller#build_extensions'
/usr/local/lib/ruby/4.0.0/bundler/rubygems_gem_installer.rb:30:in
'Bundler::RubyGemsGemInstaller#install'
/usr/local/lib/ruby/4.0.0/bundler/source/rubygems.rb:211:in 'block in
Bundler::Source::Rubygems#install'
  /usr/local/lib/ruby/4.0.0/rubygems.rb:1053:in 'Gem.time'
/usr/local/lib/ruby/4.0.0/bundler/source/rubygems.rb:210:in
'Bundler::Source::Rubygems#install'
/usr/local/lib/ruby/4.0.0/bundler/installer/gem_installer.rb:68:in
'Bundler::GemInstaller#install'
/usr/local/lib/ruby/4.0.0/bundler/installer/gem_installer.rb:17:in
'Bundler::GemInstaller#install_from_spec'
/usr/local/lib/ruby/4.0.0/bundler/installer/parallel_installer.rb:172:in
'Bundler::ParallelInstaller#do_install'
/usr/local/lib/ruby/4.0.0/bundler/installer/parallel_installer.rb:142:in
'block in Bundler::ParallelInstaller#worker_pool'
  /usr/local/lib/ruby/4.0.0/bundler/worker.rb:70:in 'Bundler::Worker#apply_func'
/usr/local/lib/ruby/4.0.0/bundler/worker.rb:65:in 'block in
Bundler::Worker#process_queue'
  /usr/local/lib/ruby/4.0.0/bundler/worker.rb:56:in 'Kernel#loop'
/usr/local/lib/ruby/4.0.0/bundler/worker.rb:56:in
'Bundler::Worker#process_queue'
/usr/local/lib/ruby/4.0.0/bundler/worker.rb:98:in 'block (2 levels) in
Bundler::Worker#create_threads'

An error occurred while installing commonmarker (2.8.2), and Bundler cannot
continue.

@tianon

tianon commented Jul 21, 2026

Copy link
Copy Markdown
Member
SET IT ON FIRE! -Seahawk

Comment thread .github/workflows/ci.yml Outdated
Comment on lines +32 to +34
.matrix.include = [
.matrix.include[]
| select(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pre-existing so 🤷 but if you go in again

Suggested change
.matrix.include = [
.matrix.include[]
| select(
.matrix.include |= map(
select(

Comment thread .github/workflows/ci.yml
| select(
.name
| split("-")
| (.[0] | split(".")[0:2] | join(".") | tonumber) as $version

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also pre-existing, but this tonumber is probably fiddly

Comment thread generate-stackbrew-library.sh Outdated
if [[ "$variant" = 'alpine'* ]] then
variantArches="$(jq <<<"$variantArches" --raw-input --raw-output '
split(" ")
| map(select(IN("i386", "arm32v7", "arm32v6") | not))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| map(select(IN("i386", "arm32v7", "arm32v6") | not))
- [ "i386", "arm32v7", "arm32v6" ]

Comment thread Dockerfile.template
print "so:" lib; \
} \
} \
}' \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This awk is definitely still heinous 😞

It's maybe not a problem by itself, but it's definitely a kind of "code smell" for an issue somewhere deeper in the stack 😭

Comment thread Dockerfile.template
"pkgconf",
"xz-utils",
if IN(env.version; "6.0") then empty else
if IN(env.version; "6.0") or env.variant == "bookworm" then empty else

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While this could be conceived as a breaking change for 6.1+ bookworm (by removing rust compiler), we don't have architectures that need to compile on bookworm. And if they did have to compile any dependencies via rust, it would fail with a "this version of Cargo is older than the 2024 edition, and only supports 2015, 2018, and 2021 editions" or possibly a "requires rustc 1.88.0".

Comment thread Dockerfile.template Outdated
Comment on lines +298 to +300
# Only resolve $ORIGIN. Modify rpath in place.
if (rpath ~ /^\$[{]?ORIGIN[}]?/) { \
sub(/^\$[{]?ORIGIN[}]?/, origin, rpath); \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Only resolve $ORIGIN. Modify rpath in place.
if (rpath ~ /^\$[{]?ORIGIN[}]?/) { \
sub(/^\$[{]?ORIGIN[}]?/, origin, rpath); \
# Only resolve $ORIGIN-relative rpaths.
if (sub(/^\$[{]?ORIGIN[}]?/, origin, rpath)) { \

@tianon tianon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RUBY

@tianon
tianon merged commit f772dee into docker-library:master Jul 21, 2026
22 checks passed
@tianon
tianon deleted the 7.0 branch July 21, 2026 23:46
yosifkit pushed a commit to docker-library/official-images that referenced this pull request Jul 22, 2026
Changes:

- docker-library/redmine@f772dee: Add 7.0.0 (docker-library/redmine#424)

Co-authored-by: Docker Library Bot <doi+docker-library-bot@docker.com>
@stefangweichinger

Copy link
Copy Markdown

Thanks all for your work. Upgraded right now, seems to work ;-) :-P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Redmine 7.0.0

4 participants