[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gem2deb: installing packages with the same layout as Rubygems



On വെള്ളി 13 നവംബര്‍ 2015 10:10 വൈകു, Antonio Terceiro wrote:
> Hello everyone,
> 
> TL;DR: with gem2deb 0.23 in experimental you can tell dh_ruby to install
> using the same layout as Rubygems by adding `export DH_RUBY =
> --gem-install` to your debian/rules.
> 
> I have just uploaded to experimental gem2deb version 0.23, which
> includes a --gem-install option to dh_ruby that will install
> packages using the same layout as Rubygems, instead of the layout we
> have been using in Debian since before Rubygems came into existance.
> 
> I would like your feedback.
> 
> Installation layout differences
> -----------------------------------------------------------------------
> 
> The traditional gem2deb installed will install to the following paths:
> 
>   /usr/lib/ruby/vendor_ruby
> 
>     pure Ruby code
> 
>   /usr/lib/<triplet>/ruby/vendor_ruby
> 
>     native extensions
> 
>   /usr/share/rubygems-integration/all/specifications
> 
>     gemspec files for architecture independent packages
> 
>   /usr/share/rubygems-integration/$RUBY_VERSION/specifications
> 
>     gemspec files for architecture dependent packages, for each supported
>     $RUBY_VERSION
> 
> The new gem installer will install *everything that is listed in
> .gemspec* to the following locations:
> 
>   /usr/share/rubygems-integration/all/
> 
>     for architecture independent packages
> 
>   /usr/lib/<triplet>/rubygems-integration/$RUBY_VERSION/
> 
>     for architecture dependent packages, for each $RUBY_VERSION
> 
> Problems being solved
> -----------------------------------------------------------------------
> 
> Since packages installed with the new gem installed will look exactly
> like their upstream counterparts look like when installed via Rubygems,
> we would not need to handle the following issues anymore:
> 
> - Content outside lib/
> 
>   We have been patching every package in which the code depends on stuff
>   outside of lib/, such as templates, configuration, etc etc. In these
>   cases, we needed to ship those in /usr/share/$package, and patch the
>   code that uses such content to look it up in /usr/share/$package
>   instead of somewhere relative to lib/
> 
> - Namespace issues in /usr/lib/ruby/vendor_ruby
> 
>   Since /usr/lib/ruby/vendor_ruby is shared by all packages, we usually
>   have namespace issues there, specially for Rails-related packages
>   where Rails assumes that each installed package has its own isolated
>   lib/ directory, so it encourages library authors to override Rails
>   files such as generators (i.e. code that generated files in Rails apps
>   based on templates, such as library-specific configuration files, etc).
> 
>   See #770251 for an example
>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770251
> 
> Can anybody think of other things we usually need to patch because
> upstream assumes the Rubygems installation layout?
> 
> How to use
> -----------------------------------------------------------------------
> 
> - Install gem2deb 0.23 from experimental
> 
> - Add the following to debian/rules
> 
>   export DH_RUBY = --gem-install
> 
>   (in this version dh_ruby will use $DH_RUBY as an extra source of
>   command line arguments)
> 
> Pending issues
> -----------------------------------------------------------------------
> 
> - currently READMEs, changelogs and license files are being duplicated
>   in the Rubygems directory, while on Debian they should be in
>   /usr/share/doc/$packages
> 
> - C source for native extensions is also being installed, and we
>   probably don't need that.
> 
> - <insert yours here after you give it a try>
> 
> The future
> -----------------------------------------------------------------------
> 
> In principle, packages using this new installer will work just fine
> together with our "traditional" packages.
> 
> I believe that this will immensely reduce the mismatch between Debian
> packages and upstream, making it a lot easier for us, and make
> everything work better together. I think that at some point this should
> become the default, if not for all, at least for new packages.
> 
> I am looking forward to read your ideas about it.
> 

I see gem2deb being pushed to unstable. So, is using the same layout as
Rubygems ok? Or, is it not yet official?

-- 
Regards
Balasankar C
http://balasankarc.in


Reply to: