first experiences with rev-upgrade

Clemens Lang cal at macports.org
Sun Apr 8 04:57:09 PDT 2012


On Sun, Apr 08, 2012 at 03:28:47AM -0500, Ryan Schmidt wrote:
> > Should be fixed.

Thanks, Jeremy.

> > --->  Updating database of binaries: 53.5%
> > Warning: Error determining file type of `/Volumes/work/macports/lib/ocaml/site-lib/stublibs/.turd_ocaml-findlib': lstat(/Volumes/work/macports/lib/ocaml/site-lib/stublibs/.turd_ocaml-findlib):no such file or directory
> > Warning: A file belonging to the `ocaml-findlib' port is missing or unreadable. Consider reinstalling it.
> 
> This is due to using destroot.keepdirs, but I'm not sure where the
> problem is. Clearly the buildbot's destroot path should not be
> appearing on my system, but there it is:
> 
> $ port contents ocaml-findlib | head -n 3
> Port ocaml-findlib contains:
>   /Volumes/work/macports/lib/ocaml/site-lib/stublibs/.turd_ocaml-findlib
>   /opt/local/bin/ocamlfind

Maybe have a look at the registry db and search for the entry of this
file? From looking at the distributed ocaml-findlib package (I checked
the one for lion), this file is being shipped with the port where it
should not. This seems to be a bug in the buildbot or the ocaml-findlib
port.

> > --->  Updating database of binaries: 100.0%
> Great, it completed successfully.

If you don't mind me asking: How long did it take in total and how many
ports do you have installed?

