Makefile 1.08 KB
BOX = centos6
TEMPLATE_ARGS = -t centos -- --release 6.5
LXC_PATH := $(shell sudo lxc-config lxc.lxcpath)

all: $(BOX).box

$(BOX).box: metadata.json lxc.conf lxc-template rootfs.tar.gz
	$(RM) $@
	tar czf $@ $^

rootfs.tar.gz: rootfs
	$(RM) $@
	sudo tar czfp $@ ./rootfs

foo: .$(BOX)-base
	cp -dR --preserve=mode,ownership /etc/vim foo

rootfs: .$(BOX)-base
	sudo cp -dR --preserve=mode,ownership $(LXC_PATH)/$(BOX)-base/rootfs rootfs
	sudo ./vagrant-setup rootfs

lxc.conf: .$(BOX)-base
	sed -e '/^lxc.rootfs\s*=/d; s/lxc.autodev\s*=.*/lxc.autodev = 1/' $(LXC_PATH)/$(BOX)-base/config > $@ || ($(RM) $@; false)

.$(BOX)-base:
	sudo lxc-create -n $(BOX)-base $(TEMPLATE_ARGS)
	touch $@

.PHONY: install uninstall clean

metadata.json: metadata.json.in
	./metadata.json.in > $@

uninstall:
	vagrant box remove $(BOX) || true

install: $(BOX).box
	vagrant box add $(BOX) $^

clean:
	$(RM) $(BOX).box

fullclean: clean
	sudo $(RM) -r rootfs
	sudo $(RM) rootfs.tar.gz
	$(RM) .$(BOX)-base
	$(RM) lxc.conf
	$(RM) metadata.json
	sudo lxc-destroy -n $(BOX)-base

retry: clean uninstall all install
	vagrant up