On Sun, 24 Aug 2008, John Kodis wrote:
> I'm trying to build Shoes for an AMD-64 installation of Fedora Linux.
> Fedora places its 64-bit libraries under /usr/lib64 on this platform,
OK, but do the library directories within the packages that contains
get renamed? I think they would not. See below.
> and so to get Shoes to compile, I had to make a few minor changes to
> the Rakefile from the current git version (attached below).
Further remarks from me are in there.
>
> Other than a few warnings that "call to
> ‘_curl_easy_setopt_err_write_callback’ declared with attribute
> warning: curl_easy_setopt expects a curl_write_callback argument for
> this option", the build seemed to be successful. However, any attempt
> to run shoes fails with:
>
> $ dist/shoes --help
> no such file to load -- open-uri
>
> even though:
>
> $ irb
> irb(main):001:0> require 'open-uri'
> => true
I think you are using a different library when you do that: the one
in shoes (installed by shoes) versus the one installed by ruby. The
irb belongs to ruby.
>
> Even after copying the open-uri.rb file from /usr/lib/ruby/1.8/ to
> shoes/dist/ruby/lib/rubygems, the problem persists. I'd appreciate
Again you may get incompatibilities depending on how they were built.
> any suggestions as to what to try next. Thanks!
>
> -- John.
>
>
> diff --git a/Rakefile b/Rakefile
> index 39ac483..be31238 100644
> --- a/Rakefile
> +++ b/Rakefile
> @@ -87,7 +87,7 @@ end
> desc "Does a full compile, for the OS you're running on"
> task :build => [:build_os, "dist/VERSION.txt"] do
Have you changed :build_os to tell the compiler (gcc I presume) that
you are using 64 bits or at least that you are not using 32 bits and you
are using the system default? I think there may be other library refs in
there that could be wrong, but given that shoes brings in most stuff
it needs, I doubt it. I'm not familiar with your platform, so it's
not much good me poking around.
> mkdir_p "dist/ruby"
> - cp_r "#{ext_ruby}/lib/ruby/1.8", "dist/ruby/lib"
> + cp_r "#{ext_ruby}/lib64/ruby/1.8", "dist/ruby/lib"
is ext_ruby equal to /usr? If not, why would the lib part change
to lib64? [Maybe you know this is correct for other reasons, but
my suspicion is aroused by your open-uri lib not actually working.
> unless ENV['STANDARD']
> %w[rdoc rss soap wsdl xsd].each do |libn|
> rm_rf "dist/ruby/lib/#{libn}"
> @@ -147,9 +147,9 @@ task :build => [:build_os, "dist/VERSION.txt"] do
> end
> end
> else
> - cp "#{ext_ruby}/lib/lib#{ruby_so}.so",
> "dist/lib#{ruby_so}.so.1.8"
> - cp "/usr/lib/libgif.so", "dist/libgif.so.4"
> - cp "/usr/lib/libjpeg.so", "dist/libjpeg.so.62"
> + cp "#{ext_ruby}/lib64/lib#{ruby_so}.so",
> "dist/lib#{ruby_so}.so.1.8"
> + cp "/usr/lib64/libgif.so", "dist/libgif.so.4"
> + cp "/usr/lib64/libjpeg.so", "dist/libjpeg.so.62"
Those look OK.
> if ENV['VIDEO']
> cp "/usr/lib/libvlc.so", "dist"
> ln_s "libvlc.so", "dist/libvlc.so.0"
>
Hugh