commit | author | age
|
9c75c0
|
1 |
# |
NJ |
2 |
# CDDL HEADER START |
|
3 |
# |
|
4 |
# The contents of this file are subject to the terms of the |
|
5 |
# Common Development and Distribution License (the "License"). |
|
6 |
# You may not use this file except in compliance with the License. |
|
7 |
# |
|
8 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
|
9 |
# or http://www.opensolaris.org/os/licensing. |
|
10 |
# See the License for the specific language governing permissions |
|
11 |
# and limitations under the License. |
|
12 |
# |
|
13 |
# When distributing Covered Code, include this CDDL HEADER in each |
|
14 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
|
15 |
# If applicable, add the following below this CDDL HEADER, with the |
|
16 |
# fields enclosed by brackets "[]" replaced with your own identifying |
|
17 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
|
18 |
# |
|
19 |
# CDDL HEADER END |
|
20 |
# |
7bf47e
|
21 |
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. |
9c75c0
|
22 |
# |
NJ |
23 |
|
6185b3
|
24 |
-include ../make-rules/shared-macros.mk |
9c75c0
|
25 |
|
5ea840
|
26 |
# for now, the assumption is we build any directory with a Makefile. This may |
NJ |
27 |
# not always be the case. If we build a new make-like tool to drive the upper |
|
28 |
# level build, it may make different decisions and will need to include |
|
29 |
# appropriate dependency information. |
|
30 |
|
a325d4
|
31 |
# components.mk is auto-generated by the build tools. It populates the |
NJ |
32 |
# COMPONENT_DIRS macro with a list of all directories in the workspace that |
|
33 |
# contain a component. |
e6745c
|
34 |
COMPONENTS_IGNORE = components.ignore |
8de8f7
|
35 |
$(WS_TOP)/components/$(ENCUMBERED)components.mk: # Makefile # $(WS_TOP)/components |
a325d4
|
36 |
@echo "Generating component list..." |
79b849
|
37 |
@$(BASS_O_MATIC) --workspace=$(WS_TOP) --components=paths \ |
499a59
|
38 |
| sed -e 's;^$(shell pwd)/;;' \ |
e6745c
|
39 |
| sed -f $(COMPONENTS_IGNORE) \ |
499a59
|
40 |
| sed -e 's;^;COMPONENT_DIRS += ;g' >$@ |
a325d4
|
41 |
|
6185b3
|
42 |
-include $(WS_TOP)/components/$(ENCUMBERED)components.mk |
a325d4
|
43 |
|
705e8c
|
44 |
# mapping.json is auto-generated by the build tools. It provides a map |
404117
|
45 |
# between component path and component FMRI. |
AŠ |
46 |
$(WS_TOP)/components/mapping.json: |
|
47 |
@echo "Generating component mapping..." |
780de6
|
48 |
$(WS_TOOLS)/userland-mapping --workspace=$(WS_TOP) \ |
JMC |
49 |
--repo=$(PUBLISHER) \ |
|
50 |
--repo-map=encumbered/=$(PUBLISHER)-encumbered |
404117
|
51 |
mapping.json: $(WS_TOP)/components/mapping.json |
9c75c0
|
52 |
|
705e8c
|
53 |
# dependencies.json is auto-generate by the build tools. It provides information |
AŠ |
54 |
# about component dependencies. |
|
55 |
$(WS_TOP)/components/dependencies.json: mapping.json |
|
56 |
@echo "Generating component dependency list..." |
|
57 |
@$(BASS_O_MATIC) --workspace=$(WS_TOP) --components=dependencies >$@ |
|
58 |
dependencies.json: $(WS_TOP)/components/dependencies.json |
|
59 |
|
|
60 |
rebuild-dependents: dependencies.json |
|
61 |
@echo "Bumping COMPONENT_REVISION for dependents of $(FMRI)" |
|
62 |
@$(WS_TOOLS)/userland-bump -v --rebuild-dependents --fmri $(FMRI) |
|
63 |
|
|
64 |
print-dependents: dependencies.json |
|
65 |
@$(WS_TOOLS)/userland-bump -v --rebuild-dependents --dry-run --fmri $(FMRI) |
|
66 |
|
f46b0e
|
67 |
publish-branch: |
AL |
68 |
@$(RM) $(WS_TOP)/components/$(ENCUMBERED)components.mk && \ |
|
69 |
( env BASS_O_MATIC_MODE=incremental \ |
|
70 |
GIT_PREVIOUS_SUCCESSFUL_COMMIT=origin/oi/hipster \ |
|
71 |
$(GMAKE) -s publish ) |
|
72 |
|
|
73 |
|
3dc823
|
74 |
download: TARGET = download |
74c605
|
75 |
update-metadata: TARGET = update-metadata |
3dc823
|
76 |
prep: TARGET = prep |
NJ |
77 |
build: TARGET = build |
|
78 |
install: TARGET = install |
b5b9c7
|
79 |
pre-publish: TARGET = pre-publish |
3dc823
|
80 |
publish: TARGET = publish |
NJ |
81 |
clean: TARGET = clean |
|
82 |
clobber: TARGET = clobber |
874137
|
83 |
test: TARGET = test |
bf604a
|
84 |
zone-build: TARGET = component-zone-build |
AŠ |
85 |
zone-cleanup: TARGET = component-zone-cleanup |
764663
|
86 |
component-hook: TARGET = component-hook |
bf604a
|
87 |
zone-build zone-cleanup prep build install pre-publish publish test: LOG = >$(WS_LOGS)/$(subst /,.,$@).$(TARGET).log 2>&1 |
9c75c0
|
88 |
|
a81d46
|
89 |
# turn off pkglint for the individual component builds. |
048c87
|
90 |
ifeq ($(strip $(PKGLINT_COMPONENT)),) |
a81d46
|
91 |
publish: MAKEFLAGS += PKGLINT=/bin/true |
048c87
|
92 |
endif |
a81d46
|
93 |
|
9c75c0
|
94 |
.DEFAULT: publish |
NJ |
95 |
|
bf604a
|
96 |
zone-build zone-cleanup build install pre-publish publish test: $(COMPONENT_DIRS) |
9c75c0
|
97 |
|
79b849
|
98 |
COMPONENT_DIRS.nosetup = $(COMPONENT_DIRS:%=%.nosetup) |
74c605
|
99 |
COMPONENT_DIRS.nolog = $(COMPONENT_DIRS:%=%.nolog) |
9c75c0
|
100 |
|
b2b154
|
101 |
download prep: $(COMPONENT_DIRS.nosetup) |
74c605
|
102 |
|
JMC |
103 |
update-metadata: $(COMPONENT_DIRS.nolog) |
b643a2
|
104 |
|
764663
|
105 |
component-hook: $(COMPONENT_DIRS.nosetup) |
NJ |
106 |
|
b643a2
|
107 |
clean: $(COMPONENT_DIRS.nosetup) |
404117
|
108 |
$(RM) $(WS_TOP)/components/$(ENCUMBERED)components.mk \ |
AŠ |
109 |
$(WS_TOP)/components/mapping.json \ |
|
110 |
.profile |
9c75c0
|
111 |
|
b643a2
|
112 |
clobber: $(COMPONENT_DIRS.nosetup) clean |
6185b3
|
113 |
@cd $(WS_TOP)/tools ; echo "clobbering tools..." ; $(GMAKE) clobber |
724657
|
114 |
$(RM) -r $(WS_REPO) $(WS_LOGS) $(WS_LINT_CACHE) $(WS_MACH)/perl-meta-deps-cache |
7999b2
|
115 |
|
79b849
|
116 |
|
0f4247
|
117 |
setup: install_build_essential $(WS_LOGS) $(WS_REPO) tools $(WS_LINT_CACHE) |
NH |
118 |
|
|
119 |
install_build_essential: |
|
120 |
@/usr/bin/pkg list -vH build-essential > /dev/null || \ |
|
121 |
$(PFEXEC) /usr/bin/pkg install --accept build-essential |
9c75c0
|
122 |
|
NJ |
123 |
$(WS_LOGS): |
|
124 |
$(MKDIR) $@ |
|
125 |
|
d08673
|
126 |
$(WS_REPO): |
dd0336
|
127 |
$(PKGREPO) create $(PKG_REPO) |
DD |
128 |
$(PKGREPO) add-publisher -s $(PKG_REPO) $(PUBLISHER) |
313ffd
|
129 |
$(PKGREPO) rebuild -s $(PKG_REPO) |
499a59
|
130 |
# Not required for OI |
AS |
131 |
# $(PKGREPO) add-publisher -s $(PKG_REPO) $(PUBLISHER_LOCALIZABLE) |
9c75c0
|
132 |
|
048c87
|
133 |
DUMMYPKG = "set name=fmri value=pkg:/dummy@0,$(BUILD_VERSION)\n" |
MS |
134 |
DUMMYPKG += "set pkg.summary=dummy\n" |
|
135 |
DUMMYPKG += "set org.opensolaris.consolidation=userland\n" |
|
136 |
DUMMYPKG += "set info.classification=org.opensolaris.category.2008:System/Core" |
|
137 |
|
7bf47e
|
138 |
$(WS_LINT_CACHE): $(WS_LOGS) tools |
d08673
|
139 |
ifdef CANONICAL_REPO |
NJ |
140 |
@echo "Generating pkglint(1) cache from $(CANONICAL_REPO)..." |
048c87
|
141 |
@(echo $(DUMMYPKG) | $(PKGLINT) \ |
d08673
|
142 |
-c $(WS_LINT_CACHE) -r $(CANONICAL_REPO) /dev/fd/0 \ |
NJ |
143 |
>$(WS_LOGS)/naughty-canonical-repo-actions 2>&1 ; exit 0) |
|
144 |
else |
|
145 |
$(MKDIR) $(WS_LINT_CACHE) |
|
146 |
endif |
|
147 |
|
80b1b4
|
148 |
tools: |
6185b3
|
149 |
@cd $(WS_TOP)/tools ; echo "building tools..." ; $(GMAKE) clean setup |
80b1b4
|
150 |
|
79b849
|
151 |
# $(WS_COMPONENTS) is the home directory for the zone user, so create a profile |
NJ |
152 |
# to pass a few things on to zone based builds |
|
153 |
.profile: |
|
154 |
echo "PATH=$(PATH)" >>$@ |
|
155 |
echo "WS_TOP=$(WS_TOP)" >>$@ |
|
156 |
echo "export PATH WS_TOP" >>$@ |
|
157 |
|
b643a2
|
158 |
$(COMPONENT_DIRS): $(WS_LOGS) setup FORCE |
dab0d0
|
159 |
@+cd $@ && echo "$(TARGET) $@" && \ |
1018e3
|
160 |
$(BASS_O_MATIC) --make $(TARGET) $(LOG) |
79b849
|
161 |
|
10a7de
|
162 |
incorporation: |
0838fd
|
163 |
$(eval COMPONENT_REVISION := $(shell git rev-list HEAD --count)) |
10a7de
|
164 |
$(WS_TOOLS)/userland-incorporator --repository $(PKG_REPO) \ |
AP |
165 |
--version=0.$(OS_VERSION),$(BUILD_VERSION) -p $(PUBLISHER) \ |
|
166 |
-c $(CONSOLIDATION) --destdir=$(WS_MACH) $(INCORPORATE_WERROR) |
|
167 |
for incorporation in $(WS_MACH)/*.p5m ; do \ |
|
168 |
$(PKGSEND) -s $(PKG_REPO) publish --fmri-in-manifest \ |
|
169 |
$${incorporation} ; \ |
|
170 |
done |
|
171 |
|
|
172 |
|
a81d46
|
173 |
publish: |
10a7de
|
174 |
$(PKGREPO) refresh -s $(PKG_REPO) |
a81d46
|
175 |
ifdef CANONICAL_REPO |
NJ |
176 |
@echo 'pkglinting all package manifests...' |
|
177 |
@$(ENV) PYTHONPATH=$(WS_TOOLS)/python $(PKGLINT) \ |
|
178 |
-c $(WS_LINT_CACHE) -f $(WS_TOOLS)/pkglintrc \ |
|
179 |
$(shell find . -name 'manifest-*.published') |
|
180 |
endif |
|
181 |
|
b643a2
|
182 |
$(COMPONENT_DIRS.nosetup): $(WS_LOGS) FORCE |
87ddce
|
183 |
@+cd $(@:%.nosetup=%) && echo "$(TARGET) $(@:%.nosetup=%)" && \ |
1018e3
|
184 |
$(BASS_O_MATIC) --make $(TARGET) $(LOG) |
9c75c0
|
185 |
|
74c605
|
186 |
.PHONY: |
JMC |
187 |
$(COMPONENT_DIRS.nolog): |
|
188 |
@$(MAKE) -s -C $(@:%.nolog=%) $(TARGET) |
|
189 |
|
9c75c0
|
190 |
FORCE: |