[GRASS-dev] GRASS 6.3.0

Martin Landa landa.martin at gmail.com
Fri Mar 21 06:57:58 EDT 2008


Thanks Glynn, I backported your fixes to releasebranch_6_3.

Martin

2008/3/21, Glynn Clements <glynn at gclements.plus.com>:
>
>  Markus Neteler wrote:
>
>  > I found that
>  > gui/wxpython/vdigit/
>  > fails on
>  > make -j4
>  >
>  > Something needs to be serialized there.
>
>
> Fixed in SVN:
>
>         -default: $(SHLIB) install_vdigit
>         +default: install_vdigit
>
>         -install_vdigit:
>         +install_vdigit: $(SHLIB)
>                 $(INSTALL_DATA) _grass6_wxvdigit.so $(ETCDIR)/vdigit/
>                 $(INSTALL_DATA) grass6_wxvdigit.py $(ETCDIR)/vdigit/
>
>  Note to anyone writing Makefiles: a dependency line such as:
>
>         target: source1 source2
>
>  states that source1 and source2 must be built before running the
>  commands for the rule. It does not require that source1 and source2
>  are built in that order. Although that will typically be the case for
>  a single-threaded build, a parallel build will attempt to build
>  source1 and source2 concurrently.
>
>  If source1 needs to be built before source2, this must be expressed through
>  dependencies, e.g.:
>
>         target: source2
>
>         source2: source1
>
>  Another problem with vdigit: the C++ wrapper file grass6_wxvdigit_wrap.cpp
>  is *not* a source file (it is built from the .i files using SWIG), and
>  should not be stored in the SVN repository. It should be generated by SWIG
>  during the build process.
>
>  However, this also lacks correct dependency information. First,
>  grass6_wxvdigit.i doesn't list the various .i files as dependencies,
>  so it won't be re-built if one of them is modified. Secondly, the rule
>  which generates grass6_wxvdigit_wrap.cpp doesn't actually have that
>  file as a target, so it won't get run if the file needs to be
>  re-built.
>
>  Finally, while writing this, I've just noticed that gui/wxpython/Makefile
>  has:
>
>         default: install_scripts parsubdirs
>
>  which will run both targets concurrently. This is theoretically
>  problematic, as vdigit/Makefile assumes that the etc/wxpython/vdigit
>  directory has already been created. In practice, you'll get away with it,
>  as the chances of compiling the entire vdigit module before a mkdir
>  command has completed are essentially nil.
>
>  However, to avoid setting a bad example which may cause actual problems if
>  someone follows it, I've changed the rule to:
>
>         default: install_scripts
>                 $(MAKE) parsubdirs
>
>  Note that parsubdirs is a "phony" target, so the following *won't* work:
>
>         default: parsubdirs
>
>         parsubdirs: install_scripts
>
>  Okay, I was wrong about the "finally" above; I've also changed:
>
>         -       $(INSTALL_DATA) _grass6_wxvdigit.so $(ETCDIR)/vdigit/
>         +       $(INSTALL_DATA) $(SHLIB) $(ETCDIR)/vdigit/
>
>  as the suffix won't be ".so" on all platforms.
>
>
>  --
>
> Glynn Clements <glynn at gclements.plus.com>
>


-- 
Martin Landa <landa.martin gmail.com> * http://gama.fsv.cvut.cz/~landa *


More information about the grass-dev mailing list