Re: do I need to specify explicity what to install for make install to work?

2012-09-27 Thread Peter Pentchev
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?

2012-09-26 Thread Anton Shterenlikht
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?

2012-09-26 Thread Matthew Seaman
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?

2012-09-26 Thread Anton Shterenlikht
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?

2012-09-26 Thread Anton Shterenlikht
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