[GRASS-dev] reducing make noise

Hi,

when compiling modules a huge amount of text flies by making it hard to
spot Warnings etc without taking care to redirect stderr and other tricks.
ie the signal:noise ratio is very low.

Would it be possible to filter Makefile LIBES, DEPENDENCIES through some
sort of sort|uniq? (I understand that calling order may be important)

e.g.
gcc -L/usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/lib
-o /usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/bin/v.lidar.growing
OBJ.i686-pc-linux-gnu/ConvexHull.o OBJ.i686-pc-linux-gnu/growing.o
OBJ.i686-pc-linux-gnu/main.o -lgrass_lidar -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_gis -lgrass_datetime -lz -lgrass_gmath -lgrass_gis
-lgrass_datetime -lz -lgrass_vect -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_dgl -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_gis -lgrass_datetime -lz -lgrass_linkm
-lgrass_rtree -lgrass_vect -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_dgl -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_gis -lgrass_datetime -lz -lgrass_linkm
-lgrass_rtree -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_dgl -lgrass_rtree -lgrass_linkm -lgrass_dbmiclient
-lgrass_dbmibase -lgrass_gis -lgrass_datetime -lz -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmibase -lgrass_gis -lgrass_datetime
-lz -L/usr/lib -lgdal1.5.0 -lgrass_dbmiclient -lgrass_dbmibase
-lgrass_gis -lgrass_datetime -lz -lgrass_gis -lgrass_datetime
-lz -lgrass_dbmibase -lgrass_gis -lgrass_datetime -lz
-lgrass_gis -lgrass_datetime -lz -lm -lgrass_segment -lgrass_gis
-lgrass_datetime -lz -lgrass_gmath -lgrass_gis -lgrass_datetime
-lz -lm -lz

once duplicates are removed the above libraries reduce to:

-L/usr/lib
-lgdal1.5.0
-lgrass_datetime
-lgrass_dbmibase
-lgrass_dbmiclient
-lgrass_dgl
-lgrass_dig2
-lgrass_gis
-lgrass_gmath
-lgrass_lidar
-lgrass_linkm
-lgrass_rtree
-lgrass_segment
-lgrass_vect
-lm
-lz

thanks,
Hamish

Hamish wrote:

when compiling modules a huge amount of text flies by making it hard to
spot Warnings etc without taking care to redirect stderr and other tricks.
ie the signal:noise ratio is very low.

Would it be possible to filter Makefile LIBES, DEPENDENCIES through some
sort of sort|uniq? (I understand that calling order may be important)

You need to preserve the order in case any of the libraries are static
libraries. Actually, the only reason why the the various *LIB
variables include the dependencies is in case of static libraries.

I don't think that there's any practical approach using only make
functions, so you would need to invoke an external command using
$(shell ...).

e.g.
gcc -L/usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/lib
-Wl,--export-dynamic
-Wl,-rpath-link,/usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/lib
-o /usr/local/src/grass/svn/grass64/dist.i686-pc-linux-gnu/bin/v.lidar.growing
OBJ.i686-pc-linux-gnu/ConvexHull.o OBJ.i686-pc-linux-gnu/growing.o
OBJ.i686-pc-linux-gnu/main.o -lgrass_lidar -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_gis -lgrass_datetime -lz -lgrass_gmath -lgrass_gis
-lgrass_datetime -lz -lgrass_vect -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_dgl -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_gis -lgrass_datetime -lz -lgrass_linkm
-lgrass_rtree -lgrass_vect -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmiclient -lgrass_dbmibase -lgrass_gis
-lgrass_datetime -lz -lgrass_gis -lgrass_datetime -lz
-lgrass_dgl -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_gis -lgrass_datetime -lz -lgrass_linkm
-lgrass_rtree -lgrass_dig2 -lgrass_gis -lgrass_datetime -lz
-lgrass_rtree -lgrass_dgl -lgrass_rtree -lgrass_linkm -lgrass_dbmiclient
-lgrass_dbmibase -lgrass_gis -lgrass_datetime -lz -lgrass_gis
-lgrass_datetime -lz -lgrass_dbmibase -lgrass_gis -lgrass_datetime
-lz -L/usr/lib -lgdal1.5.0 -lgrass_dbmiclient -lgrass_dbmibase
-lgrass_gis -lgrass_datetime -lz -lgrass_gis -lgrass_datetime
-lz -lgrass_dbmibase -lgrass_gis -lgrass_datetime -lz
-lgrass_gis -lgrass_datetime -lz -lm -lgrass_segment -lgrass_gis
-lgrass_datetime -lz -lgrass_gmath -lgrass_gis -lgrass_datetime
-lz -lm -lz

Another suggestion: find a terminal emulator which allows
line-wrapping to be disabled. Or:

  make 2>&1 | tee build.log | cut -b 1-79

--
Glynn Clements <glynn@gclements.plus.com>