New version of portmaster available for testing

Hans Lambermont hans at lambermont.dyndns.org
Tue May 9 21:36:53 UTC 2006


Doug Barton wrote:

> I have been following the various discussions and feature requests
> regarding sysutils/portmaster. I have a new version that I would
> appreciate testing and feedback on. It has the following changes:
> 
> 1. Implemented recursive 'make config' at the beginning of the run, so
> it's easier to leave it running unattended for large updates. (This
> can be toggled off)

Great, and it works well. Here's one more process speedup option :
Now portmaster is waiting whether to remove an old distfile or not ->
maybe put these in the end, or in the beginning too like config ?

> 2. Implemented a completely unattended mode which accepts the defaults
> for all portmaster dialogues. (Note, this does not help with ports
> that have interaction other than 'make config', such as ghostscript,
> etc.)

Haven't tested that yet.

> 3. Added -u to sort(1) calls to try and address a bug report about
> duplicate lines in +REQUIRED_BY files. I was not able to reproduce
> this bug, but better safe than sorry. I added some debug code to try
> and detect this error, please let me know if it comes up for you.

I've seen lots of duplicate lines in +REQUIRED_BY files with earlier
versions, but not with the 1.58 version so far. I cleaned it with this
ugly thingie :
find . -name "+REQUIRED_BY" -exec sh -c "mv {} {}.bak; sort -u {}.bak > {}" \;
(improvements welcome ;-)

> 4. Verbose mode is now slightly more informative about what's
> happening.

Great, but I didn't spot it yet. I think this one is also useful :

Next to showing what to delete like :

    ===>>> Upgrade for libtheora-1.0.a4_1 to libtheora-1.0.a5 succeeded
    ===>>> Delete libtheora-1.0alpha4.tar.bz2? [n] y

It would help to also show what is being kept (maybe only do this only
in verbose mode).

> 6. The -n flag now cancels the build of the port called on the command
> line too.

Ah yes, I was wondering about that one :)

> The new version is available at http://dougbarton.us/portmaster, I
> look forward to your feedback.

Perhaps explicitly mention here that there was no +REQUIRED_BY file
found to work with :

    ===>>> Warning! Potential unrecorded dependencies on lua-5.0.2_1
    ===>>> From existing +CONTENTS files:
    filelight-0.6.4_4/+CONTENTS:@pkgdep lua-5.1
    ...
    koffice-1.5.0,1/+CONTENTS:@pkgdep lua-5.1
    ===>>> 26 ports

    ===>>> Install these as the new +REQUIRED_BY file? [n]


And then, as mentioned in UPDATING/20060506, the lua port upgrade causes
problems :

    ===>  lua-5.0.2_1 conflicts with installed package(s):
          lua-5.1

UPDATING/20060506 says to fix this with :

    portupgrade -f -o lang/lua50 lua-5.1

What would be a portmaster equivalent ?


One more thing. It would be great if portmaster could also be used to
populate an empty system, given a set of port origins. I could not find
such a tool so I wrote something myself. First I used portmaster -l on
the production server to list the Root and Leaf ports (skipping Trunk
and Branch ports as they would come in for free). Then I used 
    pkg_info -o <all Root and Leaf ports> | grep '/' | sort -u
to convert the names into their origin paths. I fed this list to this
script I wrote (named it install_ports.sh) on the empty build system :
--------------------------------------------------------------------------------
#!/bin/sh

PORTS=$@
PORTSFORPHASE2=""
PORTSDONE=""
FAILLIST=""
RETVAL=0

echo "===> Phase1: make config-recursive fetch-required checksum"
for PORT in $PORTS; do
	cd /usr/ports/$PORT
	echo "===> START Phase 1 for $PORT"
	make config-recursive fetch-required checksum
	MRETVAL=$?
	if [ $MRETVAL -ne 0 ]; then
		echo "===> ABORT Phase 1 for $PORT, errorcode $MRETVAL"
		FAILLIST="$FAILLIST $PORT"
	else
		echo "===> END Phase 1 for $PORT"
		PORTSFORPHASE2="$PORTSFORPHASE2 $PORT"
	fi
done

echo "===> Phase2: make install clean"
for PORT in $PORTS; do
	cd /usr/ports/$PORT
	echo "===> START Phase 2 for $PORT"
	make install clean
	MRETVAL=$?
	if [ $MRETVAL -ne 0 ]; then
		echo "===> ABORT Phase 2 for $PORT, errorcode $MRETVAL"
		FAILLIST="$FAILLIST $PORT"
	else
		echo "===> END Phase 2 for $PORT"
		PORTSDONE="$PORTSDONE $PORT"
	fi
done

echo "===> PORTS DONE: [$PORTSDONE]"
echo "===> PORTS FAILED: [$FAILLIST]"
--------------------------------------------------------------------------------
I think it would benefit portmaster if you'd add something like this.
What do you think ?

Oh, and thanks again for writing portmaster.

regards,
  Hans Lambermont


More information about the freebsd-ports mailing list