On Tue, Jun 29, 2010 at 1:34 AM, Darren Pilgrim <free...@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. Scot _______________________________________________ freebsd-ports@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"