diff options
author | rillig <rillig@pkgsrc.org> | 2008-01-03 23:21:48 +0000 |
---|---|---|
committer | rillig <rillig@pkgsrc.org> | 2008-01-03 23:21:48 +0000 |
commit | 8df3cdc4f671050276affacd521aec30e0cd8c36 (patch) | |
tree | 9f3e2cb3e2159b903b2ae5fa1b6eb979004656b1 /mk | |
parent | f484c25be425c470313a03d9c4890327ab56f362 (diff) | |
download | pkgsrc-8df3cdc4f671050276affacd521aec30e0cd8c36.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.mk | 10 |
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) |