> Johannes Radinger@JOHANNES /osgeo4w/usr/src/grass-6.5.svn/lib/python
> $ make
> make: *** No rule to make target `|', needed by
> `/osgeo4w/usr/src/grass-6.5.svn
> /dist.i686-pc-mingw32/etc/python/grass/script/core.py'. Stop.
It means that you need GNU make 3.81.
Originally, the policy was to require 3.81 for 7.0 but ensure that 6.x
works with older versions. I don't know whether that policy has been
abandoned, or if it's just a case of careless back-porting from 7.0.
[CC to grass-dev for clarification; I think that we discussed this
fairly recently, but I don't recall the outcome.]
Originally, the policy was to require 3.81 for 7.0 but ensure that 6.x
works with older versions. I don't know whether that policy has been
abandoned, or if it's just a case of careless back-porting from 7.0.
[CC to grass-dev for clarification; I think that we discussed this
fairly recently, but I don't recall the outcome.]
Hi,
fwiw, I still have a back room Xeon number cruncher which is running RHEL 4,
which shipped with gnu make 3.80. [distro supported by RH until March 2012,
or 2015 if you pay more]
It just sort of works so I don't rebuild grass on it very often (nor
have had the motivation to upgrade to a newer CentOS or RHEL) but it
would be nice if the grass 6.x line continued to support older
configurations. Even if no one else is interested I'm happy to support
that if pointed in the right direction.
It just sort of works so I don't rebuild grass on it very often (nor
have had the motivation to upgrade to a newer CentOS or RHEL) but it
would be nice if the grass 6.x line continued to support older
configurations. Even if no one else is interested I'm happy to support
that if pointed in the right direction.
The main issue is that versions before 3.81 don't support order-only
dependencies, e.g. (from lib/python/Makefile):
$(GDIR): | $(PYDIR)
$(MKDIR) $@
Any dependencies listed after the "|" won't cause the target to be
re-made if the dependency is newer. If the target is going to be
re-made anyhow, then the dependencies will be made before the rule's
commands are executed.
3.80 treats the "|" as the name of a dependency; it doesn't exist, so
it attempts to re-make it, fails to find a rule, and reports an error.
For 6.x, the above rule should have been written as:
$(GDIR):
$(MAKE) $(PYDIR)
$(MKDIR) $@
This works with earlier versions of make, at the expense of adding
some "noise" to the output and executing additional commands.
Such rules invariably arise from back-porting Makefiles verbatim from
7.0, which requires make 3.81 (for more reasons than just order-only
dependencies).
On Mon, Nov 14, 2011 at 9:14 PM, Glynn Clements
<glynn@gclements.plus.com> wrote:
Hamish wrote:
...
3.80 treats the "|" as the name of a dependency; it doesn't exist, so
it attempts to re-make it, fails to find a rule, and reports an error.
For 6.x, the above rule should have been written as:
$\(GDIR\):
$\(MAKE\) $\(PYDIR\)
$\(MKDIR\) $@
This works with earlier versions of make, at the expense of adding
some "noise" to the output and executing additional commands.
Such rules invariably arise from back-porting Makefiles verbatim from
7.0, which requires make 3.81 (for more reasons than just order-only
dependencies).