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