[GHC] #8795: Build fails on Solaris 10 due to missing ranlib

GHC ghc-devs at haskell.org
Mon Feb 17 09:00:39 UTC 2014


#8795: Build fails on Solaris 10 due to missing ranlib
-------------------------------------+-------------------------------------
       Reporter:  kgardas            |             Owner:
           Type:  bug                |            Status:  new
       Priority:  normal             |         Milestone:
      Component:  Compiler           |           Version:  7.9
       Keywords:                     |  Operating System:  Solaris
   Architecture:  x86_64 (amd64)     |   Type of failure:  Building GHC
     Difficulty:  Easy (less than 1  |  failed
  hour)                              |         Test Case:
     Blocked By:                     |          Blocking:
Related Tickets:                     |
-------------------------------------+-------------------------------------
 Hello,
 On Solaris 10 and GHC HEAD I get this compilation failure:
 {{{
 Linking utils/ghc-cabal/dist/build/tmp/ghc-cabal ...
 "touch" utils/ghc-cabal/dist/build/tmp/ghc-cabal
 "cp" utils/ghc-cabal/dist/build/tmp/ghc-cabal inplace/bin/ghc-cabal
 "inplace/bin/mkdirhier" compiler/stage1/build//.
 "rm" -f compiler/stage1/build/Config.hs
 Creating compiler/stage1/build/Config.hs ...
 done.
 "inplace/bin/ghc-cabal" configure libraries/Cabal/Cabal dist-boot ""
 --with-ghc="/home/karel/sfw/ghc-7.6.3-new-dist/bin/ghc" --with-ghc-
 pkg="/home/karel/sfw/ghc-7.6.3-new-dist/bin/ghc-pkg"  --package-
 db=/silence/home/karel/vcs/ghc-src/ghc-sunos5.1x-ranlib-
 fix/libraries/bootstrapping.conf --disable-library-for-ghci --enable-
 library-vanilla --enable-library-for-ghci --disable-library-profiling
 --disable-shared --configure-option=CFLAGS=" -U__i686   " --configure-
 option=LDFLAGS="   " --configure-option=CPPFLAGS="   "   --constraint
 "Cabal == 1.18.1.3"   --constraint "hpc == 0.6.0.1"   --constraint "bin-
 package-db == 0.0.0.0"   --constraint "hoopl == 3.10.0.0"   --constraint
 "transformers == 0.3.0.0"   --constraint "terminfo == 0.4.0.0" --with-
 gcc="/usr/sfw/bin/gcc" --configure-option=--with-cc="/usr/sfw/bin/gcc"
 --with-ar="/usr/xpg4/bin/ar" --with-ranlib=":" --with-
 alex="/home/karel/.cabal/bin/alex" --with-
 happy="/home/karel/.cabal/bin/happy"
 Configuring Cabal-1.18.1.3...
 ghc-cabal: Cannot find the program 'ranlib' at ':' or on the path
 gmake[1]: *** [libraries/Cabal/Cabal/dist-boot/package-data.mk] Error 1
 }}}

 the reason for this failure is that in configure.ac we're using
 FP_PROG_AR_NEEDS_RANLIB which is defined in aclocal.m4 and uses
 AC_PROG_RANLIB in its body. The problem is that if ranlib is not found
 then AC_PROG_RANLIB sets RANLIB variable to `:' which is preferred way of
 no-op in POSIX shell even slightly more preferable than setting it to true
 (google for it if you care).
 Anyway, ghc-cabal tries to execute `:', but this fails since this is shell
 built-in and not the program/application on the target OS.
 The fix should be easy, test if RANLIB is set to `:' and set it to true.
 This works since true is actually a program/application on Solaris 10:
 {{{
 $ which true
 /usr/bin/true
 }}}

 Please note that such failure will happen on all OSes (Unix(-like)) which
 do not provide ranlib command. Also please note that Solaris 11 is not hit
 by this issue since it provides ranlib in a form of shell wrapper actually
 calling just `exit 0'

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8795>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list