[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