[DRE-maint] Bug#1137054: ruby-grape: FTBFS in bookworm

Santiago Vila sanvila at debian.org
Tue May 19 00:19:26 BST 2026


Package: src:ruby-grape
Version: 1.6.2-3
Severity: serious
Tags: ftbfs bookworm

Dear maintainer:

During a rebuild of all packages in bookworm, this package failed to build.

[ Note: I can't mark the bug as fixed in trixie because it does not exist
  in trixie anymore, but packages in bookworm must still build in bookworm ].

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/bookworm/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:ruby-grape, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=ruby --with ruby
   debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_clean
	dh_ruby --clean
rm -rf coverage
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_autoreconf_clean -O--buildsystem=ruby
   dh_clean -O--buildsystem=ruby
 debian/rules binary
dh binary --buildsystem=ruby --with ruby

[... snipped ...]

    chooses default
  with a range of values
    allows a single value inside of the range
    allows an array of values inside of the range
    rejects a single value outside the range
    rejects an array of values if any of them are outside the range
  exclusive excepts
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows any other value outside excepts
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows any other value outside excepts when type is included
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects values that matches except
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects an array of values if any of them matches except
  exclusive excepts with lambda
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows any other value outside excepts when type is included
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows any other value outside excepts
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects values that matches except
  exclusive excepts with lambda and coercion
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows any other value outside excepts
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects values that matches except
  with mixed values and excepts
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    allows value, but not in except
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects except
[DEPRECATION] The values validator except option is deprecated. Use the except validator instead.
    rejects outside except and outside value
  custom validation using proc
[DEPRECATION] The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.
    accepts a single valid value
[DEPRECATION] The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.
    accepts multiple valid values
[DEPRECATION] The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.
    rejects a single invalid value
[DEPRECATION] The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.
    rejects an invalid value among valid ones
[DEPRECATION] The values validator proc option is deprecated. The lambda expression can now be assigned directly to values.
    uses supplied message

Grape::Validations
  params
    optional
      validates when params is present
      doesn't validate when param not present
      adds to declared parameters
    optional using Grape::Entity documentation
      adds entity documentation to declared params
      works when field_a and field_b are not present
      works when field_a is present
      works when field_b is present
    required
      errors when param not present
      doesn't throw a missing param when param is present
      adds to declared parameters
      works when required field is present but nil
    requires with nested params
      validates correctly in deep nested params
    requires :all using Grape::Entity documentation
      adds entity documentation to declared params
      errors when required_field is not present
      works when required_field is present
    requires :none using Grape::Entity documentation
      adds entity documentation to declared params
      errors when required_field is not present
      works when required_field is present
    requires :all or :none but except a non-existent field using Grape::Entity documentation
      requires :all
        adds only the entity documentation to declared params, nothing more
      requires :none
        adds only the entity documentation to declared params, nothing more
    required with an Array block
      errors when param not present
      errors when param is not an Array
      doesn't throw a missing param when param is present
      doesn't throw a missing param when param is present but empty
      adds to declared parameters
    required with an Array and a Hash block
      does not output index [0] for Hash types
    required with a Hash block
      errors when param not present
      errors when nested param not present
      errors when param is not a Hash
      doesn't throw a missing param when param is present
      adds to declared parameters
    hash with a required param with validation
      errors when param is not a Hash
      works when all params match
    group
      errors when param not present
      doesn't throw a missing param when param is present
      adds to declared parameters
    group params with nested params which has a type
      errors when group param is invalid
    custom validator for a Hash
      which is optional
        doesn't throw an error if the validation passes
        errors if the validation fails
      which is required
        doesn't throw an error if the validation passes
        errors if the validation fails
    validation within arrays
      can handle new scopes within child elements
      errors when a parameter is not present
      errors when a parameter is not present in array within array
      handle errors for all array elements
      safely handles empty arrays and blank parameters
      errors when param is not an Array
    with block param
      requires defaults to Array type
      optional defaults to Array type
      group defaults to Array type
    validation within arrays with JSON
      can handle new scopes within child elements
      errors when a parameter is not present
      safely handles empty arrays and blank parameters
    optional with an Array block
      doesn't throw a missing param when the group isn't present
      doesn't throw a missing param when both group and param are given
      errors when group is present, but required param is not
      errors when param is present but isn't an Array
      adds to declared parameters
    nested optional Array blocks
      does no internal validations if the outer group is blank
      does internal validations if the outer group is present
      handles deep nesting
      handles validation within arrays
      adds to declared parameters
      exactly_one_of
      at_least_one_of
      all_or_none_of
      Issue occurs whenever:
