This construction doesn't work

Paul Schmehl pschmehl_lists at
Tue Jun 29 18:49:47 UTC 2010

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

> On Tue, Jun 29, 2010 at 1:34 AM, Darren Pilgrim <freebsd at> 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:
> 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 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