summaryrefslogtreecommitdiff
path: root/mk/misc
diff options
context:
space:
mode:
authorrillig <rillig>2009-07-26 21:36:38 +0000
committerrillig <rillig>2009-07-26 21:36:38 +0000
commit6fcb319d048e149756753fe16f00f720118fbb4b (patch)
treeba76141fc54e2ec9f4b33d08726c2c0cd8eccc97 /mk/misc
parentb5c2fdd9e2fd97147994dd8a1242fc2cd11bf820 (diff)
downloadpkgsrc-6fcb319d048e149756753fe16f00f720118fbb4b.tar.gz
Added an experimental target "import" that makes it easier to import
packages from pkgsrc-wip and other sources.
Diffstat (limited to 'mk/misc')
-rw-r--r--mk/misc/import.mk108
1 files changed, 108 insertions, 0 deletions
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