|
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 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') |