Date: Sun, 15 May 2011 23:12:36 +0100 From: Chris Rees <utisoft@gmail.com> To: olli hauer <ohauer@gmx.de> Cc: ports@freebsd.org Subject: Re: Propose new macro: INSTALL_CONF Message-ID: <BANLkTinQh3GEQ7mYUd4ApNwYs%2B95=xsUiQ@mail.gmail.com> In-Reply-To: <4DD0444B.7040600@gmx.de> References: <BANLkTimYjuzp%2BV%2Bpi4bpOUv=uwe9UqjmGA@mail.gmail.com> <BANLkTikRxcqbvhyyryxyvt__4eeFSa-siQ@mail.gmail.com> <BANLkTi=ngB4iayhSB5rUziXH=iBPt0Nn1w@mail.gmail.com> <4DD0444B.7040600@gmx.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On 15 May 2011 22:23, olli hauer <ohauer@gmx.de> wrote: > On 2011-05-15 22:56, Chris Rees 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 = 644 \ >>>> =A0 =A0 =A0 =A0 =A0 =A0${SSH} ${DESTDIR}/etc/ssh >>>> .endif >>>> >>>> The problem stems from installing .sample files as DATA, and then usin= g >>>> 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_R= C_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_t= arget_file >> >> CONF_DIRS=3D =A0 =A0dirs to add with @dirrmtry behaviour, in correct ord= er. >> >> 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 >> > > > Hm, until now I just overwrite the mode during install > ${INSTALL} or ${INSTALL_DATA} -m 644 Is this the Right Thing though, or a hack around missing code? You've just hardcoded a mode in that people might not like. Also, do you install the .sample like that, or do you use it to copy the .sample to the actual config file? .sample files shouldn't be +w. What do you put in pkg-plist? > and for sensitive config files > ${INSTALL} or ${INSTALL_DATA} -m 640 -o ... -g ... > For config dirs (in the Makefile) > PLIST_DIRSTRY=3D =A0%%ETCDIR%% This I'll concede! > This seems easier to me. It certainly doesn't seem easier to me; instead of: CONF_FILES=3D source:dest you still have to have a post-install bit, an @exec line in pkg-plist with weird hieroglyphs, and an @unexec line _for each config file installed_ Can anyone explain why we bend over backwards to make ports DATADIR-safe for example but completely ignore the user's preferences with config files??? I just don't understand how the priority lies here. Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTinQh3GEQ7mYUd4ApNwYs%2B95=xsUiQ>