Portmaster 2.0-beta1 available for testing

Doug Barton dougb at FreeBSD.org
Sun Jan 6 18:42:27 PST 2008

Hash: RIPEMD160


I'm very happy to say that I have a shiny new version of portmaster
available for testing. There are a couple of nice new features, but
more importantly the code has been totally reorganized, and in several
cases totally rewritten. I am also proud to say that all of the
advertised features now work as advertised. :)

The most exciting new feature is the completely new dependency
updater. I finally took the time to write the line-oriented version of
update_contents() that I wanted to write in the first place, so no
more sed, and no more warnings sent to $PAGER. This version relies
entirely on exact matches to DEPORIGIN to do its work, so it's 100%

Which is to say, reliable enough for me to ask you to test it now. :)
This is a long message, so if you want to jump into using the new
version that's fine, but before you do anything else, please do this:
mkdir backup-pkg
cd backup-pkg
cp -Rp /var/db/pkg .
portmaster --check-depends	# This is the new version of course
diff -ur pkg /var/db/pkg > pkg.diff

Then look at the results. The code lets you know if it updates a
+REQUIRED_BY file or @pkgdep entry, but it also silently deletes
duplicate pkgdep/DEPORIGIN lines from your +CONTENTS files, so if you
see something that looks like it's been deleted inappropriately check
the rewritten +CONTENTS file to see if there is one and only one entry
left in it. I don't think you will, but if you have any problems with
this feature, please let me know ASAP.

So what else is new? The code has been extensively cleaned and
reorganized. A lot of micro-optimizations have been done to eliminate
duplicated work, avoid using external commands when not necessary,
etc. I won't promise you'll notice an overwhelming speed increase, but
it has definitely moved in the right direction.

Totally new features:
1. --check-depends, which as described above calls the new functions
to parse existing +CONTENTS files for dependency data, use that data
to update +REQUIRED_BY, and update the +CONTENTS files themselves.
These same routines are also used for updating ports.

2. A "fetch only" feature (-F) that will go get distfiles for new
versions of installed ports by default, and can also be used to get
the files for all of your installed ports, or certain branches by
using the -aft options. (Warning, 'portmaster -afF' spawns a child for
every single port you have installed, so use with caution.)

3. An option to hide the build and install process by saving it to a
log (-H). These logs are deleted on successful install, and saved if
the update process aborts.

4. We now keep track of all the ports that get updated or installed in
a given invocation, and print the list at the very end of the process.
If you've only installed one port this is skipped, unless you're doing -a.

5. There is now a little "map" to show you where you are in the
process of the form "parent >> child >> grandchild >> etc." Please let
me know what you think of that, if it's useful, should be behind -v, etc.

Improved features:
1. When showing the pkg-message/+DISPLAY files at the end of the
process, all files are grouped together and spit out to $PAGER (or
just cat if -u). This way if there is an error you can see what you
need to know about the ports that _were_ successfully installed. This
comes right before the list of installed ports that is the very last
thing to happen.

2. There is now much more sanity checking on user input so that we can
bail out early if there is a problem.

3. The error messages have been completely re-done to be more
informative, and many of them include helpful suggestions on how to
fix the problems.

4. In the expunge (-e) feature, if there is dependency data for the
port you want to delete we now offer you the chance to delete that
instead of just aborting. (Use at your own risk!)

5. The "save old shared libs" feature (-w) is now a lot more
efficient, only runs ldconfig when it has to, and uses

Everything else should work the same way, so please let me know if it

If ($DEITY forbid) you actually do have a problem, check the RCS Id on
the file on my web site to see if I've made an update. I don't plan to
announce every little bug fix on the list.

The next big goal is to support the SU_CMD stuff, which doesn't look
too hard to do from here. Once that's done and y'all have a chance to
test it, version 2.0 will go into the ports tree.

You can get the new version here: http://dougbarton.us/portmaster



- --

    This .signature sanitized for your protection

Version: GnuPG v2.0.7 (FreeBSD)


More information about the freebsd-ports mailing list