root/debexpo/plugins/getorigtarball.py

Revision 63e947c2925760238574f24e355001205f369996, 3.2 kB (checked in by Jonny Lamb <jonnylamb@jonnylamb.com>, 4 days ago)

Removed DecodingFile? class; it doesn't fix the unicode problem.

Signed-off-by: Jonny Lamb <jonnylamb@jonnylamb.com>

  • 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 <jonnylamb@jonnylamb.com
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 """
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         # 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
92 plugin = GetOrigTarballPlugin
93
94 outcomes = {
95     'tarball-taken-from-debian' : { 'name' : 'The original tarball has been retrieved from Debian' },
96 }
Note: See TracBrowser for help on using the browser.