[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

keeping old library versions in testing



Hi,

we discussed in Vancouver to keep the old library versions around in
testing as long as anything depends on it, and still allow the new
version in. Today, I had a bit time to fiddle around with britney. What
I actually tested was:
      foo |      1 |       unstable | source, i386
  libfoo1 |      1 |       unstable | i386
      bar |      1 |       unstable | source, i386
(with bar=1 depending on libfoo1, bar=2 depending on libfoo2). After the
testing run (of course minimum waiting switched off) everything was in
testing. Now upgrading foo to version 2, and removing libfoo1 in
unstable, and adding libfoo2. After the next testing run, I had:
      foo |      2 |       testing | source, i386
  libfoo1 |      1 |       testing | i386
  libfoo2 |      2 |       testing | i386
      bar |      1 |       testing | source, i386
Now I replaced bar with a new "upload" that depends on libfoo2. After
the next testing run, I had this scenario:
      foo |      2 |       testing | source, i386
  libfoo2 |      2 |       testing | i386
      bar |      2 |       testing | source, i386

Ok, that was what I wanted to have. This patch would reduce the amount
to bring in transitions into testing dramatically.

Actually, the change was quite easy. In dpkg.c, I added:
 void upgrade_source(dpkg_sources_note *srcsn, dpkg_source *src) {
     dpkg_source_note *srcn;
     int i;

     new_op(srcsn);

     assert(is_sources_note(srcsn));
     /* first, find the old source, if it exists */
+    /*
     srcn = remove_sourcenotetbl(srcsn->sources, src->package);
     if (srcn != NULL) {
         save_source_note(srcsn, srcn);
        for (i = 0; i < srcn->n_arches; i++) {
            remove_binaries_by_arch(srcsn, srcn, i, DO_ARCHALL);
        }
        free_source_note(srcn);
     } else {
         save_empty_source_note(srcsn, src);
     }
+    */

     /* then add the new one */
     srcn = new_source_note(src, srcsn->n_arches);
     add_sourcenotetbl(srcsn->sources, src->package, srcn);
     for (i = 0; i < srcsn->n_arches; i++) {
        add_binaries_by_arch(srcsn, srcn, src, i, UNDOABLE, DO_ARCHALL);
     }
     assert(is_sources_note(srcsn));
 }


I'm not really a dpkg hacker, but it *seems* to me that this doesn't
generate memory pollution. Of course, I could easily be wrong - but
then, I should take a look when I didn't just come back from a 6 day
trip.

Comments, Suggestions are welcome - as well as application if the patch
is really ok. :)


Cheers,
Andi
-- 
  http://home.arcor.de/andreas-barth/



Reply to: