1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
# Generic build script
DEBEMAIL:=osamu@debian.org
DEBFULLNAME:="Osamu Aoki"
export DEBEMAIL DEBFULLNAME
BUILD:=$(shell echo $(notdir $(CURDIR)))
PROJECT:=$(shell echo $(BUILD)|sed -e 's/_build-[0-9]*$$//' )
# parent directory of (full path)
EXAMPLES_PATH:=$(abspath $(CURDIR)/..)
# package build work directory (full path)
BUILD_PATH:=$(EXAMPLES_PATH)/$(BUILD)
# == BUILD_PATH:=$(CURDIR)
# package build directory (top)
DSC_PATH:=$(BUILD_PATH)/dsc
SOURCE_PATH:=$(DSC_PATH)/$(PROJECT)
PATH := $(EXAMPLES_PATH)/bin:$(PATH)
REFBUILD1:=debhello-0.0_build-1
REFBUILD2:=debhello-0.0_build-2
REFBUILDP:=debhello-1.1_build-1
PROJECTDIR:=$(DSC_PATH)/$(PROJECT)
TERM:=xterm
TREE_COLORS:=
LS_COLORS:=
CDPATH:=
NOANSI:=s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g
FILTER :=s/\(^.............................................................................\).*$$/\1.../
TGZ:=tar.gz
export BUILD_PATH DSC_PATH EXAMPLES_PATH SOURCE_PATH PATH PROJECT PROJECTDIR TREE_COLORS LS_COLORS TERM CDPATH TGZ
stepcmds := $(sort $(wildcard *.cmd))
steps := $(patsubst %.cmd, %, $(stepcmds))
all:
mkdir -p $(DSC_PATH)
echo $(BUILD_PATH) > $(BUILD_PATH)/next.dir
echo $(BUILD) > $(BUILD_PATH)/build
echo $(PROJECT) > $(BUILD_PATH)/project
@echo
@echo "===== build @ $(BUILD) ====="
@echo
for i in $(steps) ; do \
echo "=== STEP = $$i ===" ; \
cd $$(cat $(BUILD_PATH)/next.dir) >/dev/null ; \
script -e -q -c $(BUILD_PATH)/$$i.cmd $(BUILD_PATH)/$$i.log ; \
ERR=$$? ; \
cat $(BUILD_PATH)/$$i.log | col -b -x | \
grep -v -e '^Script started on' | \
grep -v -e '^Script done on' | \
sed -r '$(NOANSI)' | \
sed -e 's#$(DSC_PATH)#/path/to#g' | \
sed -e '$(FILTER)' > $(BUILD_PATH)/$$i.slog ; \
if [ x$$ERR != x0 ]; then exit 1 ; fi ; \
done
if [ -e $(BUILD_PATH)/step200.slog ]; then \
grep -A12 '^I: sanity check of parameters' $(BUILD_PATH)/step200.slog > $(BUILD_PATH)/step200.slog-sanity ; fi
if [ -e $(BUILD_PATH)/step500.slog ]; then \
grep -A8 '^ debian/rules binary' $(BUILD_PATH)/step500.slog > $(BUILD_PATH)/step500.slog-binary ; fi
if [ -e $(BUILD_PATH)/step500.slog ]; then tail -n2 $(BUILD_PATH)/step500.slog >$(BUILD_PATH)/step500.slog-tail ; fi
clean:
-rm -rf $(DSC_PATH)
-rm -rf debmake
-rm -rf package
-rm -f build
-rm -f .stamp
-rm -f *.log
-rm -rf next.dir project
distclean: clean
-rm -f *.slog
-rm -f *.patch
step%.raw: step%.cmd
./$^ >$@
CMDFILES_THIS = $(shell ls -1 step*.cmd)
CMDFILES_REF1 = $(shell (cd ../$(REFBUILD1) ; ls -1 step*.cmd;))
CMDFILES_REF2 = $(shell (cd ../$(REFBUILD2) ; for f in $$(ls -1 step*.cmd) ; do if [ ! -h $$f ]; then echo $$f ; fi ; done ; ) ; )
CMDFILES_REFP = $(shell (cd ../$(REFBUILDP) ; for f in $$(ls -1 step*.cmd) ; do if [ ! -h $$f ]; then echo $$f ; fi ; done ; ) ; )
CMDFILES1 = $(shell ( echo $(CMDFILES_THIS) $(CMDFILES_REF1) | xargs -n1 | sort -u ;) )
CMDFILES2 = $(shell ( echo $(CMDFILES_THIS) $(CMDFILES_REF2) | xargs -n1 | sort -u ;) )
CMDFILESP = $(shell ( echo $(CMDFILES_THIS) $(CMDFILES_REFP) | xargs -n1 | sort -u ;) )
check:
@echo "EXAMPLES_PATH = $(EXAMPLES_PATH) all examples including tar.gz"
@echo "BUILD_PATH = $(BUILD_PATH) each build cases"
@echo "DSC_PATH = $(DSC_PATH) where *.deb and *.dsc are generated"
@echo "SOURCE_PATH = $(SOURCE_PATH) where extracted tar ball source tree"
@echo "PROJECT = $(PROJECT) upstream project name"
@echo "BUILD = $(BUILD) build case naem"
@echo "REFBUILD1 = $(REFBUILD1)"
@echo "CMDFILES_REF1 = $(CMDFILES_REF1)"
@echo "REFBUILD2 = $(REFBUILD2)"
@echo "CMDFILES_REF2 = $(CMDFILES_REF2)"
symlink1:
for f in $(CMDFILES1) ; do diff -uN ../$(REFBUILD1)/$$f $$f && ln -sf ../$(REFBUILD1)/$$f $$f || echo "keep file" ; done
symlink2:
for f in $(CMDFILES2) ; do diff -uN ../$(REFBUILD2)/$$f $$f && ln -sf ../$(REFBUILD2)/$$f $$f || echo "keep file" ; done
symlinkp:
for f in $(CMDFILESP) ; do diff -uN ../$(REFBUILDP)/$$f $$f && ln -sf ../$(REFBUILDP)/$$f $$f || echo "keep file" ; done
.PHONY: all clean distclean check symlink1 symlink2
|