View | Details | Raw Unified | Return to bug 40932 | Differences between
and this patch

Collapse All | Expand All

(-)a/branches/ucs-4.0/ucs-4.0-4/base/univention-updater/modules/univention/updater/mirror.py (-4 / +29 lines)
 Lines 39-44   import itertools Link Here 
39
import logging
39
import logging
40
from operator import itemgetter
40
from operator import itemgetter
41
from debian.deb822 import Packages
41
from debian.deb822 import Packages
42
from apt import apt_pkg
42
43
43
from tools import UniventionUpdater, UCS_Version, NullHandler
44
from tools import UniventionUpdater, UCS_Version, NullHandler
44
try:
45
try:
 Lines 239-246   class UniventionMirror( UniventionUpdater ): Link Here 
239
				self.log.debug('Generating %s and %s ...', main_name, inst_name)
240
				self.log.debug('Generating %s and %s ...', main_name, inst_name)
240
				makedirs(os.path.dirname(main_name))
241
				makedirs(os.path.dirname(main_name))
241
				makedirs(os.path.dirname(inst_name))
242
				makedirs(os.path.dirname(inst_name))
242
				main = open(main_name, 'w')
243
				main = open(main_name + '.tmp', 'w')
243
				inst = open(inst_name, 'w')
244
				inst = open(inst_name + '.tmp', 'w')
244
				try:
245
				try:
245
					for dir2, src_name in prev:
246
					for dir2, src_name in prev:
246
						self.log.debug('Appending %s ...', src_name)
247
						self.log.debug('Appending %s ...', src_name)
 Lines 274-284   class UniventionMirror( UniventionUpdater ): Link Here 
274
275
275
	def _compress(self, filename):
276
	def _compress(self, filename):
276
		self.log.debug('Compressing %s ...', filename)
277
		self.log.debug('Compressing %s ...', filename)
277
		subprocess.call(
278
		sorter = subprocess.Popen(
279
			('apt-sortpkgs', filename + '.tmp'),
280
			stdout=subprocess.PIPE,
281
		)
282
		tee = subprocess.Popen(
283
			('tee', filename),
284
			stdin=subprocess.PIPE,
285
			stdout=subprocess.PIPE,
286
		)
287
		gzip = subprocess.Popen(
278
			('gzip',),
288
			('gzip',),
279
			stdin=open(filename, 'rb'),
289
			stdin=tee.stdout,
280
			stdout=open(filename + '.gz', 'wb'),
290
			stdout=open(filename + '.gz', 'wb'),
281
		)
291
		)
292
		tee.stdout.close()
293
		prev = None
294
		for pkg in Packages.iter_paragraphs(sorter.stdout):
295
			if prev:
296
				if prev["Package"] != pkg["Package"]:
297
					tee.stdin.write("%s\n" % prev)
298
				elif apt_pkg.version_compare(prev["Version"], pkg["Version"]) >= 0:
299
					continue
300
			prev = pkg
301
		if prev:
302
			tee.stdin.write("%s\n" % prev)
303
		tee.stdin.close()
304
		rc_sorter, rc_tee, rc_gzip = sorter.wait(), tee.wait(), gzip.wait()
305
		self.log.debug('sorter=%d tee=%d gzip=%d', rc_sorter, rc_tee, rc_gzip)
306
		os.remove(filename + '.tmp')
282
307
283
	def _release(self, outdir, dist, archs, version):
308
	def _release(self, outdir, dist, archs, version):
284
		rel_name = os.path.join(outdir, 'dists', dist, 'Release')
309
		rel_name = os.path.join(outdir, 'dists', dist, 'Release')
(-)a/branches/ucs-4.1/ucs-4.1-1/base/univention-updater/modules/univention/updater/mirror.py (-4 / +29 lines)
 Lines 39-44   import itertools Link Here 
39
import logging
39
import logging
40
from operator import itemgetter
40
from operator import itemgetter
41
from debian.deb822 import Packages
41
from debian.deb822 import Packages
42
from apt import apt_pkg
42
43
43
from tools import UniventionUpdater, NullHandler
44
from tools import UniventionUpdater, NullHandler
44
from ucs_version import UCS_Version
45
from ucs_version import UCS_Version
 Lines 240-247   class UniventionMirror(UniventionUpdater): Link Here 
240
                self.log.debug('Generating %s and %s ...', main_name, inst_name)
241
                self.log.debug('Generating %s and %s ...', main_name, inst_name)
241
                makedirs(os.path.dirname(main_name))
242
                makedirs(os.path.dirname(main_name))
242
                makedirs(os.path.dirname(inst_name))
243
                makedirs(os.path.dirname(inst_name))
243
                main = open(main_name, 'w')
244
                main = open(main_name + '.tmp', 'w')
244
                inst = open(inst_name, 'w')
245
                inst = open(inst_name + '.tmp', 'w')
245
                try:
246
                try:
246
                    for dir2, src_name in prev:
247
                    for dir2, src_name in prev:
247
                        self.log.debug('Appending %s ...', src_name)
248
                        self.log.debug('Appending %s ...', src_name)
 Lines 275-285   class UniventionMirror(UniventionUpdater): Link Here 
275
276
276
    def _compress(self, filename):
277
    def _compress(self, filename):
277
        self.log.debug('Compressing %s ...', filename)
278
        self.log.debug('Compressing %s ...', filename)
278
        subprocess.call(
279
        sorter = subprocess.Popen(
280
            ('apt-sortpkgs', filename + '.tmp'),
281
            stdout=subprocess.PIPE,
282
        )
283
        tee = subprocess.Popen(
284
            ('tee', filename),
285
            stdin=subprocess.PIPE,
286
            stdout=subprocess.PIPE,
287
        )
288
        gzip = subprocess.Popen(
279
            ('gzip',),
289
            ('gzip',),
280
            stdin=open(filename, 'rb'),
290
            stdin=tee.stdout,
281
            stdout=open(filename + '.gz', 'wb'),
291
            stdout=open(filename + '.gz', 'wb'),
282
        )
292
        )
293
        tee.stdout.close()
294
        prev = None
295
        for pkg in Packages.iter_paragraphs(sorter.stdout):
296
            if prev:
297
                if prev["Package"] != pkg["Package"]:
298
                    tee.stdin.write("%s\n" % prev)
299
                elif apt_pkg.version_compare(prev["Version"], pkg["Version"]) >= 0:
300
                    continue
301
            prev = pkg
302
        if prev:
303
            tee.stdin.write("%s\n" % prev)
304
        tee.stdin.close()
305
        rc_sorter, rc_tee, rc_gzip = sorter.wait(), tee.wait(), gzip.wait()
306
        self.log.debug('sorter=%d tee=%d gzip=%d', rc_sorter, rc_tee, rc_gzip)
307
        os.remove(filename + '.tmp')
283
308
284
    def _release(self, outdir, dist, archs, version):
309
    def _release(self, outdir, dist, archs, version):
285
        rel_name = os.path.join(outdir, 'dists', dist, 'Release')
310
        rel_name = os.path.join(outdir, 'dists', dist, 'Release')

Return to bug 40932