[pacman-dev] [PATCH] Use automake verbose helpers in custom make rules

Dan McGee dan at archlinux.org
Wed Dec 7 13:33:41 EST 2011


This converts our script generation to use the built-in AM_V_GEN macro,
which honors the V= setting passed to make and allows one to see the
full command if they truly desire. The AM_V_at macro is also used in
place of an explicit @ so verbose-mode compiles show all commands being
run.

We can also use these two macros in doc generation to quiet it down to
the level we expect.

Other minor changes:
* a pointless test call is removed in test/pacman/tests/
* sed is used instead of dos2unix as we depend on it anyway
* consecutive chmod calls are reduced to a single call (e.g., '+x,a-x')

Signed-off-by: Dan McGee <dan at archlinux.org>
---

Dave, I know you are good at shell stuff- can you take a look at this and make
sure it is kosher? Mainly the chmod changes (is that comma stuff
cross-platform?), and the sed conversion (cd doc/; make website). Thanks!

Example full complile run now, including docs:

$ make -s -j3 V=0
Making all in lib/libalpm
Making all in po
  CC     alpm.lo
  CC     add.lo
  CC     alpm_list.lo
  CC     backup.lo
  CC     be_local.lo
  CC     be_package.lo
  CC     be_sync.lo
  CC     conflict.lo
  CC     db.lo
  CC     delta.lo
  CC     deps.lo
  CC     diskspace.lo
  CC     dload.lo
  CC     error.lo
  CC     graph.lo
  CC     group.lo
  CC     handle.lo
  CC     log.lo
  CC     package.lo
  CC     pkghash.lo
  CC     rawstr.lo
  CC     remove.lo
  CC     signing.lo
  CC     sync.lo
  CC     trans.lo
  CC     util.lo
  CC     version.lo
  CC     base64.lo
  CCLD   libalpm.la
Making all in src/util
  CC     vercmp.o
  CC     testpkg.o
  CC     testdb.o
  CC     cleanupdelta.o
  CC     pacsort.o
  CC     pactree.o
  CCLD   vercmp
  CCLD   testpkg
  CCLD   testdb
  CCLD   cleanupdelta
  CCLD   pacsort
  CCLD   pactree
Making all in src/pacman
Making all in po
  CC     conf.o
  CC     database.o
  CC     deptest.o
  CC     package.o
  CC     pacman.o
  CC     query.o
  CC     remove.o
  CC     sync.o
  CC     callback.o
  CC     upgrade.o
  CC     util.o
  CCLD   pacman
Making all in scripts
Making all in po
  GEN    makepkg
  GEN    pacman-db-upgrade
  GEN    pacman-key
  GEN    pacman-optimize
  GEN    pkgdelta
  GEN    rankmirrors
  GEN    repo-add
Making all in etc
  GEN    makepkg.conf
  GEN    pacman.conf
Making all in test/pacman
Making all in tests
  GEN    sync200.py
Making all in test/util
Making all in contrib
  GEN    pacdiff
  GEN    bacman
  GEN    paccache
  GEN    paclist
  GEN    paclog-pkglist
  GEN    pacscripts
  GEN    pacsearch
  GEN    bash_completion
  GEN    zsh_completion
Making all in doc
  GEN    pacman.8
  GEN    makepkg.8
  GEN    repo-add.8
  GEN    vercmp.8
  GEN    pkgdelta.8
  GEN    pacman-key.8
  GEN    PKGBUILD.5
  GEN    makepkg.conf.5
  GEN    pacman.conf.5
  GEN    libalpm.3


 contrib/Makefile.am           |   19 ++++++++-----------
 doc/Makefile.am               |   16 +++++++++-------
 etc/Makefile.am               |    7 +++----
 scripts/Makefile.am           |   10 +++-------
 test/pacman/tests/Makefile.am |   10 ++++------
 5 files changed, 27 insertions(+), 35 deletions(-)

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index be0a4ba..970e17b 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -35,19 +35,16 @@ edit = sed \
 	-e '1s|!/bin/bash|!$(BASH_SHELL)|g'
 
 $(OURSCRIPTS): Makefile
-	@echo '    ' GEN $@;
-	@$(RM) $@ $@.tmp
-	@$(edit) $(srcdir)/$@.in >$@.tmp
-	@chmod +x $@.tmp
-	@chmod a-w $@.tmp
-	@mv $@.tmp $@
+	$(AM_V_at)$(RM) $@ $@.tmp
+	$(AM_V_GEN)$(edit) $(srcdir)/$@.in >$@.tmp
+	$(AM_V_at)chmod +x,a-w $@.tmp
+	$(AM_V_at)mv $@.tmp $@
 
 $(OURFILES): Makefile
-	@echo '    ' GEN $@;
-	@$(RM) $@ $@.tmp
-	@$(edit) $(srcdir)/$@.in >$@.tmp
-	@chmod a-w $@.tmp
-	@mv $@.tmp $@
+	$(AM_V_at)$(RM) $@ $@.tmp
+	$(AM_V_GEN)$(edit) $(srcdir)/$@.in >$@.tmp
+	$(AM_V_at)chmod a-w $@.tmp
+	$(AM_V_at)mv $@.tmp $@
 
 all-am: $(OURSCRIPTS) $(OURFILES)
 
