On Sun, Jul 17, 2005 at 06:54:42PM -0700, Steve Langasek wrote:

 > Below is a list of libraries which appear to be blocking other
 > packages that need to go through the C++ transition[1] and which are
 > themselves ready to go through the ABI transition.

 After some fiddling with AptPkg, my first cut at generating a list of
 packages ready to be transitioned is attached.

 THIS LIST MIGHT BE WRONG.

 The attached program is what I've used to generate the list.  What it
 does is that is generates the list of packages that depend themselves
 on libstdc++5 (this alone is wrong!) and then iterates on the list of
 packages looking for packages that depend on these.  Once it doesn't
 find anymore packges it prints the list of packages that whose only
 dependency (on the graph) is libstdc++5.  By removing libstdc++5 from
 the graph the list of vertices that don't have decendants is the list
 of packages ready to be transitioned.

 What I didn't figure out is how to get libapt-pkg to read _only_ what I
 tell it to instead of the status data of the host where it is running
 (probably very easy, I didn't really look hard).

 Note that this list has been generated on my machine which hasn't been
 upgraded to the most recent packages in sid yet, so some of the info is
 likely outdated.  Do note that this list includes _everything_, not
 just libraries.

 The package names are source package names followed by binary package
 names.

 The list is way too long, IMO.  The longer this transition takes the
 harder it gets to get out of this swamp.  (And yes, that package of
 mine on this list is already sitting on some upload queue)

 Cheers,

 Marcelo

 P.S.: you need libapt-pkg-perl and libgraph-perl.

A Mennucc1 <[EMAIL PROTECTED]>  snmpkit libsnmpkit2c102
A Mennucc1 <[EMAIL PROTECTED]>  waili   libwaili
Adam Majer <[EMAIL PROTECTED]>  libhoard        libhoard
Al Stone <[EMAIL PROTECTED]>    libcoyotl       libcoyotl2
Al Stone <[EMAIL PROTECTED]>    libevocosm      libevocosm0
Alberto Gonzalez Iniesta <[EMAIL PROTECTED]>    netkit-telnet   telnet
Alex Romosan <[EMAIL PROTECTED]>        vat     vat
Anand Kumria <[EMAIL PROTECTED]>        cmt     cmt
Andreas Rottmann <[EMAIL PROTECTED]>    libmusicbrainz-2.0      libmusicbrainz2
Andreas Rottmann <[EMAIL PROTECTED]>    libmusicbrainz-2.1      libmusicbrainz4
Andreas Rottmann <[EMAIL PROTECTED]>    libsigcx        libsigcx-0.6-2
Andreas Tille <[EMAIL PROTECTED]>       wordnet wordnet
Andrew Lau <[EMAIL PROTECTED]>  openexr libopenexr2
Andrew Suffield <[EMAIL PROTECTED]>     cdrdao  cdrdao
Anibal Monsalve Salazar <[EMAIL PROTECTED]>     socketapi       socketapi1
Barak A. Pearlmutter <[EMAIL PROTECTED]>        djvulibre       libdjvulibre1
Bartosz Fenski <[EMAIL PROTECTED]>      moagg   moagg
Bastian Blank <[EMAIL PROTECTED]>       omniorb4        libomnithread3
Berin Lautenbach <[EMAIL PROTECTED]>    xalan   libxalan18
Bradley Bell <[EMAIL PROTECTED]>        gtkmm   libgtkmm1.2-0
Bradley Bell <[EMAIL PROTECTED]>        gtkmm2.0        libgtkmm2.0-1c102
Bradley Bell <[EMAIL PROTECTED]>        orbit2cpp       liborbit2cpp9
Branden Robinson <[EMAIL PROTECTED]>    xfree86 xlibmesa3-glu
Cai Qian <[EMAIL PROTECTED]>    sdcv    libsdcv3
Camm Maguire <[EMAIL PROTECTED]>        lam     lam4
Changwoo Ryu <[EMAIL PROTECTED]>        poppler libpoppler0
Chris Anderson <[EMAIL PROTECTED]>      unrar-nonfree   unrar
Chris Leishman <[EMAIL PROTECTED]>      libxml++        libxml++1.0
Christian Bayle <[EMAIL PROTECTED]>     libibtk libibtk0
Christopher L Cheney <[EMAIL PROTECTED]>        taglib  libtag1
Chuan-kai Lin <[EMAIL PROTECTED]>       fam     libfam0c102
Daniel Burrows <[EMAIL PROTECTED]>      aptitude        aptitude
Daniel Burrows <[EMAIL PROTECTED]>      libsigc++-2.0   libsigc++-2.0-0
Daniel Glassey <[EMAIL PROTECTED]>      sword   libsword4
David Martínez Moreno <[EMAIL PROTECTED]>       glcpu   statd
Debian ACE+TAO maintainers <[EMAIL PROTECTED]>  ace     libace5.4
Debian Berkeley DB Maintainers <[EMAIL PROTECTED]>      db4.2   libdb4.2++
Debian Firebird Group <[EMAIL PROTECTED]>       firebird2       
firebird2-server-common
Debian Firebird Group <[EMAIL PROTECTED]>       firebird2       
libfirebird2-classic
Debian Firebird Group <[EMAIL PROTECTED]>       firebird2       
libfirebird2-super
Debian GCC maintainers <debian-gcc@lists.debian.org>    gcc-3.3 
libstdc++5-3.3-dev
Debian OpenOffice Team <debian-openoffice@lists.debian.org>     myspell 
libmyspell3
Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>      kdepim  
libmimelib1a
Debian VDR Team <[EMAIL PROTECTED]>     vdr     vdr
Debian VoIP Team <[EMAIL PROTECTED]>    yate    yate
Dirk Eddelbuettel <[EMAIL PROTECTED]>   quantlib        libquantlib-0.3.9
Enrico Zini <[EMAIL PROTECTED]> libtagcoll      libtagcoll0
Filip Van Raemdonck <[EMAIL PROTECTED]> clanlib libclanlib2
Filip Van Raemdonck <[EMAIL PROTECTED]> ooqstart        ooqstart-gnome
Giuseppe Sacco <[EMAIL PROTECTED]>      hylafax hylafax-client
Goedson Teixeira Paixao <[EMAIL PROTECTED]>     jabberoo        libjabberoo0
Goedson Teixeira Paixao <[EMAIL PROTECTED]>     libinti1.0      libinti1.0-1.2
Gopal Narayanan <[EMAIL PROTECTED]>     xplanet xplanet
Guenter Geiger <[EMAIL PROTECTED]>      ivtools ivtools-interviews
Guillem Jover <[EMAIL PROTECTED]>       bochs   bximage
Hamish Moffatt <[EMAIL PROTECTED]>      tqsllib tqsllib1
Hans Fugal <[EMAIL PROTECTED]>  csound  csound
Henning Glawe <[EMAIL PROTECTED]>       libgwenhywfar   libgwenhywfar17
J.H.M. Dassen (Ray) <[EMAIL PROTECTED]> pstoedit        libpstoedit0
Jean-Michel Kelbert <[EMAIL PROTECTED]> wfnetobjs       libwfnetobjs0
Jeremy T. Bouse <[EMAIL PROTECTED]>     libfwbuilder    libfwbuilder6
Joe Drew <[EMAIL PROTECTED]>    smpeg   libsmpeg0
Josip Rodin <[EMAIL PROTECTED]> gman    gman
Josip Rodin <[EMAIL PROTECTED]> maildrop        maildrop
Josselin Mouette <[EMAIL PROTECTED]>    hdf5    libhdf5-serial-1.6.4-0
Juan Esteban Monsalve Tobon <[EMAIL PROTECTED]> libranlip       libranlip1
Juergen Salk <[EMAIL PROTECTED]>        dcmtk   dcmtk
Junichi Uekawa <[EMAIL PROTECTED]>      ladspa-sdk      ladspa-sdk
Keita Maehara <[EMAIL PROTECTED]>       dvd+rw-tools    dvd+rw-tools
Klaus Reimer <[EMAIL PROTECTED]>        strutilsxx      libstrutilsxx0.7c102
Laszlo Boszormenyi (GCS) <[EMAIL PROTECTED]>    sidplay-libs    
libsidplay2-1c102
Loic Dachary (OuoU) <[EMAIL PROTECTED]> openalpp-cvs    libopenalpp-cvs
Loic Dachary (OuoU) <[EMAIL PROTECTED]> openscenegraph  libopenthreads
Loic Dachary (OuoU) <[EMAIL PROTECTED]> osgal-cvs       libosgal-cvs
Maintainers of GStreamer packages <[EMAIL PROTECTED]>   gst-plugins0.8  
gstreamer0.8-misc
Marcelo E. Magallon <[EMAIL PROTECTED]> mesa    libglu1-mesa
Margarita Manterola <[EMAIL PROTECTED]> uisp    uisp
Mark Purcell <[EMAIL PROTECTED]>        libccaudio      libccaudio1-1.1-0
Martin Kittel <[EMAIL PROTECTED]>       maxdb-7.5.00    libsqlod7.5.00
Martin Kittel <[EMAIL PROTECTED]>       maxdb-7.5.00    maxdb-dbanalyzer
Martin Kittel <[EMAIL PROTECTED]>       maxdb-7.5.00    maxdb-loadercli
Martin Wuertele <[EMAIL PROTECTED]>     ibam    ibam
Masayuki Hatta (mhatta) <[EMAIL PROTECTED]>     gs-esp  gs-esp
Masayuki Hatta (mhatta) <[EMAIL PROTECTED]>     libwpd  libwpd8
Masayuki Hatta (mhatta) <[EMAIL PROTECTED]>     zipios++        libzipios++0c102
Matt Flax <[EMAIL PROTECTED]>   libgig  libgig
Matt Sullivan <[EMAIL PROTECTED]>       aspseek aspseek-libmysqldb
Matt Zimmerman <[EMAIL PROTECTED]>      flac    libflac++4
Matthias Klose <[EMAIL PROTECTED]>      librudiments0   librudiments0c102
Matthias Klose <[EMAIL PROTECTED]>      rapidsvn        libsvncpp0
Matthias Klose <[EMAIL PROTECTED]>      sffview sffview
Matthias Urlichs <[EMAIL PROTECTED]>    festival        festival
Michael Banck <[EMAIL PROTECTED]>       mpqc    libsc6
Michael Banck <[EMAIL PROTECTED]>       openbabel       libopenbabel0
Michael Koch <[EMAIL PROTECTED]>        atlas-cpp       libatlas-cpp-0.5
Michael Koch <[EMAIL PROTECTED]>        cal3d   libcal3d10
Michael Koch <[EMAIL PROTECTED]>        sigcperl        libsigcperl1
Michael Koch <[EMAIL PROTECTED]>        skstream        libskstream-0.3
Michael Koch <[EMAIL PROTECTED]>        varconf libvarconf-1.0
Michael Koch <[EMAIL PROTECTED]>        wfmath  libwfmath-0.3
Michael Vogt <[EMAIL PROTECTED]>        libxbase        libxbase2.0-0c102
Michael Vogt <[EMAIL PROTECTED]>        vdk2    libvdk2-2
Michael Vogt <[EMAIL PROTECTED]>        xdb     libxdb1c102
Mike Schacht <[EMAIL PROTECTED]>        hk-classes      libhk-classes7
Miriam Ruiz <[EMAIL PROTECTED]> avida   avida-base
NOKUBI Takatsugu <[EMAIL PROTECTED]>    chasen  libchasen0
Neil Roeth <[EMAIL PROTECTED]>  openjade        libostyle1
Ola Lundqvist <[EMAIL PROTECTED]>       vnc     vncserver
Ola Lundqvist <[EMAIL PROTECTED]>       xclass  libxclass0
Pasi Savilaakso <[EMAIL PROTECTED]>     libdc0  libdc0
Peter Karlsson <[EMAIL PROTECTED]>      turqstat        turqstat
Philipp Frauenfelder <[EMAIL PROTECTED]>        gbib    gbib
Ricardo Javier Cardenes Medina <[EMAIL PROTECTED]>      sip-qt3 sip
Robert Jordens <[EMAIL PROTECTED]>      ardour  libpbd0
Robert Ribnitz <[EMAIL PROTECTED]>      htdig   htdig
Robert Woodcock <[EMAIL PROTECTED]>     id3lib3.8.3     libid3-3.8.3
Roger So <[EMAIL PROTECTED]>    guikachu        guikachu2rcp
Roger So <[EMAIL PROTECTED]>    im-sdk  iiimf-htt-server
Roland Stigge <[EMAIL PROTECTED]>       gps     rgpsp
Roy Hiu-yeung Chan <[EMAIL PROTECTED]>  stardict        stardict
Ryan Murray <[EMAIL PROTECTED]> libgc   libgc1
Sam Hocevar (Debian packages) <[EMAIL PROTECTED]>       libsdl-sge      
libsdl-sge
Sam Hocevar (Debian packages) <[EMAIL PROTECTED]>       sabre   xsabre
Sebastien Bacher <[EMAIL PROTECTED]>    verbiste        libverbiste0
Stefano Zacchiroli <[EMAIL PROTECTED]>  editex  libeditex0
Stephen Zander <[EMAIL PROTECTED]>      libcrypto++     libcrypto++5.2
Steve Halasz <[EMAIL PROTECTED]>        geos    libgeos2
Steve M. Robbins <[EMAIL PROTECTED]>    boost   libboost-date-time1.32.0
Steve M. Robbins <[EMAIL PROTECTED]>    boost   libboost-filesystem1.32.0
Steve M. Robbins <[EMAIL PROTECTED]>    boost   libboost-python1.32.0
Steve M. Robbins <[EMAIL PROTECTED]>    boost   libboost-regex1.32.0
Steve M. Robbins <[EMAIL PROTECTED]>    boost   libboost-test1.32.0
Steve M. Robbins <[EMAIL PROTECTED]>    coin2   libcoin40
Steve M. Robbins <[EMAIL PROTECTED]>    cppunit libcppunit-1.10-2
Steve M. Robbins <[EMAIL PROTECTED]>    gmp     libgmp3
TSUCHIYA Masatoshi <[EMAIL PROTECTED]>  mecab   libmecab0
Thomas Bushnell, BSG <[EMAIL PROTECTED]>        libofx  libofx1
Thomas Scheffczyk <[EMAIL PROTECTED]>   annoyance-filter        annoyance-filter
Thomas Viehmann <[EMAIL PROTECTED]>     libktoblzcheck  libktoblzcheck1
Tilman Koschnick <[EMAIL PROTECTED]>    gpsd    gpsd
Tim Johann <[EMAIL PROTECTED]>  pwlib   libpt-1.5.2
Tim Riker <[EMAIL PROTECTED]>   bzflag  bzflag-server
Torsten Werner <[EMAIL PROTECTED]>      stlport4.6      libstlport4.6
Will Newton <[EMAIL PROTECTED]> aqsis   aqsis-libs
Yann Dirson <[EMAIL PROTECTED]> tulip   libtulip-2.0
martin f. krafft <[EMAIL PROTECTED]>    fbpager fbpager
teTeX maintainers <debian-tetex-maint@lists.debian.org> tetex-bin       
tetex-bin
#!/usr/bin/perl

use AptPkg::Cache;
use Graph::Directed;
use strict;
use warnings;

my $c = AptPkg::Cache->new;

sub src_name
{
    my $pkg = shift;
    return $c->packages->lookup($pkg)->{SourcePkg} || $pkg;
}

my $targetlib = 'libstdc++5';
my @l = @{$c->{$targetlib}->{RevDependsList}};

my $g = Graph::Directed->new;
$g->add_vertex($targetlib);

while (@l)
{
    my %n;
    foreach my $pkg (@l)
    {
        my $name = $pkg->{ParentPkg}->{Name};
        my $target = $pkg->{TargetPkg}->{Name};
        unless ($g->has_edge($name, $target))
        {
            $n{$name} ||= 1;
            $g->add_edge($name, $target);
        }
    }

    @l=();
    foreach my $pkg (keys %n)
    {
        foreach my $ver (@{$c->{$pkg}->{VersionList}})
        {
            foreach my $dep (@{$ver->{DependsList}})
            {
                next unless $dep->{ParentPkg}->{Name} eq $pkg;
                my $target = $dep->{TargetPkg}->{Name};
                push @l, $dep if $g->has_edge($target, $targetlib);
            }
        }
    }
}

$g->delete_vertex($targetlib);

my $pkgs = $c->packages;

foreach my $pkg ($g->sink_vertices)
{
    print $pkgs->lookup($pkg)->{Maintainer}, "\t", src_name($pkg), "\t", $pkg, 
"\n";
}

Reply via email to