|
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 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), |
281 |
stdout=subprocess.PIPE, |
282 |
) |
283 |
compressor = subprocess.Popen( |
279 |
('gzip',), |
284 |
('gzip',), |
280 |
stdin=open(filename, 'rb'), |
285 |
stdin=subprocess.PIPE, |
281 |
stdout=open(filename + '.gz', 'wb'), |
286 |
stdout=open(filename + '.gz', 'wb'), |
282 |
) |
287 |
) |
|
|
288 |
prev = None |
289 |
for pkg in Packages.iter_paragraphs(sorter.stdout): |
290 |
if prev: |
291 |
if prev["Package"] != pkg["Package"]: |
292 |
compressor.stdin.write("%s\n" % prev) |
293 |
elif apt_pkg.version_compare(prev["Version"], pkg["Version"]) >= 0: |
294 |
continue |
295 |
prev = pkg |
296 |
if prev: |
297 |
compressor.stdin.write("%s\n" % prev) |
298 |
compressor.stdin.close() |
283 |
|
299 |
|
284 |
def _release(self, outdir, dist, archs, version): |
300 |
def _release(self, outdir, dist, archs, version): |
285 |
rel_name = os.path.join(outdir, 'dists', dist, 'Release') |
301 |
rel_name = os.path.join(outdir, 'dists', dist, 'Release') |