summaryrefslogtreecommitdiff
path: root/mk/package/package.mk
blob: 0fe7781223fb1bfc1dd190f99783a7733bb66c38 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# $NetBSD: package.mk,v 1.24 2013/05/23 13:18:56 obache Exp $
#
# This file provides the code for the "package" phase.
#
# Public targets:
#
# package:
#	Generates a binary package.
#	It will acquire elevated privileges just-in-time.
#
#	XXX: From which files is the binary package generated? The
#	installed files in LOCALBASE, or some files in WRKDIR/.destdir?
#

_PACKAGE_TARGETS+=	check-vulnerable
.if make(replace) && ${_USE_DESTDIR} == "no"
_PACKAGE_TARGETS+=	replace
.else
_PACKAGE_TARGETS+=	stage-install
_PACKAGE_TARGETS+=	stage-package-create
.endif
_PACKAGE_TARGETS+=	acquire-package-lock
_PACKAGE_TARGETS+=	${_COOKIE.package}
_PACKAGE_TARGETS+=	release-package-lock

.PHONY: package
.if !target(package)
.  if exists(${_COOKIE.package})
package:
	@${DO_NADA}
.  elif defined(_PKGSRC_BARRIER)
package: ${_PACKAGE_TARGETS}
.  else
package: barrier
.  endif
.endif

.PHONY: acquire-package-lock release-package-lock
acquire-package-lock: acquire-lock
release-package-lock: release-lock

.if exists(${_COOKIE.package})
${_COOKIE.package}:
	@${DO_NADA}
.else
${_COOKIE.package}: real-package
.endif

######################################################################
### real-package (PRIVATE)
######################################################################
### real-package is a helper target onto which one can hook all of the
### targets that do the actual packaging of the built objects.
###
_REAL_PACKAGE_TARGETS+=	package-message
_REAL_PACKAGE_TARGETS+=	package-all
_REAL_PACKAGE_TARGETS+=	package-cookie

.PHONY: real-package
real-package: ${_REAL_PACKAGE_TARGETS}

.PHONY: package-message
package-message:
	@${PHASE_MSG} "Building binary package for ${PKGNAME}"

######################################################################
### package-cookie (PRIVATE)
######################################################################
### package-cookie creates the "package" cookie file
###
.PHONY: package-cookie
package-cookie:
	${RUN} ${TEST} ! -f ${_COOKIE.package} || ${FALSE}
	${RUN} ${MKDIR} ${_COOKIE.package:H}
	${RUN} ${ECHO} ${PKGNAME} > ${_COOKIE.package}

######################################################################
### The targets below are run with elevated privileges.
######################################################################

######################################################################
### package-all, su-package-all (PRIVATE)
######################################################################
### package-all is a helper target to create the binary package and
### generate any necessary warnings.
###
.if ${_USE_DESTDIR} == "no"
_PACKAGE_ALL_TARGETS+=	package-check-installed
.endif
_PACKAGE_ALL_TARGETS+=	package-create
_PACKAGE_ALL_TARGETS+=	_package-warnings
_PACKAGE_ALL_TARGETS+=	error-check

.PHONY: package-all su-package-all
.if !empty(_MAKE_PACKAGE_AS_ROOT:M[Yy][Ee][Ss])
package-all: su-target
.else
package-all: su-package-all
.endif
su-package-all: ${_PACKAGE_ALL_TARGETS}

######################################################################
### package-check-installed (PRIVATE, override)
######################################################################
### package-check-installed verifies that the package is installed on
### the system.  This should be overridden per package system format.
###
.if !target(package-check-installed)
.PHONY: package-check-installed
package-check-installed:
	@${DO_NADA}
.endif

######################################################################
### package-create (PRIVATE, override)
######################################################################
### package-create creates the binary package.  This should be overridden
### per package system format.
###
.if !target(package-create)
.PHONY: package-create
package-create:
	@${DO_NADA}
.endif

# Displays warnings about the binary package.
#
_package-warnings: .PHONY
.if defined(NO_BIN_ON_CDROM)
	@${WARNING_MSG} "${PKGNAME} may not be put on a CD-ROM:"
	@${WARNING_MSG} ${NO_BIN_ON_CDROM:Q}
.endif
.if defined(NO_BIN_ON_FTP)
	@${WARNING_MSG} "${PKGNAME} may not be made available through FTP:"
	@${WARNING_MSG} ${NO_BIN_ON_FTP:Q}
.endif
.if defined(ABI_DEPENDS) && !empty(USE_ABI_DEPENDS:M[Nn][Oo])
	@${WARNING_MSG} "ABI dependency recommendations are being ignored!"
	@${WARNING_MSG} "${PKGNAME} should not be uploaded nor"
	@${WARNING_MSG} "otherwise be used as a binary package!"
.endif