mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 02:24:24 +00:00 
			
		
		
		
	Reverting whitespace cleanup.
This commit is contained in:
		
							parent
							
								
									46281510e3
								
							
						
					
					
						commit
						b8e5851905
					
				
							
								
								
									
										68
									
								
								britney.py
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								britney.py
									
									
									
									
									
								
							@ -28,7 +28,7 @@ to always be fully installable and close to being a release candidate.
 | 
			
		||||
 | 
			
		||||
Britney's source code is split between two different but related tasks:
 | 
			
		||||
the first one is the generation of the update excuses, while the
 | 
			
		||||
second tries to update testing with the valid candidates; first
 | 
			
		||||
second tries to update testing with the valid candidates; first 
 | 
			
		||||
each package alone, then larger and even larger sets of packages
 | 
			
		||||
together. Each try is accepted if testing is not more uninstallable
 | 
			
		||||
after the update than before.
 | 
			
		||||
@ -53,7 +53,7 @@ Other than source and binary packages, Britney loads the following data:
 | 
			
		||||
  * BugsV, which contains the list of release-critical bugs for a given
 | 
			
		||||
    version of a source or binary package (see Britney.read_bugs).
 | 
			
		||||
 | 
			
		||||
  * Dates, which contains the date of the upload of a given version
 | 
			
		||||
  * Dates, which contains the date of the upload of a given version 
 | 
			
		||||
    of a source package (see Britney.read_dates).
 | 
			
		||||
 | 
			
		||||
  * Urgencies, which contains the urgency of the upload of a given
 | 
			
		||||
@ -72,9 +72,9 @@ instead explained in the chapter "Excuses Generation".
 | 
			
		||||
= Excuses =
 | 
			
		||||
 | 
			
		||||
An excuse is a detailed explanation of why a package can or cannot
 | 
			
		||||
be updated in the testing distribution from a newer package in
 | 
			
		||||
be updated in the testing distribution from a newer package in 
 | 
			
		||||
another distribution (like for example unstable). The main purpose
 | 
			
		||||
of the excuses is to be written in an HTML file which will be
 | 
			
		||||
of the excuses is to be written in an HTML file which will be 
 | 
			
		||||
published over HTTP. The maintainers will be able to parse it manually
 | 
			
		||||
or automatically to find the explanation of why their packages have
 | 
			
		||||
been updated or not.
 | 
			
		||||
@ -232,9 +232,9 @@ __version__ = '2.0'
 | 
			
		||||
 | 
			
		||||
class Britney(object):
 | 
			
		||||
    """Britney, the Debian testing updater script
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    This is the script that updates the testing distribution. It is executed
 | 
			
		||||
    each day after the installation of the updated packages. It generates the
 | 
			
		||||
    each day after the installation of the updated packages. It generates the 
 | 
			
		||||
    `Packages' files for the testing distribution, but it does so in an
 | 
			
		||||
    intelligent manner; it tries to avoid any inconsistency and to use only
 | 
			
		||||
    non-buggy packages.
 | 
			
		||||
@ -384,7 +384,7 @@ class Britney(object):
 | 
			
		||||
        parser.add_option("", "--series", action="store", dest="series", default=None,
 | 
			
		||||
                               help="set distribution series name")
 | 
			
		||||
        (self.options, self.args) = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        # integrity checks
 | 
			
		||||
        if self.options.nuninst_cache and self.options.print_uninst:
 | 
			
		||||
            self.__log("nuninst_cache and print_uninst are mutually exclusive!", type="E")
 | 
			
		||||
@ -425,7 +425,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def __log(self, msg, type="I"):
 | 
			
		||||
        """Print info messages according to verbosity level
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        An easy-and-simple log method which prints messages to the standard
 | 
			
		||||
        output. The type parameter controls the urgency of the message, and
 | 
			
		||||
        can be equal to `I' for `Information', `W' for `Warning' and `E' for
 | 
			
		||||
@ -528,7 +528,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_sources(self, basedir, intern=intern):
 | 
			
		||||
        """Read the list of source packages from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The source packages are read from the `Sources' file within the
 | 
			
		||||
        directory specified as `basedir' parameter. Considering the
 | 
			
		||||
        large amount of memory needed, not all the fields are loaded
 | 
			
		||||
@ -567,14 +567,14 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_binaries(self, basedir, distribution, arch, intern=intern):
 | 
			
		||||
        """Read the list of binary packages from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The binary packages are read from the `Packages_${arch}' files
 | 
			
		||||
        within the directory specified as `basedir' parameter, replacing
 | 
			
		||||
        ${arch} with the value of the arch parameter. Considering the
 | 
			
		||||
        large amount of memory needed, not all the fields are loaded
 | 
			
		||||
        in memory. The available fields are Version, Source, Multi-Arch,
 | 
			
		||||
        Depends, Conflicts, Provides and Architecture.
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        After reading the packages, reverse dependencies are computed
 | 
			
		||||
        and saved in the `rdepends' keys, and the `Provides' field is
 | 
			
		||||
        used to populate the virtual packages list.
 | 
			
		||||
