fritzkink
2023-12-25 851cd5721904afd5369055381778e81a271b5bde
make-rules/ips.mk
@@ -96,16 +96,10 @@
$(foreach var, $(filter PY3_%_NAMING,$(.VARIABLES)), \
    $(eval $(call add-limiting-variable,$(var))))
ifeq   ($(strip $(COMPONENT_AUTOGEN_MANIFEST)),yes)
AUTOGEN_MANIFEST_TRANSFORMS +=      $(WS_TOP)/transforms/generate-cleanup
else
AUTOGEN_MANIFEST_TRANSFORMS +=      $(WS_TOP)/transforms/drop-all
endif
# For items defined as variables or that may contain whitespace, add
# them to a list to be expanded into PKG_OPTIONS later.
PKG_VARS += ARC_CASE TPNO
PKG_VARS += MACH MACH32 MACH64
PKG_VARS += BUILD_VERSION OS_VERSION PKG_SOLARIS_VERSION
PKG_VARS += GNU_TRIPLET
@@ -159,7 +153,6 @@
SAMPLE_MANIFEST_DIR =    $(COMPONENT_DIR)/manifests
SAMPLE_MANIFEST_FILE =   $(SAMPLE_MANIFEST_DIR)/sample-manifest.p5m
GENERIC_MANIFEST_FILE =   $(SAMPLE_MANIFEST_DIR)/generic-manifest.p5m
CANONICAL_MANIFESTS =   $(filter-out dummy.p5m,$(wildcard *.p5m))
ifneq ($(wildcard $(HISTORY)),)
@@ -193,7 +186,7 @@
define ips-print-names-rule
$(shell cat $(1) $(WS_TOP)/transforms/print-pkgs |\
   $(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 |\
   $(PKGMOGRIFY) $(PKG_OPTIONS) $(call per-manifest-options,$(1:.p5m=)) /dev/fd/0 |\
   sed -e '/^$$/d' -e '/^#.*$$/d' | $(SORT) -u)
endef
@@ -224,7 +217,6 @@
VERSIONED_MANIFEST_TYPES =
UNVERSIONED_MANIFESTS = $(filter-out %-GENFRAG.p5m, $(CANONICAL_MANIFESTS))
GENERATE_GENERIC_TRANSFORMS=
# Look for manifests which need to be duplicated for each version of python.
ifeq ($(findstring -PYVER,$(CANONICAL_MANIFESTS)),-PYVER)
@@ -246,9 +238,9 @@
# - the $(PYV) string itself
PYTHON_PYV_VALUES = $(subst .,,$(PYTHON_VERSIONS) $(PYTHON_VERSIONS_OBSOLETING)) $$(PYV)
# Convert REQUIRED_PACKAGES to PYTHON_REQUIRED_PACKAGES for runtime/python
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(PYTHON_PYV_VALUES), -e 's|^\(.*runtime/python\)-$(v)$$|PYTHON_\1|g')
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(subst $,\$,$(PYTHON_PYV_VALUES)),-e 's|^\(.*runtime/python\)-$(v)$$|PYTHON_\1|g')
# Convert REQUIRED_PACKAGES to PYTHON_REQUIRED_PACKAGES for library/python/*
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(PYTHON_PYV_VALUES), -e 's|^\(.*library/python/.*\)-$(v)$$|PYTHON_\1|g')
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(subst $,\$,$(PYTHON_PYV_VALUES)),-e 's|^\(.*library/python/.*\)-$(v)$$|PYTHON_\1|g')
# Look for manifests which need to be duplicated for each version of perl.
ifeq ($(findstring -PERLVER,$(UNVERSIONED_MANIFESTS)),-PERLVER)
@@ -269,9 +261,9 @@
# - the $(PLV) string itself
PERL_PLV_VALUES = $(subst .,,$(PERL_VERSIONS) $(PERL_VERSIONS_OBSOLETING)) $$(PLV)
# Convert REQUIRED_PACKAGES to PERL_REQUIRED_PACKAGES for runtime/perl
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(PERL_PLV_VALUES), -e 's|^\(.*runtime/perl\)-$(v)$$|PERL_\1|g')
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(subst $,\$,$(PERL_PLV_VALUES)),-e 's|^\(.*runtime/perl\)-$(v)$$|PERL_\1|g')
# Convert REQUIRED_PACKAGES to PERL_REQUIRED_PACKAGES for library/perl-5/*
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(PERL_PLV_VALUES), -e 's|^\(.*library/perl-5/.*\)-$(v)$$|PERL_\1|g')
REQUIRED_PACKAGES_TRANSFORM += $(foreach v,$(subst $,\$,$(PERL_PLV_VALUES)),-e 's|^\(.*library/perl-5/.*\)-$(v)$$|PERL_\1|g')
# Look for manifests which need to be duplicated for each version of ruby.
# NOPERL_MANIFESTS represents the manifests that are not Python or
@@ -307,7 +299,6 @@
PRE_PUBLISHED=$(RESOLVED:%.depend.res=%.pre-published)
PUBLISHED=$(RESOLVED:%.depend.res=%.published)
HISTOGRIFIED =      $(HISTORICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.histogrified)
PUBLISHED +=      $(HISTORICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.published)
COPYRIGHT_FILE ?=   $(COMPONENT_NAME)-$(COMPONENT_VERSION).copyright
@@ -330,7 +321,7 @@
sample-manifest:   $(GENERATED).p5m
$(GENERATED).p5m:   install $(GENERATE_EXTRA_DEPS)
   [ ! -d $(SAMPLE_MANIFEST_DIR) ] && $(MKDIR) $(SAMPLE_MANIFEST_DIR) || true
   $(MKDIR) $(SAMPLE_MANIFEST_DIR)
   $(PKGSEND) generate $(PKG_HARDLINKS:%=--target %) $(PROTO_DIR) | \
   $(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 $(GENERATE_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' \
@@ -340,9 +331,6 @@
      $(PKGFMT) | \
      cat $(METADATA_TEMPLATE) - $(GENERATE_EXTRA_CMD) | \
      $(TEE) $@ $(SAMPLE_MANIFEST_FILE) >/dev/null
   if [ "$(GENERATE_GENERIC_TRANSFORMS)X" != "X" ]; \
   then sed $(GENERATE_GENERIC_TRANSFORMS) $(SAMPLE_MANIFEST_FILE) \
      | gawk '!seen[$$0]++' > $(GENERIC_MANIFEST_FILE); fi;
# copy the canonical manifest(s) to the build tree
$(MANIFEST_BASE)-%.generate:   %.p5m canonical-manifests
@@ -475,30 +463,12 @@
           $(WS_TOP)/transforms/mkgeneric $< > $@
   if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
ifeq   ($(strip $(COMPONENT_AUTOGEN_MANIFEST)),yes)
# auto-generate file/directory list
$(MANIFEST_BASE)-%.generated:   %.p5m $(BUILD_DIR)
   (cat $(METADATA_TEMPLATE); \
   $(PKGSEND) generate $(PKG_HARDLINKS:%=--target %) $(PROTO_DIR)) | \
   $(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 $(AUTOGEN_MANIFEST_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' | $(PKGFMT) | \
      cat $< - >$@
per-manifest-options = $(foreach var,$(PKG_VARS),$(if $($(var).$(1)),-D $(var)="$(strip $($(var).$(1)))")) \
   $(if $(COMPONENT_CLASSIFICATION.$(1)),-D COMPONENT_CLASSIFICATION="org.opensolaris.category.2008:$(strip $(COMPONENT_CLASSIFICATION.$(1)))")
# mogrify non-parameterized manifests
$(MANIFEST_BASE)-%.mogrified:   %.generated $(MAKEFILE_PREREQ)
   $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
      $(PUBLISH_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
# mogrify parameterized manifests
$(MANIFEST_BASE)-%.mogrified:   $(MANIFEST_BASE)-%.generated $(MAKEFILE_PREREQ)
   $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
      $(PUBLISH_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
else
# mogrify non-parameterized manifests
$(MANIFEST_BASE)-%.mogrified:   %.p5m $(BUILD_DIR) $(MAKEFILE_PREREQ)
   $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
   $(PKGMOGRIFY) $(PKG_OPTIONS) $(call per-manifest-options,$*) $< \
      $(PUBLISH_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
@@ -507,7 +477,6 @@
   $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
      $(PUBLISH_TRANSFORMS) | \
      sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
endif
# mangle the file contents
$(BUILD_DIR) $(MANGLED_DIR):
@@ -609,7 +578,7 @@
   @echo "NEW PACKAGE CONTENTS ARE LOCALLY VALIDATED AND READY TO GO"
$(MANIFEST_BASE)-%.histogrified: $(MANIFEST_BASE)-%.p5m
   $(PKGMOGRIFY) $(PKG_OPTIONS) $< > $@
   $(PKGMOGRIFY) -D CONSOLIDATION="$(CONSOLIDATION)" $< > $@
# Push to the repo
$(MANIFEST_BASE)-%.published:   $(MANIFEST_BASE)-%.pre-published
@@ -631,7 +600,8 @@
      $(foreach t,$(VERSIONED_MANIFEST_TYPES),$(call ips-print-depend-require-type-rule,$(t))) | tr ' ' '\n'
print-package-names:   canonical-manifests $(MKGENERIC_SCRIPTS)
   @echo $(call ips-print-names-rule,$(NONVER_MANIFESTS)) \
   @echo $(foreach m,$(NONVER_MANIFESTS),\
      $(call ips-print-names-rule,$(m))) \
       $(foreach t,$(VERSIONED_MANIFEST_TYPES),\
           $(call ips-print-names-type-rule,$(t))) \
       | tr ' ' '\n'