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. |
8de8f7
|
34 |
$(WS_TOP)/components/$(ENCUMBERED)components.mk: # Makefile # $(WS_TOP)/components |
a325d4
|
35 |
@echo "Generating component list..." |
79b849
|
36 |
@$(BASS_O_MATIC) --workspace=$(WS_TOP) --components=paths \ |
499a59
|
37 |
| sed -e 's;^$(shell pwd)/;;' \ |
AS |
38 |
| sed -f components.ignore \ |
|
39 |
| sed -e 's;^;COMPONENT_DIRS += ;g' >$@ |
a325d4
|
40 |
|
6185b3
|
41 |
-include $(WS_TOP)/components/$(ENCUMBERED)components.mk |
a325d4
|
42 |
|
35879a
|
43 |
# depends.mk is auto-generated by concatenating 'depend.mk' files in each |
SS |
44 |
# component directory. |
8de8f7
|
45 |
$(WS_TOP)/components/$(ENCUMBERED)depends.mk: $(WS_TOP)/components/$(ENCUMBERED)components.mk |
35879a
|
46 |
@echo "Generating component dependencies..." |
8de8f7
|
47 |
@cat /dev/null $(shell $(BASS_O_MATIC) --workspace=$(WS_TOP) --components=paths \ |
499a59
|
48 |
| sed -e 's;^$(shell pwd)/;;g' \ |
AS |
49 |
| sed -f components.ignore \ |
|
50 |
| sed -e 's;$$;/depend.mk;g') >$@ \ |
35879a
|
51 |
2>/dev/null |
SS |
52 |
|
6185b3
|
53 |
-include $(WS_TOP)/components/$(ENCUMBERED)depends.mk |
35879a
|
54 |
|
9c75c0
|
55 |
|
3dc823
|
56 |
download: TARGET = download |
NJ |
57 |
prep: TARGET = prep |
|
58 |
build: TARGET = build |
|
59 |
install: TARGET = install |
|
60 |
publish: TARGET = publish |
|
61 |
clean: TARGET = clean |
|
62 |
clobber: TARGET = clobber |
874137
|
63 |
test: TARGET = test |
764663
|
64 |
component-hook: TARGET = component-hook |
874137
|
65 |
prep build install publish test: TEMPLATE_ZONE=$(ZONE) |
35a012
|
66 |
prep build install publish test: LOG = >$(WS_LOGS)/$(@F).$(TARGET).log 2>&1 |
9c75c0
|
67 |
|
a81d46
|
68 |
# turn off pkglint for the individual component builds. |
048c87
|
69 |
ifeq ($(strip $(PKGLINT_COMPONENT)),) |
a81d46
|
70 |
publish: MAKEFLAGS += PKGLINT=/bin/true |
048c87
|
71 |
endif |
a81d46
|
72 |
|
9c75c0
|
73 |
.DEFAULT: publish |
NJ |
74 |
|
b643a2
|
75 |
build install publish test: $(COMPONENT_DIRS) |
9c75c0
|
76 |
|
79b849
|
77 |
COMPONENT_DIRS.nosetup = $(COMPONENT_DIRS:%=%.nosetup) |
9c75c0
|
78 |
|
b2b154
|
79 |
download prep: $(COMPONENT_DIRS.nosetup) |
b643a2
|
80 |
|
764663
|
81 |
component-hook: $(COMPONENT_DIRS.nosetup) |
NJ |
82 |
|
b643a2
|
83 |
clean: $(COMPONENT_DIRS.nosetup) |
8de8f7
|
84 |
$(RM) $(WS_TOP)/components/$(ENCUMBERED)components.mk $(WS_TOP)/components/$(ENCUMBERED)depends.mk .profile |
9c75c0
|
85 |
|
b643a2
|
86 |
clobber: $(COMPONENT_DIRS.nosetup) clean |
6185b3
|
87 |
@cd $(WS_TOP)/tools ; echo "clobbering tools..." ; $(GMAKE) clobber |
70eebe
|
88 |
$(RM) -r $(WS_REPO) $(WS_LOGS) $(WS_LINT_CACHE) |
7999b2
|
89 |
|
79b849
|
90 |
|
d08673
|
91 |
setup: $(WS_LOGS) $(WS_REPO) tools $(WS_LINT_CACHE) |
9c75c0
|
92 |
|
NJ |
93 |
$(WS_LOGS): |
|
94 |
$(MKDIR) $@ |
|
95 |
|
d08673
|
96 |
$(WS_REPO): |
dd0336
|
97 |
$(PKGREPO) create $(PKG_REPO) |
DD |
98 |
$(PKGREPO) add-publisher -s $(PKG_REPO) $(PUBLISHER) |
499a59
|
99 |
# Not required for OI |
AS |
100 |
# $(PKGREPO) add-publisher -s $(PKG_REPO) $(PUBLISHER_LOCALIZABLE) |
9c75c0
|
101 |
|
048c87
|
102 |
DUMMYPKG = "set name=fmri value=pkg:/dummy@0,$(BUILD_VERSION)\n" |
MS |
103 |
DUMMYPKG += "set pkg.summary=dummy\n" |
|
104 |
DUMMYPKG += "set org.opensolaris.consolidation=userland\n" |
|
105 |
DUMMYPKG += "set info.classification=org.opensolaris.category.2008:System/Core" |
|
106 |
|
7bf47e
|
107 |
$(WS_LINT_CACHE): $(WS_LOGS) tools |
d08673
|
108 |
ifdef CANONICAL_REPO |
NJ |
109 |
@echo "Generating pkglint(1) cache from $(CANONICAL_REPO)..." |
048c87
|
110 |
@(echo $(DUMMYPKG) | $(PKGLINT) \ |
d08673
|
111 |
-c $(WS_LINT_CACHE) -r $(CANONICAL_REPO) /dev/fd/0 \ |
NJ |
112 |
>$(WS_LOGS)/naughty-canonical-repo-actions 2>&1 ; exit 0) |
|
113 |
else |
|
114 |
$(MKDIR) $(WS_LINT_CACHE) |
|
115 |
endif |
|
116 |
|
80b1b4
|
117 |
tools: |
6185b3
|
118 |
@cd $(WS_TOP)/tools ; echo "building tools..." ; $(GMAKE) clean setup |
80b1b4
|
119 |
|
79b849
|
120 |
# $(WS_COMPONENTS) is the home directory for the zone user, so create a profile |
NJ |
121 |
# to pass a few things on to zone based builds |
|
122 |
.profile: |
|
123 |
echo "PATH=$(PATH)" >>$@ |
|
124 |
echo "WS_TOP=$(WS_TOP)" >>$@ |
|
125 |
echo "export PATH WS_TOP" >>$@ |
|
126 |
|
b643a2
|
127 |
$(COMPONENT_DIRS): $(WS_LOGS) setup FORCE |
3dc823
|
128 |
@cd $@ && echo "$(TARGET) $@" && \ |
79b849
|
129 |
$(BASS_O_MATIC) $(TEMPLATE_ZONE:%=--template-zone %) \ |
3dc823
|
130 |
$(@:%=--component %) --make $(TARGET) $(LOG) |
79b849
|
131 |
|
10a7de
|
132 |
incorporation: |
0838fd
|
133 |
$(eval COMPONENT_REVISION := $(shell git rev-list HEAD --count)) |
10a7de
|
134 |
$(WS_TOOLS)/userland-incorporator --repository $(PKG_REPO) \ |
AP |
135 |
--version=0.$(OS_VERSION),$(BUILD_VERSION) -p $(PUBLISHER) \ |
|
136 |
-c $(CONSOLIDATION) --destdir=$(WS_MACH) $(INCORPORATE_WERROR) |
|
137 |
for incorporation in $(WS_MACH)/*.p5m ; do \ |
|
138 |
$(PKGSEND) -s $(PKG_REPO) publish --fmri-in-manifest \ |
|
139 |
$${incorporation} ; \ |
|
140 |
done |
|
141 |
|
|
142 |
|
a81d46
|
143 |
publish: |
10a7de
|
144 |
$(PKGREPO) refresh -s $(PKG_REPO) |
a81d46
|
145 |
ifdef CANONICAL_REPO |
NJ |
146 |
@echo 'pkglinting all package manifests...' |
|
147 |
@$(ENV) PYTHONPATH=$(WS_TOOLS)/python $(PKGLINT) \ |
|
148 |
-c $(WS_LINT_CACHE) -f $(WS_TOOLS)/pkglintrc \ |
|
149 |
$(shell find . -name 'manifest-*.published') |
|
150 |
endif |
|
151 |
|
b643a2
|
152 |
$(COMPONENT_DIRS.nosetup): $(WS_LOGS) FORCE |
3dc823
|
153 |
@cd $(@:%.nosetup=%) && echo "$(TARGET) $(@:%.nosetup=%)" && \ |
79b849
|
154 |
$(BASS_O_MATIC) $(TEMPLATE_ZONE:%=--template-zone %) \ |
3dc823
|
155 |
$(@:%.nosetup=--component %) --make $(TARGET) $(LOG) |
9c75c0
|
156 |
|
NJ |
157 |
FORCE: |