root/debexpo/plugins/getorigtarball.py

Revision 5914a0a198b3671b10ded3c10162fe88cdc4cbe4, 3.2 kB (checked in by Jonny Lamb <jonny@…>, 5 months ago)

Updated my email address.

Signed-off-by: Jonny Lamb <jonny@…>

  • Property mode set to 100644
Line 
1# -*- coding: utf-8 -*-
2#
3#   getorigtarball.py — getorigtarball plugin
4#
5#   This file is part of debexpo - http://debexpo.workaround.org
6#
7#   Copyright © 2008 Jonny Lamb <jonny@debian.org>
8#
9#   Permission is hereby granted, free of charge, to any person
10#   obtaining a copy of this software and associated documentation
11#   files (the "Software"), to deal in the Software without
12#   restriction, including without limitation the rights to use,
13#   copy, modify, merge, publish, distribute, sublicense, and/or sell
14#   copies of the Software, and to permit persons to whom the
15#   Software is furnished to do so, subject to the following
16#   conditions:
17#
18#   The above copyright notice and this permission notice shall be
19#   included in all copies or substantial portions of the Software.
20#
21#   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22#   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23#   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24#   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25#   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26#   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27#   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28#   OTHER DEALINGS IN THE SOFTWARE.
29
30"""
31Holds the getorigtarball plugin.
32"""
33
34__author__ = 'Jonny Lamb'
35__copyright__ = 'Copyright © 2008 Jonny Lamb'
36__license__ = 'MIT'
37
38from debian_bundle import deb822
39import logging
40import os
41import urllib
42
43from debexpo.lib import constants
44from debexpo.lib.base import *
45from debexpo.lib.utils import md5sum
46from debexpo.plugins import BasePlugin
47
48log = logging.getLogger(__name__)
49
50class 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        # There is no orig.tar.gz file in the dsc file. This is probably a native package.
66        if orig is None:
67            log.debug('No orig.tar.gz file found; native package?')
68            return
69
70        # An orig.tar.gz was found in the dsc, and also in the upload.
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
92plugin = GetOrigTarballPlugin
93
94outcomes = {
95    'tarball-taken-from-debian' : { 'name' : 'The original tarball has been retrieved from Debian' },
96}
Note: See TracBrowser for help on using the browser.