Propose new macro: INSTALL_CONF

Chris Rees utisoft at
Sun May 15 20:56:57 UTC 2011

On 14 May 2011 18:32, Chris Rees <utisoft at> wrote:
> On 14 May 2011 16:39, Chris Rees <utisoft at> wrote:
>> Hi all,
>> I'm getting frustrated with editing config files of ports in vi, and
>> being told it's read-only.
>> This stops me using ZZ to quit, which makes me sad.
>> It's also inconsistent with src/etc/Makefile which uses for example:
>> .if ${MK_OPENSSH} != "no"
>>        cd ${.CURDIR}; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \
>>            ${SSH} ${DESTDIR}/etc/ssh
>> .endif
>> The problem stems from installing .sample files as DATA, and then using
>> cp -p preserving the -w bits --> 444 makes perfect sense for a .sample file,
>> but not at all for a config file.
>> I have two options proposed.
>> For both introduce CONFMODE into src/share/mk/, patch for
>> which is at [1].
>> Option 1: Rewrite the Porter's Handbook section on config files to use
>> a macro involving CONFMODE instead of cp -p, which gets complicated
>> when using with @exec in pkg-plist
>> Option 2: Create an INSTALL_CONF macro, which handles the .conf.sample
>> -> .conf automagically and sticks the right lines into TMPPLIST.
>> I'm swinging towards Option 2, but I haven't written the code for that
>> yet in case someone shoots me down :P
>> Any concerns about inconsistencies between the INSTALL_* macros could
>> be addressed by calling it something different; I'm open to
>> suggestions!
>> We'd also need to deal with the MFC and subsequent updates of
>> Chris
>> [1]
> A third option has occurred to me:
> Create a new variable USE_CONF_FILES to work in a similar vein to USE_RC_SUBR...

Right, I've fleshed this out with some real code.

New variables: CONF_FILES and CONF_DIRS.

CONF_FILES is like *_DEPENDS as a colon-separated field:

CONF_FILES=   absolute_path_to_source_file:prefix_relative_path_to_target_file

CONF_DIRS=    dirs to add with @dirrmtry behaviour, in correct order.

Of course, CONF_FILES clashes with some other ports, so before
importing this we'd need to shift those aside / choose a different
name for this variable.

Patch to at [1], and a sample patch to net/opentracker [2]
with syntax.

Try it out with ${FAVOURITE_PORT}!

I also promise to document it (if approved) in the Porter's Handbook,
code it into portlint and maintain the code as well as take flak from

Feedback very welcome.




More information about the freebsd-ports mailing list