= Rebuild mpich2 Debain package = There are [http://torvalds.cs.mtsu.edu/~zach/debian/current Debian package] provided by Zach Lowry for MPICH2 version 1.0.3. We want to build 1.0.7 package with 1.0.3 package rules. Here is the procedures: == Extract 1.0.3 debian package rules == * Donwload 1.0.3 debian package source files {{{ root@r-mpi:~# wget http://www.cs.mtsu.edu/~zach/debian/current/mpich2_1.0.3-2.dsc root@r-mpi:~# wget http://www.cs.mtsu.edu/~zach/debian/current/mpich2_1.0.3-2.diff.gz root@r-mpi:~# wget http://www.cs.mtsu.edu/~zach/debian/current/mpich2_1.0.3.orig.tar.gz }}} * We will need '''dpkg-source''' command, so first check if you had installed dpkg-dev {{{ root@r-mpi:~# apt-get install dpkg-dev }}} * Extract 1.0.3 debian package source {{{ root@r-mpi:~# dpkg-source -x mpich2_1.0.3-2.dsc gpg: Signature made Mon 28 Nov 2005 07:49:49 PM PST using DSA key ID 1CE6894E gpg: Can't check signature: public key not found dpkg-source: extracting mpich2 in mpich2-1.0.3 dpkg-source: unpacking mpich2_1.0.3.orig.tar.gz dpkg-source: applying ./mpich2_1.0.3-2.diff.gz }}} == Configure 1.0.7 source tar ball == * Download 1.0.7 source tar ball from office website {{{ root@r-mpi:~# wget http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/mpich2-1.0.7.tar.gz root@r-mpi:~# tar zxvf mpich2-1.0.7.tar.gz }}} * Copy debian folder from 1.0.3 {{{ root@r-mpi:~# cd mpich2-1.0.7 root@r-mpi:~/mpich2-1.0.7# cp -aRp ../mpich2-1.0.3/debian/ . }}} * We will need '''dch''' command, so first check if you had installed devscripts {{{ root@r-mpi:~/mpich2-1.0.7# apt-get install devscripts }}} * modified debian/control {{{ root@r-mpi:~/mpich2-1.0.7# vi debian/control }}} {{{ #!diff --- debian/control.bak 2008-06-12 13:09:27.000000000 -0700 +++ debian/control 2008-06-12 12:57:37.000000000 -0700 @@ -24,7 +24,7 @@ Architecture: any Section: devel Priority: extra -Depends: ${shlibs:Depends}, python2.3, python2.3-xml +Depends: ${shlibs:Depends}, python, python-xml Conflicts: mpd Recommends: mpich2-doc (= ${Source-Version}), ssh Description: Process control for MPICH2 }}} * update debian/changelog {{{ root@r-mpi:~/mpich2-1.0.7# export DEBFULLNAME="Jazz Yao-Tsung Wang" root@r-mpi:~/mpich2-1.0.7# export DEBEMAIL="XXX@NCHC.ORG.TW" root@r-mpi:~/mpich2-1.0.7# dch -i }}} {{{ #!diff --- debian/changelog.bak 2008-06-12 13:13:57.000000000 -0700 +++ debian/changelog 2008-06-12 13:12:03.000000000 -0700 @@ -1,3 +1,8 @@ -mpich2 (1.0.3-3) unstable; urgency=low +mpich2 (1.0.7-1) unstable; urgency=low + + * New upstream release + + -- Jazz Yao-Tsung Wang Thu, 12 Jun 2008 13:11:50 -0700 mpich2 (1.0.3-2) unstable; urgency=low }}} * remove old patches {{{ root@r-mpi:~/mpich2-1.0.7# rm -rf debian/patches/ }}} * use '''dpkg-checkbuilddeps''' to know which packages is not yet installed for building new packages. {{{ root@r-mpi:~/mpich2-1.0.7# dpkg-checkbuilddeps }}} * If there are errors after '''dpkg-checkbuilddeps''', you can install packages which is needed for build mpich2 packages {{{ root@r-mpi:~/mpich2-1.0.7# apt-get install gcc g++ debhelper cdbs libg2c0 linux-kernel-headers python g77 txt2man libxt6 libxt-dev x-dev }}} * use '''cdbs-edit-patches''' to create new patches {{{ root@r-mpi:~/mpich2-1.0.7# cdbs-edit-patch 01_Makefile.in }}} * '''cdbs-edit-patches''' will create a temperate folder for you to edit patches. You will need to patch following files. * Makefile.in {{{ root@r-mpi:/tmp/cdbs-new-patch.aj3114/mpich2-1.0.7.new# vi Makefile.in }}} {{{ #!diff --- Makefile.in.org 2008-06-12 22:20:38.000000000 +0800 +++ Makefile.in 2008-06-12 22:20:01.000000000 +0800 @@ -185,6 +185,7 @@ if [ ! -d ${DESTDIR}${exec_prefix} ] ; then $(MKDIR_P) ${DESTDIR}${exec_prefix} ; fi if [ ! -d ${DESTDIR}${libdir} ] ; then $(MKDIR_P) ${DESTDIR}${libdir} ; fi ${MAKE} install-local + ${MAKE} install-examples $(INSTALL_DATA) src/include/mpi.h ${DESTDIR}${includedir}/mpi.h $(INSTALL_DATA) lib/lib${MPILIBNAME}.a ${DESTDIR}${libdir}/lib${MPILIBNAME}.a if [ ! -d ${DESTDIR}${docdir} ] ; then $(MKDIR_P) ${DESTDIR}${docdir} ; fi @@ -479,9 +480,9 @@ # documentation) install-examples: if [ ! -d ${DESTDIR}${exec_prefix}/examples ] ; then \ - $(MKDIR_P) ${DESTDIR}${exec_prefix}/examples ; \ + $(MKDIR_P) ${DESTDIR}${exec_prefix}/share/mpich2/examples ; \ fi - $(INSTALL_PROGRAM) examples/cpi ${DESTDIR}${exec_prefix}/examples/cpi + $(INSTALL_PROGRAM) examples/cpi ${DESTDIR}${exec_prefix}/share/mpich2/examples/cpi install-devdocs: (cd doc && $(MAKE) install-devdocs) }}} * Fixed $(PREFIX) problem: '''replace $(PREFIX) with $(prefix)''' {{{ root@r-mpi:/tmp/cdbs-new-patch.aj3114/mpich2-1.0.7.new# for i in $(grep "(PREFIX)" `find . -name "Makefile.in"` | awk '{ print $1 }' | uniq | sed 's#:##'); do mv $i $i.org; cat $i.org | sed 's#(PREFIX)#(prefix)#g' > $i ; rm $i.org; done }}} {{{ #!diff --- ./src/mpe2/src/slog2sdk/trace_sample/Makefile.in.org 2008-03-13 08:43:05.000000000 +0800 +++ ./src/mpe2/src/slog2sdk/trace_sample/Makefile.in 2008-06-12 21:33:15.000000000 +0800 @@ -7,8 +7,8 @@ cd src && $(MAKE) install: - @if [ -n "$(PREFIX)" ] ; then \ - ./sbin/install-package -prefix=$(PREFIX) ; \ + @if [ -n "$(prefix)" ] ; then \ + ./sbin/install-package -prefix=$(prefix) ; \ else \ ./sbin/install-package ; \ fi --- ./src/mpe2/src/slog2sdk/trace_rlog/Makefile.in.org 2008-03-13 08:43:05.000000000 +0800 +++ ./src/mpe2/src/slog2sdk/trace_rlog/Makefile.in 2008-06-12 21:33:15.000000000 +0800 @@ -7,8 +7,8 @@ cd src && $(MAKE) install: - @if [ -n "$(PREFIX)" ] ; then \ - ./sbin/install-package -prefix=$(PREFIX) ; \ + @if [ -n "$(prefix)" ] ; then \ + ./sbin/install-package -prefix=$(prefix) ; \ else \ ./sbin/install-package ; \ fi --- ./src/mpe2/src/slog2sdk/Makefile.in.org 2008-03-13 08:43:05.000000000 +0800 +++ ./src/mpe2/src/slog2sdk/Makefile.in 2008-06-12 21:33:15.000000000 +0800 @@ -15,8 +15,8 @@ done install: - @if [ -n "$(PREFIX)" ] ; then \ - ./sbin/install-package -prefix=$(PREFIX) ; \ + @if [ -n "$(prefix)" ] ; then \ + ./sbin/install-package -prefix=$(prefix) ; \ else \ ./sbin/install-package ; \ fi --- ./src/mpe2/Makefile.in.org 2008-03-13 08:43:05.000000000 +0800 +++ ./src/mpe2/Makefile.in 2008-06-12 21:33:15.000000000 +0800 @@ -70,25 +70,25 @@ ######## Installing install: FORCE_TARGET - @if [ -n "$(PREFIX)" ] ; then \ - ./sbin/mpeinstall -prefix=$(PREFIX) -dmode="" ; \ + @if [ -n "$(prefix)" ] ; then \ + ./sbin/mpeinstall -prefix=$(prefix) -dmode="" ; \ else \ ./sbin/mpeinstall -dmode="" ; \ fi installcheck: - @if [ -n "$(PREFIX)" ] ; then \ - ./sbin/mpecheckinstall -prefix=$(PREFIX) ; \ + @if [ -n "$(prefix)" ] ; then \ + ./sbin/mpecheckinstall -prefix=$(prefix) ; \ else \ ./sbin/mpecheckinstall ; \ fi installcheck-all: - @if [ -n "$(PREFIX)" ] ; then \ + @if [ -n "$(prefix)" ] ; then \ if [ -n "$(MPERUN)" ] ; then \ - ./sbin/mpecheckinstall -prefix=$(PREFIX) -run="$(MPERUN)" ; \ + ./sbin/mpecheckinstall -prefix=$(prefix) -run="$(MPERUN)" ; \ else \ - ./sbin/mpecheckinstall -prefix=$(PREFIX) -run ; \ + ./sbin/mpecheckinstall -prefix=$(prefix) -run ; \ fi ; \ else \ if [ -n "$(MPERUN)" ] ; then \ --- ./src/mpi/romio/Makefile.in.org 2008-03-11 06:38:31.000000000 +0800 +++ ./src/mpi/romio/Makefile.in 2008-06-12 21:33:15.000000000 +0800 @@ -134,11 +134,11 @@ install: $(MAKE) clean - @./util/romioinstall -prefix=$(PREFIX) + @./util/romioinstall -prefix=$(prefix) # LAM added uninstall target uninstall: - @./util/romioinstall -prefix=$(PREFIX) -uninstall + @./util/romioinstall -prefix=$(prefix) -uninstall # FIXME: To avoid problems with noisy make programs, these should be accessed # through entries in localdefs . }}} * type '''exit''' to finish '''cdbs-edit-patch'''. You can use '''exit 1''' to skip creating patches if there is something wrong. {{{ root@r-mpi:/tmp/cdbs-new-patch.aj3114/mpich2-1.0.7.new# exit root@r-mpi:~/mpich2-1.0.7# cat debian/patches/01_Makefile.in.patch }}} == Build New debian packages == * Use '''dpkg-buildpackage''' command to build your new packages. {{{ root@r-mpi:~/mpich2-1.0.7# dpkg-buildpackage root@r-mpi:~/mpich2-1.0.7# ls ../*.deb ../libmpich2-1.0_1.0.7-1_i386.deb ../mpich2_1.0.7-1_i386.deb ../mpich2-mpd_1.0.7-1_i386.deb ../libmpich2-1.0-dev_1.0.7-1_i386.deb ../mpich2-doc_1.0.7-1_i386.deb ../mpich2-mpe_1.0.7-1_i386.deb }}}