Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 May 2011 20:08:27 +0100
From:      Chris Rees <utisoft@gmail.com>
To:        ports@freebsd.org
Cc:        portmgr@freebsd.org
Subject:   Re: Propose new macro: INSTALL_CONF
Message-ID:  <BANLkTi=ttn_ZHrHJUQMOL6eVR=8fjZspVw@mail.gmail.com>
In-Reply-To: <BANLkTi=ngB4iayhSB5rUziXH=iBPt0Nn1w@mail.gmail.com>
References:  <BANLkTimYjuzp%2BV%2Bpi4bpOUv=uwe9UqjmGA@mail.gmail.com> <BANLkTikRxcqbvhyyryxyvt__4eeFSa-siQ@mail.gmail.com> <BANLkTi=ngB4iayhSB5rUziXH=iBPt0Nn1w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 15 May 2011 21:56, Chris Rees <utisoft@gmail.com> wrote:
> On 14 May 2011 18:32, Chris Rees <utisoft@gmail.com> wrote:
>> On 14 May 2011 16:39, Chris Rees <utisoft@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} !=3D "no"
>>> =A0 =A0 =A0 =A0cd ${.CURDIR}; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 6=
44 \
>>> =A0 =A0 =A0 =A0 =A0 =A0${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.m=
k...
>>>
>>> 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=3D =A0 absolute_path_to_source_file:prefix_relative_path_to_ta=
rget_file
>
> CONF_DIRS=3D =A0 =A0dirs to add with @dirrmtry behaviour, in correct orde=
r.
>
> 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=3D  ${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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTi=ttn_ZHrHJUQMOL6eVR=8fjZspVw>