| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 |
|
|---|
| 22 |
|
|---|
| 23 |
|
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 |
""" |
|---|
| 31 |
Holds the getorigtarball plugin. |
|---|
| 32 |
""" |
|---|
| 33 |
|
|---|
| 34 |
__author__ = 'Jonny Lamb' |
|---|
| 35 |
__copyright__ = 'Copyright © 2008 Jonny Lamb' |
|---|
| 36 |
__license__ = 'MIT' |
|---|
| 37 |
|
|---|
| 38 |
from debian_bundle import deb822 |
|---|
| 39 |
import logging |
|---|
| 40 |
import os |
|---|
| 41 |
import urllib |
|---|
| 42 |
|
|---|
| 43 |
from debexpo.lib import constants |
|---|
| 44 |
from debexpo.lib.base import * |
|---|
| 45 |
from debexpo.lib.utils import md5sum |
|---|
| 46 |
from debexpo.plugins import BasePlugin |
|---|
| 47 |
|
|---|
| 48 |
log = logging.getLogger(__name__) |
|---|
| 49 |
|
|---|
| 50 |
class GetOrigTarballPlugin(BasePlugin): |
|---|
| 51 |
|
|---|
| 52 |
def test_orig_tarball(self): |
|---|
| 53 |
""" |
|---|
| 54 |
Check whether there is an original tarball referenced by the dsc file, but not |
|---|
| 55 |
actually in the package upload. |
|---|
| 56 |
""" |
|---|
| 57 |
dsc = deb822.Dsc(file(self.changes.get_dsc())) |
|---|
| 58 |
|
|---|
| 59 |
orig = None |
|---|
| 60 |
for dscfile in dsc['Files']: |
|---|
| 61 |
if dscfile['name'].endswith('orig.tar.gz'): |
|---|
| 62 |
orig = dscfile |
|---|
| 63 |
break |
|---|
| 64 |
|
|---|
| 65 |
|
|---|
| 66 |
if orig is None: |
|---|
| 67 |
log.debug('No orig.tar.gz file found; native package?') |
|---|
| 68 |
return |
|---|
| 69 |
|
|---|
| 70 |
|
|---|
| 71 |
if os.path.isfile(orig['name']): |
|---|
| 72 |
log.debug('%s found successfully', orig['name']) |
|---|
| 73 |
return |
|---|
| 74 |
|
|---|
| 75 |
log.debug('Could not find %s; looking in Debian for it', orig['name']) |
|---|
| 76 |
|
|---|
| 77 |
url = os.path.join(config['debexpo.debian_mirror'], self.changes.get_pool_path(), orig['name']) |
|---|
| 78 |
log.debug('Trying to fetch %s' % url) |
|---|
| 79 |
out = urllib.urlopen(url) |
|---|
| 80 |
contents = out.read() |
|---|
| 81 |
|
|---|
| 82 |
f = open(orig['name'], "wb") |
|---|
| 83 |
f.write(contents) |
|---|
| 84 |
f.close() |
|---|
| 85 |
|
|---|
| 86 |
if md5sum(orig['name']) == orig['md5sum']: |
|---|
| 87 |
log.debug('Tarball %s taken from Debian' % orig['name']) |
|---|
| 88 |
self.info('tarball-taken-from-debian', None) |
|---|
| 89 |
else: |
|---|
| 90 |
log.error('Tarball %s not found in Debian' % orig['name']) |
|---|
| 91 |
|
|---|
| 92 |
plugin = GetOrigTarballPlugin |
|---|
| 93 |
|
|---|
| 94 |
outcomes = { |
|---|
| 95 |
'tarball-taken-from-debian' : { 'name' : 'The original tarball has been retrieved from Debian' }, |
|---|
| 96 |
} |
|---|