> Then all this happens:
> 
> > --->  Scanning binaries for linking errors: 1.6%
> > Warning: Could not open /opt/local/lib/libnet.1.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 5.8%
> > Warning: Could not open /opt/local/lib/libwx_macu-2.8.0.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 6.4%
> > Warning: Could not open /opt/local/lib/libBulletSoftBody.2.77.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libLinearMath.2.77.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libBulletCollision.2.77.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libBulletDynamics.2.77.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 15.0%
> > Warning: Could not open /opt/local/lib/libMagickCore.4.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libMagickWand.4.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 21.1%
> > Warning: Could not open /opt/local/lib/libgss.3.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 21.4%
> > Warning: Could not open /opt/local/lib/libwx_base_carbonu-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_base_carbonu_net-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_base_carbonu_xml-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_macu_core-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_macu_adv-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_macu_xrc-2.8.0.dylib: Error opening or reading file
> > 
> > Warning: Could not open /opt/local/lib/libwx_macu_aui-2.8.0.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 24.5%
> > Warning: Could not open /opt/local/lib/libfcgi.2.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 31.4%
> > Warning: Could not open /opt/local/lib/libyajl.2.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 33.3%
> > Warning: Could not open /opt/local/lib/libode.1.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 47.4%
> > Warning: Could not open /opt/local/lib/libqhull.6.3.0.1483.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 58.6%
> > Warning: Could not open /opt/local/lib/libodbc.1.dylib: Error opening or reading file
> > --->  Scanning binaries for linking errors: 100.0%
> > --->  Found 83 broken file(s), matching files to ports
> > --->  Found 15 broken port(s), determining rebuild order
> > --->  Rebuilding in order
> >      FileZilla @3.5.1 
> >      virtualbox-oracle-vm-virtualbox-extension-pack @4.1.2 
> >      poedit @1.4.6.1 
> >      PlasmaClient @0.0.4a-438 +chatlog+developer+universal
> >      alienarena @7.53-20111227 +universal
> >      libdmtx @0.7.2 +universal
> >      libinfinity @0.5.1 -universal
> >      rasqal @0.9.28 +universal
> >      x264 @20111210 +universal
> >      libgsasl @1.6.1 +universal
> >      pure-fastcgi @0.5 
> >      pure-odbc @0.9 
> >      octave @3.2.4 +accelerate+gcc44-atlas
> >      texlive-bin @2011 +motif+universal+x11
> >      dsniff-devel @2.4b1 +universal
> > --->  Computing dependencies for FileZilla
> > --->  Dependencies to be installed: wxWidgets
> > --->  Activating wxWidgets @2.8.12_0
> > --->  Cleaning wxWidgets
> > --->  Cleaning FileZilla
> > --->  Computing dependencies for virtualbox-oracle-vm-virtualbox-extension-pack
> > --->  Deactivating virtualbox-oracle-vm-virtualbox-extension-pack @4.1.2_0
> > --->  Activating virtualbox-oracle-vm-virtualbox-extension-pack @4.1.8_0
> > --->  Cleaning virtualbox-oracle-vm-virtualbox-extension-pack
> > --->  Computing dependencies for poedit
> > --->  Cleaning poedit
> > --->  Computing dependencies for PlasmaClient
> > --->  Fetching distfiles for PlasmaClient
> > --->  Verifying checksum(s) for PlasmaClient
> > --->  Extracting PlasmaClient
> > --->  Applying patches to PlasmaClient
> > --->  Configuring PlasmaClient
> > --->  Building PlasmaClient
> > Error: org.macports.build for port PlasmaClient returned: command execution failed
> > Please see the log file for port PlasmaClient for details:
> >     /opt/local/var/macports/logs/_Users_rschmidt_macports_dports_games_PlasmaClient/PlasmaClient/main.log
> > Error: Unable to upgrade port: 1
> > Error rebuilding PlasmaClient
> >     while executing
> > "error "Error rebuilding [$port name]""
> >     (procedure "revupgrade_scanandrebuild" line 359)
> >     invoked from within
> > "revupgrade_scanandrebuild broken_port_counts $opts"
> >     (procedure "macports::revupgrade" line 5)
> >     invoked from within
> > "macports::revupgrade $opts"
> >     (procedure "action_revupgrade" line 2)
> >     invoked from within
> > "action_revupgrade $action $portlist $opts"
> >     (procedure "action_target" line 94)
> >     invoked from within
> > "$action_proc $action $portlist [array get global_options]"
> >     (procedure "process_cmd" line 95)
> >     invoked from within
> > "process_cmd $remaining_args"
> >     invoked from within
> > "if { [llength $remaining_args] > 0 } {
> > 
> >     # If there are remaining arguments, process those as a command
> >     set exit_status [process_cmd $remaining..."
> >     (file "/opt/local/bin/port" line 4772)
> 
> Ignoring that PlasmaClient failed to build (PlasmaClient is dead),
> this seems like a lot of stuff to have happen when all I requested was
> for one port to be installed.

That's because you run it for the first time and the problems have
accumulated. Usually you won't see any problem output, or if you do
you'll see only few messages.

> It's unclear what I'm meant to do with the warnings about files not
> existing.

Those are the reasons rev-upgrade will attempt to rebuild ports. We
could omit them from the output, but that would look a bit like magic
happening when determining which ports to rebuild. That being said,
Gentoo's revdep-rebuild doesn't print those as far as I know.

There's essentially only two different messages you'll see here: Either
a missing file, or an incompatible library version.

> Is this how the rev-upgrade feature is intended to work? I think this
> will probably cause annoyance and confusion among upgrading users.

Yes, it is.

> We don't automatically upgrade a user's outdated ports; we make the
> user run "port outdated" and upgrade ports themselves on their own
> time, possibly by using "sudo port upgrade outdated". Why does
> rev-upgrade run automatically instead of making the user run it
> manually when they're ready?

There's no point in letting the user keep broken and thus non-executable
binaries around. Users might have reasons to stick to outdated binaries,
though.
Not running rev-upgrade automatically will probably cause it never to be
run at all by the average user. We could run the analysis phase
automatically and instruct the user to issue port rev-upgrade to trigger
the rebuild manually when problems occur. However, as said before,
there's no point in keeping broken binaries and users might just as well
be annoyed by updates breaking their other ports as much as they are
annoyed by some phase trying to fix it automatically for them.

-- 
Clemens Lang



More information about the macports-dev mailing list