MacPorts 2.1.0 or 2.0.5

Clemens Lang cal at macports.org
Wed Apr 4 07:02:55 PDT 2012


On Wed, Apr 04, 2012 at 11:39:58AM +0200, Rainer Müller wrote:
> rev-upgrade could still be improved to get faster in the step scanning
> for binary files. It currently does lot of I/O walking through files
> although this could be done in the activation phase where we know
> which files are being installed.

There's two phases in rev-upgrade: The one that checks whether a file is
binary and records the information into the registry and the one where
it checks dynamic linking for problems and rebuilds, if neccessary.

Rev-upgrade will only gather the info about a file being binary if it
doesn't have the info yet. The number of files walked is the same
irregardless of whether it's done in activation or in rev-upgrade.
However, I agree this can be moved to earlier in the install process,
maybe to creating the archive. We could actually store the information
in the archive, so clients installing from binary don't have to
recalculate this info.

The second step that scans all installed binaries for linking errors
cannot trivially be moved to the activation phase and/or limited to a
number of files for a number of reasons:
 - uninstalling ports can cause linkage problems, and we don't currently
   run rev-upgrade after uninstalling (and probably shouldn't because it
   would be hard to force-uninstall a port then)
 - linkage problems can be caused by reasons out of control of macports,
   e.g. a library and/or OS upgrade by Apple[1], a user removing or
   corrupting a file (maybe with the help of a different package
   manager), even file system corruption might cause problems.
I think those are also the reasons why Gentoo's revdep-rebuild always
checks _all_ files.

> However, such improvements could also be moved to 2.2.0 to avoid any
> delays for 2.1.0. I think the speed of the post-install/post-upgrade
> is good enough for now.

Something we might consider to ship with 2.1.0 is a possibility to
exempt some files installed by a port from rev-upgrade in the Portfile
in case some ports cause problems that can't be fixed. This wasn't
needed until now and the number of ports that fail rev-upgrade seems to
be rather small judging from the number of bug reports, but getting this
in quickly after the release might be a problem because, if I remember
correctly, we usually wait two weeks before using changes in base in the
Portfiles. But then, since there already is a patch to do this somewhere
on the mailinglist and we could quickly push a bugfix release in case
this is needed we could wait and see if this is needed at all.


[1] Yes I know we force people to rebuild everything on OS upgrade. I
made a case-study when updating to Lion by not rebuilding everything,
updating the registry to make it seem like the ports were built for
darwin11 and ran rev-upgrade to correct linkage problems. I also know
there's other problems why we're forcing people to rebuild and this is
probably not an option we should deploy.

-- 
Clemens Lang



More information about the macports-dev mailing list