From f185f4e34c91ba006f2395716aa0dfd396952e67 Mon Sep 17 00:00:00 2001 From: rillig Date: Sat, 5 Jan 2008 22:06:20 +0000 Subject: Explicitly record the PKGNAME via the @name command. That way, it is possible to create the package file using a temporary file first, and if everything has succeeded, to rename it to the real name. This time, I tested it creating various binary packages and installing them afterwards, so I'm pretty sure it works now. --- mk/flavor/pkg/metadata.mk | 3 ++- mk/flavor/pkg/package.mk | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'mk/flavor/pkg') diff --git a/mk/flavor/pkg/metadata.mk b/mk/flavor/pkg/metadata.mk index 5e1bf7a6f02..9cdc9ada3cf 100644 --- a/mk/flavor/pkg/metadata.mk +++ b/mk/flavor/pkg/metadata.mk @@ -1,4 +1,4 @@ -# $NetBSD: metadata.mk,v 1.27 2007/09/20 18:30:34 rillig Exp $ +# $NetBSD: metadata.mk,v 1.28 2008/01/05 22:06:20 rillig Exp $ ###################################################################### ### The targets below are all PRIVATE. @@ -311,6 +311,7 @@ _DEPENDS_PLIST= ${WRKDIR}/.PLIST_deps ${_DEPENDS_PLIST}: ${PLIST} ${RUN} { \ + ${ECHO} "@name ${PKGNAME}"; \ ${AWK} '$$1 == "full" { printf "@blddep %s\n@pkgdep %s\n", $$3, $$2; }' < ${_RDEPENDS_FILE}; \ ${AWK} '$$1 == "bootstrap" || $$1 == "build" { printf "@blddep %s\n", $$3; }' < ${_RDEPENDS_FILE}; \ ${CAT} ${PLIST}; } > ${.TARGET} diff --git a/mk/flavor/pkg/package.mk b/mk/flavor/pkg/package.mk index 5d937e59999..b4a7a39e425 100644 --- a/mk/flavor/pkg/package.mk +++ b/mk/flavor/pkg/package.mk @@ -1,4 +1,4 @@ -# $NetBSD: package.mk,v 1.14 2008/01/04 14:22:06 rillig Exp $ +# $NetBSD: package.mk,v 1.15 2008/01/05 22:06:20 rillig Exp $ PKG_SUFX?= .tgz PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX} @@ -40,7 +40,12 @@ _PKG_ARGS_PACKAGE+= -E ${PKGFILE}: ${_CONTENTS_TARGETS} ${RUN} ${MKDIR} ${.TARGET:H} - ${RUN} ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} ${.TARGET} + ${RUN} tmpname=${.TARGET:S,${PKG_SUFX}$,.tmp${PKG_SUFX},}; \ + if ${PKG_CREATE} ${_PKG_ARGS_PACKAGE} "$$tmpname"; then \ + ${MV} -f "$$tmpname" ${.TARGET}; \ + else \ + exitcode=$$?; ${RM} -f "$$tmpname"; exit $$exitcode; \ + fi ###################################################################### ### package-remove (PRIVATE) -- cgit v1.2.3