Problems with "make" after "Setup makefile"
Bryan O'Sullivan
bos at serpentine.com
Sun Apr 15 02:07:10 EDT 2007
Hi, Simon -
I've had a chance to try out your makefile patch for Cabal tonight as
part of pulling out cabal-rpm into a standalone program, and I'm finding
problems with it.
The first is with the code that attempts to use "mkdir" to create the
hierarchy of object directories. It will in several instances try to
generate a directory without first having created its parent. You can
reproduce this by trying to build Cabal in this way; it will fail
because it's trying to mkdir Language/Haskell, but does not first create
Language. I've hacked around this locally by invoking "mkdir -p"
instead, but that's not portable to old systems.
The second problem occurs immediately afterwards. If you try to build
e.g. the binary package, it will fail almost immediately, as follows:
binary-0.3 $ make
Panic! dist/build/Data/Binary/Get.o exists, but
dist/build/Data/Binary/Get.hi does not.
This error message is misleading. The dependency that make is trying to
follow is this:
dist/build/Data/Binary/Get.hi: dist/build/Data/Binary/Get.o
That triggers this portion of the Makefile:
%.$(way_)hi : %.$(way_)o
@if [ ! -f $@ ] ; then \
echo Panic! $< exists, but $@ does not.; \
exit 1; \
else exit 0 ; \
fi
In this case, neither side of the rule exists. I'm not too sure what
this is trying to do, or whether there's a step I ought to be taking
between "Setup makefile" and "make", but alas, no luck so far.
Thanks for any light you can shed.
<b
More information about the cabal-devel
mailing list