Propose new macro: INSTALL_CONF

Chris Rees utisoft at gmail.com
Mon May 16 19:08:59 UTC 2011


On 15 May 2011 21:56, Chris Rees <utisoft at gmail.com> wrote:
> On 14 May 2011 18:32, Chris Rees <utisoft at gmail.com> wrote:
>> On 14 May 2011 16:39, Chris Rees <utisoft at gmail.com> 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/bsd.own.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 bsd.own.mk...
>>>
>>> Chris
>>>
>>> [1] http://www.bayofrum.net/~crees/patches/bsd-own-mk-confmode.patch
>>
>> 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 bsd.port.mk 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
> porters!
>
> Feedback very welcome.
>
> Chris
>
> [1] http://www.bayofrum.net/~crees/patches/bsd-port-mk-conf-files.patch
>
> [2] http://www.bayofrum.net/~crees/patches/opentracker_conf_example.patch

Having spoken to bapt@ on IRC, I've added an ability to glob:

CONF_FILES=  ${WRKSRC}/conf_dir/*.conf:etc/${PORTNAME}/

If you're leaving off the destination filename (obviously necessary
when globbing), leave a trailing slash on the destination dir and the
corresponding filename will be put in for you.

I've also changed .sample to .pkgconf to be more consistent with pkgng.

New patch at [1].

I'm sorry if the code is a bit distasteful, if anyone wants to improve
it they're welcome!

Chris

[1] http://www.bayofrum.net/~crees/patches/bsd-port-mk-conf-files-globbing.patch


More information about the freebsd-ports mailing list