mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-10-31 00:24:06 +00:00 
			
		
		
		
	Move write_controlfiles to britney_util
Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
		
							parent
							
								
									329f1901b4
								
							
						
					
					
						commit
						3f86ef3299
					
				
							
								
								
									
										53
									
								
								britney.py
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								britney.py
									
									
									
									
									
								
							| @ -216,7 +216,7 @@ from britney_util import (old_libraries_format, same_source, undo_changes, | |||||||
|                           register_reverses, compute_reverse_tree, |                           register_reverses, compute_reverse_tree, | ||||||
|                           read_nuninst, write_nuninst, write_heidi, |                           read_nuninst, write_nuninst, write_heidi, | ||||||
|                           eval_uninst, newly_uninst, make_migrationitem, |                           eval_uninst, newly_uninst, make_migrationitem, | ||||||
|                           write_excuses, write_heidi_delta, write_sources) |                           write_excuses, write_heidi_delta, write_controlfiles) | ||||||
| from consts import (VERSION, SECTION, BINARIES, MAINTAINER, FAKESRC, | from consts import (VERSION, SECTION, BINARIES, MAINTAINER, FAKESRC, | ||||||
|                    SOURCE, SOURCEVER, ARCHITECTURE, DEPENDS, CONFLICTS, |                    SOURCE, SOURCEVER, ARCHITECTURE, DEPENDS, CONFLICTS, | ||||||
|                    PROVIDES, RDEPENDS, RCONFLICTS, MULTIARCH, ESSENTIAL) |                    PROVIDES, RDEPENDS, RCONFLICTS, MULTIARCH, ESSENTIAL) | ||||||
| @ -868,52 +868,6 @@ class Britney(object): | |||||||
|         return hints |         return hints | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def write_controlfiles(self, basedir, suite): |  | ||||||
|         """Write the control files |  | ||||||
| 
 |  | ||||||
|         This method writes the control files for the binary packages of all |  | ||||||
|         the architectures and for the source packages. |  | ||||||
|         """ |  | ||||||
|         sources = self.sources[suite] |  | ||||||
| 
 |  | ||||||
|         self.__log("Writing new %s control files to %s" % (suite, basedir)) |  | ||||||
|         for arch in self.options.architectures: |  | ||||||
|             filename = os.path.join(basedir, 'Packages_%s' % arch) |  | ||||||
|             f = open(filename, 'w') |  | ||||||
|             binaries = self.binaries[suite][arch][0] |  | ||||||
|             for pkg in binaries: |  | ||||||
|                 output = "Package: %s\n" % pkg |  | ||||||
|                 for key, k in ((SECTION, 'Section'), (ARCHITECTURE, 'Architecture'), (MULTIARCH, 'Multi-Arch'), (SOURCE, 'Source'), (VERSION, 'Version'),  |  | ||||||
|                           (DEPENDS, 'Depends'), (PROVIDES, 'Provides'), (CONFLICTS, 'Conflicts'), (ESSENTIAL, 'Essential')): |  | ||||||
|                     if not binaries[pkg][key]: continue |  | ||||||
|                     if key == SOURCE: |  | ||||||
|                         if binaries[pkg][SOURCE] == pkg: |  | ||||||
|                             if binaries[pkg][SOURCEVER] != binaries[pkg][VERSION]: |  | ||||||
|                                 source = binaries[pkg][SOURCE] + " (" + binaries[pkg][SOURCEVER] + ")" |  | ||||||
|                             else: continue |  | ||||||
|                         else: |  | ||||||
|                             if binaries[pkg][SOURCEVER] != binaries[pkg][VERSION]: |  | ||||||
|                                 source = binaries[pkg][SOURCE] + " (" + binaries[pkg][SOURCEVER] + ")" |  | ||||||
|                             else: |  | ||||||
|                                 source = binaries[pkg][SOURCE] |  | ||||||
|                         output += (k + ": " + source + "\n") |  | ||||||
|                         if sources[binaries[pkg][SOURCE]][MAINTAINER]: |  | ||||||
|                             output += ("Maintainer: " + sources[binaries[pkg][SOURCE]][MAINTAINER] + "\n") |  | ||||||
|                     elif key == PROVIDES: |  | ||||||
|                         if len(binaries[pkg][key]) > 0: |  | ||||||
|                             output += (k + ": " + ", ".join(binaries[pkg][key]) + "\n") |  | ||||||
|                     elif key == ESSENTIAL: |  | ||||||
|                         if binaries[pkg][key]: |  | ||||||
|                             output += (k + ": " + " yes\n") |  | ||||||
|                     else: |  | ||||||
|                         output += (k + ": " + binaries[pkg][key] + "\n") |  | ||||||
|                 f.write(output + "\n") |  | ||||||
|             f.close() |  | ||||||
| 
 |  | ||||||
|         filename = os.path.join(basedir, 'Sources') |  | ||||||
|         write_sources(sources, filename) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     # Utility methods for package analysis |     # Utility methods for package analysis | ||||||
|     # ------------------------------------ |     # ------------------------------------ | ||||||
| 
 | 
 | ||||||
| @ -2388,7 +2342,10 @@ class Britney(object): | |||||||
|         if not self.options.dry_run: |         if not self.options.dry_run: | ||||||
|             # re-write control files |             # re-write control files | ||||||
|             if self.options.control_files: |             if self.options.control_files: | ||||||
|                 self.write_controlfiles(self.options.testing, 'testing') |                 self.__log("Writing new testing control files to %s" % | ||||||
|  |                            self.options.testing) | ||||||
|  |                 write_controlfiles(self.sources, self.binaries, | ||||||
|  |                                    'testing', self.options.testing) | ||||||
| 
 | 
 | ||||||
