diff options
author | rillig <rillig@pkgsrc.org> | 2009-07-26 21:36:38 +0000 |
---|---|---|
committer | rillig <rillig@pkgsrc.org> | 2009-07-26 21:36:38 +0000 |
commit | 4cd18ecd7335bc490f50904696b1c6bb408a3015 (patch) | |
tree | ba76141fc54e2ec9f4b33d08726c2c0cd8eccc97 /mk | |
parent | cb8d884826e39b9519c30b812e6d7df07334ca04 (diff) | |
download | pkgsrc-4cd18ecd7335bc490f50904696b1c6bb408a3015.tar.gz |
Added an experimental target "import" that makes it easier to import
packages from pkgsrc-wip and other sources.
Diffstat (limited to 'mk')
-rw-r--r-- | mk/bsd.pkg.mk | 5 | ||||
-rw-r--r-- | mk/misc/import.mk | 108 |
2 files changed, 112 insertions, 1 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index ef2c64d621f..faac49c14c5 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1957 2009/05/26 06:03:02 obache Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1958 2009/07/26 21:36:38 rillig Exp $ # # This file is in the public domain. # @@ -801,4 +801,7 @@ ${_MAKEVARS_MK.${_phase_}}: ${WRKDIR} . include "bsd.pkg.debug.mk" .endif .include "misc/warnings.mk" +.if make(import) +.include "misc/import.mk" +.endif .include "misc/can-be-built-here.mk" diff --git a/mk/misc/import.mk b/mk/misc/import.mk new file mode 100644 index 00000000000..f3892cf297f --- /dev/null +++ b/mk/misc/import.mk @@ -0,0 +1,108 @@ +# $NetBSD: import.mk,v 1.1 2009/07/26 21:36:38 rillig Exp $ +# + +# import: +# Imports a package from the outside into pkgsrc. +# +# Command line parameters: +# +# FROM (optional when you are in a pkgsrc-wip package) +# The source where the package comes from. A common value +# is "pkgsrc-wip" or an empty string. +# +# CATEGORY +# The main category of the package. This is where the package +# gets imported. +# +# BY (optional) +# The name or mail address of the original package builder. +# This is used in the commit message. +# +# NETBSD_LOGIN_NAME +# The name of your account on cvs.NetBSD.org. Is used for +# recording the change in doc/CHANGES. +# +# keywords: wip pkgsrc-wip +# + +_IMPORT_ERRORS= # none + +_IMPORT_FROM= # nothing but a leading space +.if defined(FROM) && !empty(FROM) +_IMPORT_FROM+= from ${FROM} +.elif !empty(PKGPATH:Mwip/*) +_IMPORT_FROM+= from pkgsrc-wip +.else +_IMPORT_ERRORS+= "[import.mk] You must set FROM." +.endif +.if ${CATEGORY:U} == "" +_IMPORT_ERRORS+= "[import.mk] You must set CATEGORY." +.endif +.if exists(${.CURDIR}/TODO) +_IMPORT_ERRORS+= "[import.mk] Don't import packages that have something TODO." +.endif +.if exists(${PKGSRCDIR}/${CATEGORY:Unonexistent}/${PKGPATH:T}/Makefile) +_IMPORT_ERRORS+= "[import.mk] The package ${CATEGORY}/${PKGPATH:T} already exists." +.endif +.if ${_EXPERIMENTAL} != "yes" +_IMPORT_ERRORS+= "[import.mk] The \"import\" target is experimental." +.endif + +_IMPORT_YEAR!= date -u +%Y +_IMPORT_TODAY!= date -u +%Y-%m-%d +_IMPORT_CHANGES= ${PKGSRCDIR}/doc/CHANGES-${_IMPORT_YEAR} + +.PHONY: import _import-check _import-import _import-add-change _import-remove +import: _import-check _import-import _import-add-change _import-remove + +_import-check: +.if !empty(_IMPORT_ERRORS) + ${RUN} ${_IMPORT_ERRORS:@e@ ${ERROR_MSG} ${e:Q}; @} ${FALSE} +.endif + ${RUN} pkglint --import -Wall + +_import-import: + @${STEP_MSG} "Importing ${PKGNAME}." + ${RUN} \ + import_msg=`set -e; \ + { ${ECHO} "Imported ${PKGBASE}${_IMPORT_FROM}."; \ + ${ECHO} ""; \ + ${CAT} DESCR; \ + case ${BY:Q}"" in \ + "") ;; \ + *) ${ECHO} ""; ${ECHO} "Packaged by ${BY}.";; \ + esac; \ + }`; \ + cvs -d cvs.netbsd.org:/cvsroot import \ + -m "$$import_msg" \ + pkgsrc/${CATEGORY}/${PKGPATH:T} \ + TNF pkgsrc-base; \ + ${RM} -f "$$import_msg" + +_import-add-change: + @${STEP_MSG} "Adding CHANGES entry." + ${RUN} cd ${PKGSRCDIR}/doc && cvs update ${_IMPORT_CHANGES:T} + ${RUN} printf "\\tAdded %s version %s [%s %s]\\n" \ + ${CATEGORY}/${PKGPATH:T} ${PKGVERSION} \ + ${NETBSD_LOGIN_NAME} ${_IMPORT_TODAY} \ + >> ${_IMPORT_CHANGES} + ${RUN} cd ${PKGSRCDIR}/doc && cvs commit \ + -m "Imported ${CATEGORY}/${PKGPATH:T}${_IMPORT_FROM}." \ + ${_IMPORT_CHANGES:T} + @${STEP_MSG} "Loading the new package from CVS." + ${RUN} cd ${PKGSRCDIR}/${CATEGORY} && cvs update Makefile ${PKGPATH:T} + @${STEP_MSG} "Adding the package to the category Makefile." + ${RUN} cd ${PKGSRCDIR}/${CATEGORY} && (pkglint -F >/dev/null || ${TRUE}) && pkglint -q + @${STEP_MSG} "Committing the modified category Makefile." + ${RUN} cd ${PKGSRCDIR}/${CATEGORY} && cvs commit -m "Added ${PKGPATH:T}." Makefile + +_IMPORT_REMOVE_FILES!= ls -d * patches/* files/* 2>/dev/null || ${TRUE} +_IMPORT_REMOVE_FILES:= ${_IMPORT_REMOVE_FILES:NCVS:N*/CVS} +_import-remove: + ${RUN} \ + case ${PKGPATH} in \ + wip/*) \ + ${STEP_MSG} "Removing ${PKGNAME} from pkgsrc-wip."; \ + cvs rm -f ${_IMPORT_REMOVE_FILES}; \ + cvs commit -m "Imported into pkgsrc as ${CATEGORY}/${PKGBASE}.";; \ + esac |