- Add a @sample plist keyword
It accepts a file (must end in .sample, this is not configurable):
@sample file.conf.sample
This will install file.conf.sample and copy it to file.conf. The file.conf
will be removed if it matches file.conf.sample on deinstall.
This replaces older patterns of:
@unexec if cmp -s %D/etc/pkgtools.conf %D/etc/pkgtools.conf.sample; then rm -f %D/etc/pkgtools.conf; fi
etc/pkgtools.conf.sample
@exec [ -f %B/pkgtools.conf ] || cp %B/%f %B/pkgtools.conf
[1] This somewhat obsoletes work in ports/157168 which added CONF_FILES,
but we have been moving towards more logic in pkg-plist where possible
and less magical macros. Though this thinking does clash with autoplist
ideas. We may still want CONF_FILES, which just drops a list of
@sample entries into the plist anyway.
- Add a Keywords/pkg_install.awk and hook it into generate-plist. This is
for pkg_install compatibility since it does not know how to read
Keywords/sample.yaml.
This file gives us a strategy to implement more keywords before
pkg_install is EOL.
Keywords are documented here:
bffc31420b
- This needs to be documented in PH and portlint support added still.
PR: ports/157168 [1]
Discussed with: bapt
Reviewed by: bapt
Requested by: many
With hat: portmgr
This commit is contained in:
parent
94e8164d5c
commit
4070b12551
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=351064
17
CHANGES
17
CHANGES
@ -10,6 +10,23 @@ in the release notes and/or placed into UPDATING.
|
||||
|
||||
All ports committers are allowed to commit to this file.
|
||||
|
||||
20140411:
|
||||
AUTHOR: bdrewery@FreeBSD.org
|
||||
|
||||
A new plist keyword has been added, @sample. It accepts a file (must end in
|
||||
.sample):
|
||||
|
||||
@sample file.conf.sample
|
||||
|
||||
This will install file.conf.sample and copy it to file.conf. The file.conf
|
||||
will be removed if it matches file.conf.sample on deinstall.
|
||||
|
||||
This replaces older patterns of:
|
||||
|
||||
@unexec if cmp -s %D/etc/pkgtools.conf %D/etc/pkgtools.conf.sample; then rm -f %D/etc/pkgtools.conf; fi
|
||||
etc/pkgtools.conf.sample
|
||||
@exec [ -f %B/pkgtools.conf ] || cp %B/%f %B/pkgtools.conf
|
||||
|
||||
20140312:
|
||||
AUTHOR: bapt@FreeBSD.org
|
||||
|
||||
|
31
Keywords/pkg_install.awk
Normal file
31
Keywords/pkg_install.awk
Normal file
@ -0,0 +1,31 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# MAINTAINER: portmgr@FreeBSD.org
|
||||
#
|
||||
# This file handles converting keywords to pkg_install compatible format.
|
||||
# It will be removed once pkg_install is EOL.
|
||||
#
|
||||
|
||||
# @sample somefile.conf.sample
|
||||
# ->
|
||||
# @comment begin @sample somefile.conf.sample
|
||||
# @unexec if cmp -s %D/etc/somefile.conf %D/etc/somefile.conf.sample; then rm -f %D/etc/somefile.conf; fi
|
||||
# etc/somefile.conf.sample
|
||||
# @exec if ! [ -f %D/etc/somefile.conf ]; then cp %D/etc/somefile.conf.sample %D/etc/somefile.conf; fi
|
||||
# @comment end @sample somefile.conf.sample
|
||||
#
|
||||
$1 == "@sample" {
|
||||
sample_file=$2
|
||||
# Take out .sample
|
||||
target_file=substr(sample_file, 0, length(sample_file) - 7)
|
||||
print "@comment begin " $0
|
||||
print "@unexec if cmp -s '%D/" target_file "' '%D/" sample_file "'; then rm -f '%D/" target_file "'; fi"
|
||||
print sample_file
|
||||
print "@exec if ! [ -f '%D/" target_file "' ]; then /bin/cp -p '%D/" sample_file "' '%D/" target_file "'; fi"
|
||||
print "@comment end " $0
|
||||
next
|
||||
}
|
||||
# Print everything else as-is
|
||||
{
|
||||
print $0
|
||||
}
|
29
Keywords/sample.yaml
Normal file
29
Keywords/sample.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# MAINTAINER: portmgr@FreeBSD.org
|
||||
#
|
||||
# @sample etc/somefile.conf.sample
|
||||
#
|
||||
# This will install the somefile.conf.sample and automatically copy to
|
||||
# somefile.conf if it doesn't exist. On deinstall it will remove the
|
||||
# somefile.conf if it still matches the sample, otherwise it is
|
||||
# kept.
|
||||
#
|
||||
# This replaces the old pattern:
|
||||
# @unexec if cmp -s %D/etc/pkgtools.conf %D/etc/pkgtools.conf.sample; then rm -f %D/etc/pkgtools.conf; fi
|
||||
# etc/pkgtools.conf.sample
|
||||
# @exec [ -f %B/pkgtools.conf ] || cp %B/%f %B/pkgtools.conf
|
||||
|
||||
actions: [file]
|
||||
post-install: |
|
||||
sample_file="%D/%@"
|
||||
target_file="${sample_file%.sample}"
|
||||
if ! [ -f "${target_file}" ]; then
|
||||
/bin/cp -p "${sample_file}" "${target_file}"
|
||||
fi
|
||||
pre-deinstall: |
|
||||
sample_file="%D/%@"
|
||||
target_file="${sample_file%.sample}"
|
||||
if cmp -s "${target_file}" "${sample_file}"; then
|
||||
rm -f "${target_file}"
|
||||
fi
|
@ -1405,6 +1405,7 @@ ETCDIR?= ${PREFIX}/etc/${PORTNAME}
|
||||
|
||||
PACKAGES?= ${PORTSDIR}/packages
|
||||
TEMPLATES?= ${PORTSDIR}/Templates
|
||||
KEYWORDS?= ${PORTSDIR}/Keywords
|
||||
|
||||
PATCHDIR?= ${MASTERDIR}/files
|
||||
FILESDIR?= ${MASTERDIR}/files
|
||||
@ -5625,6 +5626,8 @@ generate-plist:
|
||||
.endif
|
||||
.if !defined(WITH_PKGNG)
|
||||
@cd ${.CURDIR} && { ${MAKE} pretty-print-config | fold -sw 120 | ${SED} -e 's/^/@comment OPTIONS:/'; } >> ${TMPPLIST}
|
||||
@${AWK} -f ${KEYWORDS}/pkg_install.awk ${TMPPLIST} > ${TMPPLIST}.keyword && \
|
||||
${MV} -f ${TMPPLIST}.keyword ${TMPPLIST}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user