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