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# 21 22# 23# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# Copyright 2016 Nexenta Systems, Inc. 26# Copyright 2021 OmniOS Community Edition (OmniOSce) Association. 27# 28 29include ../../Makefile.cmd 30 31ETCSVC = $(ROOTETC)/svc 32LIBSVCSEED = $(ROOT)/lib/svc/seed 33INSTALLSEED = $(ROOT)/usr/sadm/install 34 35# 36# Because seed repository construction requires a functioning repository, a 37# working svccfg(1) binary, and XML support, the following libraries must exist 38# on the build system or in the proto area: libscf, libuutil, and libxml2. 39# 40 41MFST_ROOT=lib/svc/manifest 42MFST_TYPE= \ 43 system \ 44 system/device \ 45 system/filesystem \ 46 system/svc \ 47 milestone \ 48 network \ 49 network/dns \ 50 network/ldap \ 51 network/nis \ 52 network/rpc 53 54MFST_DIRS = $(MFST_TYPE:%=$(MFST_ROOT)/%) 55 56# 57# We build and deliver 3 seed repositories: 58# global.db -- for a standalone system (global zone) 59# nonglobal.db -- for a non-global zone 60# miniroot.db -- for the install miniroot 61# 62# COMMON_MANIFESTS contains manifests needed by all 3 repositories. 63# {GLOBAL_ZONE,NONGLOBAL_ZONE,MINIROOT}_MANIFESTS 64# contain additional manifests needed. 65# 66 67# 68# Manifests needed by all seed repositories. 69# 70COMMON_MANIFESTS = \ 71 milestone/multi-user.xml \ 72 milestone/name-services.xml \ 73 milestone/single-user.xml \ 74 network/dlmgmt.xml \ 75 network/network-initial.xml \ 76 network/network-ipmgmt.xml \ 77 network/network-loopback.xml \ 78 network/network-netcfg.xml \ 79 network/network-physical.xml \ 80 network/rpc/bind.xml \ 81 system/boot-archive.xml \ 82 system/device/devices-local.xml \ 83 system/filesystem/local-fs.xml \ 84 system/filesystem/minimal-fs.xml \ 85 system/filesystem/root-fs.xml \ 86 system/filesystem/usr-fs.xml \ 87 system/identity.xml \ 88 system/manifest-import.xml \ 89 system/svc/global.xml \ 90 system/svc/restarter.xml 91 92# 93# Additional manifests for a standalone system (global zone) 94# 95GLOBAL_ZONE_MANIFESTS = \ 96 milestone/multi-user-server.xml \ 97 network/inetd-upgrade.xml \ 98 system/console-login.xml \ 99 system/utmp.xml 100 101# 102# Additional manifests for a non-global zone 103# 104NONGLOBAL_ZONE_MANIFESTS = \ 105 milestone/multi-user-server.xml \ 106 system/console-login.xml \ 107 system/utmp.xml 108 109# 110# Additional manifests for the install miniroot. 111# 112MINIROOT_MANIFESTS= \ 113 milestone/sysconfig.xml \ 114 network/dns/client.xml \ 115 network/inetd.xml \ 116 network/ldap/client.xml \ 117 network/login.xml \ 118 network/network-service.xml \ 119 network/nis/client.xml \ 120 network/nis/server.xml \ 121 network/rpc/keyserv.xml \ 122 network/telnet.xml \ 123 system/cryptosvc.xml \ 124 system/name-service-cache.xml \ 125 system/system-log.xml 126 127 128COMMON_DESCRIPTIONS=$(COMMON_MANIFESTS:%=$(MFST_ROOT)/%) 129GLOBAL_ZONE_DESCRIPTIONS=$(GLOBAL_ZONE_MANIFESTS:%=$(MFST_ROOT)/%) 130NONGLOBAL_ZONE_DESCRIPTIONS=$(NONGLOBAL_ZONE_MANIFESTS:%=$(MFST_ROOT)/%) 131MINIROOT_DESCRIPTIONS=$(MINIROOT_MANIFESTS:%=$(MFST_ROOT)/%) 132 133FILEMODE = 0600 134# seeds are not intended for editing, but may be copied 135SEEDFILEMODE = 0444 136 137CONFIGD = ../configd/svc.configd-native 138SVCCFG = ../svccfg/svccfg-native 139 140.KEEP_STATE: 141 142all: global.db nonglobal.db miniroot.db 143 144$(CONFIGD): FRC 145 @cd ../configd; pwd; $(MAKE) native 146 147$(SVCCFG): FRC 148 @cd ../svccfg; pwd; $(MAKE) native 149 150../milestone/console-login.xml: 151 @cd ../milestone; pwd; $(MAKE) console-login.xml 152 153CONFIGD_ENV = \ 154 SVCCFG_DTD=../dtd/service_bundle.dtd.1 \ 155 PKG_INSTALL_ROOT=$(SRC)/cmd/svc/seed \ 156 SVCCFG_REPOSITORY=$(SRC)/cmd/svc/seed/$@ \ 157 SVCCFG_CONFIGD_PATH=$(CONFIGD) 158 159IMPORT.mfst = $(CONFIGD_ENV) $(SVCCFG) import 160 161common.db: $(MFST_DIRS) $(COMMON_DESCRIPTIONS) $(CONFIGD) $(SVCCFG) 162 $(RM) -f $@ $@-journal 163 $(IMPORT.mfst) $(COMMON_DESCRIPTIONS) 164 165global.db: common.db $(GLOBAL_ZONE_DESCRIPTIONS) 166 $(RM) -f $@ $@-journal 167 $(CP) common.db $@ 168 $(IMPORT.mfst) $(GLOBAL_ZONE_DESCRIPTIONS) 169 170nonglobal.db: common.db $(NONGLOBAL_ZONE_DESCRIPTIONS) 171 $(RM) -f $@ $@-journal 172 $(CP) common.db $@ 173 $(IMPORT.mfst) $(NONGLOBAL_ZONE_DESCRIPTIONS) 174 175miniroot.db: common.db $(MINIROOT_DESCRIPTIONS) 176 $(RM) -f $@ $@-journal 177 $(CP) common.db $@ 178 $(IMPORT.mfst) $(MINIROOT_DESCRIPTIONS) 179 # 180 # Make sure the miniroot's syslogd and rpcbind do not respond 181 # to packets from outside the machine. Since we cannot set property 182 # values by applying a profile yet, we need to set them explicitly 183 # with svccfg commands. 184 # 185 $(CONFIGD_ENV) $(SVCCFG) -s svc:/system/system-log \ 186 setprop config/log_from_remote = false 187 $(CONFIGD_ENV) $(SVCCFG) -s svc:/network/rpc/bind \ 188 setprop config/local_only = true 189 190.PARALLEL: global.db nonglobal.db miniroot.db 191 192install: install_global install_nonglobal install_miniroot 193 194install_global: global.db 195 $(RM) $(LIBSVCSEED)/global.db 196 $(INS) -f $(LIBSVCSEED) -m $(SEEDFILEMODE) -s global.db 197 198install_nonglobal: nonglobal.db 199 $(RM) $(LIBSVCSEED)/nonglobal.db 200 $(INS) -f $(LIBSVCSEED) -m $(SEEDFILEMODE) -s nonglobal.db 201 202install_miniroot: $(INSTALLSEED) miniroot.db 203 $(RM) $(INSTALLSEED)/miniroot.db 204 $(INS) -f $(INSTALLSEED) -m $(SEEDFILEMODE) -s miniroot.db 205 206$(INSTALLSEED): 207 $(INS.dir) 208 209clean: 210 $(RM) common.db 211 $(RM) $(COMMON_DESCRIPTIONS) $(GLOBAL_ZONE_DESCRIPTIONS) 212 $(RM) $(NON_GLOBAL_ZONE_DESCRIPTIONS) $(MINIROOT_DESCRIPTIONS) 213 214clobber: 215 $(RM) common.db global.db nonglobal.db miniroot.db 216 $(RM) -r lib/ 217 218$(MFST_DIRS): FRC 219 $(INS.dir) 220 221$(MFST_ROOT)/milestone/%: ../milestone/% 222 $(INS.file) 223 224$(MFST_ROOT)/network/%: ../../cmd-inet/lib/ipmgmtd/% 225 $(INS.file) 226 227$(MFST_ROOT)/network/%: ../../cmd-inet/usr.lib/inetd/% 228 $(INS.file) 229 230$(MFST_ROOT)/network/%: ../../cmd-inet/usr.sbin/% 231 $(INS.file) 232 233$(MFST_ROOT)/network/%: ../../dlmgmtd/% 234 $(INS.file) 235 236$(MFST_ROOT)/network/%: ../milestone/% 237 $(INS.file) 238 239$(MFST_ROOT)/network/dns/%: ../../../lib/libresolv2/% 240 $(INS.file) 241 242$(MFST_ROOT)/network/ldap/%: ../../ldapcachemgr/% 243 $(INS.file) 244 245$(MFST_ROOT)/network/nis/%: ../../ypcmd/% 246 $(INS.file) 247 248$(MFST_ROOT)/network/rpc/%: ../../keyserv/% 249 $(INS.file) 250 251$(MFST_ROOT)/network/rpc/%: ../../rpcbind/% 252 $(INS.file) 253 254$(MFST_ROOT)/system/%: ../../cmd-crypto/scripts/% 255 $(INS.file) 256 257$(MFST_ROOT)/system/%: ../../nscd/% 258 $(INS.file) 259 260$(MFST_ROOT)/system/%: ../../syslogd/% 261 $(INS.file) 262 263$(MFST_ROOT)/system/%: ../../utmpd/% 264 $(INS.file) 265 266$(MFST_ROOT)/system/%: ../milestone/% 267 $(INS.file) 268 269$(MFST_ROOT)/system/device/%: ../milestone/% 270 $(INS.file) 271 272$(MFST_ROOT)/system/filesystem/%: ../milestone/% 273 $(INS.file) 274 275$(MFST_ROOT)/system/svc/%: ../milestone/% 276 $(INS.file) 277 278FRC: 279