Project

General

Profile

Actions

Bug #7279

closed

Zlib load error on HP-UX

Bug #7279: Zlib load error on HP-UX

Added by alexharv074 (Alex Harvey) almost 13 years ago. Updated over 6 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.8.7 (2012-06-29 patchlevel 370) [hppa2.0w-hpux11.11]
[ruby-core:48909]

Description

This was apparently a known issue on HP-UX and it is preventing me from compiling zlib
http://www.ruby-forum.com/topic/191987

To reproduce -

PA-RISC/HP-UX 11.11

# swlist
...
  gcc                                   4.2.3          gcc
  libgcc                                4.2.3          libgcc
  m4                                    1.4.16         m4
  make                                  3.82           make
# /usr/local/bin/ruby extconf.rb --with-zlib-include=/usr/local/include --with-zlib-lib=/usr/local/lib
checking for deflateReset() in -lz... no
checking for deflateReset() in -llibz... no
checking for deflateReset() in -lzlib1... no
checking for deflateReset() in -lzlib... no
checking for deflateReset() in -lzdll... no
# file /usr/local/lib/libz.sl
/usr/local/lib/libz.sl: PA-RISC1.1 shared library
# file /usr/local/include/zlib.h
/usr/local/include/zlib.h:      c program text

I have attached the mkmf.log.


Files

mkmf.log (5.47 KB) mkmf.log alexharv074 (Alex Harvey), 11/05/2012 09:51 PM
bug-7279.diff (730 Bytes) bug-7279.diff nobu (Nobuyoshi Nakada), 01/28/2013 05:17 PM

Related issues 1 (0 open1 closed)

Has duplicate Ruby - Bug #7737: problem with generated rbconfig.rb for HaikuClosednobu (Nobuyoshi Nakada)Actions

Updated by alexharv074 (Alex Harvey) almost 13 years ago Actions #1 [ruby-core:50601]

I found a workaround.

There is some documentation of HP-UX PA-RISC compiler here
http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=4727276391695110VgnVCM100000275d6e10RCRD

(There's probably a better one somewhere but that's the one I used.)

The +b option is used by the linker to embed a library path list in the executable for use at run time. However, if passing these options via CC or GCC then the option should be -Wl,+b. The mkmf.log file shows, however, that an unknown option +b is being passed directly to gcc.

After running configure I made the following change in config.status -

mv config.status config.status.orig
sed -e 's/^.*RPATHFLAG.*$/S["RPATHFLAG"]=" -Wl,+b%1$-s"/' config.status.orig >config.status
chmod +x config.status
./config.status

This results in /usr/local/lib/ruby/1.8/hppa2.0w-hpux11.11/rbconfig.rb having

# grep RPATHFLAG /usr/local/lib/ruby/1.8/hppa2.0w-hpux11.11/rbconfig.rb
  CONFIG["RPATHFLAG"] = " -Wl,+b%1$-s"

However, the make step still doesn't run properly because now -Wl,+b gets passed to ld, which is also wrong.

Thus after the make step has finished I made another change -

cd ext/zlib
mv Makefile Makefile.orig
sed -e 's#^LIBPATH.*$#LIBPATH =  -L. -L$(topdir) -L/usr/local/lib +b/usr/local/lib#' Makefile.orig >Makefile
make
cd ../..

That works fine. Then cd ../.. and make install and the zlib extension is installed.

Someone who understands how all this stuff works better than I do can hopefully turn this into an actual patch.

Updated by nobu (Nobuyoshi Nakada) over 12 years ago Actions #2

  • Project changed from 2 to Ruby
  • Status changed from Open to Feedback
  • Assignee set to nobu (Nobuyoshi Nakada)

=begin
Could you try this patch?

diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index c9e738a..fe6f771 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -317,9 +317,9 @@ def link_command(ldflags, opt="", libpath=$DEFLIBPATH|$LIBPATH)
'CFLAGS' => "#$CFLAGS",
'ARCH_FLAG' => "#$ARCH_FLAG",
'LDFLAGS' => "#$LDFLAGS #{ldflags}",

  •                          'LIBPATH' => libpathflag(libpath),
                             'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
                             'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
    
  • conf['LIBPATH'] = libpath.map {|s| LIBPATHFLAG % RbConfig::expand(s.dup, conf).quote}.join("")
    Config::expand(TRY_LINK.dup, conf)
    end
    =end

Updated by nobu (Nobuyoshi Nakada) over 12 years ago Actions #3 [ruby-core:51722]

Updated by mame (Yusuke Endoh) over 12 years ago Actions #4 [ruby-core:52473]

  • Target version changed from 2.0.0 to 2.6

Updated by alexharv074 (Alex Harvey) over 12 years ago Actions #5

Hi Nobuyoshi,

Yes the patch works.

For people viewing this in the archives, it's worth knowing that patch and diff are different on HP-UX. To apply this patch -

cp -p lib/mkmf.rb lib/mkmf.rb.orig
cat <<'EOF' >mkmf.hpux.patch

*** lib/mkmf.rb.orig Sat Dec 4 17:34:10 2010
--- lib/mkmf.rb Wed Feb 13 16:29:18 2013


*** 317,325 ****
'CFLAGS' => "#$CFLAGS",
'ARCH_FLAG' => "#$ARCH_FLAG",
'LDFLAGS' => "#$LDFLAGS #{ldflags}",

  •                           'LIBPATH' => libpathflag(libpath),
                              'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
                              'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
    
    Config::expand(TRY_LINK.dup, conf)
    end

--- 317,325 ----
'CFLAGS' => "#$CFLAGS",
'ARCH_FLAG' => "#$ARCH_FLAG",
'LDFLAGS' => "#$LDFLAGS #{ldflags}",
'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")

  • conf['LIBPATH'] = libpath.map {|s| LIBPATHFLAG % RbConfig::expand(s.dup, conf).quote}.join("")
    Config::expand(TRY_LINK.dup, conf)
    end
    EOF
    patch lib/mkmf.rb <mkmf.hpux.patch

Updated by naruse (Yui NARUSE) almost 8 years ago Actions #6

  • Target version deleted (2.6)

Updated by jeremyevans0 (Jeremy Evans) over 6 years ago Actions #7

  • Status changed from Feedback to Closed
Actions

Also available in: PDF Atom