This construction doesn't work

Paul Schmehl pschmehl_lists at tx.rr.com
Tue Jun 29 18:49:47 UTC 2010


--On Tuesday, June 29, 2010 09:02:35 -0500 Scot Hetzel <swhetzel at gmail.com> 
wrote:

> On Tue, Jun 29, 2010 at 1:34 AM, Darren Pilgrim <freebsd at bitfreak.org> wrote:
>> Paul Schmehl wrote:
>>>
>>> I'm working on a port update for one of the ports that I maintain, and
>>> I've run into a problem that I can't seem to solve.
>>>
>>> I use this construction to ensure that the port doesn't overwrite the conf
>>> file, if one exists:
>>>
>>> .for f in barnyard2.conf
>>>        ${INSTALL_DATA} ${WRKSRC}/etc/${f} ${PREFIX}/etc/${f}-sample
>>>        [ -f ${PREFIX}/etc/${f} ] || \
>>>        ${INSTALL_DATA} ${WRKSRC}/etc/${f} ${PREFIX}/etc/${f}
>>> .endfor
>>>
>>> But it gets overwritten anyway.  What am I doing wrong?  I thought this
>>> worked before, but I can't be sure.  Testing proves that it does not work
>>> now.  I tried to changing to an if [ ! -f construction, but that didn't do
>>> a thing.
>
> The above may be working properly, the problem could be that the
> sources have code in them that installs barnyard2.conf to PREFIX/etc/.
>  Check the sources Makefile to see if they are installing this file.
> If they are, patch them to install the file as the *-sample.
>
>>
>> Instead of doing this in Makefile, do it in pkg-plist:
>>
>> @unexec if cmp -s %D/etc/barnyard2.conf.sample %D/etc/barnyard2.conf; then
>> rm -f %D/etc/barnyard2.conf; fi
>> etc/barnyard2.conf.sample
>> @exec if [ ! -f %D/etc/barnyard2.conf ] ; then cp -p %D/%F
>> %D/etc/barnyard2.conf && chmod 600 %D/etc/barnyard2.conf; fi
>>
>> Relevant section of the Porter's Handbook:
>>
>> http://www.freebsd.org/doc/en/books/porters-handbook/plist-config.html
>
> While this works when installing a package, you still need code in the
> Makefile to install barnyard2.conf if it doesn't exist when installing
> the port.

You nailed it Scott.  The problem was with the Makefile.in in the /etc 
directory.  It's been fixed, and the port upgrade has been submitted.

Thanks for the tipoff.

-- 
Paul Schmehl, Senior Infosec Analyst
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson



More information about the freebsd-ports mailing list