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.
104 lines
3.2 KiB
Makefile
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}
|