mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-30 18:22:25 -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 (unicode_literals, division, absolute_import, print_function)
 | |
| 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'
 |