[ruby] multilib and noarch

Ian Burrell ianburrell at gmail.com
Wed Mar 15 19:39:34 UTC 2006


On 3/14/06, David Lutterkort <dlutter at redhat.com> wrote:
> Ville Skyttä pointed out[1] that with the current packaging of ruby in
> core, it's not possible to build noarch ruby packages right now, since
> none of the directories on the standard ruby lib path ($:) are the same
> on x86_64 and i386.
>
> The load path is made up of five dirs, all defined in the Config::CONFIG
> hash in rbconfig: sitelibdir, sitearchdir, sitedir, rubylibdir, archdir.
> With the current packaging, all these paths are underneath /usr/lib on
> 32bit platforms and under /usr/lib64 on 64bit platforms. The dirs with
> 'arch' in their name are meant for binary extensions (Ruby bindings),
> and these dirs end in something that depends on the arch, i.e. Ruby
> already makes sure that architecture-specific stuf gets installed into
> architecture-specific dirs, no matter where ruby is installed.
>

It might be useful to look at how Perl does things.  On x86_64 Perl,
noarch modules go in /usr/lib/perl5/site_perl/5.8.8.  Modules with
binary libraries go in
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi.  Perl puts
the perl source for arch-dependent modules under that directory and
the shared libraries under
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto.

For RPMs, the modules are installed in the vendor_perl directories to
keep them separate from the manually installed modules.  Ruby doesn't
support that construct.

My impression is that Ruby has similar constructs. sitelibdir would be
/usr/lib/site_ruby/1.8.  sitearchdir would be
/usr/lib64/site_ruby/1.8/x86_64-linux-gnu.  The one thing I don't know
is where the ruby code for arch-specific shared libraries should go. 
My impression is that they would be installed in sitelibdir,
/usr/lib/site_ruby/1.8 and be shared between multilib packages.

 - Ian




More information about the fedora-extras-list mailing list