From 74e64be8b45a7ff22f994552a95c797575dbe384 Mon Sep 17 00:00:00 2001 From: "R. Steve McKown" Date: Mon, 18 Aug 2014 11:45:44 -0600 Subject: [PATCH] Revamp build strategy * Use git-buildpackage (see debian/gbp.conf) * Move examples to /usr/share/doc/cp210x-module-dkms... * Source files in binary aren't under src/ as this is kinda redundant * Don't package some things into the binary image that are in the source --- Makefile | 118 ----------------------- debian.in/changelog | 5 - debian/changelog | 5 + debian.in/control => debian/control.in | 0 {debian.in => debian}/copyright | 0 debian/gbp.conf | 32 ++++++ debian.in/postinst => debian/postinst.in | 30 +++--- debian.in/postrm => debian/postrm.in | 6 +- debian.in/prerm => debian/prerm.in | 9 +- {debian.in => debian}/rules | 45 +++++++-- 10 files changed, 98 insertions(+), 152 deletions(-) delete mode 100644 Makefile delete mode 100644 debian.in/changelog create mode 100644 debian/changelog rename debian.in/control => debian/control.in (100%) rename {debian.in => debian}/copyright (100%) create mode 100644 debian/gbp.conf rename debian.in/postinst => debian/postinst.in (63%) rename debian.in/postrm => debian/postrm.in (73%) rename debian.in/prerm => debian/prerm.in (57%) rename {debian.in => debian}/rules (56%) diff --git a/Makefile b/Makefile deleted file mode 100644 index 853dd93..0000000 --- a/Makefile +++ /dev/null @@ -1,118 +0,0 @@ -# Makefile for newer cp2101 driver, we call cp210x -# Essentially, it makes a debian source package which -# then can be built by pbuilder, etc. - -# Change or override these values as necessary for each package release - -PKGVER = 0.11.3 -DEBRELEASE = 7tmi - - -# No need to change anything below this line - -REPOID := $(shell svn info 2>/dev/null | grep "Revision: " | sed -e s'/^[^0-9]*\([0-9]*\).*$$/svn:revision \1/') -ifeq (,$(REPOID)) - REPOID := $(shell git svn info 2>/dev/null | grep "Revision: " | sed -e s'/^[^0-9]*\([0-9]*\).*$$/svn:revision \1/') -ifeq (,$(REPOID)) - REPOID := $(shell git log --no-decorate -n1 2>/dev/null | head -1 | sed -e s'/^/git:/') -endif -endif -ifeq (,$(REPOID)) - $(error You much check the code out via svn, git-svn, or git) -endif - -USER := $(shell whoami) -REPOHOST := repo -BUILD := build -#DEBDIST := $(shell lsb_release -cs) -DEBDIST := hardy -DEBVER := $(PKGVER)-$(DEBRELEASE) -RFC822DATE := $(shell date --rfc-822) -ROOTNAME := cp210x -PACKAGE := $(ROOTNAME)-module-dkms -TARFILE := $(PACKAGE)_$(DEBVER).orig.tar.gz -DEBSRC := $(PACKAGE)-$(PKGVER) -ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) -DEBFILE := $(BUILD)/$(PACKAGE)_$(DEBVER)_$(ARCH).deb -DEBSRCFILE := $(BUILD)/$(PACKAGE)_$(DEBVER).dsc -CHANGESFILE := $(BUILD)/$(PACKAGE)_$(DEBVER)_$(ARCH).changes -UPLOADFILE := $(BUILD)/$(PACKAGE)_$(DEBVER)_$(ARCH).upload - - -source: $(DEBSRCFILE) -$(DEBSRCFILE): $(BUILD)/debian-stamp - cd $(BUILD) && dpkg-source -b $(DEBSRC) - touch $@ - - -release: $(UPLOADFILE) -$(UPLOADFILE): $(CHANGESFILE) - : # Requires ~/.dput.cf and upload server configured properly - dput $(REPOHOST) $(CHANGESFILE) - - -pbuilder: $(CHANGESFILE) -$(CHANGESFILE): $(DEBSRCFILE) - : # Requires ~/.dput.cf and upload server configured properly - sudo pbuilder build $(DEBSRCFILE) - sudo mv /var/cache/pbuilder/result/$(PACKAGE)_$(DEBVER)* $(BUILD)/ - sudo chown $(USER) $(BUILD)/* - debsign $(CHANGESFILE) - - -binary: $(DEBFILE) -$(DEBFILE): $(BUILD)/debian-stamp - cd $(BUILD)/$(DEBSRC) && dpkg-buildpackage -sa - - -$(BUILD)/src-stamp: Makefile.dkms dkms.conf $(wildcard src/*) - mkdir -p $(BUILD) - rm -rf $(BUILD)/$(DEBSRC) - cp -a src $(BUILD)/$(DEBSRC) - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/cp210x.c - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/cp210x.c.karmic - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/cp210x.c.lucid - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/cp210x.c.maverick - cp Makefile.dkms $(BUILD)/$(DEBSRC) - cp dkms.conf $(BUILD)/$(DEBSRC) - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/dkms.conf - find $(BUILD)/$(DEBSRC) -name .svn -type d -exec rm -rf "{}" ";" 2>/dev/null || exit 0 - rm -rf $(BUILD)/$(DEBSRC)/.git || exit 0 - tar -C $(BUILD) -czf $(BUILD)/$(TARFILE) $(DEBSRC) - touch $@ - - -configure: $(BUILD)/debian-stamp -$(BUILD)/debian-stamp: $(BUILD)/src-stamp $(wildcard debian.in/*) - mkdir -p $(BUILD)/$(DEBSRC)/debian - rsync --quiet -avz --exclude=.svn/ --exclude=.git/ debian.in/ $(BUILD)/$(DEBSRC)/debian/ - perl -i -pe 's/xxPACKAGExx/$(PACKAGE)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxROOTNAMExx/$(ROOTNAME)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxPKGVERxx/$(PKGVER)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxDEBVERxx/$(DEBVER)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxDEBDISTxx/$(DEBDIST)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxRFC822DATExx/$(RFC822DATE)/g' $(BUILD)/$(DEBSRC)/debian/* - perl -i -pe 's/xxREPOIDxx/$(REPOID)/g' $(BUILD)/$(DEBSRC)/debian/* - touch $@ - - -clean: - rm -rf $(BUILD) - - -debug: - @echo "BUILD = $(BUILD)" - @echo "PKGVER = $(PKGVER)" - @echo "REPOID = $(REPOID)" - @echo "DEBRELEASE = $(DEBRELEASE)" - @echo "DEBVER = $(DEBVER)" - @echo "RFC822DATE = $(RFC822DATE)" - @echo "PACKAGE = $(PACKAGE)" - @echo "TARFILE = $(TARFILE)" - @echo "DEBSRC = $(DEBSRC)" - @echo "ARCH = $(ARCH)" - @echo "DEBFILE = $(BUILD)/$(PACKAGE)_$(DEBVER)_$(ARCH).deb" - @echo "DEBSRCFILE = $(BUILD)/$(PACKAGE)_$(DEBVER).dsc" - - -.PHONY: clean binary source configure pbuilder release diff --git a/debian.in/changelog b/debian.in/changelog deleted file mode 100644 index ef28246..0000000 --- a/debian.in/changelog +++ /dev/null @@ -1,5 +0,0 @@ -xxPACKAGExx (xxDEBVERxx) xxDEBDISTxx; urgency=low - - * Auto packaged - - -- TMI Packages xxRFC822DATExx diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..98e1902 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +cp210x-module-dkms (0.11.4-1tmi) trusty; urgency=medium + + * Support Ubuntu 14.04 Trusty Tahr + + -- R. Steve McKown Mon, 18 Aug 2014 13:17:31 -0600 diff --git a/debian.in/control b/debian/control.in similarity index 100% rename from debian.in/control rename to debian/control.in diff --git a/debian.in/copyright b/debian/copyright similarity index 100% rename from debian.in/copyright rename to debian/copyright diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..2a61b08 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,32 @@ +# gbp.conf +# +# Assist building. Requires specific setup in ~/.pbuilderrc and cow images +# created for the distribution/architecture combinations to be built. +# +# To build: +# DIST=trusty ARCH=amd64 git-buildpackage -sa +# +# There is no need to build for different architectures, as the resulting +# Debian package is architecture independent. +# +# To post to server (requires properly configured ~/dput.cf): +# cd ../cp210x-build +# dput repo-trusty cp210x*.changes + +[DEFAULT] +builder = /usr/bin/git-pbuilder +cleaner = fakeroot debian/rules clean +prebuild = debian/rules configure +# Remove lintian check until warnings are fixed +#postbuild = lintian $GBP_CHANGES_FILE +pristine-tar = False + +upstream-tree=HEAD +debian-branch=master +debian-tag=debian/%(version)s + +[git-buildpackage] +export-dir = ../cp210x-build/ + +[git-import-orig] +dch = false diff --git a/debian.in/postinst b/debian/postinst.in similarity index 63% rename from debian.in/postinst rename to debian/postinst.in index d1dbc4d..04bba6b 100755 --- a/debian.in/postinst +++ b/debian/postinst.in @@ -2,13 +2,13 @@ set -e -NAME=xxPACKAGExx +PACKAGE=xxPACKAGExx VERSION=xxDEBVERxx case "$1" in configure) # Use a distro-specific source file, if present - c_src=/usr/src/$NAME-$VERSION/cp210x.c + c_src=/usr/src/$PACKAGE-$VERSION/cp210x.c c_dist=$(lsb_release -cs) if [ -f "$c_src.$c_dist" ]; then mv $c_src.$c_dist $c_src @@ -22,41 +22,41 @@ case "$1" in c_arch=`uname -m` c_kern=`uname -r` - if [ -e "/var/lib/dkms/$NAME/$VERSION" ]; then - echo "Removing old $NAME-$VERSION DKMS files..." - dkms remove -m $NAME -v $VERSION --all + if [ -e "/var/lib/dkms/$PACKAGE/$VERSION" ]; then + echo "Removing old $PACKAGE-$VERSION DKMS files..." + dkms remove -m $PACKAGE -v $VERSION --all fi - echo "Loading new $NAME-$VERSION DKMS files..." - if [ -f "/usr/src/$NAME-$VERSION.dkms.tar.gz" ]; then - dkms ldtarball --archive "/usr/src/$NAME-$VERSION.dkms.tar.gz" + echo "Loading new $PACKAGE-$VERSION DKMS files..." + if [ -f "/usr/src/$PACKAGE-$VERSION.dkms.tar.gz" ]; then + dkms ldtarball --archive "/usr/src/$PACKAGE-$VERSION.dkms.tar.gz" else - dkms add -m $NAME -v $VERSION + dkms add -m $PACKAGE -v $VERSION fi echo "Installing prebuilt kernel module binaries (if any)" set +e IFS=' ' - for kern in `dkms status -m $NAME -v $VERSION -a $c_arch | grep ": built" | awk {'print $3'} | sed 's/,$//'`; do + for kern in `dkms status -m $PACKAGE -v $VERSION -a $c_arch | grep ": built" | awk {'print $3'} | sed 's/,$//'`; do echo "Trying kernel: $kern" - dkms install --force -m $NAME -v $VERSION -k $kern -a $c_arch + dkms install --force -m $PACKAGE -v $VERSION -k $kern -a $c_arch done unset IFS set -e # If none installed, install. - ##if [ `dkms status -m $NAME -v $VERSION -k $c_kern -a $c_arch | grep -c ": installed"` -eq 0 ]; then - dkms_status=`dkms status -m $NAME -v $VERSION -k $c_kern -a $c_arch` + ##if [ `dkms status -m $PACKAGE -v $VERSION -k $c_kern -a $c_arch | grep -c ": installed"` -eq 0 ]; then + dkms_status=`dkms status -m $PACKAGE -v $VERSION -k $c_kern -a $c_arch` if [ `echo $dkms_status | grep -c ": installed"` -eq 0 ]; then if [ `echo $c_kern | grep -c "BOOT"` -eq 0 ] && [ -e "/lib/modules/$c_kern/build/include" ]; then # Only build if we need to. if [ `echo $dkms_status | grep -c ": built"` -eq 0 ]; then echo "Building module..." - dkms build -m $NAME -v $VERSION + dkms build -m $PACKAGE -v $VERSION fi echo "Installing module..." - dkms install -m $NAME -v $VERSION + dkms install -m $PACKAGE -v $VERSION elif [ `echo $c_kern | grep -c "BOOT"` -gt 0 ]; then echo "" echo "Module build for the currently running kernel was skipped since you" diff --git a/debian.in/postrm b/debian/postrm.in similarity index 73% rename from debian.in/postrm rename to debian/postrm.in index 30f451d..46325a0 100755 --- a/debian.in/postrm +++ b/debian/postrm.in @@ -1,6 +1,6 @@ #!/bin/sh -NAME=xxPACKAGExx +PACKAGE=xxPACKAGExx VERSION=xxDEBVERxx set -e @@ -8,9 +8,9 @@ set -e case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) depmod - if [ -d "/usr/src/$NAME-$VERSION" ]; then + if [ -d "/usr/src/$PACKAGE-$VERSION" ]; then echo "Removing old module source..." - rm -rf "/usr/src/$NAME-$VERSION" + rm -rf "/usr/src/$PACKAGE-$VERSION" fi ;; diff --git a/debian.in/prerm b/debian/prerm.in similarity index 57% rename from debian.in/prerm rename to debian/prerm.in index 9985327..59babc2 100755 --- a/debian.in/prerm +++ b/debian/prerm.in @@ -1,15 +1,16 @@ #!/bin/sh -NAME=xxPACKAGExx +PACKAGE=xxPACKAGExx VERSION=xxDEBVERxx +MODULE=xxMODULExx set -e case "$1" in remove|upgrade|deconfigure) - rmmod xxROOTNAMExx 2>/dev/null || true - if [ "`dkms status -m $NAME`" ]; then - dkms remove -m $NAME -v $VERSION --all + rmmod $ROOTNAME 2>/dev/null || true + if [ "`dkms status -m $PACKAGE`" ]; then + dkms remove -m $PACKAGE -v $VERSION --all fi ;; diff --git a/debian.in/rules b/debian/rules similarity index 56% rename from debian.in/rules rename to debian/rules index 16cadf1..db69878 100755 --- a/debian.in/rules +++ b/debian/rules @@ -9,18 +9,30 @@ # paternity under the Copyright, Designs and Patents Act 1988.) # This file may have to be extensively modified -package = xxPACKAGExx -inst_dir = debian/tmp/usr/src/xxPACKAGExx-xxDEBVERxx +package = $(shell dpkg-parsechangelog --show-field Source) +version = $(shell dpkg-parsechangelog --show-field Version) +module = $(shell echo "$(package)" | sed -e 's|-module-dkms||g') +distribution = $(shell dpkg-parsechangelog --show-field Distribution) +repoid = $(git describe --tags --always --long --dirty) +inst_dir = debian/tmp/usr/src/$(package)-$(version) install_dir = install -d -m 755 install_file = install -m 644 install_script = install -m 755 install_binary = install -m 755 -s -DISTRIBUTION := $(shell lsb_release -is) - +configure: configure-stamp configure-stamp: + @find . -name "*.in" | while read file; do \ + t=$$(dirname $$file)/$$(basename $$file .in); \ + echo "Preprocessing $$t ..."; \ + cp -a $$file $$t; \ + perl -i -pe 's/xxPACKAGExx/$(package)/g' $$t; \ + perl -i -pe 's/xxDEBVERxx/$(version)/g' $$t; \ + perl -i -pe 's/xxMODULExx/$(module)/g' $$t; \ + perl -i -pe 's/xxREPOIDxx/$(repoid)/g' $$t; \ + done touch $@ @@ -33,11 +45,19 @@ build-stamp: configure-stamp install: install-stamp install-stamp: checkroot build-stamp $(checkdir) + : # install dkms configuration rm -rf debian/tmp $(install_dir) $(inst_dir) - mv debian ../ - cp -a . ../$(inst_dir) - mv ../debian . + $(install_file) dkms.conf Makefile.dkms $(inst_dir)/ + : # install source files (configure must be executable) + cp -a src/* $(inst_dir)/ + rm -rf $(inst_dir)/Docs + rm -rf $(inst_dir)/examples + rm -rf $(inst_dir)/rpm + : # Include file to shared path + $(install_dir) debian/tmp/usr/include + cp -a $(inst_dir)/cp210x.h debian/tmp/usr/include/ + : # install module configuration (blacklist) $(install_dir) debian/tmp/etc/modprobe.d echo "blacklist cp2101" > debian/tmp/etc/modprobe.d/$(package).conf touch $@ @@ -62,6 +82,11 @@ binary-arch: checkroot build install : # Compress stuff that needs it find debian/tmp/usr/share/doc/$(package)/ -type f ! -name copyright | \ xargs gzip -9 + : # install examples (after compression) + $(install_dir) debian/tmp/usr/share/doc/$(package)/examples + for i in src/examples/*; do \ + $(install_file) $$i debian/tmp/usr/share/doc/$(package)/examples/; \ + done : # Finish it all up dpkg-gencontrol -isp $(CONFLICTS) chown -R root:root debian/tmp @@ -76,6 +101,12 @@ clean: $(checkdir) -rm -rf debian/tmp -rm -fr debian/patched debian/files* debian/substvars + : # Clean all but debian/control, since git-buildpackage cleans after + : # prebuild just before building + find . -name "*.in" | while read file; do \ + t=$$(dirname $$file)/$$(basename $$file .in); \ + [ "$$t" != "./debian/control" ] && rm -f $$t; \ + done -rm -f *-stamp -- 2.39.2