* param structure with at least three levels
* 1st level item is a required Array that has >1 entry with an optional item present and >1 entry with an optional item missing  
* 2nd level is an optional Array or Hash 
* 3rd level is a required item (can be any type)
* additional levels do not effect the issue from occuring
        example based off actual real world use case
        simplest example using Array -> Array -> Hash -> String
        simplest example using Array -> Hash -> String
        correctly indexes invalida data
        multiple levels of optional and requires settings
          with valid data
          with invalid data
    multiple validation errors
      throws the validation errors
    custom validation
      when using optional with a custom validator
        validates when param is present
        skips validation when parameter isn't present
        validates with custom validator when param present and incorrect type
      when using requires with a custom validator
        validates when param is present
        validates when param is not present
        nested namespaces
          the parent namespace uses the validator
          the nested namespace inherits the custom validator
          peer namespaces does not have the validator
          namespaces nested in peers should also not have the validator
          when nested, specifying a route should clear out the validations for deeper nested params
      when using options on param
        validates param with custom validator with options
    named
      can be defined
        in helpers
        in helper module which kind of Grape::DSL::Helpers::BaseHelper
      can be included in usual params
        by #use
        by #use with multiple params
      with block
        returns defaults
        overrides default value for order
        overrides default value for order_by
        fails with invalid value
    documentation
      can be included with a hash
    all or none
      optional params
        with a custom validation message
          errors when any one is present
          works when all params are present
          works when none are present
    mutually exclusive
      optional params
        errors when two or more are present
        with custom validation message
          errors when two or more are present
      more than one set of mutually exclusive params
        errors for all sets
        with a custom validation message
          errors for all sets
      in a group
        works when only one from the set is present
        errors when more than one from the set is present
      mutually exclusive params inside Hash group
        invalidates if request param is invalid type
    exactly one of
      params
        errors when none are present
        succeeds when one is present
        errors when two or more are present
        with a custom validation message
          errors when none are present
          succeeds when one is present
          errors when two or more are present
      nested params
        errors when none are present
        succeeds when one is present
        errors when two or more are present
    at least one of
      params
        errors when none are present
        does not error when one is present
        does not error when two are present
        with a custom validation message
          errors when none are present
          does not error when one is present
          does not error when two are present
      nested params
        errors when none are present
        does not error when one is present
        does not error when two are present
    in a group
      works when only one from the set is present
      errors when no parameter from the set is present
      errors when more than one from the set is present
      does not falsely think the param is there if it is provided outside the block

Grape
/<<PKGBUILDDIR>>/lib/grape/eager_load.rb:20: warning: possibly useless use of :: in void context
  eager_load!
  compile!

JSON
  uses multi_json (PENDING: Temporarily skipped with xit)

MultiXml
  uses multi_xml

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) JSON uses multi_json
     # Temporarily skipped with xit
     # ./spec/integration/multi_json/json_spec.rb:6

Failures:

  1) Rack::Sendfile when calling sendfile contains Sendfile headers
     Failure/Error: expect(headers).to include('X-Accel-Redirect')

       expected {"Cache-Control" => "no-cache", "Content-Type" => "application/json"} to include "X-Accel-Redirect"
       Diff:
       @@ -1,2 +1,3 @@
       -["X-Accel-Redirect"]
       +"Cache-Control" => "no-cache",
       +"Content-Type" => "application/json",
     # ./spec/grape/integration/rack_sendfile_spec.rb:36:in `block (3 levels) in <top (required)>'

Finished in 3.05 seconds (files took 0.78411 seconds to load)
2108 examples, 1 failure, 1 pending

Failed examples:

rspec ./spec/grape/integration/rack_sendfile_spec.rb:34 # Rack::Sendfile when calling sendfile contains Sendfile headers

[Coveralls] Outside the CI environment, not sending data.
Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected
/usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/ [too-long-redacted] b --format documentation failed
ERROR: Test "ruby3.1" failed. Exiting.
dh_auto_install: error: dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-grape returned exit code 1
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------



More information about the Pkg-ruby-extras-maintainers mailing list