blob: 6d4572654938f2d7ba5fb54b5ebd0479181edc1a [file] [log] [blame]
Stephen Cpreke7254c72015-02-19 14:33:38 -06001################################################################################
2#
3# pkg-versions
4#
5# Read VERSION.readme in the current directory to learn about the version
6# string structure
7#
8################################################################################
9
10define OPENPOWER_SUBPACKAGE_VERSION
11
12$(2)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
13ALL_SUBPACKAGE_VERSIONS += $$($(2)_VERSION_FILE)
14
15### Create subpackage patch file
16define $(2)_OPENPOWER_PATCH_FILE
17
18mkdir -p "$$(OPENPOWER_VERSION_DIR)";
19
20# Remove patch file to start off fresh
21if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt ]; then \
22 rm -rf $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt; \
23fi
24
25# Check all global patch directories
26$$(foreach path, $$(BR2_GLOBAL_PATCH_DIR),if ls $$(path)/$(1)/*.patch 2>/dev/null; then \
27 sha512sum $$(path)/$(1)/*.patch | sha512sum | \
28 xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; fi;)
29
30# Check the package patch dir, $$(PKGDIR) doesn't exist when running the version rules
31if [ -n "$$(PKGDIR)" ]; then \
32 if ls $$(PKGDIR)*.patch 2>/dev/null; then sha512sum $$(PKGDIR)*.patch | sha512sum | \
33 xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
34 fi; \
35else \
36 if ls $$(BR2_EXTERNAL)/package/$(1)/*.patch 2>/dev/null; then sha512sum \
37 $$(BR2_EXTERNAL)/package/$(1)/*.patch | sha512sum | \
38 xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
39 fi; \
40fi
41
Sam Mendoza-Jonase56617a2016-03-09 11:59:08 +110042# If this is for linux, also check openpower/linux
43if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
44 if ls $$(BR2_EXTERNAL)/$(1)/*.patch 2>/dev/null; then sha512sum \
45 $$(BR2_EXTERNAL)/$(1)/*.patch | sha512sum | \
46 xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
47 fi; \
48fi;
49
Stephen Cpreke7254c72015-02-19 14:33:38 -060050# Combine all the patches found in the package and global package directories
51if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt ]; then \
52 cat $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt | sha512sum | cut -c 1-7 | \
53 xargs echo -n > $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt; \
54fi
55
56# Remove the tmp_patch file
57if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt ]; then \
58 rm -rf $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
59fi
60
61endef ###
62
63### Create subpackage version file
64define $(2)_OPENPOWER_VERSION_FILE
65
66mkdir -p "$$(OPENPOWER_VERSION_DIR)"
67
68# Add package name
69echo -n " $(1)-" > $$($(2)_VERSION_FILE)
70
71# If site local
72# Add site local and user, local commit, if local is dirty
73# Else not local
74# Add package version, op-build is dirty, op-build patches
75if [ "$$($(2)_SITE_METHOD)" == "local" ]; then \
76echo -n "site_local-" >> $$($(2)_VERSION_FILE); \
77whoami | xargs echo -n >> $$($(2)_VERSION_FILE); \
78echo -n "-" >> $$($(2)_VERSION_FILE); \
79\
80cd "$$($(2)_SITE)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
Stewart Smith93157d12015-05-14 16:01:44 +100081 | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/;s/$(1)-//;' | xargs echo -n \
Stephen Cpreke7254c72015-02-19 14:33:38 -060082 >> $$($(2)_VERSION_FILE); \
83\
Stewart Smith93157d12015-05-14 16:01:44 +100084cd "$$($(2)_SITE)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/;' | \
Stephen Cpreke7254c72015-02-19 14:33:38 -060085 xargs echo -n >> $$($(2)_VERSION_FILE); \
86else \
87\
88[ `echo -n $$($(2)_VERSION) | wc -c` == "40" ] && (echo -n $$($(2)_VERSION) | \
Stewart Smith93157d12015-05-14 16:01:44 +100089 sed "s/^\([0-9a-f]\{7\}\).*/\1/;s/$(1)-//;" >> $$($(2)_VERSION_FILE)) \
90 || echo -n $$($(2)_VERSION) | sed -e 's/$(1)-//' >> $$($(2)_VERSION_FILE); \
Stephen Cpreke7254c72015-02-19 14:33:38 -060091\
92cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | \
93 if grep -e "-dirty"; then \
94 echo -n "-opdirty" >> $$($(2)_VERSION_FILE); \
95 fi; \
96\
97if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt ]; then \
98 echo -n "-" >> $$($(2)_VERSION_FILE); \
99 cat $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt >> $$($(2)_VERSION_FILE); fi \
100fi
101
102# Add new line to version.txt
103echo "" >> $$($(2)_VERSION_FILE);
104
105endef ###
106
107# Add appropriate templates to hooks
108$(2)_POST_PATCH_HOOKS += $(2)_OPENPOWER_PATCH_FILE
109$(2)_PRE_BUILD_HOOKS += $(2)_OPENPOWER_VERSION_FILE
110
111# Top-level rule to print or generate a subpackage version
112$(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
113
114# Rule to print out subpackage version
115$(1)-print-version:
116 @echo "=== $(2)_VERSION ==="
117 @cat $$($(2)_VERSION_FILE) | xargs echo
118
119# Rule to generate subpackage version
120$(1)-build-version:
121 @echo "=== $(2)_VERSION ==="
122 @echo " Searching for patches..."
123 @$$($(2)_OPENPOWER_PATCH_FILE)
124 @echo " End of patches...";
125 @echo " Creating version string (various output may display)..."
126 @$$($(2)_OPENPOWER_VERSION_FILE)
127 @echo " End creating version string..."
128 @echo -n " version: "; cat $$($(2)_VERSION_FILE) | xargs echo
129
130endef
131
132define OPENPOWER_VERSION
133
134UPPER_CASE_PKG = $(call UPPERCASE,$(1))
135$$(UPPER_CASE_PKG)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
136
137
138$$(eval $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), \
139 $$(call OPENPOWER_SUBPACKAGE_VERSION,$$(pkg),$$(call UPPERCASE,$$(pkg)))))
140
141### Combine subpackage files into one version file
142define $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
143
144mkdir -p "$$(OPENPOWER_VERSION_DIR)"
145
146# Add vendor or default open-power
147if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
148echo -n "$$(OPBUILD_VENDOR)-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
149else \
150echo -n "open-power-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
151fi
152
153# Add platform or default from defconfig
154if [ "$$(OPBUILD_PLATFORM)" != '' ]; then \
155echo -n "$$(OPBUILD_PLATFORM)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
156else \
157echo -n "$$(BR2_OPENPOWER_CONFIG_NAME)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
158fi
159
160# Add op-build version
161# Order: OPBUILD_VERSION, tag, commit, unknown
162if [ "$$(OPBUILD_VERSION)" != '' ]; then \
163 echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
164else \
165cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
166 | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
167 >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
168fi
169
170# Check if op-build is dirty
171cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
172 xargs echo -n >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
173
174# Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
175echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
176
177# Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)
178$$(foreach verFile,$$(ALL_SUBPACKAGE_VERSIONS),
179 if [ -f $$(verFile) ]; then cat $$(verFile) \
180 >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); fi )
181
182endef ###
183
184$$(UPPER_CASE_PKG)_PRE_BUILD_HOOKS += $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
185
186# Top-level rule to print or generate openpower-pnor version
187$(1)-version: $$(if $$(wildcard $$($$(UPPER_CASE_PKG)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
188
189# Rule to print out pnor version
190$(1)-print-version:
191 @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
192 @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
193 @echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
194
Stephen Cpreke7254c72015-02-19 14:33:38 -0600195# Rule to generate pnor version
196$(1)-build-version: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-version)
197 @$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
198 @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
199 @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
200 @echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
201
Stephen Cprekded98fb2015-04-15 17:11:52 -0500202# Rule to force re-generation of all versioned subpackages
203$(1)-build-version-all: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-build-version)
204 @$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
205 @echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
206 @cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
207 @echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
208
Stephen Cpreke7254c72015-02-19 14:33:38 -0600209endef