From owner-freebsd-ports@FreeBSD.ORG Sun May 15 21:49:56 2011 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E8729106564A for ; Sun, 15 May 2011 21:49:55 +0000 (UTC) (envelope-from ohauer@gmx.de) Received: from mailout-de.gmx.net (mailout-de.gmx.net [213.165.64.22]) by mx1.freebsd.org (Postfix) with SMTP id 6DC858FC15 for ; Sun, 15 May 2011 21:49:55 +0000 (UTC) Received: (qmail invoked by alias); 15 May 2011 21:23:14 -0000 Received: from u18-124.dslaccess.de (EHLO [172.20.1.100]) [194.231.39.124] by mail.gmx.net (mp018) with SMTP; 15 May 2011 23:23:14 +0200 X-Authenticated: #1956535 X-Provags-ID: V01U2FsdGVkX1+ebVQ4ieKe8Y6pODEPGYoHMNfNKHyS8MMZFYalUa PmL8Q/U4pkt7h+ Message-ID: <4DD0444B.7040600@gmx.de> Date: Sun, 15 May 2011 23:23:23 +0200 From: olli hauer User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: utisoft@gmail.com References: In-Reply-To: X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 Cc: ports@freebsd.org, portmgr@freebsd.org Subject: Re: Propose new macro: INSTALL_CONF X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 May 2011 21:49:56 -0000 On 2011-05-15 22:56, Chris Rees wrote: > On 14 May 2011 18:32, Chris Rees wrote: >> On 14 May 2011 16:39, Chris Rees 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 > Hm, until now I just overwrite the mode during install ${INSTALL} or ${INSTALL_DATA} -m 644 and for sensitive config files ${INSTALL} or ${INSTALL_DATA} -m 640 -o ... -g ... For config dirs (in the Makefile) PLIST_DIRSTRY= %%ETCDIR%% This seems easier to me.