summaryrefslogtreecommitdiff
path: root/mk/emulator/pkg-rpm.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/emulator/pkg-rpm.mk')
-rw-r--r--mk/emulator/pkg-rpm.mk110
1 files changed, 110 insertions, 0 deletions
diff --git a/mk/emulator/pkg-rpm.mk b/mk/emulator/pkg-rpm.mk
new file mode 100644
index 00000000000..493badc15e5
--- /dev/null
+++ b/mk/emulator/pkg-rpm.mk
@@ -0,0 +1,110 @@
+# $NetBSD: pkg-rpm.mk,v 1.1 2007/07/29 05:19:43 jlam Exp $
+#
+# RPM package format
+#
+# Package-settable variables:
+#
+# RPM2PKG_PLIST
+# This is the path to the PLIST created by rpm2pkg(8) which will
+# list the files and directories extracted from the RPMs. If
+# this is empty, then no PLIST is created.
+#
+# Default value: ${WRKDIR}/.PLIST.rpm2pkg
+#
+# RPM2PKG_PREFIX
+# This is the directory under which the contents of the RPMs will
+# be extracted. This directory is stripped from the paths which
+# are stored in ${RPM2PKG_PLIST}.
+#
+# Default value: ${WRKDIR}
+#
+# RPM2PKG_SUBPREFIX
+# This is the subdirectory under ${RPM2PKG_PREFIX} within which
+# the RPMs are directly extracted. If this is empty, then the
+# RPMs are extracted directly into ${RPM2PKG_PREFIX}.
+#
+# Default value: empty
+#
+# RPM2PKG_STRIP
+# This is the number of path components to strip from the head
+# of paths of files and directories stored in the RPMs during
+# extraction. RPMs usually store all paths with a leading path
+# component of ``./''.
+#
+# Default value: 1
+#
+# RPM2PKG_STAGE
+# Stage at which to run the ``extract-rpm'' target.
+#
+# Default value: do-extract
+#
+# RPMFILES
+# The list of paths to RPMs to extract using rpm2pkg(8).
+#
+# Default value: all *.rpm files in DISTFILES located in ${_DISTDIR}
+#
+# RPMIGNOREPATH
+# The list of files or paths to skip during extraction of the RPMs.
+#
+# Default value: undefined
+#
+# Public targets:
+#
+# extract-rpm
+# Runs rpm2pkg(8) with the appropriate arguments based on the
+# RPM* variables set in the package Makefile to extract the
+# files listed in RPMFILES.
+#
+
+BUILD_DEPENDS+= rpm2pkg>=2.1:../../pkgtools/rpm2pkg
+EVAL_PREFIX+= _RPM2PKG_PREFIX=rpm2pkg
+RPM2PKG= ${_RPM2PKG_PREFIX}/sbin/rpm2pkg
+
+RPMFILES?= ${DISTFILES:M*.rpm:S/^/${_DISTDIR}\//}
+BUILD_DEFS+= RPMFILES
+.if defined(RPMIGNOREPATH)
+BUILD_DEFS+= RPMIGNOREPATH
+.endif
+
+RPM2PKGSTRIP?= ${RPM2PKG_STRIP}
+
+RPM2PKG_STRIP?= 1
+RPM2PKG_PREFIX?= ${WRKDIR}
+RPM2PKG_SUBPREFIX?= # empty
+RPM2PKG_PLIST?= ${WRKDIR}/.PLIST.rpm2pkg
+
+# By default, extract the RPMs during the do-extract step.
+RPM2PKG_STAGE?= do-extract
+
+RPM2PKG_ARGS_DFLT= -d ${RPM2PKG_PREFIX:Q}
+.if !empty(RPM2PKG_SUBPREFIX)
+RPM2PKG_ARGS_DFLT+= -p ${RPM2PKG_SUBPREFIX:Q}
+.endif
+.if !empty(RPM2PKG_PLIST)
+RPM2PKG_ARGS_DFLT+= -f ${RPM2PKG_PLIST:Q}
+.endif
+.if empty(RPM2PKG_STRIP:M0)
+RPM2PKG_ARGS_DFLT+= -s ${RPM2PKG_STRIP}
+.endif
+.for _ignoredir_ in ${RPMIGNOREPATH}
+RPM2PKG_ARGS_DFLT+= -i ${_ignoredir_}
+.endfor
+RPM2PKG_ARGS?= ${RPM2PKG_ARGS_DFLT}
+
+PLIST_SRC_DFLT+= ${RPM2PKG_PLIST}
+
+# We handle the extraction of the RPMs in the extract-rpm target below.
+EXTRACT_ONLY?= # empty
+
+# Usually, packages we install via RPMs also install shared libraries.
+_EMUL_RUN_LDCONFIG= yes
+
+.PHONY: extract-rpm
+extract-rpm:
+ @${STEP_MSG} "Extracting RPM files"
+.if !empty(RPM2PKG_PLIST)
+ ${RUN} ${RM} -f ${RPM2PKG_PLIST}
+.endif
+ ${RUN} ${RPM2PKG} ${RPM2PKG_ARGS} ${RPMFILES}
+
+${RPM2PKG_STAGE}: extract-rpm