Makefile revision 982
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################################################################
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User#
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews# Makefile for X Consolidation packages
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Permission is hereby granted, free of charge, to any person obtaining a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# copy of this software and associated documentation files (the "Software"),
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# to deal in the Software without restriction, including without limitation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the rights to use, copy, modify, merge, publish, distribute, sublicense,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# and/or sell copies of the Software, and to permit persons to whom the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Software is furnished to do so, subject to the following conditions:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The above copyright notice and this permission notice (including the next
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# paragraph) shall be included in all copies or substantial portions of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Software.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# DEALINGS IN THE SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein###############################################################################
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Heavily inspired by / borrowed from the ON usr/src/pkg/Makefile
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Please read the comments in it and the accompanying README in ON for many
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# details omitted here.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Major differences in the X implementation:
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# - X only supports building one repo, not redist + extra
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# - X only supports building packages on the same platform as the binaries,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# no cross-platform packaging
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# - X has no bfu legacy to deal with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# - ON has all manifests in one directory, X splits into current & legacy
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# - Integrates with X consolidation makefile/build system instead of ON's
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPWD:sh=pwd
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTOP=$(PWD)/..
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Include common definitions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude $(TOP)/open-src/common/Makefile.init
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews.SUFFIXES: .mf .mog .dep .res .pub
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# We don't yet support building packages cross-architecture, but would
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# need this if we ever did. (See "Cross platform packaging notes" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the ON usr/src/pkg/Makefile for what we'd have to do.)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGMACH = $(MACH)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User# Map X makefile names to the ones used in the rules copied from ON
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# More to be updated if we ever decide to support building cross-platform
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGROOT = $(PROTODIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEST = $(PROTOTOP)/pkg_$(PKGMACH)
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Map the V=1 style of enabling more verbose build messages used in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# X.Org/automake builds to the macro used in the rules copied from ON
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# You can enable verbose output with either V=1 or PKGDEBUG=""
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEBUG_V_0 = @
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserPKGDEBUG_V_1 =
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserPKGDEBUG_V_ = $(PKGDEBUG_V_0)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEBUG = $(PKGDEBUG_V_$(V))
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User# Commands used in rules copied from ON
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserCP= /usr/bin/cp -f
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserLN= /usr/bin/ln
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMV= /usr/bin/mv -f
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserRM= /usr/bin/rm -f
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox UserTOUCH= /usr/bin/touch
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# To suppress package dependency generation on any system, regardless
fc74b733bf679e1b3fb1599e32d445dffe325208Tinderbox User# of how it was installed, set SUPPRESSPKGDEP=true in the build
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# environment.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSUPPRESSPKGDEP= false
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updater#
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User# The packages directory will contain the processed manifests as
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updater# direct build targets and subdirectories for package metadata extracted
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater# incidentally during manifest processing.
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User#
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater# Nothing underneath $(PDIR) should ever be managed by SCM.
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User#
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic UpdaterPDIR= build-$(PKGMACH)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR):
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User mkdir -p $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User# By default, PKGS will list all manifests. To build and/or publish a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# subset of packages, override this on the command line or in the
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User# build environment and then reference (implicitly or explicitly) the all
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# or install targets.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox UserCURRENT_MANIFESTS :sh= (cd manifests; print *.mf)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinLEGACY_MANIFESTS :sh= (cd legacy; print *.mf)
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox UserMANIFESTS = $(CURRENT_MANIFESTS) $(LEGACY_MANIFESTS)
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox UserPKGS= $(MANIFESTS:%.mf=%)
3e80f25d33be14eaa4aca8b487d68808fa42a797Tinderbox User
7208386cd37a2092c70eddf80cf29519b16c4c80Mark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Track the synthetic manifests separately so we can properly express
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater# build rules and dependencies. The synthetic and real packages use
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater# different sets of transforms and macros for pkgmogrify.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSYNTH_PKGS= X-incorporation X-redistributable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# Any given package list may be empty, but we can only determine that
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# dynamically, so we always generate all lists.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# The meanings of each package status are as follows:
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# PKGSTAT meaning
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# ---------- ----------------------------------------------------
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# noincorp Do not include in incorporation or group package
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# grouponly Include in group package, but not incorporation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# obsolete Include in incorporation, but not group package
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# renamed Include in incorporation, but not group package
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# current Include in incorporation and group package
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Since the semantics of the "noincorp" package status dictate that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# such packages are not included in the incorporation or group packages,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# there is no need to build noincorp package lists.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Since packages depend on their incorporation, noincorp necessarily
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# implies nodepend, or it would inadvertently pull in other packages.
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGLISTS= \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PDIR)/packages.current \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PDIR)/packages.grouponly \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PDIR)/packages.renamed \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PDIR)/packages.obsolete
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Manifests are in either manifests or legacy directory - merge in $(PDIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.mf: manifests/%.mf
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(LN) -s ../$< $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.mf: legacy/%.mf
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(LN) -s ../$< $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPMANIFESTS = $(MANIFESTS:%=$(PDIR)/%)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmanifests: $(PMANIFESTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PMANIFESTS): $(PDIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Additional metadata generation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# This should eventually move into pkg publication
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFONT_MANIFESTS :sh= (cd manifests; print system-font-*.mf)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFONT_METADATA = $(FONT_MANIFESTS:%.mf=$(PDIR)/%.font)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFONT_ATTRS = $(FONT_MANIFESTS:%.mf=$(PDIR)/%.attr)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(FONT_ATTRS): $(FONT_METADATA)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.font: $(PDIR)/%.mf
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Generating font metadata in $(@F)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(RM) $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(PERL) generate_font_metadata.pl \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -p $(PROTODIR) -m $< > $@ || ( rm $@ ; exit 1 )
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Manifest mogrification
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGMOGRIFY = pkgmogrify
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# RELEASE = uname -r for the target release
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsRELEASE = 5.11
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Generate pkgmogrify transform file with correct build version info in
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Build number is derived from last nv_XXX tag in hg log
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews$(PDIR)/versions: transforms/versions.tmpl $(PDIR)
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews @print "## Substituting build info in versions transformation template"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(PKGDEBUG)XNV_BUILDNUM="$${XNV_BUILDNUM:-$$(hg log | \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(PERL) -l -n -e \
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews 'if ($$_ =~ m/^tag:\s+nv_(\d+)/) { print $$1 ; exit}')}" ; \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews PKGVERS_BUILTON="$(RELEASE)" ; \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews PKGVERS_BRANCH="0.$${XNV_BUILDNUM}" ; \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews PKGVERS_BUILD="$${PKGVERS_BUILTON}-$${PKGVERS_BRANCH}" ; \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews HG_ID="$$(hg id)" ; \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews $(PERL) -p -e "s{_PKGVERS_BUILD_}{$${PKGVERS_BUILD}};" \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews -e "s{_HG_ID_}{$${HG_ID}}" transforms/versions.tmpl > $@
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Set variables used by pkgmogrify
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Most upstream packages provide specific version numbers instead of using
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the default of $(OSPKGVERS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Some use $(X11PKGVERS) to refer to the X11 katamari version since they
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# bundle together components from multiple upstream packages with individual
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# version numbers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinX11PKGVERS = 7.5
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinOSPKGVERS = 0.$(RELEASE)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Base URL for ARC cases used in opensolaris.arc_url metadata
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinARC_URL=http://arc.opensolaris.org/caselog/
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# These are the macros that may be used in package manifests
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic UpdaterPKGMOG_DEFINES= \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater i386_ONLY=$(POUND_SIGN) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater sparc_ONLY=$(POUND_SIGN) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater $(PKGMACH)_ONLY= \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater ARCH=$(PKGMACH) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater ARCH32=$(SUBDIR32_$(PKGMACH)) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater ARCH64=$(SUBDIR64_$(PKGMACH)) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater OSPKGVERS=$(OSPKGVERS) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater X11PKGVERS=$(X11PKGVERS) \
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater ARC_URL='$(ARC_URL)'
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic Updater# Default transformations to apply
afb33f777af856f8c3382604a7a8ffdfe2b512c5Automatic UpdaterPM_TRANSFORMS = common_actions publish restart_fmri facets \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein licenses $(PDIR)/versions extract_metadata
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPM_INC = transforms
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEP_INCORP = depend fmri=pkg:/consolidation/X/X-incorporation type=require
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPROC_PKGS = $(PKGS:%=$(PDIR)/%.mog)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPROC_SYNTH_PKGS = $(SYNTH_PKGS:%=$(PDIR)/%.mog)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPROC_CURRENT_PKGS = $(CURRENT_MANIFESTS:%.mf=$(PDIR)/%.mog)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Extra transforms for non-legacy packages
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PROC_CURRENT_PKGS):= EXTRA_TRANSFORMS = defaults
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmogrify: $(PROC_PKGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PROC_PKGS): $(PDIR)/versions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Combine & uniq metadata & license attributes generated during build
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.attr:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Gathering metadata from build for $(@F)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)case '$(@F)' in \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein system-font-*) ADDITIONAL_ATTRS="$(@:%.attr=%.font)" ;; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein esac ; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PERL) merge-metadata.pl $${ADDITIONAL_ATTRS} \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ~(N)$(PROTOMETA)/$(@F:.attr=)/attributes_*.mf \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ~(N)$(PROTOMETA)/$(@F:.attr=)/license_*.mf /dev/null > $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.mog: $(PDIR)/%.mf $(PDIR)/%.attr
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Processing manifest $(@F:.mog=.mf)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(RM) $(@) $(@:%.mog=%) $(@:%.mog=%.nodepend) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(@:%.mog=%.metadata.*) $(@).vars
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(PKGMOGRIFY) $(PKGMOG_VERBOSE) $(PM_INC:%= -I %) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGMOG_DEFINES:%=-D %) -P $(@).vars -O $(@) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(@:.mog=.mf) $(@:.mog=.attr) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PM_TRANSFORMS) $(EXTRA_TRANSFORMS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)if [[ -f $(@) ]]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein eval PKGSTAT=current NODEPEND="$(SUPPRESSPKGDEP)" \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $$(cat -s $(@).vars) ; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews if [[ "$$NODEPEND" != "false" || "$$PKGSTAT" = "noincorp" ]]; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews then \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(TOUCH) $(@:%.mog=%.nodepend); \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews fi; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(LN) -s $(@F) \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(PDIR)/$(@F:%.mog=%).metadata.$$PKGSTAT ; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews if [[ "$$PKGSTAT" = "current" || "$$PKGSTAT" = "renamed" ]]; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print $(PKGDEP_INCORP) >> $(@); \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews fi; \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews else \
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(TOUCH) $(@); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews $(PKGDEBUG)$(RM) $(@).vars
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews# make the package lists from the real manifests for the synthetic manifests
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PKGLISTS): $(PROC_PKGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Generating $(@F:packages.%=%) package list"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(PERL) -nl -w -Mdiagnostics \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -e 'if ($$_ =~ m{name=pkg.fmri value=(\S+)}) {' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -e ' printf "depend fmri=$$1 type=\$$(PKGDEP_TYPE)\n";' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -e ' close ARGV; ' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -e '}' $(PDIR)/*.metadata.$(@F:packages.%=%) > $(@).new
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG) mv -f $(@).new $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinpkglists: $(PKGLISTS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The package lists are generated with $(PKGDEP_TYPE) as their
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# dependency types, so that they can be included by either an
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# incorporation or a group package.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/X-redistributable.mog:= PKGDEP_TYPE= require
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User$(PDIR)/X-incorporation.mog:= PKGDEP_TYPE= incorporate
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User# rule to build the synthetic manifests
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User$(PROC_SYNTH_PKGS): $(PKGLISTS) $$(@F:%.mog=%.mf)
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User @print "## Processing synthetic manifest $(@F:%.mog=%.mf)"
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User $(PKGDEBUG)$(RM) $(@) $(@:%.mog=%).metadata.*
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User $(PKGDEBUG)$(PKGMOGRIFY) $(PKGMOG_VERBOSE) -I transforms -I $(PDIR) \
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User $(PKGMOG_DEFINES:%=-D %) -D PKGDEP_TYPE=$(PKGDEP_TYPE) \
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User -O $(@) $(@F:%.mog=%.mf) \
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User $(PM_TRANSFORMS) defaults synthetic
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User### Dependency detection
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox UserDEP_PKGS= $(PKGS:%=$(PDIR)/%.dep)
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox UserDEP_SYNTH_PKGS= $(SYNTH_PKGS:%=$(PDIR)/%.dep)
3a32ac2a720653083c7a22cb654b86c398f6d4c8Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEP_TOKENS_i386= \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'PLATFORM=i86hvm' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'PLATFORM=i86pc' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'PLATFORM=i86xpv' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'ISALIST=amd64' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'ISALIST=i386'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEP_TOKENS_sparc= \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'PLATFORM=sun4u' \
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews 'PLATFORM=sun4v' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'ISALIST=sparcv9' \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'ISALIST=sparc'
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEP_TOKENS= $(PKGDEP_TOKENS_$(PKGMACH))
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.dep: $(PDIR)/%.mog
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Generating dependencies for $(<F)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(RM) $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)if [[ ! -f $(@:%.dep=%.nodepend) ]]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pkgdepend generate -m $(PKGDEP_TOKENS:%=-D %) $(<) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGROOT) > $(@); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein else \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(CP) $(<) $(@); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(DEP_SYNTH_PKGS): $$(@:%.dep=%.mog)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Skipping dependency generation for $(@F:%.dep=%)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(CP) $(@:%.dep=%.mog) $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Dependency resolution
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# This rule resolves dependencies across all published manifests.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# We should be able to do this with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# pkgdepend resolve -m $(PUB_PKGS:%.pub=%.dep)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# but until 14113 is fixed, the incorporations confuse pkgdepend, so we
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews# just create the .res file for DEP_SYNTH_PKGS directly.
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews#
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews
ceeb18e6907a10547859faa340ecad83bedae90cMark AndrewsPKGDEP_VERBOSE_FLAG_0 =
ceeb18e6907a10547859faa340ecad83bedae90cMark AndrewsPKGDEP_VERBOSE_FLAG_1 = -v
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGDEP_VERBOSE_FLAG = $(PKGDEP_VERBOSE_FLAG_$(V))
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/gendeps: $(DEP_SYNTH_PKGS) $(DEP_PKGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -$(PKGDEBUG)if [[ "$(SUPPRESSPKGDEP)" = "true" ]]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "## Suppressing dependency resolution"; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(DEP_PKGS:%.dep=%); do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(CP) $$p.dep $$p.res; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein done; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein else \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "## Resolving dependencies"; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pkgdepend resolve $(PKGDEP_VERBOSE_FLAG) -m $(DEP_PKGS); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for p in $(DEP_PKGS:%.dep=%); do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(MV) $$p.dep.res $$p.res; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein done; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)for p in $(DEP_SYNTH_PKGS:%.dep=%); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein do \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(CP) $$p.dep $$p.res; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein done
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)$(TOUCH) $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingendeps: $(PDIR)/gendeps
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Repo setup
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Default in developer builds is "xnv-devel"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# X RE cronjob build scripts override to "xnv-nightly" or "xnv-biweekly"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPKGPUBLISHER = xnv-devel
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Initialize the empty on-disk repositories
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PKGDEST):
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @print "## Initializing $(@F)"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)mkdir -p $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)pkgsend -s file://$(@) create-repository \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein --set-property publisher.prefix=$(PKGPUBLISHER)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclean-repo:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(RM) -r $(PKGDEST)
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Package publication to repo
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPUB_PKGS= $(SYNTH_PKGS:%=$(PDIR)/%.pub) $(PKGS:%=$(PDIR)/%.pub)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinpublish_pkgs: $(PKGDEST) $(PDIR)/gendeps $(PUB_PKGS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PUB_PKGS): $(PKGDEST) $(PDIR)/gendeps
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/%.pub: $(PKGDEST) $(PDIR)/gendeps $(PDIR)/%.res
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG) if [ -s $(@:%.pub=%.res) ]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein print "## Publishing $(@F:%.pub=%) to proto repository"; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pkgsend -s file://$(PKGDEST) publish -d $(PKGROOT) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -d license_files -d $(PROTOMETA)/$(@F:%.pub=%) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein --fmri-in-manifest --no-index --no-catalog \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(@:%.pub=%.res) > /dev/null; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(TOUCH) $(@)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein### Repo finalization
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininstall: repository-metadata
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindefault: install
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updaterrepository-metadata: $(PUB_PKGS)
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater @print "## Creating repository metadata"
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater $(PKGDEBUG)/usr/lib/pkg.depotd -d $(PKGDEST) \
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater --add-content --exit-ready
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater $(PKGDEBUG)chmod a+r $(PKGDEST)/cfg_cache
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater### Overall rules
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updaterall: $(PROC_PKGS) $(PROC_SYNTH_PKGS) $(DEP_PKGS) $(DEP_SYNTH_PKGS) \
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater $(PDIR)/gendeps
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updaterclean:
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater -$(RM) -r $(PDIR)
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater.PARALLEL: $(PKGS) $(PROC_PKGS) $(DEP_PKGS) \
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater $(PROC_SYNTH_PKGS) $(DEP_SYNTH_PKGS) $(PUB_PKGS)
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater#
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater# rules to validate proto area against manifests, and check for safe
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater# file permission modes
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater#
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic UpdaterEXCEPTIONS= $(PWD)/../exception_lists/packaging $(PDIR)/generated-exceptions
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater# Automatically exclude all pkg-config uninstalled.pc files, since those
984c2e9f76e66e86f7d9aca99a774836ddf196eaAutomatic Updater# should never be packaged
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(PDIR)/generated-exceptions:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)(cd $(PKGROOT) ; find . -name '*-uninstalled.pc') > $@
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinprotocmp: $(PROC_PKGS) $(EXCEPTIONS) fix_perms
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(PKGDEBUG)validate_pkg -a $(PKGMACH) -v $(EXCEPTIONS:%=-e %) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -m $(PDIR) -p $(PKGROOT)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
dad65f7c93330a10705384739dff3a6d4dfe1e70Tinderbox Userpmodes: $(PROC_PKGS) fix_perms
dad65f7c93330a10705384739dff3a6d4dfe1e70Tinderbox User $(PKGDEBUG)validate_pkg -a $(PKGMACH) -M -m $(PDIR)
dad65f7c93330a10705384739dff3a6d4dfe1e70Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincheck: protocmp pmodes
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
dad65f7c93330a10705384739dff3a6d4dfe1e70Tinderbox User# Instead of fixing all the upstream packages to follow our permission rules
dad65f7c93330a10705384739dff3a6d4dfe1e70Tinderbox User# just fix the proto area to match our rules
bae169ea64bf736d6ea6074c2af3d7c117079972Tinderbox User
bae169ea64bf736d6ea6074c2af3d7c117079972Tinderbox Userfix_perms:
bae169ea64bf736d6ea6074c2af3d7c117079972Tinderbox User @print "## Fixing proto area permissions"
bae169ea64bf736d6ea6074c2af3d7c117079972Tinderbox User $(PKGDEBUG)find $(PKGROOT) -type f -exec chmod a-w \{\} \+
bae169ea64bf736d6ea6074c2af3d7c117079972Tinderbox User