# $NetBSD: metadata.mk,v 1.36 2023/10/24 10:30:53 jperkin Exp $

######################################################################
### The targets below are all PRIVATE.
######################################################################

######################################################################
###
### Temporary package meta-data directory.  The contents of this directory
### are copied directly into the real package meta-data directory.
###
PKG_DB_TMPDIR=	${WRKDIR}/.pkgdb

unprivileged-install-hook: ${PKG_DB_TMPDIR}
${PKG_DB_TMPDIR}:
	@${MKDIR} ${.TARGET}

######################################################################
###
### +BUILD_INFO - Package build environment and settings information
###
_BUILD_INFO_FILE=	${PKG_DB_TMPDIR}/+BUILD_INFO
_BUILD_DATE_cmd=	${DATE} "+%Y-%m-%d %H:%M:%S %z"
_BUILD_HOST_cmd=	${UNAME} -a
_METADATA_TARGETS+=	${_BUILD_INFO_FILE}

#
# Skip system libraries on Darwin releases where they do not exist.
#
.if defined(DARWIN_NO_SYSTEM_LIBS)
DARWIN_REQUIRES_FILTER=	${EGREP} -v '\t(/System/Library|/usr/lib)'
.else
DARWIN_REQUIRES_FILTER=	${CAT}
.endif

${_BUILD_INFO_FILE}: ${_PLIST_NOKEYWORDS}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	{								\
		(${_BUILD_DEFS:NPATH:@v@				\
			${ECHO} ${v}=${_BUILD_DEFS.${v}:Q:U${${v}:Q}};	\
		@});							\
		if [ -n "${USE_LANGUAGES}" ]; then			\
			${ECHO} "CC_VERSION=${CC_VERSION}";		\
		fi;							\
		case "${USE_TOOLS}" in					\
		*perl:run*)						\
			${ECHO} "PERL=`${PERL5} --version 2>/dev/null |	\
				${GREP} 'This is perl'`" || ${TRUE};	\
		esac;							\
		case "${USE_TOOLS}" in					\
		*gmake*)						\
			${ECHO} "GMAKE=`${GMAKE} --version |		\
				${GREP} Make`" || ${TRUE};		\
		esac;							\
		${ECHO} "PKGTOOLS_VERSION=${PKGTOOLS_VERSION_REQD}";	\
		if [ -n "${HOMEPAGE}" ]; then				\
			${ECHO} "HOMEPAGE=${HOMEPAGE}";			\
		fi;							\
		${ECHO} "CATEGORIES=${CATEGORIES}";			\
		${ECHO} "MAINTAINER=${MAINTAINER}";			\
		if [ -n "${OWNER}" ]; then				\
			${ECHO} "OWNER=${OWNER}";			\
		fi;							\
		if [ -n "${PREV_PKGPATH}" ]; then			\
			${ECHO} "PREV_PKGPATH=${PREV_PKGPATH}";		\
		fi;							\
		${SUPERSEDES:@s@ ${ECHO} SUPERSEDES=${s:Q}; @}		\
		${ECHO} "BUILD_DATE=${_BUILD_DATE_cmd:sh}";		\
		${ECHO} "BUILD_HOST=${_BUILD_HOST_cmd:sh}";		\
	} > ${.TARGET}.tmp
