Whamcloud - gitweb
b=19721
authorbrian <brian>
Thu, 12 Nov 2009 21:33:52 +0000 (21:33 +0000)
committerbrian <brian>
Thu, 12 Nov 2009 21:33:52 +0000 (21:33 +0000)
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
build/autoMakefile.am.toplevel
debian/control
debian/control.main
debian/rules
lustre/scripts/version_tag.pl

index f7765d6..87f7181 100644 (file)
@@ -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
index 4ec9b6b..f2064fa 100644 (file)
@@ -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 <brian@interlinx.bc.ca>  $$(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
index 41a02c5..81e7520 100644 (file)
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Brian J. Murrell <brian@interlinx.bc.ca>
 Uploaders: Brian J. Murrell <brian@interlinx.bc.ca>
 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
 
index 41a02c5..81e7520 100644 (file)
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Brian J. Murrell <brian@interlinx.bc.ca>
 Uploaders: Brian J. Murrell <brian@interlinx.bc.ca>
 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
 
index 09003ad..aa03070 100755 (executable)
@@ -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
index 31978cf..92655e1 100644 (file)
@@ -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>)) {