diff --git a/doc/Makefile.am b/doc/Makefile.am
index f449e72..b8d42d6 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -90,8 +90,10 @@ endif
 
 html: $(HTML_DOCS)
 
-website: html
-	bsdtar czf website.tar.gz $(HTML_DOCS) \
+website: website.tar.gz
+
+website.tar.gz: html
+	$(AM_V_GEN)bsdtar czf $@ $(HTML_DOCS) \
 		asciidoc-override.css \
 		-C /etc/asciidoc/stylesheets/ \
 		asciidoc.css \
@@ -119,15 +121,15 @@ A2X_OPTS = \
 
 # These rules are due to the includes and files of the asciidoc text
 $(ASCIIDOC_MANS): asciidoc.conf footer.txt Makefile
-	a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS) --out-file=./$@.xml" $(srcdir)/$@.txt
+	$(AM_V_GEN)a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS) --out-file=./$@.xml" $(srcdir)/$@.txt
 
 %.html: %.txt
-	asciidoc $(ASCIIDOC_OPTS) $*.txt
-	dos2unix $@
+	$(AM_V_GEN)asciidoc $(ASCIIDOC_OPTS) -o - $*.txt | \
+		sed -e 's/\x0D$$//' > $@
 
 HACKING.html: ../HACKING
-	asciidoc $(ASCIIDOC_OPTS) -o $@ ../HACKING
-	dos2unix $@
+	$(AM_V_GEN)asciidoc $(ASCIIDOC_OPTS) -o - ../HACKING | \
+		sed -e 's/\x0D$$//' > $@
 
 # Customizations for certain HTML docs
 $(HTML_MANPAGES): asciidoc.conf footer.txt Makefile
diff --git a/etc/Makefile.am b/etc/Makefile.am
index d504d7f..58a80bd 100644
--- a/etc/Makefile.am
+++ b/etc/Makefile.am
@@ -22,10 +22,9 @@ edit = sed \
 	-e 's|@ROOTDIR[@]|$(ROOTDIR)|g'
 
 $(dist_sysconf_DATA): Makefile
-	@echo '    ' GEN $@;
-	@$(RM) $@ $@.tmp
-	@$(edit) `test -f ./$@.in || echo $(srcdir)/`$@.in >$@.tmp
-	@mv $@.tmp $@
+	$(AM_V_at)$(RM) $@ $@.tmp
+	$(AM_V_GEN)$(edit) `test -f ./$@.in || echo $(srcdir)/`$@.in >$@.tmp
+	$(AM_V_at)mv $@.tmp $@
 
 makepkg.conf: $(srcdir)/makepkg.conf.in
 pacman.conf: $(srcdir)/pacman.conf.in
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index d89fd30..328fbff 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -60,14 +60,10 @@ edit = sed \
 ## All the scripts depend on Makefile so that they are rebuilt when the
 ## prefix etc. changes. Use chmod -w to prevent people from editing the
 ## wrong file by accident.
-# two 'test' lines- make sure we can handle both sh and py type scripts
-# third 'test' line- make sure one of the two checks succeeded
 $(OURSCRIPTS): Makefile
-	@echo '    ' GEN $@;
-	@$(RM) $@
-	@test -f $(srcdir)/$@.sh.in && m4 -P -I $(srcdir) $(srcdir)/$@.sh.in | $(edit) >$@
-	@chmod +x $@
-	@chmod a-w $@
+	$(AM_V_at)$(RM) $@
+	$(AM_V_GEN)test -f $(srcdir)/$@.sh.in && m4 -P -I $(srcdir) $(srcdir)/$@.sh.in | $(edit) >$@
+	$(AM_V_at)chmod +x,a-w $@
 
 makepkg: \
 	$(srcdir)/makepkg.sh.in \
diff --git a/test/pacman/tests/Makefile.am b/test/pacman/tests/Makefile.am
index 508534a..9ab0c77 100644
--- a/test/pacman/tests/Makefile.am
+++ b/test/pacman/tests/Makefile.am
@@ -17,11 +17,9 @@ edit = sed \
 
 
 $(CONFTESTS): Makefile
-	@echo '    ' GEN $@;
-	@$(RM) $@ $@.tmp
-	@test -f $(srcdir)/$@.in && $(edit) $(srcdir)/$@.in >$@.tmp || true
-	@test -f $@.tmp || false
-	@chmod a-w $@.tmp
-	@mv $@.tmp $@
+	$(AM_V_at)$(RM) $@ $@.tmp
+	$(AM_V_GEN)test -f $(srcdir)/$@.in && $(edit) $(srcdir)/$@.in >$@.tmp || true
+	$(AM_V_at)chmod a-w $@.tmp
+	$(AM_V_at)mv $@.tmp $@
 
 # vim:set ts=2 sw=2 noet:
-- 
1.7.8



More information about the pacman-dev mailing list