--On Tuesday, June 29, 2010 09:02:35 -0500 Scot Hetzel <[email protected]> wrote:

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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[email protected]"

Reply via email to