|             # write dates |             # write dates | ||||||
|             try: |             try: | ||||||
|  | |||||||
| @ -25,6 +25,7 @@ import apt_pkg | |||||||
| from functools import partial | from functools import partial | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
| from itertools import chain, ifilter, ifilterfalse, izip, repeat | from itertools import chain, ifilter, ifilterfalse, izip, repeat | ||||||
|  | import os | ||||||
| import re | import re | ||||||
| import time | import time | ||||||
| import yaml | import yaml | ||||||
| @ -33,7 +34,8 @@ from migrationitem import MigrationItem, UnversionnedMigrationItem | |||||||
| 
 | 
 | ||||||
| from consts import (VERSION, BINARIES, PROVIDES, DEPENDS, CONFLICTS, | from consts import (VERSION, BINARIES, PROVIDES, DEPENDS, CONFLICTS, | ||||||
|                     RDEPENDS, RCONFLICTS, ARCHITECTURE, SECTION, |                     RDEPENDS, RCONFLICTS, ARCHITECTURE, SECTION, | ||||||
|                     SOURCE, SOURCEVER, MAINTAINER) |                     SOURCE, SOURCEVER, MAINTAINER, MULTIARCH, | ||||||
|  |                     ESSENTIAL) | ||||||
| 
 | 
 | ||||||
| binnmu_re = re.compile(r'^(.*)\+b\d+$') | binnmu_re = re.compile(r'^(.*)\+b\d+$') | ||||||
| 
 | 
 | ||||||
| @ -493,3 +495,58 @@ def write_sources(sources_s, filename): | |||||||
|            output += "\n".join(k + ": "+ src_data[key] |            output += "\n".join(k + ": "+ src_data[key] | ||||||
|                                for key, k in key_pairs if src_data[key]) |                                for key, k in key_pairs if src_data[key]) | ||||||
|            f.write(output + "\n\n") |            f.write(output + "\n\n") | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def write_controlfiles(sources, packages, suite, basedir): | ||||||
|  |     """Write the control files | ||||||
|  | 
 | ||||||
|  |     This method writes the control files for the binary packages of all | ||||||
|  |     the architectures and for the source packages.  Note that Britney | ||||||
|  |     discards a lot of fields that she does not care about.  Therefore, | ||||||
|  |     these files may omit a lot of regular fields. | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     sources_s = sources[suite] | ||||||
|  |     packages_s = packages[suite] | ||||||
|  | 
 | ||||||
|  |     key_pairs = ((SECTION, 'Section'), (ARCHITECTURE, 'Architecture'), | ||||||
|  |                  (MULTIARCH, 'Multi-Arch'), (SOURCE, 'Source'), | ||||||
|  |                  (VERSION, 'Version'), (DEPENDS, 'Depends'), | ||||||
|  |                  (PROVIDES, 'Provides'), (CONFLICTS, 'Conflicts'), | ||||||
|  |                  (ESSENTIAL, 'Essential')) | ||||||
|  | 
 | ||||||
|  |     for arch in packages_s: | ||||||
|  |         filename = os.path.join(basedir, 'Packages_%s' % arch) | ||||||
|  |         binaries = packages_s[arch][0] | ||||||
|  |         with open(filename, 'w') as f: | ||||||
|  |             for pkg in binaries: | ||||||
|  |                 output = "Package: %s\n" % pkg | ||||||
|  |                 bin_data = binaries[pkg] | ||||||
|  |                 for key, k in key_pairs: | ||||||
|  |                     if not bin_data[key]: continue | ||||||
|  |                     if key == SOURCE: | ||||||
|  |                         src = bin_data[SOURCE] | ||||||
|  |                         if sources_s[src][MAINTAINER]: | ||||||
|  |                             output += ("Maintainer: " + sources_s[src][MAINTAINER] + "\n") | ||||||
|  | 
 | ||||||
|  |                         if bin_data[SOURCE] == pkg: | ||||||
|  |                             if bin_data[SOURCEVER] != bin_data[VERSION]: | ||||||
|  |                                 source = src + " (" + bin_data[SOURCEVER] + ")" | ||||||
|  |                             else: continue | ||||||
|  |                         else: | ||||||
|  |                             if bin_data[SOURCEVER] != bin_data[VERSION]: | ||||||
|  |                                 source = src + " (" + bin_data[SOURCEVER] + ")" | ||||||
|  |                             else: | ||||||
|  |                                 source = src | ||||||
|  |                         output += (k + ": " + source + "\n") | ||||||
|  |                     elif key == PROVIDES: | ||||||
|  |                         if bin_data[key]: | ||||||
|  |                             output += (k + ": " + ", ".join(bin_data[key]) + "\n") | ||||||
|  |                     elif key == ESSENTIAL: | ||||||
|  |                         if bin_data[key]: | ||||||
|  |                             output += (k + ": " + " yes\n") | ||||||
|  |                     else: | ||||||
|  |                         output += (k + ": " + bin_data[key] + "\n") | ||||||
|  |                 f.write(output + "\n") | ||||||
|  | 
 | ||||||
|  |     write_sources(sources_s, os.path.join(basedir, 'Sources')) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user