@ -756,7 +756,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_bugs(self, basedir):
 | 
			
		||||
        """Read the release critial bug summary from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The RC bug summaries are read from the `BugsV' file within the
 | 
			
		||||
        directory specified in the `basedir' parameter. The file contains
 | 
			
		||||
        rows with the format:
 | 
			
		||||
@ -784,7 +784,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def __maxver(self, pkg, dist):
 | 
			
		||||
        """Return the maximum version for a given package name
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        This method returns None if the specified source package
 | 
			
		||||
        is not available in the `dist' distribution. If the package
 | 
			
		||||
        exists, then it returns the maximum version between the
 | 
			
		||||
@ -802,7 +802,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def normalize_bugs(self):
 | 
			
		||||
        """Normalize the release critical bug summaries for testing and unstable
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The method doesn't return any value: it directly modifies the
 | 
			
		||||
        object attribute `bugs'.
 | 
			
		||||
        """
 | 
			
		||||
@ -828,7 +828,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_dates(self, basedir):
 | 
			
		||||
        """Read the upload date for the packages from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The upload dates are read from the `Dates' file within the directory
 | 
			
		||||
        specified as `basedir' parameter. The file contains rows with the
 | 
			
		||||
        format:
 | 
			
		||||
@ -874,7 +874,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_urgencies(self, basedir):
 | 
			
		||||
        """Read the upload urgency of the packages from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The upload urgencies are read from the `Urgency' file within the
 | 
			
		||||
        directory specified as `basedir' parameter. The file contains rows
 | 
			
		||||
        with the format:
 | 
			
		||||
@ -922,12 +922,12 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def read_hints(self, basedir):
 | 
			
		||||
        """Read the hint commands from the specified directory
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The hint commands are read from the files contained in the `Hints'
 | 
			
		||||
        directory within the directory specified as `basedir' parameter.
 | 
			
		||||
        directory within the directory specified as `basedir' parameter. 
 | 
			
		||||
        The names of the files have to be the same as the authorized users
 | 
			
		||||
        for the hints.
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        The file contains rows with the format:
 | 
			
		||||
 | 
			
		||||
        <command> <package-name>[/<version>]
 | 
			
		||||
@ -1146,7 +1146,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def should_remove_source(self, pkg):
 | 
			
		||||
        """Check if a source package should be removed from testing
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        This method checks if a source package should be removed from the
 | 
			
		||||
        testing distribution; this happens if the source package is not
 | 
			
		||||
        present in the unstable distribution anymore.
 | 
			
		||||
@ -1187,7 +1187,7 @@ class Britney(object):
 | 
			
		||||
        This method checks if the binary packages produced by the source
 | 
			
		||||
        package on the given architecture should be upgraded; this can
 | 
			
		||||
        happen also if the migration is a binary-NMU for the given arch.
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        It returns False if the given packages don't need to be upgraded,
 | 
			
		||||
        True otherwise. In the former case, a new excuse is appended to
 | 
			
		||||
        the object attribute excuses.
 | 
			
		||||
@ -1205,7 +1205,7 @@ class Britney(object):
 | 
			
		||||
        excuse.set_vers(source_t[VERSION], source_t[VERSION])
 | 
			
		||||
        source_u[MAINTAINER] and excuse.set_maint(source_u[MAINTAINER].strip())
 | 
			
		||||
        source_u[SECTION] and excuse.set_section(source_u[SECTION].strip())
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        # if there is a `remove' hint and the requested version is the same as the
 | 
			
		||||
        # version in testing, then stop here and return False
 | 
			
		||||
        # (as a side effect, a removal may generate such excuses for both the source
 | 
			
		||||
