#1150190 ruby-redis: FTBFS in unstable with ruby-redis-client 0.31.0-1: gemspec requires redis-client = 0.30.1 #1150190
- Package:
- ruby-redis
- Source:
- ruby-redis
- Submitter:
- Ajayi Olatunji O.
- Date:
- 2026-10-09 15:37:07 UTC
- Severity:
- normal
- Tags:
Dear Maintainer,
ruby-redis 6.0.0-1 fails to build from source in unstable now that
ruby-redis-client 0.31.0-1 is in unstable (accepted 2026-10-06). The
same incompatibility makes ruby-redis unusable at run time. I set the
severity to serious because the release critical issues document says:
"Packages must be buildable within the same release."
The requirement comes from upstream. redis.gemspec in
ruby-redis_6.0.0.orig.tar.gz says:
line 47: # Pinned to an exact redis-client version: redis-rb couples
tightly to redis-client internals
line 52: s.add_runtime_dependency('redis-client', '0.30.1')
Build failure (sbuild, unstable chroot, ruby-redis-client 0.31.0-1
installed, finished 2026-10-06T18:07Z, Fail-Stage: build):
Checking Rubygems dependency resolution on ruby3.3
Could not find 'redis-client' (= 0.30.1) among 117 total gem(s)
(Gem::MissingSpecError)
dh_auto_test: error: dh_ruby --test returned exit code 1
Run time reproduction in a clean unstable chroot (apt-get install ruby
ruby-redis, then ruby -e "require 'redis'"):
Could not find 'redis-client' (= 0.30.1) ... at:
/usr/share/rubygems-integration/all/specifications/redis-6.0.0.gemspec
(Gem::MissingSpecError)
cannot load such file -- redis (LoadError)
The installed redis-6.0.0.gemspec contains:
s.add_runtime_dependency(%q<redis-client>.freeze, ["= 0.30.1".freeze])
The binary package declares (apt-cache show ruby-redis in unstable):
Depends: ruby:any, ruby-redis-client (>= 0.30.1)
so apt accepts ruby-redis-client 0.31.0-1, while RubyGems rejects it.
debian/control in the source package lists only Depends: ruby:any, so I
assume the redis-client dependency is generated during the build; I have
not checked how the exact upstream requirement becomes (>=).
Testing still has ruby-redis-client 0.30.1-1 and is consistent. The
tracker shows autopkgtests for ruby-redis, ruby-redis-client,
ruby-redis-cluster-client and ruby-sidekiq triggered for 0.31.0-1, with
no results yet.
The newest upstream redis gem is 6.0.0, released 2026-07-31
(rubygems.org versions API), which is the version already packaged. So
there is no newer redis release available to package for redis-client
0.31.0. I did not check for unreleased upstream work.
Impact: packages that build or test with the redis gem fail in unstable.
I noticed this while updating ruby-classifier-reborn, whose Redis tests
error with NameError: uninitialized constant ...::Redis instead of skipping.
I do not know which side should change (keeping ruby-redis-client
0.31.0-1 out of unstable until a compatible redis release exists, or
another solution), so I leave that to you. I did not find an existing
bug for this: src:ruby-redis-client has no reports, and src:ruby-redis
has only #1093118, whose title concerns ruby-fakeredis.
Thank you for maintaining these packages.
Ajayi Olatunji
Additional information, following a suggestion to test a relaxed requirement from Pirate Praveen. I took ruby-redis_6.0.0-1.dsc from the archive and added a quilt patch that changes line 52 of redis.gemspec from '0.30.1' to '>= 0.30.1' (full patch below). Result: sbuild in an unstable chroot with ruby-redis-client 0.31.0-1 installed finished with Status: successful and Lintian: pass. The dependency resolution check that failed before now passes. Limit of this result: the build log says "Run tests for ruby3.3: no test suite!", so no tests ran. The result shows only that the package builds when the requirement is relaxed. It does not show that redis-rb works with redis-client 0.31.0, and I did not run upstream's test suite. The pin is deliberate upstream. The comment above line 52 in redis.gemspec says: "Bump deliberately and re-run the full suite." I therefore offer the patch as evidence only, not as a recommended change. I have also asked upstream about redis-client 0.31.0: https://github.com/redis/redis-rb/issues/1398 Patch used for the test: Index: ruby-redis-6.0.0/redis.gemspec =================================================================== --- ruby-redis-6.0.0.orig/redis.gemspec +++ ruby-redis-6.0.0/redis.gemspec @@ -49,5 +49,5 @@ # constraint can change semantics under a stable redis release. Bump deliberately and re-run # the full suite. Note hiredis-client versions in lockstep (it requires redis-client `= x.y.z`). - s.add_runtime_dependency('redis-client', '0.30.1') + s.add_runtime_dependency('redis-client', '>= 0.30.1') end Ajayi Olatunji O.
Additional information, following a suggestion to test a relaxed
requirement.
1. Package build. I took ruby-redis_6.0.0-1.dsc from the archive and
added a quilt patch that changes line 52 of redis.gemspec from '0.30.1'
to '>= 0.30.1' (full patch below). sbuild in an unstable chroot with
ruby-redis-client 0.31.0-1 installed finished with Status: successful
and Lintian: pass. The build log says "Run tests for ruby3.3: no test
suite!", so this step ran no tests.
2. Upstream test suite. I cloned upstream redis-rb at tag v6.0.0 and
made the same change to redis.gemspec. With redis-client 0.31.0 and
hiredis-client 0.31.0 installed from rubygems.org, I ran upstream's
tests as its CI workflow (.github/workflows/test.yaml) does: Redis 8.8.0
servers from upstream's docker-compose.yml, Ruby 3.3.8, and the test
groups redis, distributed, sentinel, modules and cluster, each under
RESP3 and RESP2 with the ruby and hiredis drivers.
Result: 0 failures and 0 errors in every run. The redis group ran 656
tests, distributed 431, sentinel 20, modules 264 and cluster 488, with
skips as the suite defines them. With the original pin (redis-client
0.30.1) the first four groups also passed, with the same counts.
Limits of this result: I tested one Ruby version (3.3.8) and one Redis
version (8.8.0), not the full CI matrix, and I ran the groups one at a
time with rake instead of in one command. I used the redis-client gem
from rubygems.org, not the Debian package ruby-redis-client 0.31.0-1,
and I did not compare the two. These results do not show that the Debian
package builds and passes its own tests with a relaxed dependency.
The pin is deliberate upstream. The comment above line 52 in
redis.gemspec says: "Bump deliberately and re-run the full suite." I
therefore offer the patch and the results as evidence only, not as a
recommended change. I have also asked upstream about redis-client
0.31.0: https://github.com/redis/redis-rb/issues/1398
Patch used for the test:
Index: ruby-redis-6.0.0/redis.gemspec
===================================================================
--- ruby-redis-6.0.0.orig/redis.gemspec
+++ ruby-redis-6.0.0/redis.gemspec
@@ -49,5 +49,5 @@
# constraint can change semantics under a stable redis release. Bump
deliberately and re-run
# the full suite. Note hiredis-client versions in lockstep (it
requires redis-client `= x.y.z`).
- s.add_runtime_dependency('redis-client', '0.30.1')
+ s.add_runtime_dependency('redis-client', '>= 0.30.1')
end
Ajayi Olatunji
Hello, Bug #1150190 in ruby-redis reported by you has been fixed in the Git repository and is awaiting an upload. You can see the commit message below and you can check the diff of the fix at: https://salsa.debian.org/ruby-team/ruby-redis/-/commit/54ccf428ae03e13e321c25326baca38fcbef806c (this message was generated automatically) -- Greetings https://bugs.debian.org/1150190
We believe that the bug you reported is fixed in the latest version of ruby-redis, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 1150190@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Simon Quigley <tsimonq2@debian.org> (supplier of updated ruby-redis package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org) Format: 1.8 Date: Fri, 09 Oct 2026 10:20:28 -0500 Source: ruby-redis Architecture: source Version: 6.0.0-2 Distribution: unstable Urgency: medium Maintainer: Debian Ruby Team <pkg-ruby-extras-maintainers@lists.alioth.debian.org> Changed-By: Simon Quigley <tsimonq2@debian.org> Closes: 1150190 Changes: ruby-redis (6.0.0-2) unstable; urgency=medium . * Team upload. * Relax the redis-client dependency to >= 0.30.1 (Closes: #1150190). * Use DH_RUBY_GEM_INSTALL_EXCLUDE in rules. * Mark as Multi-Arch: foreign. Checksums-Sha1: 2be201990cac2e83df44e94899095955ca25f13f 2068 ruby-redis_6.0.0-2.dsc 8c76c3c2518369dbf3715f7636c0b8e6ae991c9c 271197 ruby-redis_6.0.0.orig.tar.gz c80a739c716e80ce11e8ed7ebca5753a72432d19 8584 ruby-redis_6.0.0-2.debian.tar.xz 421a4676bc6a2b44971afab80b8f312db6a89ed9 7662 ruby-redis_6.0.0-2_source.buildinfo Checksums-Sha256: 7312c710be2df2d467895b6a30754e1b07a021e8c2951cd310f6b7b8d65f7e4c 2068 ruby-redis_6.0.0-2.dsc 18a0c9e5a48fc71ff06588642512b15edcc85520817a82fa295b29d1fc65bb1e 271197 ruby-redis_6.0.0.orig.tar.gz e27c290ab5e21940221a9b08a5bb5d23135a63e8a87a19ce44a15db0bc9ab110 8584 ruby-redis_6.0.0-2.debian.tar.xz ebce425134cde95d3424782bdfd2b96379341abff56e80ffbcde71bcc0fb68e1 7662 ruby-redis_6.0.0-2_source.buildinfo Files: 1a5cb6559f25acac533bdc6ce132a001 2068 ruby optional ruby-redis_6.0.0-2.dsc 472cba8d0a34f44535df604d5e35972e 271197 ruby optional ruby-redis_6.0.0.orig.tar.gz 82ab9e7775c922c7de08a9ea73d1dee7 8584 ruby optional ruby-redis_6.0.0-2.debian.tar.xz 0fb66dcda66c600d4d6a54f1a1e7522b 7662 ruby optional ruby-redis_6.0.0-2_source.buildinfo -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEXHq+og+GMEWcyMi14n8s+EWML6QFAmrJBnAACgkQ4n8s+EWM L6QKgRAAqSpZSLj9GjRDGTKxmk/eczB4//nnMXwZa8jl5G810x2or3O8H+kpo8jR dHDlaalVlKzZDy8k5PnsryiJ94Qaf6ykypODvWXrVcDM/2h8HhJZorFNJfrpvscN ecMLVROjz6kCj1i+PMM45UmUJ3Yfs2qZVx2fmVlOoIl16dGqsMo0TlJ00mLGQTYV SPPsKnY73nm/U6flyMgqSZ9N5p/Aa689NZPjwzAJij9zwlw/ZunYtGXskak9m52p KJrmlSZiw+27cZ6PgA0x8y6JfYoIM2iyaoHjYIyFujsi2XdrWbhCtYmh5eOroiai jVPs41LeuIiC96/xn3w0w2cNs+jHJj+fOYP0wPbT/0A7nnLJ0INlgd/UPUz7cLK8 MiHzvHSzVXEHXd9xvxDLcgp+EleBZtoGtOq6yi8gyOI3L3booaOBpIdMSeAEpl9x 0/BKFoPLqQ/4DXHvEbKZLt/7Nx3Ve/hMOAC8D2RE3I7dWnBvQY3JYUBeCSOPQz3j Mm+ohGGuXsLmVQSaMsAlIZyMTRdOVW0sgvNTt0bhuJ7CpJgn1YLhzTNPLWq4m6Df vAkoKaFfstS7PN09E3Xb8MXT3x7B8QZhvNEmCHnJLGSTNkOvkoN1EpKgBRkeeg9P QkrgnZ1AuFhm4cJ5TTQZJ1VHExsLbwNHwTdlmDO5L2SFlkJ9TOs= =TSwU -----END PGP SIGNATURE-----