On 4/20/2004 2:46 PM, Matthew Seaman wrote:
On Tue, Apr 20, 2004 at 02:15:19PM -0500, Jon Noack wrote:
I love the 'make config' option. Is there a way to recursively
'make config' before installing a port with a lot of dependencies
(similar to the way sysutils/portupgrade can recursively fetch with
-RF)? If I want to install kde, for example, I'd prefer to
configure options for each dependent port before installing. In
other words, I don't want to set "BATCH=yes". However, without
"BATCH=yes" I have to check the progress occasionally to configure
some port because the build process stopped. I know this is only a
big deal on the first install (because the options are saved), but
it's rather annoying to start a kde compile before you go to bed
and wake up with only a few ports installed...

You can't do a recursive make config like that I'm afraid. What you can do is set the various configuration options used by make(1) before starting the compilation job, so that it doesn't stop to ask questions halfway through. There's actually quite a number of ways you can do that:

    i) Globally in /etc/make.conf -- variables set here will apply to
       all ports you compile.

   ii) Setting the variable in the environment before starting the
       compilation.  Again this applies to all compilations, but only
       certain variables can be set this way.  Many will be overridden
       by settings in Makefiles or make.conf.

  iii) Globally in the 'Environment' section of
       /usr/local/etc/pkgtools.conf -- of course this only works if
       you're a portupgrade(1) user.  Same caveats as for (ii) apply

   iv) Locally to a port by creating a Makefile.local in the port
       directory and putting the settings within that.  There are
       actually several subsiduary makefile names that will be
       automatically included like this: see /usr/ports/Mk/bsd.port/mk
       for details.  Note however that 'Makefile.local' is the name
       intended for human overrides of the default settings, whereas
       'Makefile.inc' and '../Makefile.inc' can be machine generated
       as part of the port's configuration, or it can be a permanent
       file commited as part of the ports.

    v) Locally to a port (or a series of ports matching a glob
       expression) in the MAKE_ARGS section of pkgtools.conf

   vi) Locally to a port if it uses the OPTIONS variable within it's
       Makefile.  In these cases, just run 'make config' one time, and
       the settings will be stored in /var/db/ports: you'll only get
       the configuration dialog coming up if the port is modified to
       use some new options.

Option vii) is (of course) to set the options on the make(1) command
line, as you build the port, which I include for completeness' sake
only as it doesn't help you run your big build job unattended.

Most people will use a combination of (i), (v) and (vi) -- for those
ports where it applies.  You will still have to scan through all of
the dependency ports that you will be installing, read their Makefiles
and decide what options (if any) you wish to set.  You can get some
lists of the dependencies by running:

% make pretty-print-build-depends-list
% make pretty-print-run-depends-list


from the directory of the top level port you wish to install.

Cheers,

Matthew

Wow -- thanks for the comprehensive response. I'm a member of the (i) and (vi) club. What I was hoping to avoid was the scan through all the ports. For kde this is probably around 100 ports (no bloat jokes, please). That's just too much time. As a result, I'll continue my current "lazy allocation" of options. I keep a backup of /etc/make.conf and the contents of /var/db/ports, which should help kick things off the next time I need to reinstall or install on another machine.


Thanks,
Jon

_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to