Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 09 Apr 2008 12:37:51 -0500
From:      Paul Dokas <dokas@oitsec.umn.edu>
To:        gnome@FreeBSD.org
Subject:   cyclic dependency hell
Message-ID:  <47FCFEEF.7020208@oitsec.umn.edu>

next in thread | raw e-mail | index | archive | help
Does anyone know if there's a way to completely rebuild the ports dependency tree
without having to do a `pkg_delete -a`?  My ports have become seriously messed up
after the last round of gnome updates.  I'm pretty sure that this all stems from
something that is clearly my fault (I didn't follow UPDATING wrt tracker) but this
shouldn't be this difficult to fix.

First a little background, I neglected to read UPDATING for tracker.  As a result,
I ended up with something like this:

  % pkg_info | fgrep tracker
  tracker-0.6.6_1
  tracker-client-0.6.6_2
  tracker-gnome-0.6.6_2
  tracker-libtrackergtk-0.6.6_2

`pkg_info -L tracker-0.6.6_1` claimed to have no files.  It took a `pkg_delete -f tracker-0.6.6_1`
to remove it (this was probably my first mistake).  From there portupgrade refused to run
and said to do a `pkgdb -F`.  When I did this I duplicated this lovely error condition:

  http://lists.freebsd.org/pipermail/freebsd-ports/2007-September/043617.html

I let it run to completion (probably my second error).  This is when the real fun started.
portupgrade won't run (it said to run pkgdb -F).  pkgdb -F started claiming that there were
cyclic dependencies.  So, a little googling later, I find that `make all-depends-list` in a
port's directory will tell me which ports are dependencies and I start breaking loops.
After a while I noticed that pkgdb -F claimed a loop for which the involved packages also
claim to actually depend upon each other.  Something is now seriously mangled.

Here's my last attempt to fix this:

  # mv INDEX-7.db INDEX-7.db.old

  # portsdb -U
  Updating the ports index ... Generating INDEX.tmp - please wait..Warning: Duplicate INDEX entry: apr-gdbm-db42-1.2.8_3
  Warning: Duplicate INDEX entry: mod_rpaf-ap2-0.6
   Done.
  done

  # portsdb -u
  [Updating the portsdb <format:bdb_btree> in /usr/ports ... - 18300 port entries found
.........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000...
..... done]

  # rm /var/db/pkg/pkgdb.db
  remove /var/db/pkg/pkgdb.db? y

  # pkgdb -F
  --->  Checking the package registry database
  [Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ... - 1213 packages found (-0 +1213)
....................................................................................................100....................................................................................................200....................................................................................................300....................................................................................................400....................................................................................................500....................................................................................................600....................................................................................................700....................................................................................................800....................................................................................................900...............................................................
.....................................1000....................................................................................................1100....................................................................................................1200.............
done]
  Cyclic dependencies: nautilus-cd-burner-2.22.0_2 -> deskbar-applet-2.22.0.1 -> gnome-media-2.22.0 -> (nautilus-cd-burner-2.22.0_2)
  Unlink which dependency? (? to help):

And according to `make all-depends-list` on each those, there really is a
dependency loop.


So, here I am pondering `pkg-delete -a`...   Can anyone rescue me from leaping off of this
building?  I have a hard time imagining that there is no way to get the dependencies back
into working order short of starting over.

Paul
-- 
Paul Dokas                                     dokas at oitsec.umn.edu
======================================================================
Don Juan Matus:  "an enigma wrapped in mystery wrapped in a tortilla."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47FCFEEF.7020208>