aboutsummaryrefslogtreecommitdiffstats
path: root/setup-files/linux/setup.py
blob: 841e86af539a97d81f94004bf02bc73a4b6eb0d5 (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import glob
import os
import shutil
import subprocess
import sys
from distutils.cmd import Command
from setuptools import setup

if sys.version < '2.7':
    raise RuntimeError('LVC requires Python 2.7')

def icon_data_files():
    sizes = [16, 22, 32, 48]
    data_files = []
    for size in sizes:
        d = os.path.join("icons", "hicolor", "%sx%s" % (size, size), "apps")
        source = os.path.join(SETUP_DIR, d, "librevideoconverter.png")
        dest = os.path.join("/usr/share/", d)
        data_files.append((dest, [source]))

    return data_files

def application_data_files():
    return [
        ('/usr/share/applications',
         [os.path.join(SETUP_DIR, 'librevideoconverter.desktop')]),
    ]

def data_files():
    return application_data_files() + icon_data_files()

class sdist_deb(Command):
    description = ("Build a debian source package.")
    user_options = [
        ('dist-dir=', 'd',
         "directory to put the source distribution archive(s) in "
         "[default: dist]"),
    ]

    def initialize_options(self):
        self.dist_dir = None

    def finalize_options(self):
        if self.dist_dir is None:
            self.dist_dir = 'dist'
        self.dist_dir = os.path.abspath(self.dist_dir)

    def run(self):
        self.run_command("sdist")
        self.setup_dirs()
        for debian_dir in glob.glob(os.path.join(SETUP_DIR, 'debian-*')):
            self.build_for_release(debian_dir)
        os.chdir(self.orig_dir)
        print
        print "debian source build complete"
        print "files are in %s" % self.work_dir

    def build_for_release(self, debian_dir):
        os.chdir(self.work_dir)
        source_tree = os.path.join(self.work_dir,
                                   'librevideoconverter-%s' % VERSION)
        if os.path.exists(source_tree):
            shutil.rmtree(source_tree)
        self.extract_tarball()
        self.copy_debian_directory(debian_dir)
        os.chdir('librevideoconverter-%s' % VERSION)
        subprocess.check_call(['dpkg-buildpackage', '-S'])

    def setup_dirs(self):
        self.orig_dir = os.getcwd()
        self.work_dir = os.path.join(self.dist_dir, 'deb')
        if os.path.exists(self.work_dir):
            shutil.rmtree(self.work_dir)
        os.makedirs(self.work_dir)

    def extract_tarball(self):
        tarball = os.path.join(self.dist_dir,
                               "librevideoconverter-%s.tar.gz" % VERSION)
        subprocess.check_call(["tar", "zxf", tarball])
        shutil.copyfile(tarball,
                        "librevideoconverter_%s.orig.tar.gz" % VERSION)

    def copy_debian_directory(self, debian_dir):
        dest = os.path.join(self.work_dir,
                            'librevideoconverter-%s/debian' % VERSION)
        shutil.copytree(debian_dir, dest)

setup(
    cmdclass={
        'sdist_deb': sdist_deb,
    },
    data_files=data_files(),
    scripts=['scripts/libre-video-converter.py'],
    **SETUP_ARGS
)