diff options
author | Bryan Drewery <bdrewery@FreeBSD.org> | 2013-10-02 23:49:21 +0000 |
---|---|---|
committer | Bryan Drewery <bdrewery@FreeBSD.org> | 2013-10-02 23:49:21 +0000 |
commit | 23082b3b3ccf24fc707814417ac8a71c5f204f8b (patch) | |
tree | 00544ab37ac1af89ccfc197130cb0dac7b04f0e8 /Mk | |
parent | 1e6f5e0052c96e28ee13b3cf613068c6e5b36698 (diff) | |
download | ports-23082b3b3ccf24fc707814417ac8a71c5f204f8b.tar.gz ports-23082b3b3ccf24fc707814417ac8a71c5f204f8b.zip |
- Fix 'package' with staging+pkg_install when ports are read-only by creating
the package in STAGEDIR and then linking/copying it over to PACKAGES if
possible
With hat: portmgr
Reviewed by: bapt (earlier version)
Tested by: Stefan Bethke <stb@lassitu.de>
Reported by: many
Notes
Notes:
svn path=/head/; revision=329130
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/bsd.port.mk | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 5c65c00b56cf..f713d08e3b54 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -3876,8 +3876,10 @@ do-package: ${TMPPLIST} if [ -f ${PKGMESSAGE} ]; then \ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -D ${PKGMESSAGE}"; \ fi; \ - if ${PKG_CMD} -S ${STAGEDIR} ${PKG_ARGS} ${PKGFILE}; then \ - if [ -d ${PACKAGES} ]; then \ + if ${PKG_CMD} -S ${STAGEDIR} ${PKG_ARGS} ${WRKDIR}/${PKGNAME}${PKG_SUFX}; then \ + if [ -d ${PACKAGES} -a -w ${PACKAGES} ]; then \ + ${LN} -f ${WRKDIR}/${PKGNAME}${PKG_SUFX} ${PKGFILE} 2>/dev/null || \ + ${CP} -af ${WRKDIR}/${PKGNAME}${PKG_SUFX} ${PKGFILE}; \ cd ${.CURDIR} && eval ${MAKE} package-links; \ fi; \ else \ @@ -3923,7 +3925,12 @@ delete-package-links: .if !target(delete-package) delete-package: delete-package-links +. if defined(NO_STAGE) @${RM} -f ${PKGFILE} +. else +# When staging, the package may only be in the workdir if not root + @${RM} -f ${PKGFILE} ${WRKDIR}/${PKGNAME}${PKG_SUFX} 2>/dev/null || : +. endif .endif .if !target(delete-package-links-list) @@ -3941,12 +3948,13 @@ delete-package-list: delete-package-links-list @${ECHO_CMD} "[ -f ${PKGFILE} ] && (${ECHO_CMD} deleting ${PKGFILE}; ${RM} -f ${PKGFILE})" .endif +# Only used if !defined(NO_STAGE) .if !target(install-package) install-package: .if defined(FORCE_PKG_REGISTER) - @${PKG_ADD} -f ${PKGFILE} + @${PKG_ADD} -f ${WRKDIR}/${PKGNAME}${PKG_SUFX} .else - @${PKG_ADD} ${PKGFILE} + @${PKG_ADD} ${WRKDIR}/${PKGNAME}${PKG_SUFX} .endif .endif |