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