mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #1679 (Multiple calibre icons in OSX dock after fetching news)
This commit is contained in:
parent
a2fe167b54
commit
7f1761afea
@ -3,7 +3,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
''' Create an OSX installer '''
|
''' Create an OSX installer '''
|
||||||
|
|
||||||
import sys, re, os, shutil, subprocess, stat, glob, zipfile
|
import sys, re, os, shutil, subprocess, stat, glob, zipfile, plistlib
|
||||||
l = {}
|
l = {}
|
||||||
exec open('setup.py').read() in l
|
exec open('setup.py').read() in l
|
||||||
VERSION = l['VERSION']
|
VERSION = l['VERSION']
|
||||||
@ -36,7 +36,7 @@ loader = open(loader_path, 'w')
|
|||||||
site_packages = glob.glob(resources_dir+'/lib/python*/site-packages.zip')[0]
|
site_packages = glob.glob(resources_dir+'/lib/python*/site-packages.zip')[0]
|
||||||
print >>loader, '#!'+python
|
print >>loader, '#!'+python
|
||||||
print >>loader, 'import sys'
|
print >>loader, 'import sys'
|
||||||
print >>loader, 'sys.path.remove('+repr(dirpath)+')'
|
print >>loader, 'if', repr(dirpath), 'in sys.path: sys.path.remove(', repr(dirpath), ')'
|
||||||
print >>loader, 'sys.path.append(', repr(site_packages), ')'
|
print >>loader, 'sys.path.append(', repr(site_packages), ')'
|
||||||
print >>loader, 'sys.frozen = "macosx_app"'
|
print >>loader, 'sys.frozen = "macosx_app"'
|
||||||
print >>loader, 'sys.frameworks_dir =', repr(frameworks_dir)
|
print >>loader, 'sys.frameworks_dir =', repr(frameworks_dir)
|
||||||
@ -294,11 +294,26 @@ sys.frameworks_dir = os.path.join(os.path.dirname(os.environ['RESOURCEPATH']), '
|
|||||||
f.close()
|
f.close()
|
||||||
print
|
print
|
||||||
print 'Adding main scripts to site-packages'
|
print 'Adding main scripts to site-packages'
|
||||||
f = zipfile.ZipFile(os.path.join(self.dist_dir, APPNAME+'.app', 'Contents', 'Resources', 'lib', 'python2.6', 'site-packages.zip'), 'a', zipfile.ZIP_DEFLATED)
|
f = zipfile.ZipFile(os.path.join(self.dist_dir, APPNAME+'.app', 'Contents', 'Resources', 'lib', 'python'+sys.version[:3], 'site-packages.zip'), 'a', zipfile.ZIP_DEFLATED)
|
||||||
for script in scripts['gui']+scripts['console']:
|
for script in scripts['gui']+scripts['console']:
|
||||||
f.write(script, script.partition('/')[-1])
|
f.write(script, script.partition('/')[-1])
|
||||||
f.close()
|
f.close()
|
||||||
print
|
print
|
||||||
|
print 'Creating console.app'
|
||||||
|
contents_dir = os.path.dirname(resource_dir)
|
||||||
|
cc_dir = os.path.join(contents_dir, 'console.app', 'Contents')
|
||||||
|
os.makedirs(cc_dir)
|
||||||
|
for x in os.listdir(contents_dir):
|
||||||
|
if x == 'console.app':
|
||||||
|
continue
|
||||||
|
if x == 'Info.plist':
|
||||||
|
plist = plistlib.readPlist(os.path.join(contents_dir, x))
|
||||||
|
plist['LSUIElement'] = '1'
|
||||||
|
plistlib.writePlist(plist, os.path.join(cc_dir, x))
|
||||||
|
else:
|
||||||
|
os.symlink(os.path.join('../..', x),
|
||||||
|
os.path.join(cc_dir, x))
|
||||||
|
print
|
||||||
print 'Building disk image'
|
print 'Building disk image'
|
||||||
BuildAPP.makedmg(os.path.join(self.dist_dir, APPNAME+'.app'), APPNAME+'-'+VERSION)
|
BuildAPP.makedmg(os.path.join(self.dist_dir, APPNAME+'.app'), APPNAME+'-'+VERSION)
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ Run an embedded python interpreter.
|
|||||||
'Module specifications are of the form full.name.of.module,path_to_module.py', default=None
|
'Module specifications are of the form full.name.of.module,path_to_module.py', default=None
|
||||||
)
|
)
|
||||||
parser.add_option('-c', '--command', help='Run python code.', default=None)
|
parser.add_option('-c', '--command', help='Run python code.', default=None)
|
||||||
|
parser.add_option('-e', '--exec-file', default=None, help='Run the python code in file.')
|
||||||
parser.add_option('-g', '--gui', default=False, action='store_true',
|
parser.add_option('-g', '--gui', default=False, action='store_true',
|
||||||
help='Run the GUI',)
|
help='Run the GUI',)
|
||||||
parser.add_option('--migrate', action='store_true', default=False,
|
parser.add_option('--migrate', action='store_true', default=False,
|
||||||
@ -87,6 +88,9 @@ def main(args=sys.argv):
|
|||||||
elif opts.command:
|
elif opts.command:
|
||||||
sys.argv = args[:1]
|
sys.argv = args[:1]
|
||||||
exec opts.command
|
exec opts.command
|
||||||
|
elif opts.exec_file:
|
||||||
|
sys.argv = args[:1]
|
||||||
|
execfile(opts.exec_file)
|
||||||
elif opts.migrate:
|
elif opts.migrate:
|
||||||
if len(args) < 3:
|
if len(args) < 3:
|
||||||
print 'You must specify the path to library1.db and the path to the new library folder'
|
print 'You must specify the path to library1.db and the path to the new library folder'
|
||||||
|
@ -158,21 +158,27 @@ class WorkerMother(object):
|
|||||||
self.executable = os.path.join(os.path.dirname(sys.executable),
|
self.executable = os.path.join(os.path.dirname(sys.executable),
|
||||||
'calibre-parallel.exe' if isfrozen else 'Scripts\\calibre-parallel.exe')
|
'calibre-parallel.exe' if isfrozen else 'Scripts\\calibre-parallel.exe')
|
||||||
elif isosx:
|
elif isosx:
|
||||||
self.executable = sys.executable
|
self.executable = self.gui_executable = sys.executable
|
||||||
self.prefix = ''
|
self.prefix = ''
|
||||||
if isfrozen:
|
if isfrozen:
|
||||||
fd = getattr(sys, 'frameworks_dir')
|
fd = getattr(sys, 'frameworks_dir')
|
||||||
contents = os.path.dirname(fd)
|
contents = os.path.dirname(fd)
|
||||||
resources = os.path.join(contents, 'Resources')
|
self.gui_executable = os.path.join(contents, 'MacOS',
|
||||||
sp = os.path.join(resources, 'lib', 'python'+sys.version[:3], 'site-packages.zip')
|
os.path.basename(sys.executable))
|
||||||
|
contents = os.path.join(contents, 'console.app', 'Contents')
|
||||||
|
self.executable = os.path.join(contents, 'MacOS',
|
||||||
|
os.path.basename(sys.executable))
|
||||||
|
|
||||||
|
resources = os.path.join(contents, 'Resources')
|
||||||
|
fd = os.path.join(contents, 'Frameworks')
|
||||||
|
sp = os.path.join(resources, 'lib', 'python'+sys.version[:3], 'site-packages.zip')
|
||||||
self.prefix += 'import sys; sys.frameworks_dir = "%s"; sys.frozen = "macosx_app"; '%fd
|
self.prefix += 'import sys; sys.frameworks_dir = "%s"; sys.frozen = "macosx_app"; '%fd
|
||||||
self.prefix += 'sys.path.insert(0, %s); '%repr(sp)
|
self.prefix += 'sys.path.insert(0, %s); '%repr(sp)
|
||||||
if fd not in os.environ['PATH']:
|
if fd not in os.environ['PATH']:
|
||||||
self.env['PATH'] = os.environ['PATH']+':'+fd
|
self.env['PATH'] = os.environ['PATH']+':'+fd
|
||||||
self.env['PYTHONHOME'] = resources
|
self.env['PYTHONHOME'] = resources
|
||||||
self.env['MAGICK_HOME'] = os.path.join(getattr(sys, 'frameworks_dir'), 'ImageMagick')
|
self.env['MAGICK_HOME'] = os.path.join(fd, 'ImageMagick')
|
||||||
self.env['DYLD_LIBRARY_PATH'] = os.path.join(getattr(sys, 'frameworks_dir'), 'ImageMagick', 'lib')
|
self.env['DYLD_LIBRARY_PATH'] = os.path.join(fd, 'ImageMagick', 'lib')
|
||||||
else:
|
else:
|
||||||
self.executable = os.path.join(getattr(sys, 'frozen_path'), 'calibre-parallel') \
|
self.executable = os.path.join(getattr(sys, 'frozen_path'), 'calibre-parallel') \
|
||||||
if isfrozen else 'calibre-parallel'
|
if isfrozen else 'calibre-parallel'
|
||||||
@ -219,7 +225,8 @@ class WorkerMother(object):
|
|||||||
|
|
||||||
def spawn_free_spirit_osx(self, arg, type='free_spirit'):
|
def spawn_free_spirit_osx(self, arg, type='free_spirit'):
|
||||||
script = 'from calibre.parallel import main; main(args=["calibre-parallel", %s]);'%repr(arg)
|
script = 'from calibre.parallel import main; main(args=["calibre-parallel", %s]);'%repr(arg)
|
||||||
cmdline = [self.executable, '-c', self.prefix+script]
|
exe = self.gui_executable if type == 'free_spirit' else self.executable
|
||||||
|
cmdline = [exe, '-c', self.prefix+script]
|
||||||
child = WorkerStatus(subprocess.Popen(cmdline, env=self.get_env()))
|
child = WorkerStatus(subprocess.Popen(cmdline, env=self.get_env()))
|
||||||
atexit.register(self.cleanup_child_linux, child)
|
atexit.register(self.cleanup_child_linux, child)
|
||||||
return child
|
return child
|
||||||
|
Loading…
x
Reference in New Issue
Block a user