@ -1335,9 +1335,9 @@ class Britney(object):
 | 
			
		||||
        """Check if source package should be upgraded
 | 
			
		||||
 | 
			
		||||
        This method checks if a source package should be upgraded. The analysis
 | 
			
		||||
        is performed for the source package specified by the `src' parameter,
 | 
			
		||||
        is performed for the source package specified by the `src' parameter, 
 | 
			
		||||
        for the distribution `suite'.
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        It returns False if the given package doesn't need to be upgraded,
 | 
			
		||||
        True otherwise. In the former case, a new excuse is appended to
 | 
			
		||||
        the object attribute excuses.
 | 
			
		||||
@ -1366,7 +1366,7 @@ class Britney(object):
 | 
			
		||||
        # the starting point is that we will update the candidate and run autopkgtests
 | 
			
		||||
        update_candidate = True
 | 
			
		||||
        run_autopkgtest = True
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        # if the version in unstable is older, then stop here with a warning in the excuse and return False
 | 
			
		||||
        if source_t and apt_pkg.version_compare(source_u[VERSION], source_t[VERSION]) < 0:
 | 
			
		||||
            excuse.addhtml("ALERT: %s is newer in testing (%s %s)" % (src, source_t[VERSION], source_u[VERSION]))
 | 
			
		||||
@ -1483,13 +1483,13 @@ class Britney(object):
 | 
			
		||||
            for arch in self.options.architectures:
 | 
			
		||||
                if src not in self.sources["testing"]:
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
                    
 | 
			
		||||
                # if the package in testing has no binaries on this
 | 
			
		||||
                # architecture, it can't be out-of-date
 | 
			
		||||
                if not any(x for x in self.sources["testing"][src][BINARIES]
 | 
			
		||||
                           if x.endswith("/"+arch) and self.binaries["testing"][arch][0][x.split("/")[0]][ARCHITECTURE] != 'all'):
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
                    
 | 
			
		||||
                # if the (t-)p-u package has produced any binaries on
 | 
			
		||||
                # this architecture then we assume it's ok. this allows for
 | 
			
		||||
                # uploads to (t-)p-u which intentionally drop binary
 | 
			
		||||
@ -1619,7 +1619,7 @@ class Britney(object):
 | 
			
		||||
                        bugs_t.extend(self.bugs['testing'][spkg])
 | 
			
		||||
                    if spkg in self.bugs['unstable']:
 | 
			
		||||
                        bugs_u.extend(self.bugs['unstable'][spkg])
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
                new_bugs = sorted(set(bugs_u).difference(bugs_t))
 | 
			
		||||
                old_bugs = sorted(set(bugs_t).difference(bugs_u))
 | 
			
		||||
 | 
			
		||||
@ -1720,7 +1720,7 @@ class Britney(object):
 | 
			
		||||
                    exclookup[x].addreason("depends")
 | 
			
		||||
                    exclookup[x].is_valid = False
 | 
			
		||||
            i = i + 1
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
    def write_excuses(self, same_source=same_source):
 | 
			
		||||
        """Produce and write the update excuses
 | 
			
		||||
 | 
			
		||||
@ -2173,7 +2173,7 @@ class Britney(object):
 | 
			
		||||
                         suite != 'unstable' and \
 | 
			
		||||
                         binaries_t[parch][0][binary][ARCHITECTURE] == 'all':
 | 
			
		||||
                        continue
 | 
			
		||||
                    else:
 | 
			
		||||
                    else:    
 | 
			
		||||
                        rms.add((binary, version, parch))
 | 
			
		||||
 | 
			
		||||
        # single binary removal; used for clearing up after smooth
 | 
			
		||||
@ -2623,7 +2623,7 @@ class Britney(object):
 | 
			
		||||
                    return None
 | 
			
		||||
                selected.append(x)
 | 
			
		||||
                upgrade_me.remove(x)
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        self.output_write("start: %s\n" % self.eval_nuninst(nuninst_start))
 | 
			
		||||
        if not force:
 | 
			
		||||
            self.output_write("orig: %s\n" % self.eval_nuninst(nuninst_start))
 | 
			
		||||
@ -2782,7 +2782,7 @@ class Britney(object):
 | 
			
		||||
            if len(removals) > 0:
 | 
			
		||||
                self.output_write("Removing obsolete source packages from testing (%d):\n" % (len(removals)))
 | 
			
		||||
                self.do_all(actions=removals)
 | 
			
		||||
 | 
			
		||||
                                                                                                                                     
 | 
			
		||||
        # smooth updates
 | 
			
		||||
        if self.options.smooth_updates:
 | 
			
		||||
            self.__log("> Removing old packages left in testing from smooth updates", type="I")
 | 
			
		||||
@ -2977,7 +2977,7 @@ class Britney(object):
 | 
			
		||||
    def auto_hinter(self):
 | 
			
		||||
        """Auto-generate "easy" hints.
 | 
			
		||||
 | 
			
		||||
        This method attempts to generate "easy" hints for sets of packages which
 | 
			
		||||
        This method attempts to generate "easy" hints for sets of packages which    
 | 
			
		||||
        must migrate together. Beginning with a package which does not depend on
 | 
			
		||||
        any other package (in terms of excuses), a list of dependencies and
 | 
			
		||||
        reverse dependencies is recursively created.
 | 
			
		||||
@ -3100,7 +3100,7 @@ class Britney(object):
 | 
			
		||||
 | 
			
		||||
    def main(self):
 | 
			
		||||
        """Main method
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        This is the entry point for the class: it includes the list of calls
 | 
			
		||||
        for the member methods which will produce the output files.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user