mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-03 21:54:15 -04:00
113 lines
3.0 KiB
Python
113 lines
3.0 KiB
Python
#!/usr/bin/env python2
|
|
# vim:fileencoding=utf-8
|
|
# License: GPLv3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
|
|
import os, sys, subprocess
|
|
|
|
from setup import Command
|
|
|
|
|
|
def build_single(which, bitness, shutdown=True):
|
|
d = os.path.dirname
|
|
base = d(d(os.path.abspath(__file__)))
|
|
build_calibre = os.path.join(d(base), 'build-calibre')
|
|
build_calibre = os.environ.get('BUILD_CALIBRE_LOCATION', build_calibre)
|
|
if not os.path.isdir(build_calibre):
|
|
raise SystemExit(
|
|
'Cannot find the build-calibre code. Set the environment variable BUILD_CALIBRE_LOCATION to point to it'
|
|
)
|
|
cmd = [sys.executable, os.path.join(build_calibre, which)]
|
|
if bitness:
|
|
cmd.append(bitness)
|
|
cmd.append('calibre')
|
|
if not sys.stdout.isatty():
|
|
cmd.append('--no-tty')
|
|
cmd.append('--sign-installers')
|
|
env = os.environ.copy()
|
|
env['CALIBRE_SRC_DIR'] = base
|
|
ret = subprocess.Popen(cmd, env=env, cwd=build_calibre).wait()
|
|
if ret != 0:
|
|
raise SystemExit(ret)
|
|
dist = os.path.join(build_calibre, 'build', which)
|
|
if bitness:
|
|
dist = os.path.join(dist, bitness)
|
|
for q in 'dist sw/dist'.split():
|
|
if os.path.exists(os.path.join(dist, q)):
|
|
dist = os.path.join(dist, q)
|
|
break
|
|
for x in os.listdir(dist):
|
|
print(x)
|
|
dest = os.path.join(base, 'dist', x)
|
|
try:
|
|
os.remove(dest)
|
|
except EnvironmentError:
|
|
pass
|
|
os.link(os.path.join(dist, x), dest)
|
|
if shutdown:
|
|
cmd = [sys.executable, os.path.join(build_calibre, which), 'shutdown']
|
|
subprocess.Popen(cmd, env=env, cwd=build_calibre).wait()
|
|
|
|
|
|
class BuildInstaller(Command):
|
|
|
|
OS = BITNESS = ''
|
|
|
|
def add_options(self, parser):
|
|
parser.add_option(
|
|
'--dont-shutdown',
|
|
default=False,
|
|
action='store_true',
|
|
help='Do not shutdown the VM after building'
|
|
)
|
|
|
|
def run(self, opts):
|
|
build_single(self.OS, self.BITNESS, not opts.dont_shutdown)
|
|
|
|
|
|
class BuildInstallers(BuildInstaller):
|
|
|
|
OS = ''
|
|
|
|
def run(self, opts):
|
|
bits = '64 32'.split()
|
|
for bitness in bits:
|
|
shutdown = bitness is bits[-1] and not opts.dont_shutdown
|
|
build_single(self.OS, bitness, shutdown)
|
|
|
|
|
|
class Linux32(BuildInstaller):
|
|
OS = 'linux'
|
|
BITNESS = '32'
|
|
description = 'Build the 32-bit linux calibre installer'
|
|
|
|
|
|
class Linux64(BuildInstaller):
|
|
OS = 'linux'
|
|
BITNESS = '64'
|
|
description = 'Build the 64-bit linux calibre installer'
|
|
|
|
|
|
class Win32(BuildInstaller):
|
|
OS = 'win'
|
|
BITNESS = '32'
|
|
description = 'Build the 32-bit windows calibre installers'
|
|
|
|
|
|
class Win64(BuildInstaller):
|
|
OS = 'win'
|
|
BITNESS = '64'
|
|
description = 'Build the 64-bit windows calibre installer'
|
|
|
|
|
|
class OSX(BuildInstaller):
|
|
OS = 'osx'
|
|
|
|
|
|
class Linux(BuildInstallers):
|
|
OS = 'linux'
|
|
|
|
|
|
class Win(BuildInstallers):
|
|
OS = 'win'
|