pkgsrc/mk/misc/developer.mk
gdt 6e460feeda Add wiz's request, add a changes-entry-noupdate that has the old
behavior of just appending to the file without cvs update (or cvs edit
if not writable), for the convenience of those committing multiple
package updates at once.  To implement this, split the
update/cat/commit into elementary targets and compose them to form the
user-exposed targets, spiff up the comments, and rationalize .PHONY
usage.
2007-08-02 11:52:14 +00:00

104 lines
3.2 KiB
Makefile

# $NetBSD: developer.mk,v 1.9 2007/08/02 11:52:14 gdt Exp $
#
# Public targets for developers:
#
# changes-entry-noupdate:
# Appends a correctly-formatted entry to the pkgsrc CHANGES file.
# The CHANGES file is presumed to be up to date and writable.
# Note that the first assumption is often wrong and that the
# second is wrong for those that set CVSREAD.
#
# Command-line variables:
#
# CTYPE
# The type of entry to add. Must be one of "Added",
# "Updated", "Renamed", "Moved", or "Removed".
# The default is "Updated".
#
# TO
# When a package is renamed, this is the new name of the
# package.
#
# NETBSD_LOGIN_NAME
# The login name assigned by the NetBSD Project.
# The default is the local login name.
#
# PKGSRC_CHANGES
# The path to the CHANGES file to which the entry
# is appended.
# The default is ${PKGSRCDIR}/doc/CHANGES-YYYY.
#
# Example usage:
# % cd /usr/pkgsrc/category/package
# % make changes-entry CTYPE=Added
#
# changes-entry:
# Like changes-entry-noupdate, plus the CHANGES file is updated,
# and if not writable, "cvs edit" is done.
#
# commit-changes-entry cce:
# Like changes-entry, plus the CHANGES file is committed.
CTYPE?= Updated
NETBSD_LOGIN_NAME?= ${_NETBSD_LOGIN_NAME_cmd:sh}
PKGSRC_CHANGES_DIR= ${PKGSRCDIR}/doc/
PKGSRC_CHANGES_BASE= CHANGES-${_CYEAR_cmd:sh}
PKGSRC_CHANGES?= ${PKGSRC_CHANGES_DIR}/${PKGSRC_CHANGES_BASE}
_CYEAR_cmd= ${DATE} -u +%Y
_CDATE_cmd= ${DATE} -u +%Y-%m-%d
_NETBSD_LOGIN_NAME_cmd= ${ID} -nu
.if ${CTYPE} == "Updated"
_CE_MSG1= Updated ${PKGPATH} to ${PKGVERSION}
.elif ${CTYPE} == "Removed"
_CE_MSG1= Removed ${PKGPATH}
.elif ${CTYPE} == "Added"
_CE_MSG1= Added ${PKGPATH} version ${PKGVERSION}
.elif ${CTYPE} == "Renamed" || ${CTYPE} == "Moved"
. if defined(TO)
. if exists(${PKGSRCDIR}/${TO})
_CE_MSG1= ${CTYPE} ${PKGPATH} to ${TO}
. else
_CE_ERRORS+= "[developer.mk] The package ${TO} does not exist."
. endif
. else
_CE_ERRORS+= "[developer.mk] The TO variable must be set."
. endif
.else
_CE_ERRORS+= "[developer.mk] Invalid value "${CTYPE:Q}" for CTYPE."
.endif
_CE_MSG2= [${NETBSD_LOGIN_NAME} ${_CDATE_cmd:sh}]
_CE_MSG= ${_CE_MSG1} ${_CE_MSG2}
# Targets for the update, add, commit elementary operations.
changes-entry-update: .PHONY ce-error-check
@${STEP_MSG} "Updating ${PKGSRC_CHANGES:T}"
${RUN} cd ${PKGSRC_CHANGES_DIR} && cvs update ${PKGSRC_CHANGES:T}
${RUN} cd ${PKGSRC_CHANGES_DIR} && test -w ${PKGSRC_CHANGES:T} || cvs edit ${PKGSRC_CHANGES:T}
changes-entry-add: .PHONY ce-error-check
@${STEP_MSG} "Adding the change"
${RUN} ${ECHO} " "${_CE_MSG:Q} >> ${PKGSRC_CHANGES}
changes-entry-commit: .PHONY ce-error-check
@${STEP_MSG} "Committing the change"
${RUN} cd ${PKGSRC_CHANGES_DIR} && cvs commit -m ${_CE_MSG1:Q} ${PKGSRC_CHANGES:T}
ce-error-check: .PHONY
.if defined(_CE_ERRORS) && !empty(_CE_ERRORS:M*)
${RUN} for msg in ${_CE_ERRORS}; do ${ERROR_MSG} "$$msg"; done; exit 1
.else
@${DO_NADA}
.endif
# Public targets
changes-entry-noupdate: .PHONY ce-error-check changes-entry-add
@${DO_NADA}
changes-entry: .PHONY ce-error-check changes-entry-update changes-entry-add
@${DO_NADA}
commit-changes-entry cce: .PHONY ce-error-check changes-entry-update changes-entry-add changes-entry-commit
@${DO_NADA}