summaryrefslogtreecommitdiff
path: root/mk/emulator/pkg-rpm.mk
blob: c2c144edcccca8bcedf3fe79e2b7c4c3c8b2d2eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# $NetBSD: pkg-rpm.mk,v 1.7 2017/08/21 12:49:17 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.
#

TOOL_DEPENDS+=		rpm2pkg>=3.1.4:../../pkgtools/rpm2pkg
RPM2PKG=		${LOCALBASE}/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

.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