Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: b1b22e18b22a109a479d40d41c7863f26647c23b (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
###
###  More fundamental definitions at the top, big "user"-level
###  definitions at the end, and .ISO-like targets in the middle
###


################################
### build tracking variables
################################

# keep in sync with "./build" script
prevbuild := $(shell cat < lastbuild)
buildstem := $(shell python -c "print '$(prevbuild)'.split('.')[0][:-2];")
nextbuild := $(shell python -c "print '%0.2d' % (int('$(prevbuild)'.split('.')[0][-2:]) + 1);")
buildname := $(buildstem)$(nextbuild)


################################
### Fundamental rules
################################

create.%: sized.% %.sha1sum
	echo $@ done

sized.%: % %.size.txt
	echo $@ done

%.size.txt: %
	du -sk $^ | cut -f 1 > $@
%.sha1sum: %
	sha1sum $^ > $@
%.tree.tar: %.tree
	tar -c -C $^ . > $@
%.tree.tar.lzma: %.tree.tar
	lzma -1kf $^
%.tar.lzma: %
	tar -c $^ | lzma -1 > $@


################################
### The Really Interesting Artifacts: .ISOs, .IMG files, VMDK
################################

soas%xo.iso:
	livecd-creator --cache=../cache --fslabel soas$*xo -c ../soas-xo.ks
soas%.iso:
	livecd-creator --cache=../cache --fslabel soas$* -c ../soas.ks
soas%.vmdk:
	appliance-creator --cache=../cache -n soas$* -f vmdk --checksum -p zip -c ../soas-appliance.ks
soas%.vmdk.zip: soas%.vmdk
	echo "created $@"

soas%.tree: soas%.iso
	../livecd-iso-to-bootable-tree.sh $^ $@
	touch $@
	chroot $@ rpm -qa | sort > $@.packages.txt
	chroot $@ rpm -qa --queryformat="%10{SIZE}\t%{NAME}\n" | sort -k1,1n > $@.packages-sizes.txt

soas%.fulldisk.img: soas%.tree
	../bootable-tree-to-fulldisk-img.sh $^ $@

soas%xo.img: soas%xo.tree
	../bootable-tree-to-xo.sh $^ $@
soas%xo.plc: soas%xo.img
	../image-digestor.sh $^



################################
### Announcements, size changes, xdeltas, and other .txt files
################################

exts := .tree .fulldisk.img.tar.lzma xo.tree xo.img
sized_names = soas$(nextbuild)$(ext).size-change.txt
sized_changes := $(foreach ext,$(exts),$(sized_names))

soas%.announcement.txt: $(sized_changes) soas%.tree.package-changes.txt
	../announce . soas$*

soas$(nextbuild)%.size-change.txt: soas$(nextbuild)%.size.txt $(prevbuild)%.size.txt
	cat $^ | python -c "import sys; oldk, newk = [int(l.strip()) for l in sys.stdin.readlines()] ; print '%0.2fM / %dK' % (newk / 1024.0, newk - oldk)" > $@

soas%.tree.tar.xdelta: soas%.tree.tar
	-xdelta delta $(prevbuild).tree.tar $^ $@

soas$(nextbuild)fulldisk.img.xdelta: soas$(nextbuild)fulldisk.img
	-xdelta delta $(prevbuild)fulldisk.img $^ $@

soas$(nextbuild).tree.package-changes.txt: $(prevbuild).tree.packages.txt soas$(nextbuild).tree.packages.txt
	diff -U 1 $^ | grep -v ^@@ > $@ || echo "[No changes]" > $@


################################
### Big XXXX.done target and make-isms like .PRECIOUS
################################

.PRECIOUS: soas%.iso soas%.tree soas%.tree.tar soas%.tree.tar.lzma \
			soas%.fulldisk.img soas%.fulldisk.img.tar.lzma soas%.fulldisk.img.tar.lzma.size-change.txt \
			soas%xo.fulldisk.img soas%xo.fulldisk.img.tar.lzma soas%xo.fulldisk.img.tar.lzma.size-change.txt \
			soas%xo.iso soas%xo.tree soas%xo.tree.tar soas%xo.tree.tar.lzma \
			soas%xo.img soas%xo.plc \
			soas%xo.tree.size-change.txt \
			soas%xo.img.size-change.txt \
			soas%.tree.size-change.txt \
			%.size.txt %.sha1sum \
			soas%.vmdk soas%.vmdk.zip \
			soas%.announcement.txt

soas%.done: create.soas%.iso sized.soas%.tree \
			create.soas%.tree.tar.lzma soas%.tree.tar.xdelta \
			create.soas%.fulldisk.img.tar.lzma \
			create.soas%xo.iso sized.soas%xo.tree \
			create.soas%xo.tree.tar.lzma soas%xo.tree.tar.xdelta \
			create.soas%xo.fulldisk.img.tar.lzma \
			create.soas%xo.img soas%xo.plc \
			create.soas%.vmdk.zip
	touch $@


################################
### high-level targets like "all" and "clean"
################################

all: soas$(nextbuild).done soas$(nextbuild).announcement.txt
	echo soas$(nextbuild) > lastbuild

artifacts = $(wildcard *.txt) $(wildcard *.tree) $(wildcard *.tar)		\
			$(wildcard *.img) $(wildcard *.iso) $(wildcard *.plc)		\
			$(wildcard *.crc) $(wildcard *.lzma) $(wildcard *.sha1sum)  \
			$(wildcard *.done)

clean:
	rm -rf $(filter-out soas$(nextbuild)% $(prevbuild)%,$(artifacts))

.PHONY: create.% sized.% all clean