#
PATH := $(CURDIR)/bin:$(PATH)
-KERN_REPO := git://xenbits.xensource.com/people/dstodden/linux.git
+KERN_REPO = git://xenbits.xensource.com/people/dstodden/linux.git
GIT := git
BRANCH_PREFIX := xenbits/blktap/next-
+export KERN_REPO
export PATH
export GIT
-include rev.mk
-PKG_NAME = blktap
-PKG_VERSION = $(shell echo $(REV:v%=%) | tr - +)
-SRCDIR = src
-DEB = $(PKG_NAME)-dkms_$(PKG_VERSION)_all.deb
+PKG_NAME = blktap
+PKG_VERSION = $(shell echo $(REV:v%=%) | tr - +)
+SRCDIR = src
+DEB = $(PKG_NAME)-dkms_$(PKG_VERSION)_all.deb
BRANCH_SOURCES = \
drivers/block/blktap \
DKMS_SRCDIR = /usr/src/$(PKG_NAME)-$(DKMS_VERSION)
DKMS_DSCDIR = /var/lib/dkms/$(PKG_NAME)/$(DKMS_VERSION)/dsc
DKMS_DEBDIR = /var/lib/dkms/$(PKG_NAME)/$(DKMS_VERSION)/deb
-DKMS_TPLDIR = $(DKMS_SRCDIR)/$(PKG_NAME)-dkms-mkdeb
DKMS_DEB = $(DKMS_DEBDIR)/$(DEB)
DKMS_FRAGS = \
BACKPORTDIR = $(SRCDIR)/patches/backports
EXTRASDIR = $(SRCDIR)/patches/extras
-.PHONY: checkout \
- backports \
- dkms \
- extras \
- source \
- install
+all: dkms-deb
+
+.PHONY: clean \
+ mrproper \
+ dkms-deb \
+ dkms-clean
.DELETE_ON_ERROR: \
rev.mk \
kernelbranches.out
-all: .stamp-source
-
-source: .stamp-checkout .stamp-backports .stamp-extras \
- $(SRCDIR)/dkms.conf $(SRCDIR)/Makefile
+$(SRCDIR): stamp-checkout stamp-backports stamp-extras \
+ $(SRCDIR)/dkms.conf $(SRCDIR)/Makefile
rev.mk: kernelbranches.out
- > $@
+ rm -f $@
(echo -n "KVER = "; head -n1 | cut -d: -f2;) < $< >> $@
(echo -n "REV = "; head -n1 | cut -d: -f3;) < $< >> $@
kernelbranches.out:
kernelbranches $(KERN_REPO) $(BRANCH_PREFIX) > $@
-nexti = read i 2>/dev/null < $(1) || i=0; echo $$i; echo $$((i+1)) > $(1)
+nexti = flock $(1) -c 'read i 2>/dev/null < $(1) || i=0; echo $$i; echo $$((i+1)) > $(1)'
-.stamp-checkout:
- $(GIT) archive --remote=$(KERN_REPO) --format=tar \
+stamp-checkout:
+ $(GIT) archive --remote=$(KERN_REPO) --format=tar \
--prefix=$(SRCDIR)/ $(REV) $(BRANCH_SOURCES) | \
tar xf -
touch $@
-.stamp-backports:
+stamp-backports:
rm -rf dkms.backports.conf $(BACKPORTDIR)
mkdir -p $(BACKPORTDIR)
cd $(BACKPORTDIR); \
backports $(KERN_REPO) $(BRANCH_PREFIX) $(BRANCH_SOURCES) | \
while read file pattern; do \
- n=$$($(call nexti,patchno)); \
+ n=$$($(call nexti,$(CURDIR)/patchno)); \
echo "PATCH[$$n]='backports/$$file'"; \
echo "PATCH_MATCH[$$n]='$$pattern'"; \
done >> $(CURDIR)/dkms.backports.conf;
touch $@
-.stamp-extras:
+stamp-extras:
rm -rf dkms.extras.conf $(EXTRASDIR)
mkdir -p $(EXTRASDIR)
find patches/extras -name \*.diff | \
n=$$($(call nexti,patchno)); \
echo "PATCH[$$n]=extras/$$(basename $$patch)"; \
done >> dkms.extras.conf
- touch .stamp-$@
+ touch $@
$(SRCDIR)/Makefile:
> $@
echo 'obj-$$(CONFIG_BLK_DEV_TAP) := drivers/block/blktap/' >> $@
echo 'KBUILD_CPPFLAGS += -I$$(src)/include' >> $@
-dkms.head.conf: dkms.head.conf.in .stamp-checkout
+dkms.head.conf: dkms.head.conf.in stamp-checkout
sed -e's/@PKG_NAME@/$(PKG_NAME)/' \
-e's/@PKG_VERSION@/$(PKG_VERSION)/' \
< $< > $@
-$(SRCDIR)/dkms.conf: .stamp-backports .stamp-extras $(DKMS_FRAGS)
+$(SRCDIR)/dkms.conf: stamp-backports stamp-extras $(DKMS_FRAGS)
cat $(DKMS_FRAGS) > $@
-install: .stamp-source sudo-dkms-install
-
-sudo-%:
- $(SUDO) $(MAKE) $*
-
-dkms-install:
- rm -rf $(DKMS_SRCDIR)
- ln -s $(CURDIR)/$(SRCDIR) $(DKMS_SRCDIR)
- $(DKMS) add
- touch .stamp-$@
-
-dkms-build:
- $(DKMS) build
- touch .stamp-$@
+$(DKMS_SRCDIR): $(SRCDIR)
+ $(SUDO) cp -a $(CURDIR)/$(SRCDIR) $@
-dkms-deb:
- $(DKMS) mkdeb --source-only
- touch .stamp-$@
+stamp-dkms-install: $(DKMS_SRCDIR)
+ -$(SUDO) $(DKMS) remove --all
+ $(SUDO) $(DKMS) add
+ touch $@
-$(DKMS_TPLDIR):
- mkdir -p $(DKMS_TPLDIR)
- cp -r template/debian $(DKMS_TPLDIR)/
+stamp-dkms-build: stamp-dkms-install
+ $(SUDO) $(DKMS) build
+ touch $@
-dkms-template: $(DKMS_TPLDIR)
+stamp-dkms-deb: stamp-dkms-install
+ $(SUDO) $(DKMS) mkdeb --source-only
+ touch $@
dkms-clean:
- [ -z "$$($(DKMS) status)" ] || $(DKMS) remove --all
- rm -rf $(DKMS_SRCDIR)
- rm -f .stamp-dkms-*
+ -$(SUDO) $(DKMS) remove --all
+ $(SUDO) rm -rf $(DKMS_SRCDIR)
+ rm -f stamp-dkms-*
-$(DKMS_DEB): sudo-dkms-deb
+$(DKMS_DEB): stamp-dkms-deb
-$(DEB): $(DKMS_DEB)
- cp $(DKMS_DEB) $(DEB)
+dkms-deb: $(DEB)
-deb: $(DEB)
+$(DEB): $(DKMS_DEB)
+ cp -a $< $@
-clean: sudo-dkms-clean
- rm -rf src
- rm -f .stamp-checkout .stamp-backports .stamp-extras patchno
+clean: dkms-clean
+ rm -rf src/
+ rm -f patchno
+ rm -f stamp-checkout stamp-backports stamp-extras
rm -f $(DKMS_FRAGS)
+ rm -f $(DEB)
+
+distclean: clean
+ rm -f rev.mk kernelbranches.out
+ rm -f *.deb
+ rm -f *~