author  Mike Sullivan <Mike.Sullivan@Oracle.COM> 
Thu, 29 Sep 2011 10:58:58 0700  
changeset 528  db21abcd4c91 
parent 500  3d451539794b 
child 623  15f87c23a86e 
permissions  rwrr 
2  1 
# 
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 
# 

58
d8024c042a00
7011369 gmake complains about fresh userland bits
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
53
diff
changeset

21 
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. 
2  22 
# 
23 

24 
include ../makerules/sharedmacros.mk 

25 

23
e7ed56b7c498
autogenerate components to build
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
21
diff
changeset

26 
# for now, the assumption is we build any directory with a Makefile. This may 
e7ed56b7c498
autogenerate components to build
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
21
diff
changeset

27 
# not always be the case. If we build a new makelike tool to drive the upper 
e7ed56b7c498
autogenerate components to build
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
21
diff
changeset

28 
# level build, it may make different decisions and will need to include 
e7ed56b7c498
autogenerate components to build
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
21
diff
changeset

29 
# appropriate dependency information. 
e7ed56b7c498
autogenerate components to build
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
21
diff
changeset

30 

32
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

31 
# components.mk is autogenerated by the build tools. It populates the 
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

32 
# COMPONENT_DIRS macro with a list of all directories in the workspace that 
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

33 
# contain a component. 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

34 
components.mk: # Makefile # $(WS_TOP)/components 
32
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

35 
@echo "Generating component list..." 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

36 
@$(BASS_O_MATIC) workspace=$(WS_TOP) components=paths \ 
32
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

37 
 sed e 's;^$(shell pwd)/;COMPONENT_DIRS += ;g' >[email protected] 
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

38 

58
d8024c042a00
7011369 gmake complains about fresh userland bits
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
53
diff
changeset

39 
include components.mk 
32
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

40 

225
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

41 
# depends.mk is autogenerated by concatenating 'depend.mk' files in each 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

42 
# component directory. 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

43 
depends.mk: components.mk 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

44 
@echo "Generating component dependencies..." 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

45 
@cat $(shell $(BASS_O_MATIC) workspace=$(WS_TOP) components=paths \ 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

46 
 sed e 's;^$(shell pwd)/;;g' e 's;$$;/depend.mk;g') >[email protected] \ 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

47 
2>/dev/null 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

48 

2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

49 
include depends.mk 
2f3e03a69313
7040199 Update tcl to 8.5.9
Srinivasa Sarva <srinivasa.sarva@oracle.com>
parents:
145
diff
changeset

50 

2  51 

38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

52 
download: TARGET = download 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

53 
prep: TARGET = prep 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

54 
build: TARGET = build 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

55 
install: TARGET = install 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

56 
publish: TARGET = publish 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

57 
clean: TARGET = clean 
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

58 
clobber: TARGET = clobber 
83
9ab0deb97868
7017671 move patch to userland
Mike Sullivan <Mike.Sullivan@Oracle.COM>
parents:
70
diff
changeset

59 
test: TARGET = test 
9ab0deb97868
7017671 move patch to userland
Mike Sullivan <Mike.Sullivan@Oracle.COM>
parents:
70
diff
changeset

60 
prep build install publish test: TEMPLATE_ZONE=$(ZONE) 
99
c15c9099bb44
6841644 OpenSolaris Python should support gdbm
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
92
diff
changeset

61 
prep build install publish test: LOG = >$(WS_LOGS)/$(@F).$(TARGET).log 2>&1 
2  62 

92
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

63 
# turn off pkglint for the individual component builds. 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

64 
publish: MAKEFLAGS += PKGLINT=/bin/true 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

65 

2  66 
.DEFAULT: publish 
67 

313
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

68 
build install publish test: $(COMPONENT_DIRS) 
2  69 

34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

70 
COMPONENT_DIRS.nosetup = $(COMPONENT_DIRS:%=%.nosetup) 
2  71 

313
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

72 
download prep: $(COMPONENT_DIRS.nosetup) 
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

73 

e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

74 
clean: $(COMPONENT_DIRS.nosetup) 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

75 
$(RM) components.mk depends.mk .profile 
2  76 

313
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

77 
clobber: $(COMPONENT_DIRS.nosetup) clean 
53
e398cb2c4b45
7004049 SUNWa2ps should move to userland with a2ps
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
38
diff
changeset

78 
$(RM) r $(WS_REPO) $(WS_LOGS) $(WS_LINT_CACHE) 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

79 

70
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

80 
setup: $(WS_LOGS) $(WS_REPO) tools $(WS_LINT_CACHE) 
2  81 

82 
$(WS_LOGS): 

83 
$(MKDIR) [email protected] 

84 

70
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

85 
$(WS_REPO): 
105
da9e87a40aec
7021891 repo created by build should be v4, not v3
Danek Duvall <danek.duvall@oracle.com>
parents:
99
diff
changeset

