Subject: debpartial-mirror: InvalidSection exception not caught in the case of invalid 'resolve_deps_using' option Package: debpartial-mirror Version: 0.2.93 Severity: normal Tags: patch
Every time a Config instance is created, debpartial-mirror catches InvalidSection exceptions, that's ok. But when the configuration file lists an invalid backend in 'resolve_deps_using', debpartial-mirror crashes like this: [EMAIL PROTECTED]:~/hacking/src/debpartial-mirror/debpartial-mirror-0.2.93$ ./debpartial-mirror -c mirror.conf all Traceback (most recent call last): File "./debpartial-mirror", line 246, in ? main() File "./debpartial-mirror", line 208, in main (cnf_mirrors, cnf_merges) = cnf.get_backends() File "/home/terceiro/hacking/src/debpartial-mirror/debpartial-mirror-0.2.93/debpartial_mirror/Config.py", line 342, in get_backends self.check_dependencies(backend) File "/home/terceiro/hacking/src/debpartial-mirror/debpartial-mirror-0.2.93/debpartial_mirror/Config.py", line 336, in check_dependencies raise InvalidSection(section) NameError: global name 'section' is not defined The solution I found is to check dependency section straight in the constructor, instead doing that when get_backends is called. The attached patch fixes the problem. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.16-2-em64t-p4-smp Locale: LANG=pt_BR.utf8, LC_CTYPE=pt_BR.utf8 (charmap=UTF-8) -- Antonio S. de A. Terceiro <[EMAIL PROTECTED]> http://people.softwarelivre.org/~terceiro/ GnuPG ID: E6F73C30
Index: debpartial_mirror/Config.py =================================================================== --- debpartial_mirror/Config.py (revisão 740) +++ debpartial_mirror/Config.py (cópia de trabalho) @@ -297,6 +297,10 @@ if not isinstance(section, ConfigGlobal): self.backends[section.section] = section + # Check backend dependencies + for backend in self.backends.keys(): + self.check_dependencies(backend) + def __get_section_type(self, section): # detect which config type this is if section == 'GLOBAL': @@ -337,10 +341,6 @@ def get_backends(self): - # Check backend dependencies - for backend in self.backends.keys(): - self.check_dependencies(backend) - # Sort backends unsorted = self.backends.values() sorted = []