Marcel Telka
2023-10-31 c9dd74fd2bc7576d38fb8beee6631bde225f6188
make-rules: drop COMPONENT_AUTOGEN_MANIFEST support

2 files modified
36 ■■■■■ changed files
doc/building-and-packaging-faq.md 8 ●●●●● patch | view | raw | blame | history
make-rules/ips.mk 28 ●●●●● patch | view | raw | blame | history
doc/building-and-packaging-faq.md
@@ -6,7 +6,6 @@
* [Why compiled python files are no longer automatically added to manifests?](#why-compiled-python-files-are-no-longer-automatically-added-to-manifests)
* [How can I use COMPONENT_SUMMARY with PYVER components?](#how-can-i-use-component_summary-with-pyver-components)
* [Why do I receive "mv: cannot access .deps/libsomething.Tpo" error during component build?](#why-do-i-receive-mv-cannot-access-depslibsomethingtpo-error-during-component-build)
* [Why COMPONENT_AUTOGEN_MANIFEST is dangerous?](#why-component_autogen_manifest-is-dangerous)
## How to bypass checks for \*.pyc files in p5m manifest?
@@ -46,10 +45,3 @@
Generally, libtoolize, aclocal, automake and friends should be run as COMPONENT_PREP_ACTION  when $(@D) is $(SOURCE_DIR), before  changing $(@D) to $(BUILD_DIR_$(BITS)).
$(CLONEY) should be run in COMPONENT_PRE_CONFIGURE_ACTION.
Another possible reason is missing some step in configuration - e.g. libtoolize.
## Why COMPONENT_AUTOGEN_MANIFEST is dangerous?
Setting COMPONENT_AUTOGEN_MANIFEST=yes in your component's Makefile and adding empty *.p5m manifest you can make oi-userland build system to generate *.p5m manifest automatically.
But it's not a very good idea: it hides manifest from you and so manifest can contain garbage.
Even more, if you change component or its dependencies, the files can be missing from the package without any warning.
The better alternative is to use "gmake sample-manifest", copy generated manifest to component directory and modify it as needed.
make-rules/ips.mk
@@ -96,12 +96,7 @@
$(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.
@@ -474,28 +469,6 @@
            $(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 $< - >$@
# 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
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)))")
@@ -510,7 +483,6 @@
    $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
        $(PUBLISH_TRANSFORMS) | \
        sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
endif
# mangle the file contents
$(BUILD_DIR) $(MANGLED_DIR):