pkgsrc/mk/misc/import.mk
rillig 99fbe40af6 Added an experimental target "import" that makes it easier to import
packages from pkgsrc-wip and other sources.
2009-07-26 21:36:38 +00:00

108 lines
3.4 KiB
Makefile

# $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