diff options
Diffstat (limited to 'fuel/build')
-rw-r--r-- | fuel/build/DOC/BUILD/README.build | 1 | ||||
-rw-r--r-- | fuel/build/Makefile | 64 | ||||
-rw-r--r-- | fuel/build/Makefile~ | 140 | ||||
-rw-r--r-- | fuel/build/cache.mk | 87 | ||||
-rwxr-xr-x | fuel/build/docker/runcontext | 11 | ||||
-rw-r--r-- | fuel/build/opendaylight/Makefile | 28 | ||||
-rw-r--r-- | fuel/build/opendaylight/f_odl/Makefile | 2 | ||||
-rwxr-xr-x | fuel/build/opendaylight/make-odl-deb.sh | 32 |
8 files changed, 181 insertions, 184 deletions
diff --git a/fuel/build/DOC/BUILD/README.build b/fuel/build/DOC/BUILD/README.build index 519ee6a..b8ce799 100644 --- a/fuel/build/DOC/BUILD/README.build +++ b/fuel/build/DOC/BUILD/README.build @@ -27,6 +27,7 @@ On the host, the following packages must be installed: for Ubuntu 14.04. Note: only use the Ubuntu stock distro of Docker (docker.io) - git (simply available through apt-get install git) - make (simply available through apt-get install make) +- curl 2 Setting up the Docker build container ---------------------------------------- diff --git a/fuel/build/Makefile b/fuel/build/Makefile index 8e90fcc..e7cb6e7 100644 --- a/fuel/build/Makefile +++ b/fuel/build/Makefile @@ -13,24 +13,36 @@ # SHELL = /bin/bash -include config.mk +#Input args +export UNIT_TEST = FALSE +export INTERACTIVE = TRUE +export ISOSRC = file:$(shell pwd)/fuel-6.0.1.iso +export ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC)) +export PRODNO = "OPNFV_BGS" +export REVSTATE = "P0000" +export NEWISO = $(shell pwd)/release/opnfv-${REVSTATE}.iso + +# Note! Invoke with "make REVSTATE=RXXXX all" to make release build! +# Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location. -export BUILD_BASE = $(shell pwd) +#Build variables +export BUILD_BASE := $(shell pwd) export DEB_DEST := $(BUILD_BASE)/release/packages/ubuntu/pool/main export PUPPET_DEST := $(BUILD_BASE)/release/puppet/modules - -ISOSRC = file:$(shell pwd)/fuel-6.0.1.iso -ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC)) -PRODNO = "OPNFV_BGS" -REVSTATE = "P0000" -NEWISO = $(shell pwd)/release/opnfv-${REVSTATE}.iso +export CACHE_DIR := $(BUILD_BASE)/cache +export VERSION_FILE := $(BUILD_BASE)/.versions DOCKERIMG = opnfv.org/ubuntu-builder:14.04 -# Note! Invoke with "make REVSTATE=RXXXX iso" to make release build! -# Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location. +export TOPDIR := $(shell pwd) + # # END of variables to customize ############################################################################# -export TOPDIR := $(shell pwd) + +#Include definitions +include config.mk +include cache.mk + + ORIGDIR := $(TOPDIR)/origiso SUBDIRS := f_isoroot @@ -39,17 +51,17 @@ SUBDIRS += f_osnaily SUBDIRS += f_l23network SUBDIRS += f_resolvconf SUBDIRS += f_ntp -#SUBDIRS += f_gif -#SUBDIRS += f_libnss -#SUBDIRS += f_libpcs -#SUBDIRS += f_libxt -#SUBDIRS += f_comm_java -#SUBDIRS += f_ca_cert -#SUBDIRS += f_atk_wrap -#SUBDIRS += f_jre_head -#SUBDIRS += f_jre -#SUBDIRS += f_java -#SUBDIRS += f_odl +SUBDIRS += f_gif +SUBDIRS += f_libnss +SUBDIRS += f_libpcs +SUBDIRS += f_libxt +SUBDIRS += f_comm_java +SUBDIRS += f_ca_cert +SUBDIRS += f_atk_wrap +SUBDIRS += f_jre_head +SUBDIRS += f_jre +SUBDIRS += f_java +SUBDIRS += f_odl @@ -62,6 +74,9 @@ SUBCLEAN = $(addsuffix .clean,$(SUBDIRS)) .PHONY: all all: @docker version >/dev/null 2>&1 || (echo 'No Docker installation available'; exit 1) + @echo "Versions of cached build results built by" $(shell hostname) "at" $(shell date -u) > $(BUILD_BASE)/.versions + @echo "cache.mk" $(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ") >> $(BUILD_BASE)/.versions + @echo "config.mk" $(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ") >> $(BUILD_BASE)/.versions @make -C docker @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso @@ -69,6 +84,8 @@ $(ISOCACHE): # Clone Fuel to non-persistent location and build cd /tmp && git clone $(FUEL_MAIN_REPO) cd /tmp/fuel-main && git checkout $(FUEL_MAIN_TAG) + @echo "fuel" `git -C /tmp/fuel-main show | grep commit | rev | cut -f1 -d " "` >> ${BUILD_BASE}/.versions + # Setup cgroups for docker-in-docker sudo /root/enable_dockerx2 # Patch to fix race condition when doing "Docker-in-Docker" build @@ -120,7 +137,7 @@ build-clean: $(SUBCLEAN) @rm -f $(NEWISO) .PHONY: clean $(SUBCLEAN) -clean: prepare $(SUBCLEAN) +clean: prepare $(SUBCLEAN) $(MAKE) -C patch-packages -f Makefile clean $(MAKE) -C opendaylight -f Makefile clean @rm -f *.iso @@ -128,6 +145,7 @@ clean: prepare $(SUBCLEAN) @rm -Rf newiso @rm -f f_odl @rm -f $(NEWISO) + @rm -f $(BUILD_BASE)/.versions $(SUBCLEAN): %.clean: $(MAKE) -C $* -f Makefile clean diff --git a/fuel/build/Makefile~ b/fuel/build/Makefile~ deleted file mode 100644 index 7f16a28..0000000 --- a/fuel/build/Makefile~ +++ /dev/null @@ -1,140 +0,0 @@ -############################################################################## -# Copyright (c) 2015 Ericsson AB and others. -# stefan.k.berg@ericsson.com -# jonas.bjurel@ericsson.com -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -############################################################################ -# BEGIN of variables to customize -# -SHELL = /bin/bash - -include config.mk - -export BUILD_BASE = $(shell pwd) -export DEB_DEST := $(BUILD_BASE)/release/packages/ubuntu/pool/main -export PUPPET_DEST := $(BUILD_BASE)/release/puppet/modules - -ISOSRC = file:$(shell pwd)/fuel-6.0.1.iso -ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC)) -PRODNO = "OPNFV_BGS" -REVSTATE = "P0000" -NEWISO = $(shell pwd)/release/opnfv-${REVSTATE}.iso -DOCKERIMG = opnfv.org/ubuntu-builder:14.04 -# Note! Invoke with "make REVSTATE=RXXXX iso" to make release build! -# Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location. -# -# END of variables to customize -############################################################################# -export TOPDIR := $(shell pwd) -ORIGDIR := $(TOPDIR)/origiso - -SUBDIRS := f_isoroot -SUBDIRS += f_opnfv_puppet -SUBDIRS += f_osnaily -SUBDIRS += f_l23network -SUBDIRS += f_resolvconf -SUBDIRS += f_ntp -SUBDIRS += f_gif -SUBDIRS += f_libnss -SUBDIRS += f_libpcs -SUBDIRS += f_libxt -SUBDIRS += f_comm_java -SUBDIRS += f_ca_cert -SUBDIRS += f_atk_wrap -SUBDIRS += f_jre_head -SUBDIRS += f_jre -SUBDIRS += f_java -SUBDIRS += f_odl - - - -# f_example is only an example of how to generate a .deb package and -# should not be enabled in official builds. -#SUBDIRS += f_example - -SUBCLEAN = $(addsuffix .clean,$(SUBDIRS)) - -.PHONY: all -all: - @docker version >/dev/null 2>&1 || (echo 'No Docker installation available'; exit 1) - @make -C docker - @docker/runcontext $(DOCKERIMG) $(MAKE) $(MAKEFLAGS) iso - -$(ISOCACHE): - # Clone Fuel to non-persistent location and build - cd /tmp && git clone $(FUEL_MAIN_REPO) - cd /tmp/fuel-main && git checkout $(FUEL_MAIN_TAG) - # Setup cgroups for docker-in-docker - sudo /root/enable_dockerx2 - # Patch to fix race condition when doing "Docker-in-Docker" build - cd /tmp/fuel-main && patch -p1 < $(TOPDIR)/fuel-main_1.patch - # Patch to make the sandbox chroot in Fuel succeed with package - # installation in a Docker build - cd /tmp/fuel-main && patch -p1 < $(TOPDIR)/fuel-main_2.patch - # Remove Docker optimizations, otherwise multistrap will fail during - # Fuel build. - sudo rm -f /etc/apt/apt.conf.d/docker* - # - cd /tmp/fuel-main && ./prepare-build-env.sh - cd /tmp/fuel-main && make iso - mv /tmp/fuel-main/build/artifacts/fuel*.iso . - -.PHONY: mount-origiso umount-origiso -mount-origiso: $(ISOCACHE) - @echo "Mounting original ISO in $(ORIGDIR)" - @mkdir -p $(ORIGDIR) - @fuseiso $(ISOCACHE) $(ORIGDIR) - -umount-origiso: - @echo "Unmounting original ISO from $(ORIGDIR)" - @fusermount -u $(ORIGDIR) - @rmdir $(ORIGDIR) - -.PHONY: $(SUBDIRS) -$(SUBDIRS): - @mkdir -p release/packages/ubuntu/pool/main release/puppet/modules release/isoroot - $(MAKE) -C $@ -f Makefile release - -.PHONY: patch-packages -patch-packages: - ORIGISO=$(ISOCACHE) REVSTATE=$(REVSTATE) $(MAKE) -C $@ -f Makefile release - -.PHONY: prepare -prepare: - $(MAKE) -C opendaylight -f Makefile setup - -.PHONY: odl -odl: - $(MAKE) -C opendaylight -f Makefile - -.PHONY: build-clean $(SUBCLEAN) -build-clean: $(SUBCLEAN) - $(MAKE) -C patch-packages -f Makefile clean - @rm -Rf release - @rm -Rf newiso - @rm -f $(NEWISO) - -.PHONY: clean $(SUBCLEAN) -clean: prepare $(SUBCLEAN) - $(MAKE) -C patch-packages -f Makefile clean - $(MAKE) -C opendaylight -f Makefile clean - @rm -f *.iso - @rm -Rf release - @rm -Rf newiso - @rm -f f_odl - @rm -f $(NEWISO) - -$(SUBCLEAN): %.clean: - $(MAKE) -C $* -f Makefile clean - -# Todo: Make things smarter - we shouldn't need to clean everything -# betwen make invocations. -.PHONY: iso -iso: prepare build-clean odl $(ISOCACHE) $(SUBDIRS) patch-packages - install/install.sh iso $(ISOCACHE) $(NEWISO) $(PRODNO) $(REVSTATE) - @printf "\n\nProduct ISO is $(NEWISO)\n\n" diff --git a/fuel/build/cache.mk b/fuel/build/cache.mk new file mode 100644 index 0000000..a3f3516 --- /dev/null +++ b/fuel/build/cache.mk @@ -0,0 +1,87 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################ +# BEGIN of variables to customize +# +SHELL = /bin/bash + +#export BUILD_BASE = $(shell pwd) +#export CACHE_DIR = "$(BUILD_BASE)/cache" + +CACHEDIRS := opendaylight/f_odl/package + +CACHEFILES := opendaylight/.odl-build-history +CACHEFILES += opendaylight/.odl-build.log +CACHEFILES += .versions +CACHEFILES += fuel-6.0.1.iso +#CACHEFILES += $(ISOSRC) + +CACHECLEAN = $(addsuffix .clean,$(CACHEDIRS)) + +.PHONY: prepare-cache +prepare-cache: make-cache-dir $(CACHEDIRS) $(CACHEFILES) + +.PHONY: make-cache-dir +make-cache-dir: + @rm -rf ${CACHE_DIR} + @mkdir ${CACHE_DIR} + + +.PHONY: clean-cache +clean-cache: $(CACHECLEAN) + @rm -rf ${CACHE_DIR} + +.PHONY: $(CACHEDIRS) +$(CACHEDIRS): + @mkdir -p $(dir ${CACHE_DIR}/$@) + @if [ ! -d ${BUILD_BASE}/$@ ]; then\ + mkdir -p $(dir ${BUILD_BASE}/$@);\ + ln -s ${BUILD_BASE}/$@ ${CACHE_DIR}/$@;\ + rm -rf ${BUILD_BASE}/$@;\ + else\ + ln -s ${BUILD_BASE}/$@ ${CACHE_DIR}/$@;\ + fi + +.PHONY: $(CACHEFILES) +$(CACHEFILES): + @mkdir -p $(dir ${CACHE_DIR}/$@) + @if [ ! -f ${BUILD_BASE}/$@ ]; then\ + mkdir $(dir ${BUILD_BASE}/$@);\ + echo " " > ${BUILD_BASE}/$@;\ + ln -s ${BUILD_BASE}/$@ ${CACHE_DIR}/$@;\ + rm -f ${BUILD_BASE}/$@;\ + else\ + ln -s ${BUILD_BASE}/$@ ${CACHE_DIR}/$@;\ + fi + +.PHONY: validate-cache +validate-cache: +# if [ $(shell md5sum ${BUILD_BASE}/config.mk) -ne $(shell cat ${CACHE_DIR}/.versions | grep config.mk awk '{print $NF}') ]; then\ + echo "Cache does not match current config.mk definition, cache must be rebuilt";\ + exit 1;\ + fi; + +# if [ $(shell md5sum ${BUILD_BASE}/cache.mk) -ne $(shell cat ${CACHE_DIR}/.versions | grep config.mk awk '{print $NF}') ]; then\ + echo "Cache does not match current cache.mk definition, cache must be rebuilt";\ + exit 1;\ + fi; + +# $(MAKE) -C opendaylight validate-cache +# if [ $? -ne 0 ]; then\ + echo "Cache does not match current OpenDaylight version, cach must be rebuilt";\ + exit 1;\ + fi; + +# $(SUBDIRS) + +.PHONY: $(CACHECLEAN) +$(CACHECLEAN): %.clean: + rm -f ${CACHE_DIR}/$* diff --git a/fuel/build/docker/runcontext b/fuel/build/docker/runcontext index a22fb29..cf116fc 100755 --- a/fuel/build/docker/runcontext +++ b/fuel/build/docker/runcontext @@ -20,7 +20,16 @@ RUN /root/setcontext $USER $UID $GID $HOME EOF` GITROOT=`git rev-parse --show-toplevel` CID=`echo $res | sed 's/.* //'` -docker run --privileged=true --rm -i -e HOME=$HOME -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $GITROOT:$GITROOT $CID "$@" + + RUN_CONTEXT_OPT="--privileged=true --rm -i -e HOME=$HOME -u $USER -w $PWD -v ${HOME}/.ssh:${HOME}/.ssh -v $GITROOT:$GITROOT" + +if [ "${INTERACTIVE}" != "FALSE" ]; then + RUN_CONTEXT_OPT+=" -t" +fi + +echo command: docker run ${RUN_CONTEXT_OPT} $CID "$@" +docker run ${RUN_CONTEXT_OPT} $CID "$@" + rc=$? docker rmi $CID > /dev/null exit $rc diff --git a/fuel/build/opendaylight/Makefile b/fuel/build/opendaylight/Makefile index 9c3d22d..c112ff6 100644 --- a/fuel/build/opendaylight/Makefile +++ b/fuel/build/opendaylight/Makefile @@ -34,20 +34,42 @@ all: odl .PHONY: setup setup: - @if [ ! -d "$(TOPDIR)/f_odl" ]; then ln -s "$(realpath $(BUILD_DIR))/f_odl" "$(realpath $(TOPDIR))/f_odl"; fi + rm -f "$(BUILD_BASE)/f_odl" + ln -s "$(shell readlink -e $(BUILD_DIR))/f_odl" "$(shell readlink -e $(BUILD_BASE))/f_odl" + +.PHONY: check-cache-validity +check-cache-validity: + @if [ $(git ls-remote $(ODL_MAIN_REPO) $(ODL_MAIN_TAG) | awk '{print $(NF-1)}') -ne $(cat $(CACHE_DIR)/.versions | grep odl | awk '{print $NF}') ]; then @echo "Cache is not up to date, stopping!"; exit 1; fi .PHONY: odl odl: + ifeq ($(ODL_MAIN_REPO),) @echo "No config-spec target for ODL, nothing to build" else ifeq ($(shell if [ -e .odl-build.log ];then cat .odl-build.log; fi;),$(ODL_MAIN_TAG)) @cd /tmp && git clone $(ODL_MAIN_REPO) && cd /tmp/controller && git checkout $(ODL_MAIN_TAG) + @echo "ODL is up to date" else - @if [ ! -d "/tmp/controller" ]; then cd /tmp && git clone $(ODL_MAIN_REPO); fi; - @cd /tmp/controller && git checkout $(ODL_MAIN_TAG) && mvn -Dmaven.test.skip=true -gs $(MAVEN_SPEC) clean install; + @if [ ! -d "/tmp/controller" ]; then\ + cd /tmp && git clone $(ODL_MAIN_REPO);\ + fi; + + @if [ "$(UNIT_TEST)" = "FALSE" ]; then\ + echo "Building ODL without unit test";\ + cd /tmp/controller &&\ + git checkout $(ODL_MAIN_TAG) &&\ + mvn -D maven.test.skip=true -gs $(MAVEN_SPEC) clean install;\ + else\ + echo "Building ODL with unit test";\ + cd /tmp/controller &&\ + git checkout $(ODL_MAIN_TAG) &&\ + mvn -gs $(MAVEN_SPEC) clean install;\ + fi; + + @echo "odl" `git -C /tmp/controller show | grep commit | rev | cut -f1 -d " "` >> $(BUILD_BASE)/.versions @./make-odl-deb.sh -N $(ODL_SHORT_NAME)_`cd /tmp/controller; git rev-parse --short HEAD` -n $(ODL_SHORT_NAME) -v "$(ODL_VERSION)" -t "$(ODL_MAIN_TAG)" -m $(MAINTAINER) -d $(DEPEND) -p $(TARGET_BUILD_PATH) @echo $(ODL_MAIN_TAG) > .odl-build.log endif diff --git a/fuel/build/opendaylight/f_odl/Makefile b/fuel/build/opendaylight/f_odl/Makefile index 8ac5108..6983f0c 100644 --- a/fuel/build/opendaylight/f_odl/Makefile +++ b/fuel/build/opendaylight/f_odl/Makefile @@ -23,7 +23,7 @@ ifeq ($(ODL_MAIN_REPO),) else @mkdir -p tmp/src @mkdir -p release/pool/main - @cp -rp $(DEB_NAME) tmp/src + @cp -rp package/$(DEB_NAME) tmp/src @gzip -f9 tmp/src/$(DEB_NAME)/usr/share/doc/$(ODL_NAME_SHORT)/changelog.Debian @fakeroot dpkg-deb --build tmp/src/$(DEB_NAME) @lintian tmp/src/$(DEB_NAME).deb diff --git a/fuel/build/opendaylight/make-odl-deb.sh b/fuel/build/opendaylight/make-odl-deb.sh index 24974dc..5222087 100755 --- a/fuel/build/opendaylight/make-odl-deb.sh +++ b/fuel/build/opendaylight/make-odl-deb.sh @@ -260,11 +260,11 @@ do done # Constructing script variables -DEB_PACK_BASE_PATH="f_${PACKAGE_SHORT_NAME}/${PACKAGE_NAME}_${PACKAGE_VERSION}/" +DEB_PACK_BASE_PATH="f_${PACKAGE_SHORT_NAME}/package/${PACKAGE_NAME}_${PACKAGE_VERSION}" echo ${DEB_PACK_BASE_PATH} >> "$BUILD_HISTORY" TARGET_INSTALL_PATH="/usr/share/java/${PACKAGE_SHORT_NAME}/" -DEB_PACK_CONTENT_PATH="${DEB_PACK_BASE_PATH}usr/share/java/${PACKAGE_SHORT_NAME}/" -DEB_PACK_CONFIG_PATH="${DEB_PACK_BASE_PATH}etc/${PACKAGE_SHORT_NAME}" +DEB_PACK_CONTENT_PATH="${DEB_PACK_BASE_PATH}/usr/share/java/${PACKAGE_SHORT_NAME}/" +DEB_PACK_CONFIG_PATH="${DEB_PACK_BASE_PATH}/etc/${PACKAGE_SHORT_NAME}" TARGET_TAR=$(ls ${TARGET_BUILD_PATH}*.tar.gz) TARGET_TAR="${TARGET_TAR##*/}" TAR_PATH="${TARGET_TAR%.*}" @@ -295,20 +295,20 @@ find ${DEB_PACK_CONFIG_PATH}/etc/ -type f -print -exec chmod 644 {} \; find ${DEB_PACK_CONFIG_PATH}/etc/ -type d -print -exec chmod 755 {} \; # Create package usr/bin odl script -mkdir "${DEB_PACK_BASE_PATH}usr/bin" -chmod 755 "${DEB_PACK_BASE_PATH}usr/bin" -make-DEBIAN_bin > "${DEB_PACK_BASE_PATH}usr/bin/odl" -chmod 755 "${DEB_PACK_BASE_PATH}usr/bin/odl" +mkdir "${DEB_PACK_BASE_PATH}/usr/bin" +chmod 755 "${DEB_PACK_BASE_PATH}/usr/bin" +make-DEBIAN_bin > "${DEB_PACK_BASE_PATH}/usr/bin/odl" +chmod 755 "${DEB_PACK_BASE_PATH}/usr/bin/odl" # Create Deb pack install meta-data -mkdir "${DEB_PACK_BASE_PATH}DEBIAN" -make-DEBIAN_control > "${DEB_PACK_BASE_PATH}DEBIAN/control" -make-DEBIAN_conffiles > "${DEB_PACK_BASE_PATH}DEBIAN/conffiles" -mkdir -p "${DEB_PACK_BASE_PATH}usr/share/doc/${PACKAGE_SHORT_NAME}" -make-DEBIAN_copyright > "${DEB_PACK_BASE_PATH}usr/share/doc/${PACKAGE_SHORT_NAME}/copyright" -make-DEBIAN_changelog > "${DEB_PACK_BASE_PATH}usr/share/doc/${PACKAGE_SHORT_NAME}/changelog.Debian" +mkdir "${DEB_PACK_BASE_PATH}/DEBIAN" +make-DEBIAN_control > "${DEB_PACK_BASE_PATH}/DEBIAN/control" +make-DEBIAN_conffiles > "${DEB_PACK_BASE_PATH}/DEBIAN/conffiles" +mkdir -p "${DEB_PACK_BASE_PATH}/usr/share/doc/${PACKAGE_SHORT_NAME}" +make-DEBIAN_copyright > "${DEB_PACK_BASE_PATH}/usr/share/doc/${PACKAGE_SHORT_NAME}/copyright" +make-DEBIAN_changelog > "${DEB_PACK_BASE_PATH}/usr/share/doc/${PACKAGE_SHORT_NAME}/changelog.Debian" # Create Deb pack post install symlinks and usr/bin scripts -make-DEBIAN_postinst > "${DEB_PACK_BASE_PATH}DEBIAN/postinst" -chmod 755 "${DEB_PACK_BASE_PATH}DEBIAN/postinst" -mkdir -p "${DEB_PACK_BASE_PATH}usr/bin" +make-DEBIAN_postinst > "${DEB_PACK_BASE_PATH}/DEBIAN/postinst" +chmod 755 "${DEB_PACK_BASE_PATH}/DEBIAN/postinst" +mkdir -p "${DEB_PACK_BASE_PATH}/usr/bin" |