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]"