[DRE-maint] Bug#972702: ruby-bundler: dependency resolution fails for compiled gems
    Lucas Kanashiro 
    kanashiro at debian.org
       
    Wed Oct 28 22:02:06 GMT 2020
    
    
  
Thanks to David Rodriguez (our dear bundler upstream maintainer :) I was 
able to workaround the bug locally and understand a bit better what is 
going on.
The source of this problem is this commit:
https://github.com/rubygems/rubygems/commit/226ec115fe503bcc93bffdf5cd3e8a668890b4d8
Quoting David:
"Anyways, the actual check making bundler believe the ffi gem is missing 
extensions is `File.exist?(gem_build_complete_path)`. I believe the idea 
of this check is that bundler/rubygems are not able to know which 
artifacts an extension will generate, so what rubygems does is 
generating this dummy file at a well known path after a successful 
extension compilation, so that it can later check the existence of this 
path when it needs to know whether a gem is missing extensions."
There are 2 workarounds to fix this issue:
1) Create this dummy file.
$ mkdir -p 
/usr/share/rubygems-integration/2.7.0/extensions/x86_64-linux/2.7.0/ffi-1.12.2/ 
$ touch 
/usr/share/rubygems-integration/2.7.0/extensions/x86_64-linux/2.7.0/ffi-1.12.2/gem.build_complete 
After that 'bundle --local' will find the ffi gem.
2) Remove the extension from gemspec.
$ sed -i.bak -e 3d 
/usr/share/rubygems-integration/2.7.0/specifications/ffi-1.12.2.gemspec
After removing the header line containing "# stub: 
ext/ffi_c/extconf.rb", 'bundler --local' also works fine and find the 
ffi gem.
I think the second approach is what we want, and the proper fix would be 
to not include extensions in our gemspecs. We could try to achieve that 
via gem2deb. Any thoughts?
-- 
Lucas Kanashiro
    
    
More information about the Pkg-ruby-extras-maintainers
mailing list