86 
$(PKGREPO) create $(PKG_REPO) 
da9e87a40aec
7021891 repo created by build should be v4, not v3
Danek Duvall <danek.duvall@oracle.com>
parents:
99
diff
changeset

87 
$(PKGREPO) addpublisher s $(PKG_REPO) $(PUBLISHER) 
2  88 

70
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

89 
$(WS_LINT_CACHE): $(WS_LOGS) 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

90 
ifdef CANONICAL_REPO 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

91 
@echo "Generating pkglint(1) cache from $(CANONICAL_REPO)..." 
528
db21abcd4c91
7095147 userland fails to pkglint on 174
Mike Sullivan <Mike.Sullivan@Oracle.COM>
parents:
500
diff
changeset

92 
@(echo "set name=fmri value=pkg:/[email protected],$(BUILD_VERSION)"  $(PKGLINT) \ 
70
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

93 
c $(WS_LINT_CACHE) r $(CANONICAL_REPO) /dev/fd/0 \ 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

94 
>$(WS_LOGS)/naughtycanonicalrepoactions 2>&1 ; exit 0) 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

95 
else 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

96 
$(MKDIR) $(WS_LINT_CACHE) 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

97 
endif 
c610cf9d3d5d
7016863 userland build fails in parallel
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
58
diff
changeset

98 

6
20f80c019d73
add compiler date/time chatter reduction tools
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset

99 
tools: 
20f80c019d73
add compiler date/time chatter reduction tools
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset

100 
@cd ../tools ; echo "building tools..." ; $(GMAKE) setup 
20f80c019d73
add compiler date/time chatter reduction tools
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
2
diff
changeset

101 

34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

102 
# $(WS_COMPONENTS) is the home directory for the zone user, so create a profile 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

103 
# to pass a few things on to zone based builds 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

104 
.profile: 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

105 
echo "PATH=$(PATH)" >>[email protected] 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

106 
echo "WS_TOP=$(WS_TOP)" >>[email protected] 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

107 
echo "export PATH WS_TOP" >>[email protected] 
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

108 

313
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

109 
$(COMPONENT_DIRS): $(WS_LOGS) setup FORCE 
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

110 
@cd [email protected] && echo "$(TARGET) [email protected]" && \ 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

111 
$(BASS_O_MATIC) $(TEMPLATE_ZONE:%=templatezone %) \ 
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

112 
$(@:%=component %) make $(TARGET) $(LOG) 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

113 

92
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

114 
publish: 
145
1e2390f5555e
7020836 revert workaround in 7014413 now that pkglint doesn't complain
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
105
diff
changeset

115 
$(PKGREPO) rebuild s $(PKG_REPO) 
500
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

116 
$(WS_TOOLS)/userlandincorporator repository $(PKG_REPO) \ 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

117 
p pkg:/consolidation/$(CONSOLIDATION)/$(CONSOLIDATION)[email protected]$(OS_VERSION),$(BUILD_VERSION) \ 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

118 
s "$(CONSOLIDATION) consolidation incorporation" \ 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

119 
d "This incorporation constrains packages from the $(CONSOLIDATION) consolidation" \ 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

120 
c $(CONSOLIDATION) >$(WS_LOGS)/$(CONSOLIDATION)incorporation.p5m 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

121 
$(PKGSEND) s $(PKG_REPO) publish fmriinmanifest \ 
3d451539794b
7064724 userland should deliver a consolidation incorporation
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
313
diff
changeset

122 
$(WS_LOGS)/$(CONSOLIDATION)incorporation.p5m 
92
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

123 
# pkglint all of the published manifests in one batch. 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

124 
ifdef CANONICAL_REPO 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

125 
@echo 'pkglinting all package manifests...' 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

126 
@$(ENV) PYTHONPATH=$(WS_TOOLS)/python $(PKGLINT) \ 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

127 
c $(WS_LINT_CACHE) f $(WS_TOOLS)/pkglintrc \ 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

128 
$(shell find . name 'manifest*.published') 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

129 
endif 
b4be50cb7106
7020081 userland parallel builds break in pkglint
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
83
diff
changeset

130 

313
e30cc0dc4e8b
7053576 canonical source location for beanshell, gcc3, and tidy is changing
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
225
diff
changeset

131 
$(COMPONENT_DIRS.nosetup): $(WS_LOGS) FORCE 
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

132 
@cd $(@:%.nosetup=%) && echo "$(TARGET) $(@:%.nosetup=%)" && \ 
34
d20b10eba317
prepare for zone based component builds
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
32
diff
changeset

133 
$(BASS_O_MATIC) $(TEMPLATE_ZONE:%=templatezone %) \ 
38
cd00ea74156e
package audits should pass pkglint
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
34
diff
changeset

134 
$(@:%.nosetup=component %) make $(TARGET) $(LOG) 
32
280a7444e782
automatically generate intercomponent dependencies for build ordering
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
23
diff
changeset

135 

2  136 
FORCE: 