| @@ -1,212 +1,213 @@ | | | @@ -1,212 +1,213 @@ |
1 | # $NetBSD: package.mk,v 1.8 2015/02/01 11:24:58 obache Exp $ | | 1 | # $NetBSD: package.mk,v 1.9 2015/02/16 10:50:33 jperkin Exp $ |
2 | | | 2 | |
3 | .if defined(PKG_SUFX) | | 3 | .if defined(PKG_SUFX) |
4 | WARNINGS+= "PKG_SUFX is deprecated, please use PKG_COMPRESSION" | | 4 | WARNINGS+= "PKG_SUFX is deprecated, please use PKG_COMPRESSION" |
5 | . if ${PKG_SUFX} == ".tgz" | | 5 | . if ${PKG_SUFX} == ".tgz" |
6 | PKG_COMPRESSION= gzip | | 6 | PKG_COMPRESSION= gzip |
7 | . elif ${PKG_SUFX} == ".tbz" | | 7 | . elif ${PKG_SUFX} == ".tbz" |
8 | PKG_COMPRESSION= bzip2 | | 8 | PKG_COMPRESSION= bzip2 |
9 | . else | | 9 | . else |
10 | WARNINGS+= "Unsupported value for PKG_SUFX" | | 10 | WARNINGS+= "Unsupported value for PKG_SUFX" |
11 | . endif | | 11 | . endif |
12 | .endif | | 12 | .endif |
13 | PKG_SUFX?= .tgz | | 13 | PKG_SUFX?= .tgz |
14 | FILEBASE?= ${PKGBASE} | | 14 | FILEBASE?= ${PKGBASE} |
15 | PKGFILE?= ${PKGREPOSITORY}/${FILEBASE}-${PKGVERSION}${PKG_SUFX} | | 15 | PKGFILE?= ${PKGREPOSITORY}/${FILEBASE}-${PKGVERSION}${PKG_SUFX} |
16 | .if ${_USE_DESTDIR} == "no" | | 16 | .if ${_USE_DESTDIR} == "no" |
17 | . if !empty(SIGN_PACKAGES:Mgpg) | | 17 | . if !empty(SIGN_PACKAGES:Mgpg) |
18 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} | | 18 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} |
19 | . elif !empty(SIGN_PACKAGES:Mx509) | | 19 | . elif !empty(SIGN_PACKAGES:Mx509) |
20 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} | | 20 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} |
21 | . else | | 21 | . else |
22 | STAGE_PKGFILE?= ${PKGFILE} | | 22 | STAGE_PKGFILE?= ${PKGFILE} |
23 | . endif | | 23 | . endif |
24 | .else | | 24 | .else |
25 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} | | 25 | STAGE_PKGFILE?= ${WRKDIR}/.packages/${FILEBASE}-${PKGVERSION}${PKG_SUFX} |
26 | .endif | | 26 | .endif |
27 | PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR} | | 27 | PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR} |
28 | PKGREPOSITORYSUBDIR?= All | | 28 | PKGREPOSITORYSUBDIR?= All |
29 | | | 29 | |
30 | ###################################################################### | | 30 | ###################################################################### |
31 | ### package-check-installed (PRIVATE, pkgsrc/mk/package/package.mk) | | 31 | ### package-check-installed (PRIVATE, pkgsrc/mk/package/package.mk) |
32 | ###################################################################### | | 32 | ###################################################################### |
33 | ### package-check-installed verifies that the package is installed on | | 33 | ### package-check-installed verifies that the package is installed on |
34 | ### the system. | | 34 | ### the system. |
35 | ### | | 35 | ### |
36 | .PHONY: package-check-installed | | 36 | .PHONY: package-check-installed |
37 | package-check-installed: | | 37 | package-check-installed: |
38 | ${RUN} ${PKG_INFO} -qe ${PKGNAME} \ | | 38 | ${RUN} ${PKG_INFO} -qe ${PKGNAME} \ |
39 | || ${FAIL_MSG} "${PKGNAME} is not installed." | | 39 | || ${FAIL_MSG} "${PKGNAME} is not installed." |
40 | | | 40 | |
41 | ###################################################################### | | 41 | ###################################################################### |
42 | ### package-create (PRIVATE, pkgsrc/mk/package/package.mk) | | 42 | ### package-create (PRIVATE, pkgsrc/mk/package/package.mk) |
43 | ###################################################################### | | 43 | ###################################################################### |
44 | ### package-create creates the binary package. | | 44 | ### package-create creates the binary package. |
45 | ### | | 45 | ### |
46 | .PHONY: package-create | | 46 | .PHONY: package-create |
47 | package-create: ${PKGFILE} package-links | | 47 | package-create: ${PKGFILE} package-links |
48 | | | 48 | |
49 | ###################################################################### | | 49 | ###################################################################### |
50 | ### stage-package-create (PRIVATE, pkgsrc/mk/package/package.mk) | | 50 | ### stage-package-create (PRIVATE, pkgsrc/mk/package/package.mk) |
51 | ###################################################################### | | 51 | ###################################################################### |
52 | ### stage-package-create creates the binary package for stage install. | | 52 | ### stage-package-create creates the binary package for stage install. |
53 | ### | | 53 | ### |
54 | .PHONY: stage-package-create | | 54 | .PHONY: stage-package-create |
55 | .if ${_USE_DESTDIR} == "no" | | 55 | .if ${_USE_DESTDIR} == "no" |
56 | stage-package-create: package-create | | 56 | stage-package-create: package-create |
57 | .else | | 57 | .else |
58 | stage-package-create: stage-install ${STAGE_PKGFILE} | | 58 | stage-package-create: stage-install ${STAGE_PKGFILE} |
59 | .endif | | 59 | .endif |
60 | | | 60 | |
61 | _PKG_ARGS_PACKAGE+= ${_PKG_CREATE_ARGS} | | 61 | _PKG_ARGS_PACKAGE+= ${_PKG_CREATE_ARGS} |
62 | _PKG_ARGS_PACKAGE+= -F ${PKG_COMPRESSION} | | 62 | _PKG_ARGS_PACKAGE+= -F ${PKG_COMPRESSION} |
63 | .if ${_USE_DESTDIR} == "no" | | 63 | .if ${_USE_DESTDIR} == "no" |
64 | _PKG_ARGS_PACKAGE+= -p ${PREFIX} | | 64 | _PKG_ARGS_PACKAGE+= -p ${PREFIX} |
65 | .else | | 65 | .else |
66 | _PKG_ARGS_PACKAGE+= -I ${PREFIX} -p ${DESTDIR}${PREFIX} | | 66 | _PKG_ARGS_PACKAGE+= -I ${PREFIX} -p ${DESTDIR}${PREFIX} |
67 | . if ${_USE_DESTDIR} == "user-destdir" | | 67 | . if ${_USE_DESTDIR} == "user-destdir" |
68 | _PKG_ARGS_PACKAGE+= -u ${REAL_ROOT_USER} -g ${REAL_ROOT_GROUP} | | 68 | _PKG_ARGS_PACKAGE+= -u ${REAL_ROOT_USER} -g ${REAL_ROOT_GROUP} |
69 | . endif | | 69 | . endif |
70 | .endif | | 70 | .endif |
71 | | | 71 | |
72 | ${STAGE_PKGFILE}: ${_CONTENTS_TARGETS} | | 72 | ${STAGE_PKGFILE}: ${_CONTENTS_TARGETS} |
73 | ${RUN} ${MKDIR} ${.TARGET:H} | | 73 | ${RUN} ${MKDIR} ${.TARGET:H} |
74 | @${STEP_MSG} "Creating binary package ${.TARGET}" | | 74 | @${STEP_MSG} "Creating binary package ${.TARGET}" |
75 | ${RUN} tmpname=${.TARGET:S,${PKG_SUFX}$,.tmp${PKG_SUFX},}; \ | | 75 | ${RUN} tmpname=${.TARGET:S,${PKG_SUFX}$,.tmp${PKG_SUFX},}; \ |
76 | if ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} "$$tmpname"; then \ | | 76 | if ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} "$$tmpname"; then \ |
77 | ${MV} -f "$$tmpname" ${.TARGET}; \ | | 77 | ${MV} -f "$$tmpname" ${.TARGET}; \ |
78 | else \ | | 78 | else \ |
79 | exitcode=$$?; ${RM} -f "$$tmpname"; exit $$exitcode; \ | | 79 | exitcode=$$?; ${RM} -f "$$tmpname"; exit $$exitcode; \ |
80 | fi | | 80 | fi |
81 | | | 81 | |
82 | .if ${PKGFILE} != ${STAGE_PKGFILE} | | 82 | .if ${PKGFILE} != ${STAGE_PKGFILE} |
83 | ${PKGFILE}: ${STAGE_PKGFILE} | | 83 | ${PKGFILE}: ${STAGE_PKGFILE} |
84 | ${RUN} ${MKDIR} ${.TARGET:H} | | 84 | ${RUN} ${MKDIR} ${.TARGET:H} |
85 | . if !empty(SIGN_PACKAGES:U:Mgpg) | | 85 | . if !empty(SIGN_PACKAGES:U:Mgpg) |
86 | @${STEP_MSG} "Creating signed binary package ${.TARGET} (GPG)" | | 86 | @${STEP_MSG} "Creating signed binary package ${.TARGET} (GPG)" |
87 | ${PKG_ADMIN} gpg-sign-package ${STAGE_PKGFILE} ${PKGFILE} | | 87 | ${PKG_ADMIN} gpg-sign-package ${STAGE_PKGFILE} ${PKGFILE} |
88 | . elif !empty(SIGN_PACKAGES:U:Mx509) | | 88 | . elif !empty(SIGN_PACKAGES:U:Mx509) |
89 | @${STEP_MSG} "Creating signed binary package ${.TARGET} (X509)" | | 89 | @${STEP_MSG} "Creating signed binary package ${.TARGET} (X509)" |
90 | ${PKG_ADMIN} x509-sign-package ${STAGE_PKGFILE} ${PKGFILE} \ | | 90 | ${PKG_ADMIN} x509-sign-package ${STAGE_PKGFILE} ${PKGFILE} \ |
91 | ${X509_KEY} ${X509_CERTIFICATE} | | 91 | ${X509_KEY} ${X509_CERTIFICATE} |
92 | . else | | 92 | . else |
93 | @${STEP_MSG} "Creating binary package ${.TARGET}" | | 93 | @${STEP_MSG} "Creating binary package ${.TARGET}" |
94 | ${LN} -f ${STAGE_PKGFILE} ${PKGFILE} 2>/dev/null || \ | | 94 | ${LN} -f ${STAGE_PKGFILE} ${PKGFILE} 2>/dev/null || \ |
95 | ${CP} -pf ${STAGE_PKGFILE} ${PKGFILE} | | 95 | ${CP} -pf ${STAGE_PKGFILE} ${PKGFILE} |
96 | . endif | | 96 | . endif |
97 | .endif | | 97 | .endif |
98 | | | 98 | |
99 | ###################################################################### | | 99 | ###################################################################### |
100 | ### package-remove (PRIVATE) | | 100 | ### package-remove (PRIVATE) |
101 | ###################################################################### | | 101 | ###################################################################### |
102 | ### package-remove removes the binary package from the package | | 102 | ### package-remove removes the binary package from the package |
103 | ### repository. | | 103 | ### repository. |
104 | ### | | 104 | ### |
105 | .PHONY: package-remove | | 105 | .PHONY: package-remove |
106 | package-remove: | | 106 | package-remove: |
107 | ${RUN} ${RM} -f ${PKGFILE} | | 107 | ${RUN} ${RM} -f ${PKGFILE} |
108 | | | 108 | |
109 | ###################################################################### | | 109 | ###################################################################### |
110 | ### stage-package-remove (PRIVATE) | | 110 | ### stage-package-remove (PRIVATE) |
111 | ###################################################################### | | 111 | ###################################################################### |
112 | ### stage-package-remove removes the binary package for stage install | | 112 | ### stage-package-remove removes the binary package for stage install |
113 | ### | | 113 | ### |
114 | .PHONY: stage-package-remove | | 114 | .PHONY: stage-package-remove |
115 | stage-package-remove: | | 115 | stage-package-remove: |
116 | ${RUN} ${RM} -f ${STAGE_PKGFILE} | | 116 | ${RUN} ${RM} -f ${STAGE_PKGFILE} |
117 | | | 117 | |
118 | ###################################################################### | | 118 | ###################################################################### |
119 | ### package-links (PRIVATE) | | 119 | ### package-links (PRIVATE) |
120 | ###################################################################### | | 120 | ###################################################################### |
121 | ### package-links creates symlinks to the binary package from the | | 121 | ### package-links creates symlinks to the binary package from the |
122 | ### non-primary categories to which the package belongs. | | 122 | ### non-primary categories to which the package belongs. |
123 | ### | | 123 | ### |
124 | package-links: delete-package-links | | 124 | package-links: delete-package-links |
125 | .for _dir_ in ${CATEGORIES:S/^/${PACKAGES}\//} | | 125 | .for _dir_ in ${CATEGORIES:S/^/${PACKAGES}\//} |
126 | ${RUN} ${MKDIR} ${_dir_:Q} | | 126 | ${RUN} ${MKDIR} ${_dir_:Q} |
127 | ${RUN} [ -d ${_dir_:Q} ] \ | | 127 | ${RUN} [ -d ${_dir_:Q} ] \ |
128 | || ${FAIL_MSG} "Can't create directory "${_dir_:Q}"." | | 128 | || ${FAIL_MSG} "Can't create directory "${_dir_:Q}"." |
129 | ${RUN} ${RM} -f ${_dir_:Q}/${PKGFILE:T} | | 129 | ${RUN} ${RM} -f ${_dir_:Q}/${PKGFILE:T} |
130 | ${RUN} ${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGFILE:T} ${_dir_:Q} | | 130 | ${RUN} ${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGFILE:T} ${_dir_:Q} |
131 | .endfor | | 131 | .endfor |
132 | | | 132 | |
133 | ###################################################################### | | 133 | ###################################################################### |
134 | ### delete-package-links (PRIVATE) | | 134 | ### delete-package-links (PRIVATE) |
135 | ###################################################################### | | 135 | ###################################################################### |
136 | ### delete-package-links removes the symlinks to the binary package from | | 136 | ### delete-package-links removes the symlinks to the binary package from |
137 | ### the non-primary categories to which the package belongs. | | 137 | ### the non-primary categories to which the package belongs. |
138 | ### | | 138 | ### |
139 | delete-package-links: | | 139 | delete-package-links: |
140 | ${RUN} ${FIND} ${PACKAGES} -type l -name ${PKGFILE:T} -print \ | | 140 | ${RUN} ${FIND} ${PACKAGES} -type l -name ${PKGFILE:T} -print \ |
141 | | ${XARGS} ${RM} -f | | 141 | | ${XARGS} ${RM} -f |
142 | | | 142 | |
143 | ###################################################################### | | 143 | ###################################################################### |
144 | ### tarup (PUBLIC) | | 144 | ### tarup (PUBLIC) |
145 | ###################################################################### | | 145 | ###################################################################### |
146 | ### tarup is a public target to generate a binary package from an | | 146 | ### tarup is a public target to generate a binary package from an |
147 | ### installed package instance. | | 147 | ### installed package instance. |
148 | ### | | 148 | ### |
149 | _PKG_TARUP_CMD= ${LOCALBASE}/bin/pkg_tarup | | 149 | _PKG_TARUP_CMD= ${LOCALBASE}/bin/pkg_tarup |
150 | | | 150 | |
151 | .PHONY: tarup | | 151 | .PHONY: tarup |
152 | tarup: package-remove tarup-pkg package-links | | 152 | tarup: package-remove tarup-pkg package-links |
153 | | | 153 | |
154 | ###################################################################### | | 154 | ###################################################################### |
155 | ### tarup-pkg (PRIVATE) | | 155 | ### tarup-pkg (PRIVATE) |
156 | ###################################################################### | | 156 | ###################################################################### |
157 | ### tarup-pkg creates a binary package from an installed package instance | | 157 | ### tarup-pkg creates a binary package from an installed package instance |
158 | ### using "pkg_tarup". | | 158 | ### using "pkg_tarup". |
159 | ### | | 159 | ### |
160 | tarup-pkg: | | 160 | tarup-pkg: |
161 | ${RUN} [ -x ${_PKG_TARUP_CMD} ] || exit 1; \ | | 161 | ${RUN} [ -x ${_PKG_TARUP_CMD} ] || exit 1; \ |
162 | ${PKGSRC_SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \ | | 162 | ${PKGSRC_SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \ |
163 | PKGREPOSITORY=${PKGREPOSITORY} \ | | 163 | PKGREPOSITORY=${PKGREPOSITORY} \ |
164 | ${_PKG_TARUP_CMD} -f ${FILEBASE} ${PKGNAME} | | 164 | ${_PKG_TARUP_CMD} -f ${FILEBASE} ${PKGNAME} |
165 | | | 165 | |
166 | ###################################################################### | | 166 | ###################################################################### |
167 | ### package-install (PUBLIC) | | 167 | ### package-install (PUBLIC) |
168 | ###################################################################### | | 168 | ###################################################################### |
169 | ### When DESTDIR support is active, package-install uses package to | | 169 | ### When DESTDIR support is active, package-install uses package to |
170 | ### create a binary package and installs it. | | 170 | ### create a binary package and installs it. |
171 | ### Otherwise it is identical to calling package. | | 171 | ### Otherwise it is identical to calling package. |
172 | ### | | 172 | ### |
173 | | | 173 | |
174 | .PHONY: package-install real-package-install su-real-package-install | | 174 | .PHONY: package-install real-package-install su-real-package-install |
175 | .if defined(_PKGSRC_BARRIER) | | 175 | .if defined(_PKGSRC_BARRIER) |
176 | package-install: package real-package-install | | 176 | package-install: package real-package-install |
177 | .else | | 177 | .else |
178 | package-install: barrier | | 178 | package-install: barrier |
179 | .endif | | 179 | .endif |
180 | | | 180 | |
181 | .PHONY: stage-package-install | | 181 | .PHONY: stage-package-install |
182 | .if defined(_PKGSRC_BARRIER) | | 182 | .if defined(_PKGSRC_BARRIER) |
183 | stage-package-install: stage-package-create real-package-install | | 183 | stage-package-install: stage-package-create real-package-install |
184 | .else | | 184 | .else |
185 | stage-package-install: barrier | | 185 | stage-package-install: barrier |
186 | .endif | | 186 | .endif |
187 | | | 187 | |
188 | .if ${_USE_DESTDIR} != "no" | | 188 | .if ${_USE_DESTDIR} != "no" |
189 | . if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) | | 189 | . if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) |
190 | real-package-install: su-real-package-install | | 190 | real-package-install: su-real-package-install |
191 | . else | | 191 | . else |
192 | real-package-install: su-target | | 192 | real-package-install: su-target |
193 | . endif | | 193 | . endif |
194 | .else | | 194 | .else |
195 | real-package-install: | | 195 | real-package-install: |
196 | @${DO_NADA} | | 196 | @${DO_NADA} |
197 | .endif | | 197 | .endif |
198 | | | 198 | |
| | | 199 | MAKEFLAGS.su-real-package-install= PKGNAME_REQD=${PKGNAME_REQD:Q} |
199 | su-real-package-install: | | 200 | su-real-package-install: |
200 | @${PHASE_MSG} "Install binary package of "${PKGNAME:Q} | | 201 | @${PHASE_MSG} "Install binary package of "${PKGNAME:Q} |
201 | .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) | | 202 | .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) |
202 | @${MKDIR} ${_CROSS_DESTDIR}${PREFIX} | | 203 | @${MKDIR} ${_CROSS_DESTDIR}${PREFIX} |
203 | ${PKG_ADD} -m ${MACHINE_ARCH} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE} | | 204 | ${PKG_ADD} -m ${MACHINE_ARCH} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE} |
204 | @${ECHO} "Fixing recorded cwd..." | | 205 | @${ECHO} "Fixing recorded cwd..." |
205 | @${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp | | 206 | @${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp |
206 | @${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS | | 207 | @${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS |
207 | .else | | 208 | .else |
208 | ${RUN} case ${_AUTOMATIC:Q}"" in \ | | 209 | ${RUN} case ${_AUTOMATIC:Q}"" in \ |
209 | [yY][eE][sS]) ${PKG_ADD} -A ${STAGE_PKGFILE} ;; \ | | 210 | [yY][eE][sS]) ${PKG_ADD} -A ${STAGE_PKGFILE} ;; \ |
210 | *) ${PKG_ADD} ${STAGE_PKGFILE} ;; \ | | 211 | *) ${PKG_ADD} ${STAGE_PKGFILE} ;; \ |
211 | esac | | 212 | esac |
212 | .endif | | 213 | .endif |