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

How would you use britney for Kali and are generalization patches welcome?



Hello britney maintainers,

I would like your advice and comments about a possible usage of britney
in the context of a Debian derivative.

Kali is currently based on Debian Stable but we are investigating ways to
switch to Debian testing and thus become a "rolling" distribution as well.
Currently we have a "kali-only" repository that gets combined with a
mirror of the "wheezy" repository into a "kali" repository. This merge is
managed by reprepro and has almost no intelligence (there's also a
"kali-proposed-updates" repo where we stage updates that still need to be
validated and that will be moved to "kali-only").

Now we want our underlying distribution to be "testing" and we obviously
want to ensure installability of all packages in "kali". Thus I believe
that we should use britney to build the (new) kali repository. That said
we are not interested in RC bug tracking and minimum delays (on this
aspect we're probably closer to Ubuntu's usage of britney, thus ccing
Colin Watson who might have some code to share and some advice as well).

We are thus doing some tries with britney and I would like to have your
opinion on how you would approach this problem.

Our initial approach was to map repositories this way:
britney's unstable => debian-testing
britney's tpu => kali-only
britney's testing => kali

But this did not work at all because all the kali packages are missing
from britney's unstable and thus britney is trying to remove the packages
instead of updating them. So we changed the Sources/Packages files for
britney's unstable to be a concatenation of debian-testing +
kali-only (and I really mean a simple "cat" here, some
source/binary packages might appear multiple times albeit with different
versions) and britney's tpu became empty.

This no longer fails but it doesn't produce any satisfactorily result
either because britney seems to hang in some sort of loop in the
process. I attach the last lines of the log (up to a CTRL+C to interrupt
it), the britney configuration and a script used to download the
Packages/Sources files. The full log is at
http://ouaza.com/~rhertzog/britney.log.xz if needed. Thus you can
replicate the problem if you wish.

If you have some advice on how to best debug that kind of problem,
I'm all ears.

Also I would like to know if you would be interested in patches
that would make britney more easily reusable in other contexts
than Debian itself. I am thinking of things like:
- allowing usage of multiple directories to define britney's unstable
- renaming Debian jargon to generic concepts: unstable -> source, testing
  -> target, tpu/pu => updates, etc.
- make it easier to disable features that are not needed (right now I have
  to create quite a few empty files, and configure delays to 0 days, etc.)

Cheers,

PS: Just for the avoidance of doubts, the way to reproduce is to put the
attached files in a directory (it was next to britney.py for me) and to do
this:
# bash ./update-data.sh
# ./britney.py -c britney.conf -v >britney.log 2>&1
-- 
Raphaël Hertzog ◈ Debian Developer

Discover the Debian Administrator's Handbook:
→ http://debian-handbook.info/get/

Attachment: update-data.sh
Description: Bourne shell script

# Configuration file for britney

# Paths for control files
TESTING           = data/kali 
TPU               = data/empty
#PU                = /srv/release.debian.org/britney/var/data-b2/proposed-updates
UNSTABLE          = data/britney-unstable

# Output
NONINST_STATUS    = data/non-installable-status 
EXCUSES_OUTPUT    = data/output/excuses.html
EXCUSES_YAML_OUTPUT = data/output/excuses.yaml 
UPGRADE_OUTPUT    = data/output/output.txt
HEIDI_OUTPUT      = data/output/HeidiResult

# List of release architectures
ARCHITECTURES     = i386 amd64 armel armhf

# if you're not in this list, arch: all packages are allowed to break on you
NOBREAKALL_ARCHES = i386

# if you're in this list, your packages may not stay in sync with the source
FUCKED_ARCHES     = 

# if you're in this list, your uninstallability count may increase
BREAK_ARCHES      = 

# if you're in this list, you are a new architecture
NEW_ARCHES        = 

# priorities and delays
MINDAYS_LOW       = 0
MINDAYS_MEDIUM    = 0
MINDAYS_HIGH      = 0
MINDAYS_CRITICAL  = 0
MINDAYS_EMERGENCY = 0
DEFAULT_URGENCY   = medium

# hint permissions

