From cb764516ebc94fa97e6f91e0bb4627eda7c347b2 Mon Sep 17 00:00:00 2001 From: Michael Shigorin Date: Wed, 18 Jul 2012 16:06:15 +0300 Subject: [PATCH] build-vm: standalone build is a must, too The problem was spotted by Alexander Bandura: bin/tar2vm wasn't present in the generated profile. I considered extending features.in/Makefile to include bin/ alongside lib/ but that would make the helper's location unpredictable (unless BUILDDIR is specified explicitly) so restricting sudoers would be harder; worse yet, the copied file would come with write access for the user building an image. The implications in restricted case are complex enough anyways so the recommended implementation would only include a fixed readonly location like /usr/share/mkimage-profiles/bin/tar2vm as laid out in doc/vm.txt, and that means it's in the metaprofile not a generated profile. --- features.in/build-vm/generate.mk | 4 ++++ features.in/syslinux/generate.mk | 1 - main.mk | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 features.in/build-vm/generate.mk diff --git a/features.in/build-vm/generate.mk b/features.in/build-vm/generate.mk new file mode 100644 index 00000000..399baf74 --- /dev/null +++ b/features.in/build-vm/generate.mk @@ -0,0 +1,4 @@ +# copy tar2vm helper into generated profile to enable standalone builds + +all: + @install -pD $(MKIMAGE_PROFILES)/bin/tar2vm $(BUILDDIR)/bin/tar2vm diff --git a/features.in/syslinux/generate.mk b/features.in/syslinux/generate.mk index 9e6a47d4..63cb049b 100644 --- a/features.in/syslinux/generate.mk +++ b/features.in/syslinux/generate.mk @@ -26,7 +26,6 @@ endif # 01defaults.cfg is included indefinitely SYSLINUX_CFG := $(SYSLINUX_CFG) $(notdir $(SUBPROFILES)) defaults -### have to operate BUILDDIR, not pretty... DSTDIR := $(BUILDDIR)/stage1/files/syslinux/.in # we can do SYSLINUX_{CFG,MODULES,FILES} diff --git a/main.mk b/main.mk index 5cb8b71c..e5f97f4f 100644 --- a/main.mk +++ b/main.mk @@ -6,8 +6,6 @@ # --- in BUILDDIR # 4. build subprofiles and subsequently an image -MKIMAGE_PROFILES := $(dir $(lastword $(MAKEFILE_LIST))) - # deal with one target at a time IMAGE_TARGET := $(firstword $(MAKECMDGOALS))# ve/generic.tar.gz ifeq (./,$(dir $(IMAGE_TARGET)))# convenience fallback @@ -26,6 +24,8 @@ else BUILDDIR_PREFIX ?= mkimage-profiles.build/$(IMAGE_CONF).$(ARCH) endif +export MKIMAGE_PROFILES := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) + # preferences -include $(HOME)/.mkimage/profiles.mk