~astraw/stdeb/autofind-depends

« back to all changes in this revision

Viewing changes to stdeb/util.py

  • Committer: AndrewStraw
  • Date: 2008-04-26 18:39:48 UTC
  • Revision ID: svn-v3-trunk0:30fc0ef2-3a16-0410-b950-f670368b4cad:trunk:97
Find .egg-info directory in debian/rules using a glob rather than
attempting to guess it, which was fragile.

Use Python2.5's subprocess.check_call() instead of our home-brewed version.

Use "date -R" instead of "822-date".

Erase temporary directories created on prior run of stdeb.

Don't break if no author is specified in setup.py.

Add tests for more styles of packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
 
46
46
class NotGiven: pass
47
47
 
48
 
def process_command(args, cwd=None, stdout=subprocess.PIPE,
49
 
                    stderr=subprocess.PIPE):
 
48
def process_command(args, cwd=None):
50
49
    if not isinstance(args, (list, tuple)):
51
50
        raise RuntimeError, "args passed must be in a list"
52
 
    cmd = subprocess.Popen(args, cwd=cwd, stdout=stdout, stderr=stderr)
53
 
    returncode = cmd.wait()
54
 
    if returncode:
55
 
        log.error('ERROR running: %s', ' '.join(args))
56
 
        log.error(cmd.stderr.read())
57
 
        raise RuntimeError('returncode %d', returncode)
58
 
    return cmd.stdout.read().strip()
 
51
    subprocess.check_call(args, cwd=cwd)
59
52
 
60
53
def recursive_hardlink(src,dst):
61
54
    dst = os.path.abspath(dst)
106
99
 
107
100
def get_date_822():
108
101
    """return output of 822-date command"""
109
 
    cmd = '/usr/bin/822-date'
 
102
    cmd = '/bin/date'
110
103
    if not os.path.exists(cmd):
111
 
        raise ValueError('822-date command does not appear to exist at file '
112
 
                         '%s (install package dpkg-dev)'%cmd)
113
 
    args = [cmd]
114
 
    result = process_command([cmd])
 
104
        raise ValueError('%s command does not exist.'%cmd)
 
105
    args = [cmd,'-R']
 
106
    cmd = subprocess.Popen(args,stdout=subprocess.PIPE)
 
107
    returncode = cmd.wait()
 
108
    if returncode:
 
109
        log.error('ERROR running: %s', ' '.join(args))
 
110
        raise RuntimeError('returncode %d', returncode)
 
111
    result = cmd.stdout.read().strip()
115
112
    return result
116
113
 
117
114
def make_tarball(tarball_fname,directory,cwd=None):
119
116
    if tarball_fname.endswith('.gz'): opts = 'czf'
120
117
    else: opts = 'cf'
121
118
    args = ['/bin/tar',opts,tarball_fname,directory]
122
 
    result = process_command(args, cwd=cwd)
 
119
    process_command(args, cwd=cwd)
123
120
 
124
121
 
125
122
def expand_tarball(tarball_fname,cwd=None):
128
125
    elif tarball_fname.endswith('.bz2'): opts = 'xjf'
129
126
    else: opts = 'xf'
130
127
    args = ['/bin/tar',opts,tarball_fname]
131
 
    result = process_command(args, cwd=cwd)
 
128
    process_command(args, cwd=cwd)
132
129
 
133
130
 
134
131
def expand_zip(zip_fname,cwd=None):
148
145
        extdir = os.path.join(cwd, os.path.basename(zip_fname[:-4]))
149
146
        args.extend(['-d', os.path.abspath(extdir)])
150
147
 
151
 
    result = process_command(args, cwd=cwd)
 
148
    process_command(args, cwd=cwd)
152
149
 
153
150
 
154
151
def expand_sdist_file(sdist_file,cwd=None):
189
186
    if arg2 is not None:
190
187
        args.append(arg2)
191
188
 
192
 
    result = process_command(args, cwd=cwd)
 
189
    process_command(args, cwd=cwd)
193
190
 
194
191
def apply_patch(patchfile,cwd=None,posix=False,level=0):
195
192
    """call 'patch -p[level] [--posix] < arg1'
273
270
                 default_maintainer=NotGiven,
274
271
                 upstream_version=NotGiven,
275
272
                 egg_module_name=NotGiven,
276
 
                 egg_version_filename=NotGiven,
277
273
                 no_pycentral=NotGiven,
278
274
                 has_ext_modules=NotGiven,
279
275
                 description=NotGiven,
317
313
                    forced_upstream_version,debianize_version(forced_upstream_version)))
318
314
            self.upstream_version = forced_upstream_version
319
315
        self.egg_module_name = egg_module_name
320
 
        self.egg_version_filename = egg_version_filename
321
316
        self.epoch = parse_val(cfg,module_name,'Epoch')
322
317
        if self.epoch != '' and not self.epoch.endswith(':'):
323
318
            self.epoch = self.epoch + ':'
662
657
            fullpath_orig_dirname = os.path.join(tmp_dir,orig_dirname)
663
658
 
664
659
            #    C. move original repackaged tree to .orig
665
 
            os.rename(fullpath_orig_dirname,fullpath_repackaged_dirname+'.orig')
 
660
            target = fullpath_repackaged_dirname+'.orig'
 
661
            if os.path.exists(target):
 
662
                # here from previous invocation, probably
 
663
                shutil.rmtree(target)
 
664
            os.rename(fullpath_orig_dirname,target)
666
665
 
667
666
        finally:
668
667
            shutil.rmtree(tmp_dir)
674
673
    #    Re-generate tarball using best practices see
675
674
    #    http://www.debian.org/doc/developers-reference/ch-best-pkging-practices.en.html
676
675
    #    call "dpkg-source -b new_dirname orig_dirname"
 
676
    log.info('CALLING dpkg-source -b %s %s (in dir %s)'%(repackaged_dirname,
 
677
                                                         repackaged_orig_tarball,
 
678
                                                         dist_dir))
 
679
 
677
680
    dpkg_source('-b',repackaged_dirname,
678
681
                repackaged_orig_tarball,
679
682
                cwd=dist_dir)
713
716
PACKAGE_NAME=%(package)s
714
717
MODULE_NAME=%(module_name)s
715
718
EGG_MODULE_NAME=%(egg_module_name)s
716
 
EGG_VERSION_FILENAME=%(egg_version_filename)s
717
719
 
718
720
PYVERS=%(pycentral_showversions)s
719
721
 
744
746
        %(setup_env_vars)spython$* -c "import setuptools,sys;f='setup.py';sys.argv[0]=f;execfile(f,{'__file__':f,'__name__':'__main__'})" install \\
745
747
                --no-compile --single-version-externally-managed \\
746
748
                --root $(CURDIR)/debian/${PACKAGE_NAME}
747
 
        mv debian/${PACKAGE_NAME}/usr/lib/python$*/site-packages/${EGG_MODULE_NAME}-${EGG_VERSION_FILENAME}-py$*.egg-info \\
 
749
        mv debian/${PACKAGE_NAME}/usr/lib/python$*/site-packages/*.egg-info \\
748
750
                debian/${PACKAGE_NAME}/usr/lib/python$*/site-packages/${EGG_MODULE_NAME}.egg-info
749
751
 
750
752
%(rules_binary)s