Date: Thu, 1 Feb 2007 11:03:45 -0800 From: Luigi Rizzo <rizzo@icir.org> To: ports@freebsd.org Subject: proper way to do a recursive install ? Message-ID: <20070201110345.A83474@xorpc.icir.org>
next in thread | raw e-mail | index | archive | help
I have a port that just need to install the content of a tarball (a set of headers and C sources) into /usr/local/share/linux-bsd-kmod/linux_compat, and was wondering what is the proper way to handle this (both in the port's Makefile and in the pkg_plist file). Given that INSTALL doesn't have a 'recursive' flag, and a combination of 'find' and INSTALL is quite clumsy (short of calling INSTALL on each file) to preserve the full pathnames, I have come up with something like the combination of find/cp/chown below (to set up permissions and ownership correctly). #--- this is in the Makefile --- .... .include <bsd.port.pre.mk> MY_DST= ${DESTDIR}${PREFIX}/share/linux-bsd-kmod/linux_compat do-build: # nothing to build here do-install: ${MKDIR} -p ${MY_DST} cp -Rp ${WRKSRC} ${MY_DST} find ${MY_DST} -type f -exec chmod ${SHAREMODE} \{\} \; chown -R ${SHAREOWN}:${SHAREGRP} ${MY_DST} .include <bsd.port.post.mk> #--- this is pkg-plist 000 @exec mkdir -p %D/share/linux-bsd-kmod @exec echo "installing into %D/share/linux-bsd-kmod" @unexec echo "uninstalling into %D/share/linux-bsd-kmod" @unexec rm -rf %D/share/linux-bsd-kmod Given that it seems a relatively common problem, and that is is easy to make mistakes in the above commands re. pathnames and permissions, i wonder if it wouldn't be the case to put together a 'recursive install' function that can be called from the port's top level makefile. In my opinion naming individual files would be a mainteinance nightmare. In a case like this, the destination directory is private for the port and there is not any reason to be shared. cheers luigi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070201110345.A83474>