Marcel Telka
2022-07-16 f045de70eb41935e3f18da06893f41922c753be4
makemaker.mk: use META.yml if META.json is not available

3 files modified
25 ■■■■■ changed files
make-rules/ips.mk 2 ●●● patch | view | raw | blame | history
make-rules/makemaker.mk 21 ●●●● patch | view | raw | blame | history
tools/perl-meta-deps 2 ●●● patch | view | raw | blame | history
make-rules/ips.mk
@@ -312,7 +312,7 @@
# Since it is used in pipeline it needs to copy input to output.
GENERATE_EXTRA_CMD ?= $(CAT)
$(GENERATED).p5m:    install
$(GENERATED).p5m:    install $(GENERATE_EXTRA_DEPS)
    [ ! -d $(SAMPLE_MANIFEST_DIR) ] && $(MKDIR) $(SAMPLE_MANIFEST_DIR) || true
    $(PKGSEND) generate $(PKG_HARDLINKS:%=--target %) $(PROTO_DIR) | \
    $(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 $(GENERATE_TRANSFORMS) | \
make-rules/makemaker.mk
@@ -187,6 +187,7 @@
# We need to add -$(PLV) to package fmri and generate runtime dependencies based on META.json
GENERATE_EXTRA_DEPS += $(BUILD_DIR)/META.json
GENERATE_EXTRA_CMD ?= \
    $(GSED) -e 's/^\(set name=pkg.fmri [^@]*\)\(.*\)$$/\1-$$(PLV)\2/' | \
    $(CAT) - <( \
@@ -194,22 +195,30 @@
        echo "\# perl modules are unusable without perl runtime binary" ; \
        echo "depend type=require fmri=__TBD pkg.debug.depend.file=perl \\" ; \
        echo "    pkg.debug.depend.path=usr/perl5/\$$(PERLVER)/bin" ; \
        [ -f $(SOURCE_DIR)/META.json ] && $(CAT) $(SOURCE_DIR)/META.json \
        $(CAT) $(BUILD_DIR)/META.json \
            | $(WS_TOOLS)/perl-meta-deps $(WS_MACH) $(BUILD_DIR) runtime $(PERL_VERSION) \
            | $(GSED) -e 's|^\(depend.*pkg:/runtime/perl-\$$(PLV).*\)$$|\#\1|g' \
    )
# Support for adding dependencies from META.json to REQUIRED_PACKAGES
REQUIRED_PACKAGES_RESOLVED += $(BUILD_DIR)/META.depend.res
$(BUILD_DIR)/META.depend.res: $(SOURCE_DIR)/.prep
$(BUILD_DIR)/META.depend.res: $(BUILD_DIR)/META.json
    $(CAT) $(BUILD_DIR)/META.json | $(WS_TOOLS)/perl-meta-deps $(WS_MACH) $(BUILD_DIR) $(PERL_VERSION) > $@
$(BUILD_DIR)/META.json: $(SOURCE_DIR)/.prep
    $(MKDIR) $(BUILD_DIR)
    if [ -f $(SOURCE_DIR)/META.json ] ; then \
        $(MKDIR) $(BUILD_DIR) ; \
        $(CAT) $(SOURCE_DIR)/META.json | $(WS_TOOLS)/perl-meta-deps $(WS_MACH) $(BUILD_DIR) $(PERL_VERSION) > $@ ; \
    fi
    $(TOUCH) $@
        $(CAT) $(SOURCE_DIR)/META.json ; \
    elif [ -f $(SOURCE_DIR)/META.yml ] ; then \
        $(CAT) $(SOURCE_DIR)/META.yml \
            | python -c 'import sys, yaml, json; y=yaml.safe_load(sys.stdin.read()); print(json.dumps(y))' \
            | jq '{prereqs:{configure:{requires:.configure_requires},build:{requires:.build_requires},runtime:{requires}}}' ; \
    fi > $@
# perl-meta-deps requires jq
USERLAND_REQUIRED_PACKAGES += text/jq
# pyyaml is needed to convert META.yml to META.json
USERLAND_REQUIRED_PACKAGES += library/python/pyyaml
ifeq   ($(strip $(PARFAIT_BUILD)),yes)
tools/perl-meta-deps
@@ -55,7 +55,7 @@
printf "\n# Automatically generated dependencies based on distribution metadata\n"
/usr/bin/jq -r '.prereqs|'"$PHASES"'|.requires|to_entries?|.[]|.key+" "+.value' | while read PREREQ VERSION ; do
/usr/bin/jq -r '.prereqs|'"$PHASES"'|.requires|to_entries?|.[]|.key+" "+(.value|tostring)' | while read PREREQ VERSION ; do
    # Convert perl version number to pkg(5) compatible form
    VER=$("$PERL_VERSION_CONVERT" "$PREREQ" "$VERSION")
    [[ "$VER" != "0" ]] && VER="@$VER" || VER=