.if !empty(CHECK_SHLIBS_SUPPORTED:M[yY][eE][sS])
	${RUN}								\
	case ${LDD:Q}"" in						\
	"")	ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'` ;; \
	*)	ldd=${LDD:Q} ;;						\
	esac;								\
	bins=`${AWK} '/(^|\/)(bin|sbin|libexec)\// { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
	requires="";							\
	case ${OBJECT_FMT:Q}"" in					\
	ELF)								\
		libs=`${AWK} '/\/lib.*\.so(\.[0-9]+)*$$/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
		if ${TEST} -n "$$bins" -o -n "$$libs"; then		\
			requires=`(${PKGSRC_SETENV} ${LDD_ENV:U} $$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '$$2 == "=>" && $$3 ~ "/" { print $$3 }' | ${SORT} -u`; \
		fi;							\
		linklibs=`${AWK} '/.*\.so(\.[0-9]+)*$$/ { print "${DESTDIR}${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}`; \
		for i in $$linklibs; do					\
			case "$$i" in					\
			${CHECK_SHLIBS_SKIP:U:@p@${DESTDIR}${PREFIX}/${p}) continue ;;@}	\
			*);;						\
			esac;						\
			if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then	\
				${TEST} ${PKG_DEVELOPER:Uno:Q}"" = "no" || \
					${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \
				${CHMOD} +x $$i;			\
			fi;						\
		done;							\
		;;							\
	Mach-O)								\
		libs=`${AWK} '/\/lib.*\.dylib/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
		if ${TEST} "$$bins" != "" -o "$$libs" != ""; then	\
			requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${DARWIN_REQUIRES_FILTER} | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \
		fi;							\
		;;							\
	PE)								\
		libs=`${AWK} '/\/.+\.dll$$/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
		if ${TEST} -n "$$bins" -o -n "$$libs"; then		\
			requires=`(${TRUE} || ${PKGSRC_SETENV} ${LDD_ENV:U} $$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '$$2 == "=>" && $$3 ~ "/" { print $$3 }' | ${SED} -e 's,^${DESTDIR},,' | ${SORT} -u`; \
		fi;							\
		linklibs=`${AWK} '/.+\.dll$$/ { print "${DESTDIR}${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}`; \
		for i in $$linklibs; do					\
			if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then	\
				${TEST} ${PKG_DEVELOPER:Uno:Q}"" = "no" || \
					${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \
				${CHMOD} +x $$i;			\
			fi;						\
		done;							\
		;;							\
	esac;								\
	requires=`{ for i in $$requires $$requires; do echo $$i; done; \
		${AWK} '{ print "${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}; } | \
		${SORT} | uniq -c | awk '$$1 == 2 {print $$2}'`; \
	for i in $$libs; do						\
		${ECHO} "PROVIDES=$$i";					\
	done | ${SED} -e 's,^PROVIDES=${DESTDIR},PROVIDES=,'		\
		>> ${.TARGET}.tmp;					\
	for req in $$requires; do					\
		${ECHO} "REQUIRES=$$req" >> ${.TARGET}.tmp;		\
	done
.endif
	${RUN}								\
	sort ${.TARGET}.tmp > ${.TARGET};				\
	rm -f ${.TARGET}.tmp

######################################################################
###
### +BUILD_VERSION - Package build files versioning information
###
### We extract the ident strings from all of the important pkgsrc files
### involved in building the package, i.e. Makefile and patches.
###
_BUILD_VERSION_FILE=	${PKG_DB_TMPDIR}/+BUILD_VERSION
_METADATA_TARGETS+=	${_BUILD_VERSION_FILE}
.if !empty(USE_PKG_ADMIN_DIGEST:M[Yy][Ee][Ss])
${_BUILD_VERSION_FILE}:
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	{								\
		${FIND} ${FILESDIR} -type f 2>/dev/null |		\
		while read f; do					\
			[ -f "$$f" ] && ${ECHO} "$$f";			\
		done;							\
		for f in ${.CURDIR}/Makefile ${PKGDIR}/*; do		\
			[ -f "$$f" ] && ${ECHO} "$$f";			\
		done;							\
		if [ -f ${DISTINFO_FILE:Q} ]; then			\
			${AWK} 'NF == 4 && $$3 == "=" {			\
				gsub("[()]", "", $$2); print $$2;	\
			}' ${DISTINFO_FILE} |				\
			while read file; do				\
				[ -f "${PATCHDIR}/$$file" ] &&		\
					${ECHO} "${PATCHDIR}/$$file";	\
			done;						\
		fi;							\
		if [ -d ${PATCHDIR} ]; then				\
			cd ${PATCHDIR}; for f in *; do			\
				case "$$f" in				\
				"*"|*.orig|*.rej|*~) ;;			\
				patch-*) ${ECHO} "${PATCHDIR}/$$f" ;;	\
				esac;					\
			done;						\
		fi;							\
	} | ${AWK} '{ t=$$0; sub("^${PKGSRCDIR}/", "");			\
			printf "%s %s\n", t, $$0 }' |			\
	while read file relfile; do					\
		printf "%s: " "$$relfile";				\
		${PKG_ADMIN} digest "$$file";				\
	done |								\
	${SORT} -u > ${.TARGET}
.else
${_BUILD_VERSION_FILE}:
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	{								\
		for f in ${.CURDIR}/Makefile ${FILESDIR:tA}/*		\
			${PKGDIR:tA}/*; do				\
			[ -f "$$f" ] && ${ECHO} "$$f";			\
		done;							\
		if [ -f ${DISTINFO_FILE:Q} ]; then			\
			${AWK} 'NF == 4 && $$3 == "=" {			\
				gsub("[()]", "", $$2); print $$2;	\
			}' ${DISTINFO_FILE} |				\
			while read file; do				\
				[ -f "${PATCHDIR}/$$file" ] &&		\
					${ECHO} "${PATCHDIR:tA}/$$file"; \
			done;						\
		fi;							\
		if [ -d ${PATCHDIR} ]; then				\
			cd ${PATCHDIR}; for f in *; do			\
				case "$$f" in				\
				"*"|*.orig|*.rej|*~) ;;			\
				patch-*) ${ECHO} "${PATCHDIR:tA}/$$f" ;; \
				esac;					\
			done;						\
		fi;							\
	} | ${AWK} '{ t=$$0; sub("^${PKGSRCDIR}/", "");			\
			printf "%s %s\n", t, $$0 }' |			\
	while read file relfile; do					\
		${GREP}							\
			-e '\$$NetBSD[:][^$$]*[$$]'			\
			-e '\$$NetBSD\$$'				\
			$$file 2>/dev/null |				\
		${SED} -e "s|^|$$file:|;q";				\
	done |								\
	${AWK} '{ sub("^${PKGSRCDIR}/", "");				\
		  sub(":.*[$$]NetBSD", ":	$$NetBSD");		\
		  sub("[$$][^$$]*$$", "$$");				\
		  print; }' |						\
	${SORT} -u > ${.TARGET}
.endif

######################################################################
###
### +COMMENT - Package comment file
###
### This file contains the one-line description of the package.
###
_COMMENT_FILE=		${PKG_DB_TMPDIR}/+COMMENT
_METADATA_TARGETS+=	${_COMMENT_FILE}

${_COMMENT_FILE}:
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${ECHO} ${COMMENT:Q} > ${.TARGET}

######################################################################
###
### +DESC - Package description file
###
### This file contains the paragraph description of the package.
###
_DESCR_FILE=		${PKG_DB_TMPDIR}/+DESC
_METADATA_TARGETS+=	${_DESCR_FILE}

${_DESCR_FILE}: ${DESCR_SRC}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${CAT} ${.ALLSRC} > ${.TARGET}
.if defined(HOMEPAGE)
	${RUN} {							\
		${ECHO};						\
		${ECHO} "Homepage:";					\
		${ECHO} ""${HOMEPAGE:Q};				\
	} >> ${.TARGET}
.endif

######################################################################
###
### +DISPLAY - Package message file
###
### This file contains important messages which apply to this package,
### and are shown during installation.
###
.if exists(${PKGDIR}/MESSAGE)
MESSAGE_SRC_DFLT=	${PKGDIR}/MESSAGE
.else
.  if exists(${PKGDIR}/MESSAGE.common)
MESSAGE_SRC_DFLT=	${PKGDIR}/MESSAGE.common
.  endif
.  if exists(${PKGDIR}/MESSAGE.${OPSYS})
MESSAGE_SRC_DFLT+=	${PKGDIR}/MESSAGE.${OPSYS}
.  endif
.  if exists(${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g})
MESSAGE_SRC_DFLT+=	${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g}
.  endif
.  if exists(${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g})
MESSAGE_SRC_DFLT+=	${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
.  endif
.endif
MESSAGE_SRC?=	${MESSAGE_SRC_DFLT}

.if ${INIT_SYSTEM} == "rc.d" && exists(${PKGDIR}/MESSAGE.rcd)
MESSAGE_SRC+=	${PKGDIR}/MESSAGE.rcd
.elif ${INIT_SYSTEM} == "smf" && exists(${PKGDIR}/MESSAGE.smf)
MESSAGE_SRC+=	${PKGDIR}/MESSAGE.smf
.endif

.if !empty(MESSAGE_SRC)
_MESSAGE_FILE=		${PKG_DB_TMPDIR}/+DISPLAY
_METADATA_TARGETS+=	${_MESSAGE_FILE}

# Set MESSAGE_SUBST to substitute "${variable}" to "value" in MESSAGE
MESSAGE_SUBST+=	PKGNAME=${PKGNAME}					\
		PKGBASE=${PKGBASE}					\
		PREFIX=${PREFIX}					\
		EMULDIR=${EMULDIR}					\
		EMULSUBDIR=${EMULSUBDIR}				\
		LOCALBASE=${LOCALBASE}					\
		X11BASE=${X11BASE}					\
		SYSCONFBASE=${SYSCONFBASE}				\
		PKG_SYSCONFDIR=${PKG_SYSCONFDIR}			\
		ROOT_GROUP=${REAL_ROOT_GROUP}				\
		ROOT_USER=${REAL_ROOT_USER}

_MESSAGE_SUBST_SED=	${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/}

${_MESSAGE_FILE}: ${MESSAGE_SRC}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${SED} ${_MESSAGE_SUBST_SED} ${.ALLSRC} > ${.TARGET}
.endif	# MESSAGE_SRC

######################################################################
###
### +PRESERVE - Package preserve file
###
### The existence of this file prevents pkg_delete from removing this
### package unless one "force-deletes" the package.
###
.if defined(PKG_PRESERVE)
_PRESERVE_FILE=		${PKG_DB_TMPDIR}/+PRESERVE
_METADATA_TARGETS+=	${_PRESERVE_FILE}

${_PRESERVE_FILE}:
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${DATE} > ${.TARGET}
.endif

######################################################################
###
### +SIZE_PKG - Package size file
###
### This is the total size of the files contained in the package.
###
_SIZE_PKG_FILE=		${PKG_DB_TMPDIR}/+SIZE_PKG
_METADATA_TARGETS+=	${_SIZE_PKG_FILE}

${_SIZE_PKG_FILE}: ${PLIST}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${AWK} 'BEGIN { base = "${PREFIX}/" }				\
		/^@cwd/ { base = $$2 "/" }				\
		/^@/ { next }						\
		{ print base $$0 }' ${PLIST} |				\
	${SORT} -u |							\
	${SED} -e "s,^/,${DESTDIR}/," -e "s/'/'\\\\''/g" -e "s/.*/'&'/" | \
	${XARGS} -n 256 ${LS} -ld 2>/dev/null |				\
	${AWK} 'BEGIN { s = 0 } { s += $$5 } END { print s }'		\
		> ${.TARGET}

######################################################################
###
### +SIZE_ALL - Package size-of-dependencies file
###
### This is the total size of the dependencies that this package was
### built against and the package itself.
###
_SIZE_ALL_FILE=		${PKG_DB_TMPDIR}/+SIZE_ALL
_METADATA_TARGETS+=	${_SIZE_ALL_FILE}

${_SIZE_ALL_FILE}: ${_RDEPENDS_FILE} ${_SIZE_PKG_FILE}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	{								\
		${CAT} ${_SIZE_PKG_FILE} &&				\
		${_FULL_DEPENDS_CMD} | ${SORT} -u |			\
		${XARGS} -n 256 ${PKG_INFO} -qs;			\
	} |								\
	${AWK} 'BEGIN { s = 0 } /^[0-9]+$$/ { s += $$1 } END { print s }' \
		> ${.TARGET}

######################################################################
###
### +DEINSTALL/+INSTALL - Package deinstall and install scripts
###
### These are the scripts invoked by pkg_add(1) and pkg_delete(1)
### as part of the package installation or removal process.
###
### Include scripts.mk to pull in the definitions for the following
### variables:
###
###	_DEINSTALL_FILE (undefined if not required)
###	_INSTALL_FILE (undefined if not required)
###
### This will also add these files to _METADATA_TARGETS.
###
.if ${_USE_NEW_PKGINSTALL:Uno} != "no"
.include "${PKGSRCDIR}/mk/pkgformat/pkg/scripts.mk"
.endif

######################################################################
###
### +CONTENTS - Package manifest file
###
### This file contains the list of files and checksums, along with
### any special "@" commands, e.g. @dirrm.
###
_CONTENTS_FILE=		${PKG_DB_TMPDIR}/+CONTENTS
_METADATA_TARGETS+=	${_CONTENTS_FILE}

_DEPENDS_PLIST=		${WRKDIR}/.PLIST_deps

${_DEPENDS_PLIST}: ${PLIST}
	${RUN} { \
	${ECHO} "@name ${PKGNAME}"; \
	${AWK} '$$1 == "full" { printf "@blddep %s\n@pkgdep %s\n", $$3, $$2; }' < ${_RDEPENDS_FILE}; \
	${AWK} '$$1 == "bootstrap" || $$1 == "build" || $$1 == "tool" { printf "@blddep %s\n", $$3; }' < ${_RDEPENDS_FILE}; \
	${CAT} ${PLIST}; } > ${.TARGET}

_PKG_CREATE_ARGS+=				-l -U
_PKG_CREATE_ARGS+=				-B ${_BUILD_INFO_FILE}
_PKG_CREATE_ARGS+=				-b ${_BUILD_VERSION_FILE}
_PKG_CREATE_ARGS+=				-c ${_COMMENT_FILE}
_PKG_CREATE_ARGS+=	${_MESSAGE_FILE:D	-D ${_MESSAGE_FILE}}
_PKG_CREATE_ARGS+=				-d ${_DESCR_FILE}
_PKG_CREATE_ARGS+=				-f ${_DEPENDS_PLIST}
_PKG_CREATE_ARGS+=	${PKG_PRESERVE:D	-n ${_PRESERVE_FILE}}
_PKG_CREATE_ARGS+=				-S ${_SIZE_ALL_FILE}
_PKG_CREATE_ARGS+=				-s ${_SIZE_PKG_FILE}
_PKG_CREATE_ARGS+=	${"${CONFLICTS:M*}" != "":?-C ${CONFLICTS:Q}:}
.if ${_USE_NEW_PKGINSTALL:Uno} != "no"
_PKG_CREATE_ARGS+=	${_INSTALL_FILE:D	-i ${_INSTALL_FILE:Q}}
_PKG_CREATE_ARGS+=	${_DEINSTALL_FILE:D	-k ${_DEINSTALL_FILE:Q}}
.else
_PKG_CREATE_ARGS+=	${INSTALL_FILE:D	${_INSTALL_ARG_cmd:sh}}
_PKG_CREATE_ARGS+=	${DEINSTALL_FILE:D	${_DEINSTALL_ARG_cmd:sh}}
.endif

_PKG_ARGS_INSTALL+=	${_PKG_CREATE_ARGS}
_PKG_ARGS_INSTALL+=	-I ${PREFIX} -p ${DESTDIR}${PREFIX}

.if ${_USE_NEW_PKGINSTALL:Uno} == "no"
_DEINSTALL_ARG_cmd=	if ${TEST} -f ${DEINSTALL_FILE}; then		\
				${ECHO} "-k "${DEINSTALL_FILE:Q};	\
			else						\
				${ECHO};				\
			fi
_INSTALL_ARG_cmd=	if ${TEST} -f ${INSTALL_FILE}; then		\
				${ECHO} "-i "${INSTALL_FILE:Q};		\
			else						\
				${ECHO};				\
			fi
.endif

_CONTENTS_TARGETS+=	${_BUILD_INFO_FILE}
_CONTENTS_TARGETS+=	${_BUILD_VERSION_FILE}
_CONTENTS_TARGETS+=	${_COMMENT_FILE}
.if ${_USE_NEW_PKGINSTALL:Uno} != "no"
_CONTENTS_TARGETS+=	${_DEINSTALL_FILE}
.endif
_CONTENTS_TARGETS+=	${_DEPENDS_FILE}
_CONTENTS_TARGETS+=	${_DESCR_FILE}
.if ${_USE_NEW_PKGINSTALL:Uno} != "no"
_CONTENTS_TARGETS+=	${_INSTALL_FILE}
.endif
_CONTENTS_TARGETS+=	${_MESSAGE_FILE}
_CONTENTS_TARGETS+=	${_DEPENDS_PLIST}
_CONTENTS_TARGETS+=	${_PRESERVE_FILE}
_CONTENTS_TARGETS+=	${_SIZE_ALL_FILE}
_CONTENTS_TARGETS+=	${_SIZE_PKG_FILE}

${_CONTENTS_FILE}: ${_CONTENTS_TARGETS}
	${RUN}								\
	${TEST} -d ${.TARGET:H} || ${MKDIR} ${.TARGET:H};		\
	${PKG_CREATE} ${_PKG_ARGS_INSTALL} -O ${PKGFILE:T} > ${.TARGET}

######################################################################
### _pkgformat-generate-metadata (PRIVATE)
######################################################################
### _pkgformat-generate-metadata is a convenience target for generating
### all of the pkgsrc binary package meta-data files.  It populates
### ${PKG_DB_TMPDIR} with the following files:
###
###	+BUILD_INFO
###	+BUILD_VERSION
###	+COMMENT
###	+CONTENTS
###	+DESC
###	+DEINSTALL (if required)
###	+DISPLAY
###	+INSTALL (if required)
###	+PRESERVE
###	+SIZE_ALL
###	+SIZE_PKG
###
### See the targets above for descriptions of each of those files.
###
.PHONY: _pkgformat-generate-metadata
_pkgformat-generate-metadata: ${_METADATA_TARGETS}

######################################################################
### _pkgformat-clean-metadata (PRIVATE)
######################################################################
### _pkgformat-clean-metadata is a convenience target for removing the
### package meta-data files.  This is essentially the reverse action
### of _pkgformat-generate-metadata.
###
.PHONY: _pkgformat-clean-metadata
_pkgformat-clean-metadata:
	${RUN}${RM} -f ${_METADATA_TARGETS}
