From 89045eb8b56aa1fd94fb6d03a59ee57ecb6faa2d Mon Sep 17 00:00:00 2001 From: brian Date: Thu, 12 Nov 2009 21:33:52 +0000 Subject: [PATCH 1/1] b=19721 i=brian o=adilger A "debs" make target so that one simply has to do "make debs" in a configured source tree to get both userspace and kernel modules debian packages. - this includes automatically updating the debian/changelog if not up-to-date with respect to the current version of lustre - I'm not convinced that all of the gyrations to use m-a to build the kernel modules is worth it and if there are any non-trivial problems found with it I might just rip it all out and have debian/rules build and package up the kernel modules package Some cleanups: - fix automake requirement so that it's much more flexible - allow both Ubuntu and Debian headers packages to be required - comment out the body of the autogen-stamp + if somebody adds a patch to debian/patches that requires an autogen, they can supply a patch to create the autogen.sh and uncommment the autogen-stamp body * this is ideally and hopefull a very rare event * we would love feedback from packages that find creating patches necessary - workaround in version_tag.pl for some (Debian?) systems where, for whatever reason, MODULES_{TRUE|FALSE} does not get included in the {auto,}Makefile.in files --- autoMakefile.am | 2 +- build/autoMakefile.am.toplevel | 35 +++++++++++++++++++++++++++++++++++ debian/control | 2 +- debian/control.main | 2 +- debian/rules | 19 +++++++++++-------- lustre/scripts/version_tag.pl | 7 +++---- 6 files changed, 52 insertions(+), 15 deletions(-) diff --git a/autoMakefile.am b/autoMakefile.am index f7765d6..87f7181 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -10,7 +10,7 @@ endif include build/autoMakefile.am.toplevel -EXTRA_DIST += config.h.in +EXTRA_DIST += config.h.in debian/* if LDISKFS_ENABLED if !LDISKFS_IN_KERNEL diff --git a/build/autoMakefile.am.toplevel b/build/autoMakefile.am.toplevel index 4ec9b6b..f2064fa 100644 --- a/build/autoMakefile.am.toplevel +++ b/build/autoMakefile.am.toplevel @@ -128,3 +128,38 @@ srpm: done; \ $(MAKE) $(AM_MAKEFLAGS) srpm-real +# In the debs target, first make sure what's in the changelog reflects +# the software version. Here's how we could dig the version out of the +# autoconf version file directly: +# lversion=$$(sed -ne 's/m4_define(\[LUSTRE_[A-Z][A-Z]*\],\[\([0-9][0-9]*\)\])$$/\1/p' +# lustre/autoconf/lustre-version.ac | tr '\n' '.' | sed -e 's/.$//'); +# +# However, one cannot really run "make debs" without having done a +# configure first, so we could use the easier method of digging the +# version out of the config.h file. +debs: + lversion=$$(sed -ne 's/^#define VERSION "\(.*\)"$$/\1/p' config.h); \ + cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog); \ + if [ "$$lversion" != "$$cversion" ]; then \ + echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Brian J. Murrell $$(date -R)\n\n.\nwq" | ed debian/changelog; \ + fi + dpkg-buildpackage || { \ + rc=$${PIPESTATUS[0]}; \ + [ $${rc} -gt 1 ] && exit $${rc}; \ + exit 0; \ + } + export KPKG_DEST_DIR="$$(pwd)/.." && \ + version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) && \ + rm -rf debian/tmp/modules-deb && \ + mkdir debian/tmp/modules-deb && \ + cd debian/tmp/modules-deb && \ + dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) && \ + mkdir usr_src/ && \ + tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \ + chmod 755 usr_src/modules/lustre/debian/rules && \ + mkdir -p usr_share_modass && \ + ln -s /usr/share/modass/include/ usr_share_modass/ && \ + ln -s /usr/share/modass/packages/ usr_share_modass/ && \ + echo "lustre" > usr_share_modass/compliant.list && \ + export MA_DIR=$$(pwd)/usr_share_modass && \ + m-a build $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre diff --git a/debian/control b/debian/control index 41a02c5..81e7520 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: optional Maintainer: Brian J. Murrell Uploaders: Brian J. Murrell Standards-Version: 3.8.3 -Build-Depends: libreadline-dev, debhelper (>=5.0.0), dpatch, automake1.7, libsnmp-dev, bzip2, quilt, texlive-latex-recommended, linux-headers-generic, rsync +Build-Depends: libreadline-dev, debhelper (>=5.0.0), dpatch, automake (>=1.7), libsnmp-dev, bzip2, quilt, texlive-latex-recommended, linux-headers-generic | linux-headers, rsync Homepage: http://www.lustre.org/ Vcs-Cvs: -d :pserver:anonymous@cvs.lustre.org:/lustre diff --git a/debian/control.main b/debian/control.main index 41a02c5..81e7520 100644 --- a/debian/control.main +++ b/debian/control.main @@ -4,7 +4,7 @@ Priority: optional Maintainer: Brian J. Murrell Uploaders: Brian J. Murrell Standards-Version: 3.8.3 -Build-Depends: libreadline-dev, debhelper (>=5.0.0), dpatch, automake1.7, libsnmp-dev, bzip2, quilt, texlive-latex-recommended, linux-headers-generic, rsync +Build-Depends: libreadline-dev, debhelper (>=5.0.0), dpatch, automake (>=1.7), libsnmp-dev, bzip2, quilt, texlive-latex-recommended, linux-headers-generic | linux-headers, rsync Homepage: http://www.lustre.org/ Vcs-Cvs: -d :pserver:anonymous@cvs.lustre.org:/lustre diff --git a/debian/rules b/debian/rules index 09003ad..aa03070 100755 --- a/debian/rules +++ b/debian/rules @@ -77,14 +77,17 @@ SRCDIR=. autogen: autogen-stamp autogen-stamp: patch-stamp - cp /usr/share/misc/config.sub config.sub - cp /usr/share/misc/config.sub libsysio/config.sub - cp /usr/share/misc/config.sub ldiskfs/config.sub - cp /usr/share/misc/config.guess config.guess - cp /usr/share/misc/config.guess libsysio/config.guess - cp /usr/share/misc/config.guess ldiskfs/config.guess - sh ./autogen.sh - touch $@ + # There is really no reason to run this unless somebody adds a + # patch that patches the autoconf system, in which case they can + # include a patch for autogen.sh and uncomment this stuff. + #cp /usr/share/misc/config.sub config.sub + #cp /usr/share/misc/config.sub libsysio/config.sub + #cp /usr/share/misc/config.sub ldiskfs/config.sub + #cp /usr/share/misc/config.guess config.guess + #cp /usr/share/misc/config.guess libsysio/config.guess + #cp /usr/share/misc/config.guess ldiskfs/config.guess + #sh ./autogen.sh + #touch $@ configure: configure-stamp configure-stamp: autogen-stamp debian/control.main debian/control.modules.in diff --git a/lustre/scripts/version_tag.pl b/lustre/scripts/version_tag.pl index 31978cf..92655e1 100644 --- a/lustre/scripts/version_tag.pl +++ b/lustre/scripts/version_tag.pl @@ -154,11 +154,10 @@ sub get_linuxdir() $dir = $1; } elsif ($line =~ /LINUX_OBJ :?= (.*)/) { $objdir = $1; - } elsif ($line =~ /MODULES_TRUE :?= (.*)/) { + } elsif ($line =~ /MODULES_TRUE = #/ || + $line =~ /MODULE_TARGET = $/) { # nothing to do if modules are not being built return "" - if ($1 eq "#"); - last; } } $config->close(); @@ -167,7 +166,7 @@ sub get_linuxdir() !$ver->open("$objdir/include/linux/version.h") && !$ver->open("$dir/include/linux/utsrelease.h") && !$ver->open("$dir/include/linux/version.h")) { - die "Run make dep on $dir\n"; + die "Run make dep on '$dir'\n"; } while(defined($line = <$ver>)) { -- 1.8.3.1