[DRE-maint] Bug#836543: ruby-rack: FTBFS with unhelpful error if machine has low memory

Santiago Vila sanvila at debian.org
Sat Sep 3 20:49:08 UTC 2016


Package: src:ruby-rack
Version: 1.6.4-4

Dear maintainer:

I tried to build this package in stretch with "dpkg-buildpackage -A"
(which is what the "Arch: all" autobuilder would do to build it)
but it failed:

--------------------------------------------------------------------------------
[...]
 debian/rules build-indep
dh build-indep --buildsystem=ruby --with ruby
   dh_testdir -i -O--buildsystem=ruby
   dh_update_autotools_config -i -O--buildsystem=ruby
   dh_auto_configure -i -O--buildsystem=ruby
	dh_ruby --configure
   dh_auto_build -i -O--buildsystem=ruby
	dh_ruby --build
   dh_ruby --build
   dh_auto_test -i -O--buildsystem=ruby
	dh_ruby --test
 fakeroot debian/rules binary-indep
dh binary-indep --buildsystem=ruby --with ruby

[... snipped ...]

    - serves files
    - 404s if url root is known but it can't find the file
    - calls down the chain if url root is not known
    - calls index file when requesting root in the given folder
    - doesn't call index file if :index option was omitted
    - serves hidden files
    - calls down the chain if the URI is not specified
    - supports serving fixed cache-control (legacy option)
    - supports header rule :all
    - supports header rule :fonts
    - supports file extension header rules provided as an Array
    - supports folder rules provided as a String
    - supports folder header rules provided as a String not starting with a slash
    - supports flexible header rules provided as Regexp
    - prioritizes header rules over fixed cache-control setting (legacy option)
  Rack::Runtime
    - sets X-Runtime is none is set
    - doesn't set the X-Runtime if it is already set
    - should allow a suffix to be set
    - should allow multiple timers to be set
  Rack::Head
    - should pass GET, POST, PUT, DELETE, OPTIONS, TRACE requests
    - should remove body from HEAD requests
    - should close the body when it is removed
  Rack::Deflater
    - should be able to deflate bodies that respond to each
    - should flush deflated chunks to the client as they become ready
    - should be able to deflate String bodies
    - should be able to gzip bodies that respond to each
    - should flush gzipped chunks to the client as they become ready
    - should be able to fallback to no deflation
    - should be able to skip when there is no response entity body
    - should handle the lack of an acceptable encoding
    - should handle gzip response with Last-Modified header
    - should do nothing when no-transform Cache-Control directive present
    - should do nothing when Content-Encoding already present
    - should deflate when Content-Encoding is identity
    - should deflate if content-type matches :include
    - should deflate if content-type is included it :include
    - should not deflate if content-type is not set but given in :include
    - should not deflate if content-type do not match :include
    - should deflate response if :if lambda evaluates to true
    - should not deflate if :if lambda evaluates to false
    - should check for Content-Length via :if
95 specifications (472 requirements), 0 failures, 0 errors
rake aborted!
Command failed with status (1): [/usr/bin/ruby2.3 /usr/bin/bacon -I./test -...]
/<<PKGBUILDDIR>>/debian/ruby-tests.rake:6:in `block in <top (required)>'
Tasks: TOP => default
(See full trace by running task with --trace)
ERROR: Test "ruby2.3" failed. Exiting.
dh_auto_install: dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-rack returned exit code 1
debian/rules:6: recipe for target 'binary-indep' failed
make: *** [binary-indep] Error 1
dpkg-buildpackage: error: fakeroot debian/rules binary-indep gave error exit status 2
--------------------------------------------------------------------------------

[ The failure is not really related to using "dpkg-buildpackage -A" ].

The build was made on a KVM virtual machine with 768 MB of RAM and 1 GB of swap.

This amount of memory is enough to build 15775 of the 16267 source
packages in stretch+sid generating "Arch: all" packages, that is,
it's enough to build 97.9% of all those packages.

So in case a package does not build ok I would expect an error like
"out of memory", "exhausted memory", "virtual memory exhausted"
or alike, but there is nothing like that in the above.

Normally I don't even need an error message like that, because I
monitor "Committed_AS:" line in /proc/meminfo and I have an estimation
of how much memory is required to build a given package.

But this heuristic fails completely for ruby-rack, as it tells me that
it would only need 200 MB of RAM to build, but the fact is that it
does not build unless I have a lot more memory.

To reproduce please try to build in a machine with only 768 MB of RAM.

Thanks.



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