Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/pkgsrc/mk/bsd.pkg.mk,v rcsdiff: /ftp/cvs/cvsroot/pkgsrc/mk/bsd.pkg.mk,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.1540.2.14 retrieving revision 1.1540.2.17 diff -u -p -r1.1540.2.14 -r1.1540.2.17 --- pkgsrc/mk/bsd.pkg.mk 2005/01/24 18:50:16 1.1540.2.14 +++ pkgsrc/mk/bsd.pkg.mk 2005/01/24 19:24:37 1.1540.2.17 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1540.2.14 2005/01/24 18:50:16 tv Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1540.2.17 2005/01/24 19:24:37 tv Exp $ # # This file is in the public domain. # @@ -25,12 +25,6 @@ _PKG_PHASES_ALL= fetch checksum ${_PKG_P _PKG_PHASES_WRKDIR= depends extract patch tools wrapper \ configure build test install package -# PATH is recalculated below, so save its original incarnation here. -.if !defined(_PATH_ORIG) -_PATH_ORIG:= ${PATH} -MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q} -.endif - ############################################################################ # Transform package Makefile variables and set defaults ############################################################################ @@ -140,21 +134,22 @@ BUILD_DEFS_FIXED+= ${OSVERSION_SPECIFIC: DIGEST_REQD= 20010302 PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD:U20030918} +PKG_DB_TMPDIR= ${WRKDIR}/.pkgdb DDIR= ${WRKDIR}/.DDIR -DESCR= ${WRKDIR}/.DESCR +DESCR= ${PKG_DB_TMPDIR}/+DESC DLIST= ${WRKDIR}/.DLIST PLIST= ${WRKDIR}/.PLIST # Files to create for versioning and build information -BUILD_VERSION_FILE= ${WRKDIR}/.build_version -BUILD_INFO_FILE= ${WRKDIR}/.build_info +BUILD_VERSION_FILE= ${PKG_DB_TMPDIR}/+BUILD_VERSION +BUILD_INFO_FILE= ${PKG_DB_TMPDIR}/+BUILD_INFO # Files containing size of pkg w/o and w/ all required pkgs -SIZE_PKG_FILE= ${WRKDIR}/.SizePkg -SIZE_ALL_FILE= ${WRKDIR}/.SizeAll +SIZE_PKG_FILE= ${PKG_DB_TMPDIR}/+SIZE_PKG +SIZE_ALL_FILE= ${PKG_DB_TMPDIR}/+SIZE_ALL # File to denote "no deletion of a package" -PRESERVE_FILE= ${WRKDIR}/.PRESERVE +PRESERVE_FILE= ${PKG_DB_TMPDIR}/+PRESERVE .for targ in ${_PKG_PHASES_WRKDIR} ${targ}_COOKIE= ${WRKDIR}/.${targ}_done @@ -610,7 +605,7 @@ MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${OPSYS} . endif . if defined(MESSAGE_SRC) -MESSAGE= ${WRKDIR}/.MESSAGE +MESSAGE= ${PKG_DB_TMPDIR}/+DISPLAY # Set MESSAGE_SUBST to substitute "${variable}" to "value" in MESSAGE MESSAGE_SUBST+= LOCALBASE=${LOCALBASE} @@ -1204,6 +1199,13 @@ install-check-pkgname: ${MAKE} clean && ${MAKE} build ;; \ esac +#===> "install-make-pkgdbdir" + +_REAL_TARGETS.install+= install-make-pkgdbdir +.PHONY: install-make-pkgdbdir +install-make-pkgdbdir: + ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${PKG_DB_TMPDIR} + #===> "do-su-install" # su to root, then run real-su-install @@ -1270,7 +1272,7 @@ init-install: ${ECHO_MSG} "*** dependencies, risking various problems."; \ exit 1; \ fi -. endif # !NO_PKG_REGISTER && !NO_FORCE_REGISTER && overwrite +. endif # !NO_PKG_REGISTER && !FORCE_PKG_REGISTER && overwrite . if ${PKG_INSTALLATION_TYPE} == "pkgviews" ${_PKG_SILENT}${_PKG_DEBUG} \ found="`${PKG_INFO} -e ${PKGNAME} || ${TRUE}`"; \ @@ -1280,7 +1282,7 @@ init-install: fi . endif ${_PKG_SILENT}${_PKG_DEBUG}if [ `${SH} -c umask` -ne ${DEF_UMASK} ]; then \ - ${ECHO_MSG} "${_PKGSRC_IN}> Warning: your umask is \"`${SH} -c umask`"\".; \ + ${ECHO_MSG} "${_PKGSRC_IN}> Warning: your umask is \"`${SH} -c umask`"\".; \ ${ECHO_MSG} "If this is not desired, set it to an appropriate value (${DEF_UMASK})"; \ ${ECHO_MSG} "and install this package again by \`\`${MAKE} deinstall reinstall''."; \ fi @@ -1332,6 +1334,12 @@ init-install: ${_PKG_SILENT}${_PKG_DEBUG}[ -d ${PREFIX} ] || ${MKDIR} ${PREFIX} . endif # !NO_MTREE +#===> "pre-install-fake-pkg" + +. if !defined(NO_PKG_REGISTER) +_REAL_TARGETS.su-install+= pre-install-fake-pkg +. endif # !NO_PKG_REGISTER + #===> "pre-install-script" _REAL_TARGETS.su-install+= pre-install-script @@ -1485,9 +1493,11 @@ post-install-message: . endif . endif -#===> "fake-pkg" +#===> "register-pkg" -_REAL_TARGETS.su-install+= fake-pkg +. if !defined(NO_PKG_REGISTER) +_REAL_TARGETS.su-install+= register-pkg +. endif # !NO_PKG_REGISTER #===> "check-shlibs" @@ -1569,12 +1579,14 @@ ${def:C/=.*$//}= ${_${def:C/=.*$//}_CMD: . endfor .endif -PREPEND_PATH?= # empty -.if !empty(PREPEND_PATH) +.if !defined(_PATH_ORIG) +_PATH_ORIG:= ${PATH} +MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q} + # This is very Special. Because PREPEND_PATH is set with += in reverse order, # the awk expression reverses the order again (since bootstrap bmake doesn't # yet support the :[-1..1] construct). -_PATH_CMD= ${ECHO} `${ECHO} ${PREPEND_PATH:Q} | ${AWK} '{for (i=NF;i>0;i--) print $$i}'`:${_PATH_ORIG} | ${TR} ' ' : +_PATH_CMD= ${ECHO} `${ECHO} ${PREPEND_PATH:Q} | ${AWK} '{ORS=":";for (i=NF;i>0;i--) print $$i}'`${_PATH_ORIG} PATH= ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation .endif @@ -2723,7 +2735,7 @@ check-shlibs: ${SHCOMMENT} Might not error-out for non-pkg-developers; \ exit 1; \ fi -.endif # NO_PKG_REGISTER +.endif # !NO_PKG_REGISTER # CHECK_FILES_SKIP is a list of file names that will be skipped when # analyzing file lists in the check-files target. This is useful to @@ -2750,13 +2762,8 @@ CHECK_FILES_SKIP+= ${d} .for d o g m in ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS} CHECK_FILES_SKIP+= ${d} .endfor -.undef e c d o g m -CHECK_FILES_SKIP_CMD= -.for name in ${CHECK_FILES_SKIP} -CHECK_FILES_SKIP_CMD+= | ${GREP} -v ${name} -.endfor -.undef name +CHECK_FILES_SKIP_CMD= | ${GREP} -v ${CHECK_FILES_SKIP:@f@-e ${f:Q}@} # Check if the generated PLIST matches the list of really installed files. # @@ -3404,30 +3411,8 @@ MAKE_ENV+= VIEWBASE=${VIEWBASE} PKGVIEWS+= ${DEFAULT_VIEW.${PKGBASE}} -# Fake installation of package so that user can pkg_delete it later. -# Also, make sure that an installed package is recognized correctly in -# accordance to the @pkgdep directive in the packing lists. - -.PHONY: fake-pkg -fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} - ${_PKG_SILENT}${_PKG_DEBUG} \ - if [ ! -f ${PLIST} -o ! -f ${DESCR} ]; then \ - ${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \ - exit 1; \ - fi - ${_PKG_SILENT}${_PKG_DEBUG} \ - if [ ! -d ${_PKG_DBDIR} ]; then \ - ${RM} -f ${_PKG_DBDIR}; \ - ${MKDIR} ${_PKG_DBDIR}; \ - fi -.if defined(FORCE_PKG_REGISTER) - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} delete ${PKGNAME} -. if ${PKG_INSTALLATION_TYPE} == "overwrite" - ${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${_PKG_DBDIR}/${PKGNAME} -. endif -.endif - ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_VERSION_FILE} ${BUILD_INFO_FILE} - ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE} +.PHONY: pre-install-fake-pkg +pre-install-fake-pkg: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PRESERVE_FILE} .if defined(PKG_PRESERVE) ${_PKG_SILENT}${_PKG_DEBUG}${DATE} > ${PRESERVE_FILE} @@ -3456,6 +3441,7 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} done; \ fi; \ eval ${GREP} '\$$NetBSD' $$files | ${SED} -e 's|^${PKGSRCDIR}/||' > ${BUILD_VERSION_FILE} + ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_INFO_FILE} .for def in ${BUILD_DEFS} ${BUILD_DEFS_FIXED} @${ECHO} ${def}=${${def}:Q} | ${SED} -e 's|^PATH=[^ ]*|PATH=...|' >> ${BUILD_INFO_FILE} .endfor @@ -3468,6 +3454,59 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} .if !empty(USE_GNU_TOOLS:Mmake) @${ECHO} "GMAKE=`${GMAKE} --version | ${GREP} Make`" >> ${BUILD_INFO_FILE} .endif + ${_PKG_SILENT}${_PKG_DEBUG} \ + ${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE} + +.PHONY: post-install-fake-pkg +post-install-fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -f ${PLIST} -o ! -f ${DESCR} ]; then \ + ${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \ + exit 1; \ + fi + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -d ${_PKG_DBDIR} ]; then \ + ${RM} -f ${_PKG_DBDIR}; \ + ${MKDIR} ${_PKG_DBDIR}; \ + fi +.if defined(FORCE_PKG_REGISTER) + ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} delete ${PKGNAME} +.endif + ${_PKG_SILENT}${_PKG_DEBUG} \ + ${ECHO} ${COMMENT:Q} > ${PKG_DB_TMPDIR}/+COMMENT + ${_PKG_SILENT}${_PKG_DEBUG} \ + case "${DESCR}" in \ + ${PKG_DB_TMPDIR}/*|"") ;; \ + *) if ${TEST} -f ${DESCR}; then \ + ${CP} ${DESCR} ${PKG_DB_TMPDIR}/+DESC; \ + fi ;; \ + esac + ${_PKG_SILENT}${_PKG_DEBUG} \ + case "${MESSAGE}" in \ + ${PKG_DB_TMPDIR}/*|"") ;; \ + *) if ${TEST} -f ${MESSAGE}; then \ + ${CP} ${MESSAGE} ${PKG_DB_TMPDIR}/+DISPLAY; \ + fi ;; \ + esac + ${_PKG_SILENT}${_PKG_DEBUG} \ + case ${PKG_INSTALLATION_TYPE} in \ + pkgview) ${TOUCH} ${PKG_DB_TMPDIR}/+VIEWS ;; \ + esac + ${_PKG_SILENT}${_PKG_DEBUG} \ + case "${INSTALL_FILE}" in \ + ${PKG_DB_TMPDIR}/*|"") ;; \ + *) if ${TEST} -f ${INSTALL_FILE}; then \ + ${CP} ${INSTALL_FILE} ${PKG_DB_TMPDIR}/+INSTALL; \ + fi ;; \ + esac + ${_PKG_SILENT}${_PKG_DEBUG} \ + case "${DEINSTALL_FILE}" in \ + ${PKG_DB_TMPDIR}/*|"") ;; \ + *) if ${TEST} -f ${DEINSTALL_FILE}; then \ + ${CP} ${DEINSTALL_FILE} ${PKG_DB_TMPDIR}/+DEINSTALL; \ + fi ;; \ + esac + ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE} .if ${SHLIB_HANDLING} == "YES" && ${CHECK_SHLIBS} == "YES" ${_PKG_SILENT}${_PKG_DEBUG} \ case "${LDD}" in \ @@ -3506,12 +3545,17 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} done .endif ${_PKG_SILENT}${_PKG_DEBUG} \ - ${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE} - ${_PKG_SILENT}${_PKG_DEBUG} \ size_this=`${MAKE} ${MAKEFLAGS} print-pkg-size-this`; \ size_depends=`${MAKE} ${MAKEFLAGS} print-pkg-size-depends`; \ ${ECHO} $$size_this >${SIZE_PKG_FILE}; \ ${ECHO} $$size_this $$size_depends + p | ${DC} >${SIZE_ALL_FILE} + +# Fake installation of package so that user can pkg_delete it later. +# Also, make sure that an installed package is recognized correctly in +# accordance to the @pkgdep directive in the packing lists. +# +.PHONY: register-pkg +register-pkg: post-install-fake-pkg ${_PKG_SILENT}${_PKG_DEBUG} \ doit=yes; \ case ${PKG_INSTALLATION_TYPE} in \ @@ -3522,39 +3566,7 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} case $$doit in \ yes) \ ${ECHO_MSG} "${_PKGSRC_IN}> Registering installation for ${PKGNAME}"; \ - ${MKDIR} ${_PKG_DBDIR}/${PKGNAME}; \ - ${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${_PKG_DBDIR}/${PKGNAME}/+CONTENTS; \ - ${CP} ${DESCR} ${_PKG_DBDIR}/${PKGNAME}/+DESC; \ - ${ECHO} ${COMMENT:Q} > ${_PKG_DBDIR}/${PKGNAME}/+COMMENT; \ - ${CP} ${BUILD_VERSION_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_VERSION; \ - ${CP} ${BUILD_INFO_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_INFO; \ - if ${TEST} -f ${SIZE_PKG_FILE}; then \ - ${CP} ${SIZE_PKG_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_PKG; \ - fi ; \ - if ${TEST} -f ${SIZE_ALL_FILE}; then \ - ${CP} ${SIZE_ALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_ALL; \ - fi ; \ - if ${TEST} -f ${PRESERVE_FILE}; then \ - ${CP} ${PRESERVE_FILE} ${_PKG_DBDIR}/${PKGNAME}/+PRESERVE; \ - fi ; \ - if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" ]; then \ - ${TOUCH} ${_PKG_DBDIR}/${PKGNAME}/+VIEWS; \ - fi ; \ - if [ -n "${INSTALL_FILE}" ]; then \ - if ${TEST} -f ${INSTALL_FILE}; then \ - ${CP} ${INSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+INSTALL; \ - fi; \ - fi; \ - if [ -n "${DEINSTALL_FILE}" ]; then \ - if ${TEST} -f ${DEINSTALL_FILE}; then \ - ${CP} ${DEINSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \ - fi; \ - fi; \ - if [ -n "${MESSAGE}" ]; then \ - if ${TEST} -f ${MESSAGE}; then \ - ${CP} ${MESSAGE} ${_PKG_DBDIR}/${PKGNAME}/+DISPLAY; \ - fi; \ - fi; \ + ${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${PKG_DB_TMPDIR}/+CONTENTS; \ list="`${MAKE} ${MAKEFLAGS} run-depends-list ECHO_MSG=${TRUE} | ${SORT} -u`" ; \ for realdep in `${ECHO} $$list | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} | ${SORT} -u`; do \ if ${TEST} -z "$$realdep"; then \ @@ -3571,7 +3583,13 @@ fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} ${MV} ${_PKG_DBDIR}/$$realdep/reqby.$$$$ ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \ ${ECHO} "${PKGNAME} requires installed package $$realdep"; \ fi; \ - done ;; \ + done; \ + case ${PKG_INSTALLATION_TYPE} in \ + overwrite) ${RM} -rf ${_PKG_DBDIR}/${PKGNAME} ;; \ + esac; \ + ${MKDIR} ${_PKG_DBDIR}/${PKGNAME}; \ + ${CP} ${PKG_DB_TMPDIR}/+* ${_PKG_DBDIR}/${PKGNAME}; \ + ;; \ esac .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && \ !empty(BUILD_VIEWS:M[yY][eE][sS])