Small fixes in makesystem

This commit is contained in:
Dmitry Pyzhov 2013-04-30 04:05:40 +04:00 committed by default
parent 63b2f4299e
commit 539ba0a4df
5 changed files with 48 additions and 34 deletions

View File

@ -1,27 +1,17 @@
SOURCE_DIR?=$(dir $(lastword $(MAKEFILE_LIST)))
SOURCE_DIR:=$(abspath $(SOURCE_DIR))
TOP_DIR?=$(PWD)
TOP_DIR:=$(abspath $(TOP_DIR))
BUILD_DIR?=$(TOP_DIR)/build
BUILD_DIR:=$(abspath $(BUILD_DIR))
LOCAL_MIRROR?=$(TOP_DIR)/local_mirror
LOCAL_MIRROR:=$(abspath $(LOCAL_MIRROR))
DEPV_DIR?=$(BUILD_DIR)/depv
DEPV_DIR:=$(abspath $(DEPV_DIR))
.PHONY: all clean test help deep_clean
help:
@echo 'Build directives (can be overrided by environment variables'
@echo 'or by command line parameters):'
@echo ' SOURCE_DIR: $(SOURCE_DIR)'
@echo ' BUILD_DIR: $(BUILD_DIR)'
@echo ' LOCAL_MIRROR: $(LOCAL_MIRROR)'
@echo ' YUM_REPOS: $(YUM_REPOS)'
@echo ' MIRROR_CENTOS: $(MIRROR_CENTOS)'
@echo ' MIRROR_EGGS: $(MIRROR_EGGS)'
@echo ' MIRROR_GEMS: $(MIRROR_GEMS)'
@echo ' MIRROR_SRC: $(MIRROR_SRC)'
@echo ' SOURCE_DIR: $(SOURCE_DIR)'
@echo ' BUILD_DIR: $(BUILD_DIR)'
@echo ' LOCAL_MIRROR: $(LOCAL_MIRROR)'
@echo ' YUM_REPOS: $(YUM_REPOS)'
@echo ' MIRROR_CENTOS: $(MIRROR_CENTOS)'
@echo ' MIRROR_EGGS: $(MIRROR_EGGS)'
@echo ' MIRROR_GEMS: $(MIRROR_GEMS)'
@echo ' MIRROR_SRC: $(MIRROR_SRC)'
@echo ' ISO_DIR/ISO_NAME: $(ISO_PATH)'
@echo
@echo 'Available targets:'
@echo ' all - build product'
@ -53,6 +43,11 @@ MIRROR_EGGS=http://<your_mirror>/eggs \
MIRROR_GEMS=http://<your_mirror>/gems \
MIRROR_SRC=http://<your_mirror>/src'
# Path to the sources.
# Default value: directory with Makefile
SOURCE_DIR?=$(dir $(lastword $(MAKEFILE_LIST)))
SOURCE_DIR:=$(abspath $(SOURCE_DIR))
all: iso
test: test-unit test-integration

View File

@ -1,3 +1,18 @@
#
# Build directives. Can be overrided by environment variables.
#
# Base path for build and mirror directories.
# Default value: current directory
TOP_DIR?=$(PWD)
TOP_DIR:=$(abspath $(TOP_DIR))
# Path for build artifacts
BUILD_DIR?=$(TOP_DIR)/build
BUILD_DIR:=$(abspath $(BUILD_DIR))
# Path for cache of downloaded packages
LOCAL_MIRROR?=$(TOP_DIR)/local_mirror
LOCAL_MIRROR:=$(abspath $(LOCAL_MIRROR))
COMMIT_SHA:=$(shell git rev-parse --verify HEAD)
PRODUCT_VERSION:=1.0-rc1
@ -6,6 +21,13 @@ CENTOS_MINOR:=3
CENTOS_RELEASE:=$(CENTOS_MAJOR).$(CENTOS_MINOR)
CENTOS_ARCH:=x86_64
ISO_NAME?=fuelweb-centos-$(CENTOS_RELEASE)-$(CENTOS_ARCH)
ISO_DIR?=$(BUILD_DIR)/iso
ISO_DIR:=$(abspath $(ISO_DIR))
ISO_PATH:=$(ISO_DIR)/$(ISO_NAME).iso
IMG_PATH:=$(ISO_DIR)/$(ISO_NAME).img
# Do not compress javascript and css files
NO_UI_OPTIMIZE:=0
LOCAL_MIRROR_SRC:=$(LOCAL_MIRROR)/src
@ -59,4 +81,3 @@ MIRROR_SRC?=internet
# INTEGRATION TEST CONFIG
NOFORWARD:=1
iso.path:=$(BUILD_DIR)/iso/nailgun-centos-6.3-amd64.iso

View File

@ -1,4 +1,4 @@
$(call assert-variable,iso.path)
$(call assert-variable,ISO_PATH)
LEVEL ?= INFO
@ -37,7 +37,7 @@ test-integration-env: $(BUILD_DIR)/iso/iso.done
python $(SOURCE_DIR)/fuelweb_test/integration_test.py \
-l $(LEVEL) $(ENV_NAME_CLI_ARG) \
$(NOFORWARD_CLI_ARG) \
--iso $(iso.path) \
--iso $(ISO_PATH) \
setup
.PHONY: clean-integration-test

View File