# support for old libraries in testing (smooth update)
# use ALL to enable smooth updates for all the sections
#
# naming a non-existent section will effectively disable new smooth
# updates but still allow removals to occur
SMOOTH_UPDATES    = libs oldlibs
    * i386: libtk-tablematrix-perl, xmltv, xmltv-gui
trying: libtk-tablematrix-perl/armhf
skipped: libtk-tablematrix-perl/armhf (57 <- 11838)
    got: 76+0: i-29:a-19:a-13:a-15
    * armhf: libtk-tablematrix-perl
trying: libtk-tablematrix-perl/armel
skipped: libtk-tablematrix-perl/armel (58 <- 11837)
    got: 76+0: i-29:a-19:a-14:a-14
    * armel: libtk-tablematrix-perl
trying: libtk-tablematrix-perl/amd64
skipped: libtk-tablematrix-perl/amd64 (59 <- 11836)
    got: 76+0: i-29:a-20:a-13:a-14
    * amd64: libtk-tablematrix-perl
trying: libtext-unaccent-perl/i386
skipped: libtext-unaccent-perl/i386 (60 <- 11835)
    got: 79+0: i-33:a-19:a-13:a-14
    * i386: bins, debian-edu-config, debian-edu-install, libtext-unaccent-perl
trying: libtext-unaccent-perl/armhf
skipped: libtext-unaccent-perl/armhf (61 <- 11834)
    got: 76+0: i-29:a-19:a-13:a-15
    * armhf: libtext-unaccent-perl
trying: libtext-unaccent-perl/armel
skipped: libtext-unaccent-perl/armel (62 <- 11833)
    got: 76+0: i-29:a-19:a-14:a-14
    * armel: libtext-unaccent-perl
trying: libtext-unaccent-perl/amd64
skipped: libtext-unaccent-perl/amd64 (63 <- 11832)
    got: 76+0: i-29:a-20:a-13:a-14
    * amd64: libtext-unaccent-perl
trying: libtext-ngram-perl/i386
skipped: libtext-ngram-perl/i386 (64 <- 11831)
    got: 77+0: i-31:a-19:a-13:a-14
    * i386: liblingua-identify-perl, libtext-ngram-perl
trying: libtext-ngram-perl/armhf
skipped: libtext-ngram-perl/armhf (65 <- 11830)
    got: 76+0: i-29:a-19:a-13:a-15
    * armhf: libtext-ngram-perl
trying: libtext-ngram-perl/armel
skipped: libtext-ngram-perl/armel (66 <- 11829)
    got: 76+0: i-29:a-19:a-14:a-14
    * armel: libtext-ngram-perl
trying: libtext-ngram-perl/amd64
skipped: libtext-ngram-perl/amd64 (67 <- 11828)
    got: 76+0: i-29:a-20:a-13:a-14
    * amd64: libtext-ngram-perl
trying: libtext-iconv-perl/i386
Traceback (most recent call last):
  File "./britney.py", line 2771, in <module>
    Britney().main()
  File "./britney.py", line 2737, in main
    self.upgrade_testing()
  File "./britney.py", line 2353, in upgrade_testing
    self.do_all()
  File "./britney.py", line 2271, in do_all
    (nuninst_end, extra) = self.iter_packages(upgrade_me, selected, nuninst=nuninst_end, lundo=lundo)
  File "./britney.py", line 2166, in iter_packages
    check_packages(arch, affected, skip_archall, nuninst)
  File "./britney.py", line 2054, in _check_packages
    self._installability_test(p, version, arch, broken, to_check, nuninst_arch)
  File "./britney.py", line 2754, in _installability_test
    r = self._inst_tester.is_installable(pkg_name, pkg_version, pkg_arch)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 167, in is_installable
    return self._check_inst(t)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 322, in _pick_choice
    if self._check_inst(p, musts_copy, never_copy, choices_copy):
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 345, in _check_inst
    r = _pick_choice(rebuild)
  File "/home/rhertzog/kali/rolling/britney2/installability/tester.py", line 319, in _pick_choice
    musts_copy = musts.copy()
KeyboardInterrupt

Reply to: