Bug#595396: NMU diff for slepc 3.0.0-p7.dfsg-7.1

Ben Hutchings ben at decadent.org.uk
Sun Oct 31 16:04:57 UTC 2010


This package is now empty on most architectures, probably due to a bug
in the build rules provided by petsc.  For some reason the shared
library is created as libslepc.so and not as libslepc.so.3.0.0.  This is
masked by the way debian/rules is written, which ignores failures in
many commands.  I'm changing it to avoid that, and bumping the build-
dependencies on petsc packages to the current version in the hope that
this makes a difference.  (I was not able to reproduce this failure with
the current version.)

Ben.

diff -u slepc-3.0.0-p7.dfsg/debian/rules slepc-3.0.0-p7.dfsg/debian/rules
--- slepc-3.0.0-p7.dfsg/debian/rules
+++ slepc-3.0.0-p7.dfsg/debian/rules
@@ -32,43 +32,28 @@
 
 export CPPFLAGS=-I/usr/include/petsc
 
-clean:
+include /usr/share/quilt/quilt.make
+
+clean: unpatch
 	dh_testdir
-	-if [ -e patch ]; then \
-	  debian/rules unpatch; \
-	fi
-	-mv tags thetags
-	dh_clean
-	-mv thetags tags
+	dh_clean -Xtags
 	rm -f build* install* $(ARCH_GENERATED_FILES)
 	-$(MAKE) PETSC_ARCH=$(PETSC_ARCH)-c-debug PETSC_DIR=$(PETSC_DIR) \
 	  SLEPC_DIR=$(CURDIR) allclean
 	-$(MAKE) PETSC_ARCH=$(PETSC_ARCH)-c-opt PETSC_DIR=$(PETSC_DIR) \
 	  SLEPC_DIR=$(CURDIR) allclean
 # These probably should be removed by `make clean' but aren't
-	rm -f `find . -name \*.pyc -print`
+	find . -name \*.pyc -delete
 	rm -rf $(PETSC_ARCH)-c-debug $(PETSC_ARCH)-c-opt
 	rm -rf lib debian/extemp
 
-patch:
-	if [ ! -e $@ ]; then \
-	  QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2; \
-	fi
-	touch $@
-
-unpatch:
-	if [ -e patch ]; then \
-	  QUILT_PATCHES=debian/patches quilt pop -a -R || test $$? = 2; \
-	  rm -rf patch .pc; \
-	fi
-
-build-indep: patch
+build-indep: $(QUILT_STAMPFN)
 # We have nothing to do by default.
 	touch $@
 
 # With debugging=1, only static libraries are generated.
 # Build optimized libs second so files are consistent with optimized.
-build-arch: patch
+build-arch: $(QUILT_STAMPFN)
 	PETSC_ARCH=$(PETSC_ARCH)-c-debug PETSC_DIR=$(PETSC_DIR) \
 	  SLEPC_DIR=$(CURDIR) ./configure --with-arpack-dir=/usr/lib/debug/usr/lib \
 	  --with-arpack-flags=-lparpack,-larpack
@@ -90,27 +75,30 @@
 install-arch: build-arch
 # Install conf in PETSC_DIR
 	install -d debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/conf
