pkg_upgrade (was Re: pkg_add does not backtrack, does it?)

Michel Talon talon at lpthe.jussieu.fr
Fri Feb 9 18:22:14 UTC 2007


youshi10 wrote :

> > Personally, I think that's cool, but it does means it won't go into
> > the base system. Portupgrade would probably be in the base system if
> > it were written in a language in the base system.
> >
> > 	<mike
> > --
> > Mike Meyer <mwm at mired.org>
> > http://www.mired.org/consulting.html
> > Independent Network/Unix/Perforce consultant, email for more
> > information.
> 
> Would perl be close enough to count, or would it have to be C/C++?

I think that such a tool, once debugged, and if people find it
convenient, should be written in C++. The reason is that such a tool
naturally uses a lot of dictionaries and similar data structures which 
are in the STL. So i think the translation from python to C++ would not
be too terrible. I hope to do it later on if it is valuable.

For the moment being i have fixed some little problems i had with
save_pkg.py and i have finally found a bug which was such that far too
many ports were compiled. The bug was in function to_have() which was
completely incorrect.

With this correction, this is the sort of result i get on my machine:
niobe% ./pkgupgrade 
There are now 621 packages installed.

Here i have shunted first phase for debugging.

Second phase, downloads and backups.
Total time spent in backups:  00 minutes 22 seconds.
Total time spent in downloads:  08 minutes 17 seconds.
Writing upgrade shell script.
Will remove 391 old packages.
Will install 465 new binary packages.
Will compile 11 ports.
All tasks completed.
******************************************************************
Total time:  09 minutes 12 seconds.

So only 11 ports have to be compiled! Of course it retreived a lot more
packages, which explains the longer download time.

I have replaced the corrected save_pkg.py on my website, and will
replace pkgupgrade tomorrow after a further check.


-- 

Michel TALON



More information about the freebsd-hackers mailing list