[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