summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorrillig <rillig>2008-01-03 23:21:48 +0000
committerrillig <rillig>2008-01-03 23:21:48 +0000
commit51a26af13a45cfd2b3f6aa486fd516fbc8e6c307 (patch)
tree9f3e2cb3e2159b903b2ae5fa1b6eb979004656b1 /mk
parent320673884d00d02be6fec11ce47baf853f1fc3c1 (diff)
downloadpkgsrc-51a26af13a45cfd2b3f6aa486fd516fbc8e6c307.tar.gz
When creating the binary package, first create a temporary file, and if
everything went well, rename it to the real name. That way, it is less likely that broken binary packages are created. It is a common assumption that binary package files, if they exist, are usable. An example for a broken binary package is security/sudo-1.6.9p10, in which sbin/visudo wasn't readable when creating the package as an unprivileged user.
Diffstat (limited to 'mk')
-rw-r--r--mk/flavor/pkg/package.mk10
1 files changed, 8 insertions, 2 deletions
diff --git a/mk/flavor/pkg/package.mk b/mk/flavor/pkg/package.mk
index 407bdd2c7d8..ada236d2efc 100644
--- a/mk/flavor/pkg/package.mk
+++ b/mk/flavor/pkg/package.mk
@@ -1,4 +1,4 @@
-# $NetBSD: package.mk,v 1.12 2007/11/07 17:30:01 rillig Exp $
+# $NetBSD: package.mk,v 1.13 2008/01/03 23:21:48 rillig Exp $
PKG_SUFX?= .tgz
PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX}
@@ -40,7 +40,13 @@ _PKG_ARGS_PACKAGE+= -E
${PKGFILE}: ${_CONTENTS_TARGETS}
${RUN} ${MKDIR} ${.TARGET:H}
- ${RUN} ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} ${.TARGET}
+ ${RUN} if ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} ${.TARGET}.tmp; then \
+ ${MV} -f ${.TARGET}.tmp ${.TARGET}; \
+ else \
+ exitcode=$$?; \
+ ${RM} -f ${.TARGET}.tmp; \
+ exit $$exitcode; \
+ fi
######################################################################
### package-remove (PRIVATE)