4070b12551
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
31 lines
1,011 B
Awk
31 lines
1,011 B
Awk
# $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
|
|
}
|