From 1cf8447b1ef2791892fbd51f1cd49406850a93df Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Wed, 10 Jun 2015 00:01:54 +0200 Subject: [PATCH] packer: improve support for testing local grml-debootstrap version Sadly packer lacks an option to copy an entire directory *excluding* certain files, otherwise we could just copy the whole grml-debootstrap.git directory. But as to the packer_cache directory is present in grml-debootstrap.git directory during packer execution this makes no sense. So use a workaround to get the same behaviour. Allow testing of grml-debootstrap without having to commit and push stuff to git first, so one can hack on stuff, test and only then commit and push it. --- Makefile | 2 +- packer/Makefile | 29 ++++++++++++++++++----------- packer/debian64.json | 11 ++++++++--- packer/debian64_provision.sh | 8 +++++--- 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 9ca8a43..e8477e5 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ install: install -m 755 bootgrub.mksh $(DESTDIR)/usr/share/grml-debootstrap/bootgrub.mksh clean: - rm -rf grml-debootstrap.8.html grml-debootstrap.8.xml grml-debootstrap.8 html-stamp man-stamp + rm -rf grml-debootstrap.8.html grml-debootstrap.8.xml grml-debootstrap.8 html-stamp man-stamp packer/local_dir/ testrun: cd ./packer && $(MAKE) compile && $(MAKE) jessie diff --git a/packer/Makefile b/packer/Makefile index e3b57f9..c152feb 100644 --- a/packer/Makefile +++ b/packer/Makefile @@ -1,28 +1,35 @@ +GRML_DEBOOTSTRAP_VERSION=latest +GRML_DEBOOTSTRAP_LOCAL_PATH=$(shell pwd)/local_dir + compile: fake-uname.so -GRML_DEBOOTSTRAP_VERSION=latest +install: + cd .. && make DESTDIR=packer/local_dir install + +clean: + rm -rf local_dir fake-uname.so: gcc -shared -fPIC -ldl fake-uname.c -o fake-uname.so # Debian 9 -stretch: fake-uname.so - packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) debian64.json +stretch: fake-uname.so clean install + packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json # Debian 8 -jessie: fake-uname.so - packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) debian64.json +jessie: fake-uname.so clean install + packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json # Debian 7 -wheezy: fake-uname.so - packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) debian64.json +wheezy: fake-uname.so clean install + packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json # Debian 6.0 -squeeze: fake-uname.so - packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) debian64.json +squeeze: fake-uname.so clean install + packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json # Debian 5.0 -lenny: fake-uname.so - packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) debian64.json +lenny: fake-uname.so clean install + packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json .PHONY: compile stretch jessie wheezy squeeze lenny diff --git a/packer/debian64.json b/packer/debian64.json index 7d9c48d..f140230 100644 --- a/packer/debian64.json +++ b/packer/debian64.json @@ -4,7 +4,8 @@ "grml_version": "2014.11", "grml_iso_checksum": "120bfa48b096691797a73fa2f464c7c71fac1587", "debian_version": "jessie", - "grml_debootstrap_version": "latest" + "grml_debootstrap_version": "latest", + "grml_debootstrap_local_path": "doesnotexist" }, "builders": [ @@ -40,9 +41,13 @@ "destination": "/tmp/debian64.bats" }, { + "type": "shell", + "inline": "mkdir -vp /tmp/grml-debootstrap/" + }, + { "type": "file", - "source": "../grml-debootstrap", - "destination": "/tmp/grml-debootstrap" + "source": "{{ user `grml_debootstrap_local_path` }}/", + "destination": "/tmp/grml-debootstrap/" }, { "type": "shell", diff --git a/packer/debian64_provision.sh b/packer/debian64_provision.sh index 8d1920e..218c8f6 100644 --- a/packer/debian64_provision.sh +++ b/packer/debian64_provision.sh @@ -184,11 +184,13 @@ EOF echo "** Using grml-debootstrap from Git repository" git clone git://git.grml.org/grml-debootstrap.git cd grml-debootstrap - GRML_DEBOOTSTRAP="$(pwd)/grml-debootstrap" + GRML_DEBOOTSTRAP="CONFFILES=$(pwd) $(pwd)/grml-debootstrap" elif [ "$GRML_DEBOOTSTRAP_VERSION" = "local" ] ; then echo "** GRML_DEBOOTSTRAP_VERSION is set to '$GRML_DEBOOTSTRAP_VERSION'" - echo "** Using /tmp/grml-debootstrap derived from local system as grml-deboostrap script" - GRML_DEBOOTSTRAP="bash /tmp/grml-debootstrap" + echo "** Using /tmp/grml-debootstrap derived from local system" + cd /tmp/grml-debootstrap + export CONFFILES=$(pwd)/etc/debootstrap + GRML_DEBOOTSTRAP="bash $(pwd)/usr/sbin/grml-debootstrap" elif [ "$GRML_DEBOOTSTRAP_VERSION" = "iso" ] ; then echo "** GRML_DEBOOTSTRAP_VERSION is set to '$GRML_DEBOOTSTRAP_VERSION'" echo "** Using grml-debootstrap as provided on ISO" -- 2.1.4