aboutsummaryrefslogtreecommitdiff
path: root/rules/ips.mk
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2012-09-13 23:53:04 +0400
committerIgor Pashev <pashev.igor@gmail.com>2012-09-13 23:53:04 +0400
commite45104d1c2e38e411a56a8083339eabc60bb3f44 (patch)
treebd7b9fed7bd4ef0b723f8bd5ef21f2e2778cd3d8 /rules/ips.mk
downloadcibs-e45104d1c2e38e411a56a8083339eabc60bb3f44.tar.gz
Initial commit: can build c-ares
Diffstat (limited to 'rules/ips.mk')
-rw-r--r--rules/ips.mk117
1 files changed, 117 insertions, 0 deletions
diff --git a/rules/ips.mk b/rules/ips.mk
new file mode 100644
index 0000000..14a4462
--- /dev/null
+++ b/rules/ips.mk
@@ -0,0 +1,117 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license
+# at http://www.opensource.org/licenses/CDDL-1.0
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each file.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# Copyright (C) 2012, Nexenta Systems, Inc. All rights reserved.
+#
+
+# include guard:
+ifeq (,$(__ips_mk))
+
+include /usr/share/cibs/rules/common.mk
+
+manifestdir := $(workdir)/manifest
+transdir := /usr/share/cibs/trans
+
+ifeq (,$(ips_version))
+ips_version = $(version)
+endif
+
+# Substitutions in IPS manifest:
+# XXX What about to grep all variables from component makefile?
+pkg-define = \
+-Dsummary="$(summary)" \
+-Dlicense="$(license)" \
+-Dhome="$(home)" \
+-Dname="$(name)" \
+-Dversion="$(version)" \
+-Dips_version="$(ips_version)" \
+-Darchive="$(archive)" \
+-Ddownload="$(download)" \
+-Dchecksum="$(checksum)" \
+
+pkg-define += \
+-DMACH="$(mach)" \
+-DMACH32="$(mach32)" \
+-DMACH64="$(mach64)" \
+
+
+# Where to find files:
+pkg-protos = \
+-d "$(destdir)" \
+-d "$(sourcedir)" \
+-d . \
+
+transformations := \
+$(transdir)/defaults \
+$(transdir)/actuators \
+$(transdir)/devel \
+$(transdir)/docs \
+$(transdir)/locale \
+
+
+
+# Supplied canonical manifests:
+manifests := $(wildcard *.p5m)
+
+#TODO: Expand "glob" action in manifests:
+globalizator := /usr/share/cibs/scripts/globalizator
+glob-manifests := $(manifests:%=$(manifestdir)/glob-%)
+$(glob-manifests): $(manifestdir)/glob-% : %
+ [ -d "$(manifestdir)" ] || mkdir -p "$(manifestdir)"
+ cp $< $@
+glob-stamp: $(glob-manifests)
+ touch $@
+
+
+mogrified-manifests := $(manifests:%=$(manifestdir)/mogrified-%)
+$(manifestdir)/mogrified-% : $(manifestdir)/glob-%
+ pkgmogrify $(pkg-define) \
+ $(transformations) \
+ $< | \
+ sed -e '/^$$/d' -e '/^#.*$$/d' | uniq > $@ || (rm -f $@; false)
+mogrify-stamp: $(mogrified-manifests)
+ touch $@
+
+
+depend-manifests := $(manifests:%=$(manifestdir)/depend-%)
+$(manifestdir)/depend-% : $(manifestdir)/mogrified-%
+ pkgdepend generate -m $(pkg-protos) $< > $@ || (rm -f $@; false)
+depend-stamp: $(depend-manifests)
+ touch $@
+$(depend-manifests): install-stamp
+
+res_suffix := resolved
+resolved-manifests := $(manifests:%=$(manifestdir)/depend-%.$(res_suffix))
+$(resolved-manifests): $(depend-manifests)
+ pkgdepend resolve -m -s $(res_suffix) $(depend-manifests)
+resolve-stamp: $(resolved-manifests)
+ touch $@
+
+publish-stamp: resolve-stamp
+ pkgsend -s $(ips-repo) publish --fmri-in-manifest \
+ $(pkg-protos) \
+ $(resolved-manifests)
+ touch $@
+
+publish: publish-stamp
+
+__ips_mk := included
+endif
+