Hi,

My recent build of the ghc5-5.02 Debian package produced an unusable compiler
(because libdir was missing a trailing "/ghc-5.02". [EMAIL PROTECTED] and I
tracked the problem down, as follows.

The problem occurs with make version 3.77, but not with make version 3.79.1
. Whether it will occur with make version 3.80 etc. is probably an open
question.

The setting of 'libdir' in "mk/config.mk" in the ghc source is infelicitous. It
is set using both '=' and ':=' - AFAIK this combination, besides being bad
practice, does not have a defined meaning.

Here is my patch (which solves the problem for me):

--- ghc-5.02.1.orig/mk/config.mk.in     Tue Aug 28 00:27:23 2001
+++ ghc5-5.02.1/mk/config.mk.in Mon Nov  5 18:51:13 2001
@@ -462,7 +462,10 @@
 # override libdir and datadir to put project-specific stuff in
 # a subdirectory with the version number included.
 #
-libdir     := $(if 
$(ProjectNameShort),$(libdir)/$(ProjectNameShort)-$(ProjectVersion),$(libdir))
+libdir0 := $(libdir)
+ifneq "$(strip $(ProjectNameShort))" ""
+    libdir = $(libdir0)/$(ProjectNameShort)-$(ProjectVersion)
+endif
 datadir    := $(if 
$(ProjectNameShort),$(datadir)/$(ProjectNameShort)-$(ProjectVersion),$(datadir))
 
 # 

I have checked that the similar use of ':=' is not causing a problem with
'datadir', but believe this is mostly good luck.

I suggest a careful examination of the use of ':=', and also of the need to
"override" variables such as libdir. IMO, overriding make variables is better
avoided (think of referential transparency), and use of ':=' should be confined
to those cases where it is genuinely needed for a special reason (think of
laziness).

Tim
-- 
"They that can give up essential liberty to obtain a little temporary
 safety deserve neither liberty nor safety." -- Benjamin Franklin

_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to