From b635501547739ba4db2225e7263069a70d4a71cb Mon Sep 17 00:00:00 2001 From: "Brian J. Murrell" Date: Sat, 22 Jan 2011 06:16:55 -0500 Subject: [PATCH] b=24416 debian packaging fixes - don't make a patch out of anything in /debian - exclude noise files from the debian built source tarball - fake debian/patche{s,d} for make dist - a few more reasons to run autogen.sh - figure out if dist tarball needs autogen.shs and include it if so - look for and run autogen.sh in the build subdir - make debdiff as part of make dist - add a debian/source/format file - mv the orig tarball and the debdiff to the debs dir - don't try to dist /debian for non-dpkg-using build targets Issue: LU-51 Change-Id: I041aaef217e107def86ce808d0e96fc6891e1dcd --- autoMakefile.am | 18 ++++++++++++- build/autoMakefile.am.toplevel | 47 +++------------------------------- build/autoconf/lustre-build-linux.m4 | 17 +++++++++++++ build/autoconf/lustre-build.m4 | 2 ++ build/extract_patches | 49 ++++++++++++++++++++++++++++++++++++ debian/rules | 6 ++--- debian/source/format | 1 + 7 files changed, 92 insertions(+), 48 deletions(-) create mode 100755 build/extract_patches create mode 100644 debian/source/format diff --git a/autoMakefile.am b/autoMakefile.am index 251ab1e..e65baac 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -13,7 +13,11 @@ endif include build/autoMakefile.am.toplevel -EXTRA_DIST += config.h.in debian/* +EXTRA_DIST += config.h.in + +if USES_DPKG +EXTRA_DIST += debian/* +endif if LDISKFS_ENABLED if !LDISKFS_IN_KERNEL @@ -51,3 +55,15 @@ module-dist-hook: echo -e "I have no idea how to create a META file in $(distdir).\nPlease file a bug at http://bugzilla.lustre.org/"; \ exit 1; \ fi + if [ -d .git ]; then \ + build/extract_patches $(distdir); \ + if grep -e "^--- .*\/autoconf" -e "^--- .*\/Makefile\.am" -e ".*\/configure\.ac" -e ".*\/configure\.in" $(distdir)/debian/patches/*; then \ + cp build/autogen.sh $(distdir)/build; \ + cp libsysio/autogen.sh $(distdir)/libsysio; \ + cp lustre-iokit/autogen.sh $(distdir)/lustre-iokit; \ + fi; \ + mkdir empty; \ + diff -urN empty $(distdir)/debian > debian.diff; \ + rm -rf $(distdir)/debian; \ + rmdir empty; \ + fi diff --git a/build/autoMakefile.am.toplevel b/build/autoMakefile.am.toplevel index 524d9dd..ab02af9 100644 --- a/build/autoMakefile.am.toplevel +++ b/build/autoMakefile.am.toplevel @@ -159,51 +159,10 @@ debs: 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; \ if [ -d .git ]; then \ - ver=$$(git describe --match [0-9v]\* --tags); \ - if [[ $$ver = *-*-* ]]; then \ - hash=$${ver##*-}; \ - ffw=$${ver#*-}; \ - ffw=$${ffw%-*}; \ - ver=$${ver%%-*}; \ - fi; \ - if [ $$ffw -gt 0 ]; then \ - tag=$$ver; \ - if [[ $$ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$$ ]]; then \ - ver=$$(echo $$ver | \ - sed -e 's/^v\(.*\)/\1/' \ - -e 's/_RC[[0-9]].*$$//' \ - -e 's/_/./g'); \ - fi; \ - pdir="debian/patches"; \ - if [ -d $$pdir ]; then \ - rm -rf $$pdir; \ - fi; \ - mkdir $$pdir; \ - git format-patch -o $$pdir $$tag..HEAD; \ - pushd $$pdir; \ - if [ -d ../patched ]; then \ - rm -rf ../patched; \ - fi; \ - mkdir ../patched; \ - rm -f 00list *.dpatch; \ - for file in [0-9][0-9][0-9][0-9]-*.patch; do \ - if ! grep -q "^ debian/changelog" $$file; then \ - desc=$$(cat $$file | sed -e '1,/^$$/d' \ - -e '/^---$$/,$$d'); \ - dpatch_file=$${file/.patch/.dpatch}; \ - sed -e '1,/^---$$/d' $$file | \ - dpatch patch-template -p "$${file%.patch}" \ - "$$desc" > $$dpatch_file; \ - echo "faked by make debs run from git" > \ - ../patched/$$dpatch_file; \ - echo $$dpatch_file >> 00list; \ - fi; \ - rm -f $$file; \ - done; \ - fi; \ + build/extract_patches .; \ fi rm -rf debs - dpkg-buildpackage || { \ + dpkg-buildpackage -I.git -I\*.out[0-9]\* -I\*.swp || { \ rc=$${PIPESTATUS[0]}; \ [ $${rc} -gt 1 ] && exit $${rc}; \ exit 0; \ @@ -227,4 +186,4 @@ debs: popd && \ VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog); \ mkdir -p debs && \ - mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER}.tar.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ + mv ../liblustre_$${VER}_*.deb ../linux-patch-lustre_$${VER}_all.deb ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb ../lustre-tests_$${VER}_*.deb ../lustre-utils_$${VER}_*.deb ../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes ../lustre_$${VER%-[0-9]*}.orig.tar.gz ../lustre_$${VER}.diff.gz ../lustre-client-modules-$${KVERS}_$${VER}_*.deb debs/ diff --git a/build/autoconf/lustre-build-linux.m4 b/build/autoconf/lustre-build-linux.m4 index 8a10dbf..188e805 100644 --- a/build/autoconf/lustre-build-linux.m4 +++ b/build/autoconf/lustre-build-linux.m4 @@ -699,3 +699,20 @@ AC_CACHE_CHECK([for $1], ac_Header, AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl AS_VAR_POPDEF([ac_Header])dnl ]) + +# +# LB_USES_DPKG +# +# Determine if the target is a dpkg system or rpm +# +AC_DEFUN([LB_USES_DPKG], +[ +AC_MSG_CHECKING([if this distro uses dpkg]) +if dpkg --version >/dev/null; then + AC_MSG_RESULT([yes]) + uses_dpkg=yes +else + AC_MSG_RESULT([no]) + uses_dpkg=no +fi +]) diff --git a/build/autoconf/lustre-build.m4 b/build/autoconf/lustre-build.m4 index 0d9d029..314818c 100644 --- a/build/autoconf/lustre-build.m4 +++ b/build/autoconf/lustre-build.m4 @@ -870,6 +870,7 @@ AM_CONDITIONAL(LINUX, test x$lb_target_os = "xlinux") AM_CONDITIONAL(DARWIN, test x$lb_target_os = "xdarwin") AM_CONDITIONAL(CRAY_XT3, test x$enable_cray_xt3 = "xyes") AM_CONDITIONAL(SUNOS, test x$lb_target_os = "xSunOS") +AM_CONDITIONAL(USES_DPKG, test x$uses_dpkg = "xyes") # this lets lustre cancel libsysio, per-branch or if liblustre is # disabled @@ -917,6 +918,7 @@ AC_DEFUN([LB_CONFIGURE], LB_CONFIG_DIST LB_DOWNSTREAM_RELEASE +LB_USES_DPKG LB_BUILDID LB_LIBCFS_DIR diff --git a/build/extract_patches b/build/extract_patches new file mode 100755 index 0000000..9c5c5d2 --- /dev/null +++ b/build/extract_patches @@ -0,0 +1,49 @@ +#!/bin/bash + +# extract all of the changesets since the last tagged version and put them +# into debian/patche{s,d} as if this was a patched tree on that tag + +TARGET="$1" + +ver=$(git describe --match [0-9v]\* --tags) +if [[ $ver = *-*-* ]]; then + hash=${ver##*-} + ffw=${ver#*-} + ffw=${ffw%-*} + ver=${ver%%-*} +fi +if [ $ffw -gt 0 ]; then + tag=$ver + if [[ $ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$ ]]; then + ver=$(echo $ver | + sed -e 's/^v\(.*\)/\1/' + -e 's/_RC[0-9].*$//' + -e 's/_/./g') + fi + pdir="$TARGET/debian/patches" + if [ -d $pdir ]; then + rm -rf $pdir + fi + mkdir $pdir + git format-patch -o $pdir $tag..HEAD + pushd $pdir + if [ -d ../patched ]; then + rm -rf ../patched + fi + mkdir ../patched + rm -f 00list *.dpatch + for file in [0-9][0-9][0-9][0-9]-*.patch; do + if ! grep -q "^--- a/debian/" $file; then + desc=$(cat $file | sed -e '1,/^$/d' \ + -e '/^---$/,$d') + dpatch_file=${file/.patch/.dpatch} + sed -e '1,/^---$/d' $file | \ + dpatch patch-template -p "${file%.patch}" \ + "$desc" > $dpatch_file + echo "faked by make debs run from git" > \ + ../patched/$dpatch_file + echo $dpatch_file >> 00list + fi + rm -f $file + done +fi diff --git a/debian/rules b/debian/rules index a3e8541..06ef5af 100755 --- a/debian/rules +++ b/debian/rules @@ -89,8 +89,8 @@ autogen-stamp: patch-stamp # needed autogen.sh scripts # see https://bugzilla.lustre.org/attachment.cgi?id=27156 # for an example) - if grep "^--- .*\/autoconf" debian/patches/*; then \ - if [ ! -f autogen.sh ]; then \ + if grep -e "^--- .*\/autoconf" -e ".*\/configure\.ac" -e ".*\/configure\.in" debian/patches/*; then \ + if [ ! -f build/autogen.sh ]; then \ echo "You have patches which require autogen.sh to be run, but it doesn't exist"; \ echo "Please see https://bugzilla.lustre.org/attachment.cgi?id=27156"; \ exit 1; \ @@ -101,7 +101,7 @@ autogen-stamp: patch-stamp 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; \ + sh build/autogen.sh; \ fi; \ touch $@ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +1.0 -- 1.8.3.1