Re: [perf] make clean problematic bashism

From: Wouter M. Koolen
Date: Wed Aug 15 2012 - 06:40:14 EST


On 08/15/2012 12:26 PM, Peter Zijlstra wrote:
On Wed, 2012-08-15 at 11:52 +0200, Wouter M. Koolen wrote:
Dear perf maintainers,

I attempted to compile perf 3.5.1 without worrying about installing
dependencies first. The resulting error messages were quite helpful, and
led me to install a bunch of development libraries and flex.

Unfortunately, after installing flex the build still failed, even after
make clean.

The reason for this was a bunch of generated empty flex files in util/
that were not removed by make clean. They are intended to be erased,
since the Makefile executes

rm -f util/*-{bison,flex}*

however, this command does not remove the files. I guess because {,}
alternatives are only special in bash but the makefile is run with some
other shell?

ISTR us getting a number of such patches, did we miss a site, acme?

I got perf to compile now, but thought you would be interested to know
about this little problem.

With kind regards,

Wouter Koolen


PS: as a side note: GNU make has the .DELETE_ON_ERROR: special target,
which removes the target file when its generating command fails. This
would have prevented my problem and sounds like a good idea in general.
Maybe perf could make use of this feature when on GNU make?

I don't think we build with anything but gnu make, mind sending a patch
implementing your suggestion?



Hi Peter,

Some more information: my system has /bin/sh set to dash. I remember a question about this during Debian installation. I guess Ubuntu does something similar viz. https://lkml.org/lkml/2012/5/4/90

Patch attached :)

With kind regards,

Wouter diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 0eee64c..29b2373 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -1,3 +1,5 @@
+.DELETE_ON_ERROR:
+
include ../scripts/Makefile.include

# The default target of this Makefile is...