Re: do I need to specify explicity what to install for make install to work?
On Wed, Sep 26, 2012 at 03:12:39PM +0100, Anton Shterenlikht wrote: From m.sea...@infracaninophile.co.uk Wed Sep 26 14:21:51 2012 On 26/09/2012 13:06, Anton Shterenlikht wrote: I was updating my port until I got to make: don't know how to make install. Stop *** [do-install] Error code 2 and I realised that I don't really understand the sequence of commands involved in make install. I've looked through the porter's handbook, but still not clear. I see lots of post-install targets in Makefiles, but never just install. I presume it should be pulled into by .include bsd.port.mk Still, if I have a set of source files, generated object files, and just one executable I want to install, I probably have to specify somewhere in the Makefile the name of this executable, right? Or are PLIST_FILES and PLIST_DIRS used to let make know what to install? The ports 'make install' generally does one of two things: either it runs appropriate make install commands from $WRKDIR -- ie. what the ported software provides itself -- or it has a list of files, directories etc. from within $WRKDIR which it copies into place itself, which is usually only done if the ported software doesn't provide its own installation routines. As I recall, if you don't provide an explicit install target yourself, the default is to run 'make install' from $WRKDIR. PLIST_FILES, PLIST_DOCS or the pkg-plist file don't tell the ports what to install. Instead, they document what the installation process should be installing, and so what files to include in a pkg tarball and what to delete at pkg deinstallation time. Hence the effort required to make sure your plist is accurate. Ok, I think I get it. All I need is the install target in $WRKDIR/Makefile. If I make this target empty, then I can add the real install commands under post-install in the port's Makefile. However, it seems if there is no install target in $WRKDIR/Makefile, then I must add install target to port's Makefile. Actually, since the install target in bsd.port.mk does a lot of other things (generating/handling package lists, registering the package installation, etc), what you need to override is the do-install target (in the port's Makefile). For the upstream's Makefile (the one in $WRKSRC) it is the install target that is looked for. This is true for almost all of the high-level bsd.port.mk targets (the ones that the user invokes with make in the port's directory) - bsd.port.mk does some magic, determines whether anything needs to be done at all, and if there is indeed a need to do something, it invokes the do-* target. Thus, if bsd.port.mk determines that it needs to fetch an upstream tarball, it will invoke the do-fetch target that, by default, tries to fetch ${DISTFILES} from ${MASTER_SITE} and so on. If it determines that it needs to build a program, it invokes the do-build target that, by default, goes into ${WRKSRC} and does make all (but of course, you can also override the all part using another variable). For the install target, if bsd.port.mk determines that it needs to install the already-built-in-${WRKSRC} files to ${PREFIX}, it will invoke do-install; if you don't override do-install, it will change into ${WRKSRC} and run make install - and then it will go on with the rest of what the install bsd.port.mk target does. In general, you don't really need to do this very often - most of what you might need to do in the do-* targets is already configurable by other variables. I guess that's why nobody felt the need to document this in the Porter's Handbook so far :) G'luck, Peter -- Peter Pentchev r...@ringlet.net r...@freebsd.org pe...@packetscale.com PGP key:http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 .siht ekil ti gnidaer eb d'uoy ,werbeH ni erew ecnetnes siht fI signature.asc Description: Digital signature
do I need to specify explicity what to install for make install to work?
I was updating my port until I got to make: don't know how to make install. Stop *** [do-install] Error code 2 and I realised that I don't really understand the sequence of commands involved in make install. I've looked through the porter's handbook, but still not clear. I see lots of post-install targets in Makefiles, but never just install. I presume it should be pulled into by .include bsd.port.mk Still, if I have a set of source files, generated object files, and just one executable I want to install, I probably have to specify somewhere in the Makefile the name of this executable, right? Or are PLIST_FILES and PLIST_DIRS used to let make know what to install? Thanks Anton ___ 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
Re: do I need to specify explicity what to install for make install to work?
On 26/09/2012 13:06, Anton Shterenlikht wrote: I was updating my port until I got to make: don't know how to make install. Stop *** [do-install] Error code 2 and I realised that I don't really understand the sequence of commands involved in make install. I've looked through the porter's handbook, but still not clear. I see lots of post-install targets in Makefiles, but never just install. I presume it should be pulled into by .include bsd.port.mk Still, if I have a set of source files, generated object files, and just one executable I want to install, I probably have to specify somewhere in the Makefile the name of this executable, right? Or are PLIST_FILES and PLIST_DIRS used to let make know what to install? The ports 'make install' generally does one of two things: either it runs appropriate make install commands from $WRKDIR -- ie. what the ported software provides itself -- or it has a list of files, directories etc. from within $WRKDIR which it copies into place itself, which is usually only done if the ported software doesn't provide its own installation routines. As I recall, if you don't provide an explicit install target yourself, the default is to run 'make install' from $WRKDIR. PLIST_FILES, PLIST_DOCS or the pkg-plist file don't tell the ports what to install. Instead, they document what the installation process should be installing, and so what files to include in a pkg tarball and what to delete at pkg deinstallation time. Hence the effort required to make sure your plist is accurate. Cheers, Matthew ___ 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
Re: do I need to specify explicity what to install for make install to work?
From m.sea...@infracaninophile.co.uk Wed Sep 26 14:21:51 2012 On 26/09/2012 13:06, Anton Shterenlikht wrote: I was updating my port until I got to make: don't know how to make install. Stop *** [do-install] Error code 2 and I realised that I don't really understand the sequence of commands involved in make install. I've looked through the porter's handbook, but still not clear. I see lots of post-install targets in Makefiles, but never just install. I presume it should be pulled into by .include bsd.port.mk Still, if I have a set of source files, generated object files, and just one executable I want to install, I probably have to specify somewhere in the Makefile the name of this executable, right? Or are PLIST_FILES and PLIST_DIRS used to let make know what to install? The ports 'make install' generally does one of two things: either it runs appropriate make install commands from $WRKDIR -- ie. what the ported software provides itself -- or it has a list of files, directories etc. from within $WRKDIR which it copies into place itself, How do I specify this list? which is usually only done if the ported software doesn't provide its own installation routines. As I recall, if you don't provide an explicit install target yourself, the default is to run 'make install' from $WRKDIR. PLIST_FILES, PLIST_DOCS or the pkg-plist file don't tell the ports what to install. Instead, they document what the installation process should be installing, and so what files to include in a pkg tarball and what to delete at pkg deinstallation time. Hence the effort required to make sure your plist is accurate. Ok, I have in my port, astro/xearth (inherited when I took over the maintainership): post-install: @${INSTALL_MAN} ${WRKSRC}/xearth.man ${MANPREFIX}/man/man1/xearth.1 @${MKDIR} ${PREFIX}/lib/X11/xearth # Copy the list of FreeBSD sites committers locations .for marker in freebsd.committers.markers freebsd.submitters.markers freebsd.ftp.markers @${INSTALL_DATA} ${FILESDIR}/${marker} ${PREFIX}/lib/X11/xearth .endfor So, looking at this, the xearth binary is installed by running make install from under $WRKDIR. Then post-install installs the man page, creates the directory to hold a few extra files, and copies the files there. I'm thinking about having all install related commands in one place. So is it a good idea to move all post-install commands as a part of the software's own Makefile install target? Or alternatively, I'd like to move the installation of the binary to the port's Makefile, just not sure where and how to specify it. Presumably this should come instead of post-install? Thanks Anton ___ 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
Re: do I need to specify explicity what to install for make install to work?
From m.sea...@infracaninophile.co.uk Wed Sep 26 14:21:51 2012 On 26/09/2012 13:06, Anton Shterenlikht wrote: I was updating my port until I got to make: don't know how to make install. Stop *** [do-install] Error code 2 and I realised that I don't really understand the sequence of commands involved in make install. I've looked through the porter's handbook, but still not clear. I see lots of post-install targets in Makefiles, but never just install. I presume it should be pulled into by .include bsd.port.mk Still, if I have a set of source files, generated object files, and just one executable I want to install, I probably have to specify somewhere in the Makefile the name of this executable, right? Or are PLIST_FILES and PLIST_DIRS used to let make know what to install? The ports 'make install' generally does one of two things: either it runs appropriate make install commands from $WRKDIR -- ie. what the ported software provides itself -- or it has a list of files, directories etc. from within $WRKDIR which it copies into place itself, which is usually only done if the ported software doesn't provide its own installation routines. As I recall, if you don't provide an explicit install target yourself, the default is to run 'make install' from $WRKDIR. PLIST_FILES, PLIST_DOCS or the pkg-plist file don't tell the ports what to install. Instead, they document what the installation process should be installing, and so what files to include in a pkg tarball and what to delete at pkg deinstallation time. Hence the effort required to make sure your plist is accurate. Ok, I think I get it. All I need is the install target in $WRKDIR/Makefile. If I make this target empty, then I can add the real install commands under post-install in the port's Makefile. However, it seems if there is no install target in $WRKDIR/Makefile, then I must add install target to port's Makefile. Anton Cheers, Matthew ___ 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