K 10 svn:author V 5 dougb K 8 svn:date V 27 2010-08-10T07:18:17.671296Z K 7 svn:log V 1876 While we're doing the first pass, instead of generating a list of all the ports we see (which usually ends up being a duplicate of CUR_DEPS) keep a list of just those ports that need updating. This has many benefits: 1. While doing the first pass we can use the list the same way, whilst keeping CUR_DEPS for now. The latter is still deeply integrated, and useful. The major benefit here is that for example in -a mode we cut the stack space used very nearly in half. This can be significant if the user has a lot of ports installed, and is the cause of most (if not all) of the "argument list too long" errors that users have reported. 2. As a side effect of generating the list I can now use it in -a mode. I'm leaving the old code there for now till I'm sure this works, is safe, etc.; but it's much faster to just run updates for the list of ports that need them, rather than going through every port again (even with CUR_DEPS helping). 3. This will also serve as the basis for future work on a couple of fronts: a. If the current run fails I can now print a "To resume quickly do this:" message. This is not implemented yet, but I am currently updating the list as things are built for that purpose. b. Way down the road I'm going to use code in this same neighborhood to keep track of what depends on what to implement the "continue with everything else after something fails" idea. While I'm here take advantage of the slightly improved mechanism to fix a buglet. Now that we can be more deterministic in multiport() about what is a dependency and what isn't, tune up the term_printf() stuff there to finally make sense. Also, zero out the IPC_SAVE file right before we write to it both in the first pass and during the build phase. That lets us eliminate a useless write to the file during initialization. END