Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Sep 2012 14:42:15 +0100 (BST)
From:      Anton Shterenlikht <mexas@bristol.ac.uk>
To:        m.seaman@infracaninophile.co.uk, mexas@bristol.ac.uk
Cc:        freebsd-ports@freebsd.org
Subject:   Re: do I need to specify explicity what to install for make install to work?
Message-ID:  <201209261342.q8QDgFnV075197@mech-cluster241.men.bris.ac.uk>
In-Reply-To: <5062F35C.6050607@infracaninophile.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
	From m.seaman@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209261342.q8QDgFnV075197>