packer: improve support for testing local grml-debootstrap version
authorMichael Prokop <mika@grml.org>
Tue, 9 Jun 2015 22:01:54 +0000 (00:01 +0200)
committerMichael Prokop <mika@grml.org>
Wed, 10 Jun 2015 06:39:50 +0000 (08:39 +0200)
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
packer/Makefile
packer/debian64.json
packer/debian64_provision.sh

index 9ca8a43..e8477e5 100644 (file)
--- 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
index e3b57f9..c152feb 100644 (file)
@@ -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
index 7d9c48d..f140230 100644 (file)
@@ -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": [
       "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",
index 8d1920e..218c8f6 100644 (file)
@@ -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"