@ -2,9 +2,6 @@
all: iso img
ISOROOT:=$(BUILD_DIR)/iso/isoroot
ISOBASENAME:=nailgun-centos-6.3-amd64
ISONAME:=$(BUILD_DIR)/iso/$(ISOBASENAME).iso
IMGNAME:=$(BUILD_DIR)/iso/$(ISOBASENAME).img
iso: $(BUILD_DIR)/iso/iso.done
img: $(BUILD_DIR)/iso/img.done
@ -125,38 +122,38 @@ $(BUILD_DIR)/iso/isoroot.done: \
# that is why we need to make isoroot.done dependent on some files
# and then copy these files into another directory
$(BUILD_DIR)/iso/iso.done: $(BUILD_DIR)/iso/isoroot.done
rm -f $(ISONAME)
rm -f $(ISO_PATH)
mkdir -p $(BUILD_DIR)/iso/isoroot-mkisofs
rsync -a --delete $(ISOROOT)/ $(BUILD_DIR)/iso/isoroot-mkisofs
mkisofs -r -V "Mirantis FuelWeb" -p "Mirantis Inc." \
-J -T -R -b isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 -boot-info-table \
-x "lost+found" -o $(ISONAME) $(BUILD_DIR)/iso/isoroot-mkisofs
implantisomd5 $(ISONAME)
-x "lost+found" -o $(ISO_PATH) $(BUILD_DIR)/iso/isoroot-mkisofs
implantisomd5 $(ISO_PATH)
$(ACTION.TOUCH)
# IMGSIZE is calculated as a sum of nailgun iso size plus
# installation images directory size (~165M) and syslinux directory size (~35M)
# plus a bit of free space for ext2 filesystem data
# +300M seems reasonable
IMGSIZE = $(shell echo "$(shell ls -s $(ISONAME) | awk '{print $$1}') / 1024 + 300" | bc)
IMGSIZE = $(shell echo "$(shell ls -s $(ISO_PATH) | awk '{print $$1}') / 1024 + 300" | bc)
$(BUILD_DIR)/iso/img.done: $(BUILD_DIR)/iso/iso.done
rm -f $(BUILD_DIR)/iso/img_loop_device
rm -f $(BUILD_DIR)/iso/img_loop_partition
rm -f $(BUILD_DIR)/iso/img_loop_uuid
sudo losetup -j $(IMGNAME) | awk -F: '{print $$1}' | while read loopdevice; do \
sudo losetup -j $(IMG_PATH) | awk -F: '{print $$1}' | while read loopdevice; do \
sudo kpartx -v $$loopdevice | awk '{print "/dev/mapper/" $$1}' | while read looppartition; do \
sudo umount -f $$looppartition; \
done; \
sudo kpartx -d $$loopdevice; \
sudo losetup -d $$loopdevice; \
done
rm -f $(IMGNAME)
dd if=/dev/zero of=$(IMGNAME) bs=1M count=$(IMGSIZE)
rm -f $(IMG_PATH)
dd if=/dev/zero of=$(IMG_PATH) bs=1M count=$(IMGSIZE)
sudo losetup -f > $(BUILD_DIR)/iso/img_loop_device
sudo losetup `cat $(BUILD_DIR)/iso/img_loop_device` $(IMGNAME)
sudo losetup `cat $(BUILD_DIR)/iso/img_loop_device` $(IMG_PATH)
sudo parted -s `cat $(BUILD_DIR)/iso/img_loop_device` mklabel msdos
sudo parted -s `cat $(BUILD_DIR)/iso/img_loop_device` unit MB mkpart primary ext2 1 $(IMGSIZE) set 1 boot on
sudo kpartx -a -v `cat $(BUILD_DIR)/iso/img_loop_device` | awk '{print "/dev/mapper/" $$3}' > $(BUILD_DIR)/iso/img_loop_partition
@ -175,7 +172,7 @@ $(BUILD_DIR)/iso/img.done: $(BUILD_DIR)/iso/iso.done
sudo sed -i -e "s/will_be_substituted_with_actual_uuid/`cat $(BUILD_DIR)/iso/img_loop_uuid`/g" $(BUILD_DIR)/iso/imgroot/syslinux/syslinux.cfg
sudo cp $(SOURCE_DIR)/iso/ks.cfg $(BUILD_DIR)/iso/imgroot/ks.cfg
sudo sed -i -e "s/will_be_substituted_with_actual_uuid/`cat $(BUILD_DIR)/iso/img_loop_uuid`/g" $(BUILD_DIR)/iso/imgroot/ks.cfg
sudo cp $(ISONAME) $(BUILD_DIR)/iso/imgroot/nailgun.iso
sudo cp $(ISO_PATH) $(BUILD_DIR)/iso/imgroot/nailgun.iso
sudo sync
sudo umount `cat $(BUILD_DIR)/iso/img_loop_partition`
sudo kpartx -d `cat $(BUILD_DIR)/iso/img_loop_device`

View File

@ -15,6 +15,7 @@ endef
# and the target which depends on it will be rebuilt.
# Example:
# target: $(call depv,varname)
DEPV_DIR:=$(BUILD_DIR)/depv
define depv
$(shell mkdir -p $(DEPV_DIR))
$(shell echo "$($1)" > $(DEPV_DIR)/$1.tmp)