summaryrefslogtreecommitdiff
path: root/debian/scripts/dbs-build.mk
blob: 075b61a3bef124a40a03b5f4cf95f546256a79d7 (plain)
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
#!/usr/bin/make -f
# Separate tarball/patch build system by Adam Heath <doogie@debian.org>
# Modified by Ben Collins <bcollins@debian.org>

SHELL		= /bin/bash -e
SOURCE_DIR	= build-tree
STAMP_DIR	= stampdir
PATCH_DIR	= debian/patches
SCRIPT_DIR	= /usr/share/dbs

patched		= $(STAMP_DIR)/patch
unpacked	= $(STAMP_DIR)/unpack

ifdef TAR_DIR
  BUILD_TREE	= $(SOURCE_DIR)/$(TAR_DIR)
else
  BUILD_TREE	= $(SOURCE_DIR)
endif

dh_mak_deps = $(shell DH_COMPAT=$(DH_COMPAT) perl $(SCRIPT_DIR)/dbs_split makedeps)
dh_gen_deps = $(shell DH_COMPAT=$(DH_COMPAT) perl $(SCRIPT_DIR)/dbs_split gendeps)

$(dh_mak_deps): $(dh_gen_deps)
	perl $(SCRIPT_DIR)/dbs_split

setup: $(dh_mak_deps)
	dh_testdir
	@-up-scripts
	$(MAKE) -f debian/rules $(unpacked) $(patched)

$(patched)/: $(STAMP_DIR)/created $(unpacked)
	test -d $(STAMP_DIR)/patches || mkdir -p $(STAMP_DIR)/patches
	@if [ -d "$(PATCH_DIR)" ]; then \
	  mkdir -p $(STAMP_DIR)/log/patches; \
	  for f in `(cd $(PATCH_DIR); find -type f ! -name 'chk-*') | sort | \
	      sed s,'./',,g`; do \
	    stampfile=$(STAMP_DIR)/patches/$$f; \
	    log=$(STAMP_DIR)/log/patches/$$f; \
	    if [ ! -e $$stampfile ]; then \
	      echo -n "Applying patch $(PATCH_DIR)/$$f ... "; \
	      if $(SHELL) $(SCRIPT_DIR)/file2cat $(PATCH_DIR)/$$f | \
		(cd $(SOURCE_DIR);patch -p0 --no-backup-if-mismatch) > $$log 2>&1; then \
		echo successful.; \
		touch $$stampfile; \
	      else \
		echo "failed! (check $$log for reason)"; \
		exit 1; \
	      fi; \
	    else \
	      echo Already applied $(PATCH_DIR)/$$f.; \
	    fi; \
	  done; \
	fi
	touch $@

unpacked: $(unpacked)
$(unpacked): $(STAMP_DIR)/created
	mkdir -p $(STAMP_DIR)/sources $(SOURCE_DIR) $(STAMP_DIR)/log/sources
	@for f in `find . -maxdepth 1 -type f -name \*.tgz -o -name \*.tar.gz -o \
		-name \*.tar.bz -o -name \*.tar.bz2 | sort | sed s,'./',,g`; do \
	  stampfile=$(STAMP_DIR)/sources/`basename $$f`; \
	  log=$(STAMP_DIR)/log/sources/`basename $$f`; \
	  if [ ! -e $$stampfile ]; then \
	    echo -n "Extracting source $$f ... "; \
	    if $(SHELL) $(SCRIPT_DIR)/file2cat $$f | \
		(cd $(SOURCE_DIR); tar xv) > $$log 2>&1; then \
	      echo successful.; \
	      touch $$stampfile; \
	    else \
	      echo failed!; \
	      exit 1; \
	    fi; \
	  else \
	    echo Already unpacked $$f.; \
	  fi; \
	done
	touch $@

make_patch:
	mv $(BUILD_TREE) $(BUILD_TREE).new
	rm -rf $(STAMP_DIR)
	$(MAKE) -f debian/rules $(unpacked) $(patched)
ifndef TAR_DIR
	diff -urN $(BUILD_TREE) $(BUILD_TREE).new > new.diff
else
	(cd $(SOURCE_DIR) && diff -urN $(TAR_DIR) $(TAR_DIR).new || true) > new.diff
endif
	rm -rf $(BUILD_TREE)
	mv $(BUILD_TREE).new $(BUILD_TREE)
	@echo; ls -l new.diff

$(STAMP_DIR)/created:
	test -d $(STAMP_DIR) || mkdir $(STAMP_DIR)
	touch $(STAMP_DIR)/created