-	for cfile in `ls conf`; do \
-	  grep -v top_builddir conf/$$cfile | \
+	for cfile in conf/*; do \
+	  grep -v top_builddir $$cfile | \
 	    sed "s/`echo $(CURDIR) | sed s/\\\\//\\\\\\\\\\\\//g`/\/usr\/lib\/slepcdir\/$(SLEPC_VERSION)/g" > \
-	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/conf/$$cfile ; \
+	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$$cfile || \
+	  exit ; \
 	done
 # Install PETSC_ARCH/conf and PETSC_ARCH/include files in SLEPC_DIR/PETSC_ARCH/;
 # replace this dir with install dir, and remove top_builddir
 	install -d debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/conf
-	for cfile in `ls $(PETSC_ARCH)-c-opt/conf`; do \
-	  grep -v top_builddir $(PETSC_ARCH)-c-opt/conf/$$cfile | \
+	for cfile in $(PETSC_ARCH)-c-opt/conf/*; do \
+	  grep -v top_builddir $$cfile | \
 	    sed "s/`echo $(CURDIR) | sed s/\\\\//\\\\\\\\\\\\//g`/\/usr\/lib\/slepcdir\/$(SLEPC_VERSION)/g" > \
-	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/conf/$$cfile ; \
+	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$$cfile || \
+	  exit ; \
 	done
 	rm -f debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/conf/*.py
 	cp -a $(PETSC_ARCH)-c-opt/include debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/
 # Now conf and include for the -dbg package
 	install -d debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-debug/conf
-	for cfile in `ls $(PETSC_ARCH)-c-debug/conf`; do \
-	  grep -v top_builddir $(PETSC_ARCH)-c-debug/conf/$$cfile | \
+	for cfile in $(PETSC_ARCH)-c-debug/conf/*; do \
+	  grep -v top_builddir $$cfile | \
 	    sed "s/`echo $(CURDIR) | sed s/\\\\//\\\\\\\\\\\\//g`/\/usr\/lib\/slepcdir\/$(SLEPC_VERSION)/g" > \
-	    debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-debug/conf/$$cfile ; \
+	    debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$$cfile || \
+	  exit ; \
 	done
 	rm -f debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-debug/conf/*.py
 	cp -a $(PETSC_ARCH)-c-debug/include debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-debug/
@@ -133,12 +121,14 @@
 	install -d debian/lib$(SLEPC_NAME)/usr/lib
 	cp -a $(PETSC_ARCH)-c-opt/lib debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/
 	cp -a $(PETSC_ARCH)-c-debug/lib debian/lib$(SLEPC_NAME)-dbg/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-debug/
-	for LIB in `cd $(PETSC_ARCH)-c-opt/lib && ls *.so.*` ; \
+	for LIB in $(PETSC_ARCH)-c-opt/lib/*.so.* ; \
 	do \
+	  LIB="$$(basename "$$LIB")" && \
 	  mv debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/lib/$$LIB \
-	    debian/lib$(SLEPC_NAME)/usr/lib/$$LIB ; \
+	    debian/lib$(SLEPC_NAME)/usr/lib/$$LIB && \
 	  ln -s ../../../../$$LIB \
-	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/lib/$$LIB ; \
+	    debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/$(PETSC_ARCH)-c-opt/lib/$$LIB || \
+	  exit ; \
 	done
 # Make legacy symlinks including C++
 	install -d debian/lib$(SLEPC_NAME)-dev/usr/lib/slepcdir/$(SLEPC_VERSION)/lib
@@ -161,41 +151,48 @@
 	install -d debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/include/private
 	cp -p include/private/*.html \
 	  debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/include/private
-	for HEADERDOC in `cd debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/ && find include -name \*.h.html -print | sed s/.h.html/.h/`; \
+	{ cd debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/ && \
+	  find include -name \*.h.html -print | sed s/.h.html/.h/ ; } | \
+	while read HEADERDOC; \
 	do \
 	  dh_link -p$(SLEPC_NAME)-doc \
             usr/lib/slepcdir/$(SLEPC_VERSION)/$$HEADERDOC \
-	    usr/share/doc/$(SLEPC_NAME)-doc/$$HEADERDOC; \
+	    usr/share/doc/$(SLEPC_NAME)-doc/$$HEADERDOC || \
+	  exit ; \
 	done
 # Install examples documentation in -doc/src directory
-	for TESTDIR in `find src -name examples -print | sed "s/src\///"`; \
+	find src -name examples -print | sed "s/src\///" | \
+	while read TESTDIR; \
 	do \
-	  install -d debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/src/$$TESTDIR; \
-	  for TESTDOC in `find src/$$TESTDIR -name \*.html -print`; do \
+	  install -d debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/src/$$TESTDIR && \
+	  find src/$$TESTDIR -name \*.html -print | \
+	  while read TESTDOC; do \
 	    cp -a $$TESTDOC \
-	      debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/src/$$TESTDIR; \
-	  done ; \
+	      debian/$(SLEPC_NAME)-doc/usr/share/doc/$(SLEPC_NAME)-doc/src/$$TESTDIR || \
+	    exit ; \
+	  done || \
+	  exit ; \
 	done
-# I don't know of a way to do this "recursively"
-	-rmdir `find debian/slepc3.0.0-doc -empty -type d -print`
-	-rmdir `find debian/slepc3.0.0-doc -empty -type d -print`
-	-rmdir `find debian/slepc3.0.0-doc -empty -type d -print`
-	-rmdir `find debian/slepc3.0.0-doc -empty -type d -print`
+# Remove empty directories, recursively
+	find debian/slepc3.0.0-doc -empty -type d -delete
 # Install examples & makefiles into temporary directory debian/extemp
-	for TESTDIR in `find src -name examples -print | sed "s/src\///"`; \
+	find src -name examples -print | sed "s/src\///" | \
+	while read TESTDIR; \
 	do \
-	  install -d debian/extemp/src/$$TESTDIR; \
-	  cp -a src/$$TESTDIR/* debian/extemp/src/$$TESTDIR; \
+	  install -d debian/extemp/src/$$TESTDIR && \
+	  cp -a src/$$TESTDIR/* debian/extemp/src/$$TESTDIR || \
+	  exit ; \
 	done
-	for MAKEFILE in `find src -name makefile -print | sed "s/src\///"`; \
+	find src -name makefile -print | sed "s/src\///" | \
+	while read MAKEFILE; \
 	do \
 	  if [ -d debian/extemp/src/`echo $$MAKEFILE | sed "s/makefile//"` ] ;\
 	  then \
-	    cp -p src/$$MAKEFILE debian/extemp/src/$$MAKEFILE; \
+	    cp -p src/$$MAKEFILE debian/extemp/src/$$MAKEFILE || exit ; \
 	  fi; \
 	done
 # Clean up documentation from debian/extemp
-	rm -f `find debian/extemp -name \*.html -print`
+	find debian/extemp -name \*.html -delete
 # Pack debian/extemp/src into src.tar.gz and install
 	cd debian/extemp && tar czf src.tar.gz src
 	mv debian/extemp/src.tar.gz \
@@ -224,9 +221,9 @@
 	dh_installdirs -i
 	dh_installdocs -i
 # Clean up and finish
-	rm -f `find debian/$(SLEPC_NAME)-doc -name ?akefile -print`
-	rm -f `find debian/$(SLEPC_NAME)-doc -name *.cit* -print`
-	rm -f `find debian/$(SLEPC_NAME)-doc -empty -type f -print`
+	find debian/$(SLEPC_NAME)-doc -name ?akefile -delete
+	find debian/$(SLEPC_NAME)-doc -name *.cit* -delete
+	find debian/$(SLEPC_NAME)-doc -empty -type f -delete
 	dh_installchangelogs -i
 	dh_compress -i -X.xbm -X.pdf
 	dh_fixperms -i
@@ -240,10 +237,11 @@
 	dh_testdir -a
 	dh_testroot -a
 	for ARCHGEN in $(ARCH_GENERATED_FILES); do \
-	  rm -f $$ARCHGEN ; \
+	  rm -f $$ARCHGEN && \
 	  sed "s/petsc_arch/$(PETSC_ARCH)-c-opt/" < \
 	    `echo "$$ARCHGEN.in" | sed "s/$(SLEPC_NAME)/slepc3.0.0/"` | \
-	    sed "s/slepc_ver/$(SLEPC_VERSION)/" > $$ARCHGEN; \
+	    sed "s/slepc_ver/$(SLEPC_VERSION)/" > $$ARCHGEN || \
+	  exit ; \
 	done
 	dh_installdirs -a
 	dh_installdocs -a
diff -u slepc-3.0.0-p7.dfsg/debian/changelog slepc-3.0.0-p7.dfsg/debian/changelog
--- slepc-3.0.0-p7.dfsg/debian/changelog
+++ slepc-3.0.0-p7.dfsg/debian/changelog
@@ -1,3 +1,16 @@
+slepc (3.0.0-p7.dfsg-7.1) unstable; urgency=low
+
+  * Non-maintainer upload (Possibly closes: #595396)
+  * Bump petsc build-dependency version to 3.1.dfsg-7 to fix build on kFreeBSD
+  * Fix potential silent failures in debian/rules:
+    - Do not suppress failure with '-' (except for 'make allclean')
+      + Use standard quilt rules instead of hand-rolling them
+    - Join commands with '&&' instead of ';'
+    - Use '|| exit' in loops
+    - Do not run commands in backticks
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Sat, 30 Oct 2010 18:02:14 +0200
+
 slepc (3.0.0-p7.dfsg-7) unstable; urgency=low
 
   [Christophe Prud'homme]  
diff -u slepc-3.0.0-p7.dfsg/debian/control slepc-3.0.0-p7.dfsg/debian/control
--- slepc-3.0.0-p7.dfsg/debian/control
+++ slepc-3.0.0-p7.dfsg/debian/control
@@ -2,7 +2,7 @@
 Priority: extra
 Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
 Uploaders: Christophe Prud'homme <prudhomm at debian.org>
-Build-Depends: debhelper (>= 7), quilt, python (>= 2.4.4-6), libpetsc3.1-dev (>= 3.1.dfsg-3), libpetsc3.1-dbg (>= 3.1.dfsg-3), libarpack2-dev, libarpack2-dbg, libhdf5-mpi-dev
+Build-Depends: debhelper (>= 7), quilt, python (>= 2.4.4-6), libpetsc3.1-dev (>= 3.1.dfsg-7), libpetsc3.1-dbg (>= 3.1.dfsg-7), libarpack2-dev, libarpack2-dbg, libhdf5-mpi-dev
 Standards-Version: 3.8.4
 Section: libs
 Homepage: http://www.grycap.upv.es/slepc/
--- END ---

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 828 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20101031/a0c08304/attachment.pgp>


More information about the debian-science-maintainers mailing list