mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Initial work on supporting haiku
This commit is contained in:
commit
511bb93d4a
75
icons/calibre_haiku.rdef
Normal file
75
icons/calibre_haiku.rdef
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
|
||||||
|
resource(<your resource id here>) #'VICN' array {
|
||||||
|
$"6E6369660C035B757B050003C6490502001600000000B4240934240900000046"
|
||||||
|
$"CC714B5C4D020116003B0BE5A9E62321324B327F604901F6477F20020116003A"
|
||||||
|
$"B4ABA97CE720E14E323BF7C8526C4B420E020116002E6276BBD25A3A0E232C90"
|
||||||
|
$"974901F64A6F530379ABFF030C11BA03D6B8650201160040525ABAB75A32B50C"
|
||||||
|
$"385062D1580E4C470B020116003D7EB5B802CC30304635CDBF4A1F424403D320"
|
||||||
|
$"0A04BA20B65ABF0BB65ABF0BCA6ABA20CA6A0A04BA20B65ABF0BB65ABF0BCA6A"
|
||||||
|
$"BA20CA6A0A04B477B444BA02B444BA02CA6AB477CA6A0A04B477B444BA02B444"
|
||||||
|
$"BA02CA6AB477CA6A0A04B471B59FBA07B59FBA07B682B471B6820A04B471B59F"
|
||||||
|
$"BA07B59FBA07B682B471B6820A04B470C7FAB9F7C7FAB9F7C8DEB470C8DE0A04"
|
||||||
|
$"B470C7FAB9F7C7FAB9F7C8DEB470C8DE0A04BA1BB852BF10B852BF10B8D2BA1B"
|
||||||
|
$"B8D20A04BA1BB852BF10B852BF10B8D2BA1BB8D20A04BA20C80CBF0CC80CBF0C"
|
||||||
|
$"C88CBA20C88C0A04BA20C80CBF0CC80CBF0CC88CBA20C88C0205B2D7B268B2D8"
|
||||||
|
$"B290B2D6B251B30FB241B2ECB242B327B241B361B255B345B248B382B265B395"
|
||||||
|
$"B28FB395B279B396B2A6B360B2B7B381B2B6B31EB2B80205B2D7B268B2D8B290"
|
||||||
|
$"B2D6B251B30FB241B2ECB242B327B241B361B255B345B248B382B265B395B28F"
|
||||||
|
$"B395B279B396B2A6B360B2B7B381B2B6B31EB2B80211B3D9B22EB3D9B22EB3D9"
|
||||||
|
$"B22EB3DFB238B3DFB238B3F5B25FB3F9B26CB3F8B265B3F9B273B3E9B277B3F3"
|
||||||
|
$"B277B3DFB277B393B266B3DFB277B33BB253B337B253B33BB253B333B253B331"
|
||||||
|
$"B25AB331B256B331B26421B2B4B345B28521B2B4B376B2B4B376B2B4B362B292"
|
||||||
|
$"B361B28BB362B290B361B286B36BB284B365B284B373B284B39CB28DB37BB285"
|
||||||
|
$"B400B2A5B40FB2A5B400B2A5B41DB2A5B426B297B426B29FB426B28DB40AB260"
|
||||||
|
$"B41EB27EB402B255B3F4B240B3FBB24AB3F1B23BB3E9B230B3EEB237B3E9B230"
|
||||||
|
$"0211B3D9B22EB3D9B22EB3D9B22EB3DFB238B3DFB238B3F5B25FB3F9B26CB3F8"
|
||||||
|
$"B265B3F9B273B3E9B277B3F3B277B3DFB277B393B266B3DFB277B33BB253B337"
|
||||||
|
$"B253B33BB253B333B253B331B25AB331B256B331B26421B2B4B345B28521B2B4"
|
||||||
|
$"B376B2B4B376B2B4B362B292B361B28BB362B290B361B286B36BB284B365B284"
|
||||||
|
$"B373B284B39CB28DB37BB285B400B2A5B40FB2A5B400B2A5B41DB2A5B426B297"
|
||||||
|
$"B426B29FB426B28DB40AB260B41EB27EB402B255B3F4B240B3FBB24AB3F1B23B"
|
||||||
|
$"B3E9B230B3EEB237B3E9B2300206B2C0B2BBB2C0B2BBB2E4B2EBB2EC1FB2ECB2"
|
||||||
|
$"F7B2ECB307B2D3B30CB2E4B30CB2C0B30DB291B303B2ABB30AB257B2F5B239B2"
|
||||||
|
$"C1B239B2DFB238B2B6B247B2A3B23CB2AFB247B2A30206B2C0B2BBB2C0B2BBB2"
|
||||||
|
$"E4B2EBB2EC1FB2ECB2F7B2ECB307B2D3B30CB2E4B30CB2C0B30DB291B303B2AB"
|
||||||
|
$"B30AB257B2F5B239B2C1B239B2DFB238B2B6B247B2A3B23CB2AFB247B2A30205"
|
||||||
|
$"B2D7B268B2D8B290B2D6B251B30FB241B2ECB242B327B241B361B255B345B248"
|
||||||
|
$"B382B265B395B28FB395B279B396B2A6B360B2B7B381B2B6B31EB2B80205B2D7"
|
||||||
|
$"B268B2D8B290B2D6B251B30FB241B2ECB242B327B241B361B255B345B248B382"
|
||||||
|
$"B265B395B28FB395B279B396B2A6B360B2B7B381B2B6B31EB2B80209B2BAB2B0"
|
||||||
|
$"B2B0B2ADB2C9B2C4B2D1B2CEB2D1B2CEB2DEB2E1B2E6B2F7B2E6B2F0B2E6B301"
|
||||||
|
$"B2CAB307B2DCB306B2ACB307B265B2F2B28620B245B2E5B238B2C5B239B2D8B2"
|
||||||
|
$"38B2BAB23EB294B23AB2A7B268B29EB27AB2A2B278B2A2B289B2A6B2A6B2ABB2"
|
||||||
|
$"97B2A8B2A9B2AC0209B2BAB2B0B2B0B2ADB2C9B2C4B2D1B2CEB2D1B2CEB2DEB2"
|
||||||
|
$"E1B2E6B2F7B2E6B2F0B2E6B301B2CAB307B2DCB306B2ACB307B265B2F2B28620"
|
||||||
|
$"B245B2E5B238B2C5B239B2D8B238B2BAB23EB294B23AB2A7B268B29EB27AB2A2"
|
||||||
|
$"B278B2A2B289B2A6B2A6B2ABB297B2A8B2A9B2AC0A04C31FBBFAC888BB01CB68"
|
||||||
|
$"C97FC5FFCA780A04C31FBBFAC888BB01CB68C97FC5FFCA780A05C689C2C5C6FF"
|
||||||
|
$"C1C5C7C2C28FC687BB62C54EBB980A05C689C2C5C6FFC1C5C7C2C28FC687BB62"
|
||||||
|
$"C54EBB980209C1C9B3D0C1EEB3D2C1C3B3CFC1B8B3D045B3CFC1B8B3D0BF15B4"
|
||||||
|
$"27BF15B427BEE9B42CBECFB480BECAB454BECFB480C195CA24C195CA24C19BCA"
|
||||||
|
$"50C1EFCA6AC1C3CA6FC1EFCA6AC493CA13C493CA13C4BFCA0DC4D8C9B9C4DEC9"
|
||||||
|
$"E5C4D8C9B9C212B415C212B415C20DB3EF0209C1C9B3D0C1EEB3D2C1C3B3CFC1"
|
||||||
|
$"B8B3D045B3CFC1B8B3D0BF15B427BF15B427BEE9B42CBECFB480BECAB454BECF"
|
||||||
|
$"B480C195CA24C195CA24C19BCA50C1EFCA6AC1C3CA6FC1EFCA6AC493CA13C493"
|
||||||
|
$"CA13C4BFCA0DC4D8C9B9C4DEC9E5C4D8C9B9C212B415C212B415C20DB3EF0209"
|
||||||
|
$"C1C9B3D0C1EEB3D2C1C3B3CFC1B8B3D045B3CFC1B8B3D0BF15B427BF15B427BE"
|
||||||
|
$"E9B42CBECFB480BECAB454BECFB480C195CA24C195CA24C19BCA50C1EFCA6AC1"
|
||||||
|
$"C3CA6FC1EFCA6AC493CA13C493CA13C4BFCA0DC4D8C9B9C4DEC9E5C4D8C9B9C2"
|
||||||
|
$"12B415C212B415C20DB3EF0209C1C9B3D0C1EEB3D2C1C3B3CFC1B8B3D045B3CF"
|
||||||
|
$"C1B8B3D0BF15B427BF15B427BEE9B42CBECFB480BECAB454BECFB480C195CA24"
|
||||||
|
$"C195CA24C19BCA50C1EFCA6AC1C3CA6FC1EFCA6AC493CA13C493CA13C4BFCA0D"
|
||||||
|
$"C4D8C9B9C4DEC9E5C4D8C9B9C212B415C212B415C20DB3EF0209C1C9B3D0C1EE"
|
||||||
|
$"B3D2C1C3B3CFC1B8B3D045B3CFC1B8B3D0BF15B427BF15B427BEE9B42CBECFB4"
|
||||||
|
$"80BECAB454BECFB480C195CA24C195CA24C19BCA50C1EFCA6AC1C3CA6FC1EFCA"
|
||||||
|
$"6AC493CA13C493CA13C4BFCA0DC4D8C9B9C4DEC9E5C4D8C9B9C212B415C212B4"
|
||||||
|
$"15C20DB3EF0209C1C9B3D0C1EEB3D2C1C3B3CFC1B8B3D045B3CFC1B8B3D0BF15"
|
||||||
|
$"B427BF15B427BEE9B42CBECFB480BECAB454BECFB480C195CA24C195CA24C19B"
|
||||||
|
$"CA50C1EFCA6AC1C3CA6FC1EFCA6AC493CA13C493CA13C4BFCA0DC4D8C9B9C4DE"
|
||||||
|
$"C9E5C4D8C9B9C212B415C212B415C20DB3EF160A000100000A01010110011780"
|
||||||
|
$"00040A020102000A0101031001178000040A010104000A010105100117800004"
|
||||||
|
$"0A010106000A0101071001178000040A050108000A0101091001178000040A05"
|
||||||
|
$"010A000A01010B1001178000040A070116000A0101171001178000040A080118"
|
||||||
|
$"000A0101191001178000040A09011A000A02011B1001178000040A03011C000A"
|
||||||
|
$"01011D1001178000040A09011E000A01011F100117800004"
|
||||||
|
};
|
@ -15,7 +15,8 @@ isfreebsd = 'freebsd' in sys.platform
|
|||||||
isnetbsd = 'netbsd' in sys.platform
|
isnetbsd = 'netbsd' in sys.platform
|
||||||
isdragonflybsd = 'dragonfly' in sys.platform
|
isdragonflybsd = 'dragonfly' in sys.platform
|
||||||
isbsd = isnetbsd or isfreebsd or isdragonflybsd
|
isbsd = isnetbsd or isfreebsd or isdragonflybsd
|
||||||
islinux = not isosx and not iswindows and not isbsd
|
ishaiku = 'haiku1' in sys.platform
|
||||||
|
islinux = not isosx and not iswindows and not isbsd and not ishaiku
|
||||||
sys.setup_dir = os.path.dirname(os.path.abspath(__file__))
|
sys.setup_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
SRC = os.path.abspath(os.path.join(os.path.dirname(sys.setup_dir), 'src'))
|
SRC = os.path.abspath(os.path.join(os.path.dirname(sys.setup_dir), 'src'))
|
||||||
sys.path.insert(0, SRC)
|
sys.path.insert(0, SRC)
|
||||||
|
@ -9,8 +9,8 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import textwrap, os, shlex, subprocess, glob, shutil, re, sys, json
|
import textwrap, os, shlex, subprocess, glob, shutil, re, sys, json
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from setup import Command, islinux, isbsd, isosx, SRC, iswindows, __version__
|
from setup import Command, islinux, isbsd, isosx, ishaiku, SRC, iswindows, __version__
|
||||||
isunix = islinux or isosx or isbsd
|
isunix = islinux or isosx or isbsd or ishaiku
|
||||||
|
|
||||||
py_lib = os.path.join(sys.prefix, 'libs', 'python%d%d.lib' % sys.version_info[:2])
|
py_lib = os.path.join(sys.prefix, 'libs', 'python%d%d.lib' % sys.version_info[:2])
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ def is_ext_allowed(ext):
|
|||||||
only = ext.get('only', '')
|
only = ext.get('only', '')
|
||||||
if only:
|
if only:
|
||||||
only = only.split()
|
only = only.split()
|
||||||
q = 'windows' if iswindows else 'osx' if isosx else 'bsd' if isbsd else 'linux'
|
q = 'windows' if iswindows else 'osx' if isosx else 'bsd' if isbsd else 'haiku' if ishaiku else 'linux'
|
||||||
return q in only
|
return q in only
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -100,6 +100,8 @@ def parse_extension(ext):
|
|||||||
ans = ext.pop('osx_' + k, ans)
|
ans = ext.pop('osx_' + k, ans)
|
||||||
elif isbsd:
|
elif isbsd:
|
||||||
ans = ext.pop('bsd_' + k, ans)
|
ans = ext.pop('bsd_' + k, ans)
|
||||||
|
elif ishaiku:
|
||||||
|
ans = ext.pop('haiku_' + k, ans)
|
||||||
else:
|
else:
|
||||||
ans = ext.pop('linux_' + k, ans)
|
ans = ext.pop('linux_' + k, ans)
|
||||||
return ans
|
return ans
|
||||||
@ -156,6 +158,12 @@ def init_env():
|
|||||||
cflags.append('-I'+sysconfig.get_python_inc())
|
cflags.append('-I'+sysconfig.get_python_inc())
|
||||||
ldflags.append('-lpython'+sysconfig.get_python_version())
|
ldflags.append('-lpython'+sysconfig.get_python_version())
|
||||||
|
|
||||||
|
if ishaiku:
|
||||||
|
cflags.append('-lpthread')
|
||||||
|
ldflags.append('-shared')
|
||||||
|
cflags.append('-I'+sysconfig.get_python_inc())
|
||||||
|
ldflags.append('-lpython'+sysconfig.get_python_version())
|
||||||
|
|
||||||
if isosx:
|
if isosx:
|
||||||
cflags.append('-D_OSX')
|
cflags.append('-D_OSX')
|
||||||
ldflags.extend('-bundle -undefined dynamic_lookup'.split())
|
ldflags.extend('-bundle -undefined dynamic_lookup'.split())
|
||||||
@ -329,7 +337,7 @@ class Build(Command):
|
|||||||
|
|
||||||
def build_headless(self):
|
def build_headless(self):
|
||||||
from setup.parallel_build import cpu_count
|
from setup.parallel_build import cpu_count
|
||||||
if iswindows or isosx:
|
if iswindows or isosx or ishaiku:
|
||||||
return # Dont have headless operation on these platforms
|
return # Dont have headless operation on these platforms
|
||||||
from setup.build_environment import glib_flags, fontconfig_flags, ft_inc_dirs, QMAKE
|
from setup.build_environment import glib_flags, fontconfig_flags, ft_inc_dirs, QMAKE
|
||||||
from PyQt5.QtCore import QT_VERSION
|
from PyQt5.QtCore import QT_VERSION
|
||||||
|
@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import os, subprocess, re, sys, sysconfig
|
import os, subprocess, re, sys, sysconfig
|
||||||
from distutils.spawn import find_executable
|
from distutils.spawn import find_executable
|
||||||
|
|
||||||
from setup import isosx, iswindows, is64bit, islinux
|
from setup import isosx, iswindows, is64bit, islinux, ishaiku
|
||||||
is64bit
|
is64bit
|
||||||
|
|
||||||
NMAKE = RC = msvc = MT = win_inc = win_lib = None
|
NMAKE = RC = msvc = MT = win_inc = win_lib = None
|
||||||
@ -37,7 +37,7 @@ QMAKE = os.environ.get('QMAKE', QMAKE)
|
|||||||
|
|
||||||
PKGCONFIG = find_executable('pkg-config')
|
PKGCONFIG = find_executable('pkg-config')
|
||||||
PKGCONFIG = os.environ.get('PKG_CONFIG', PKGCONFIG)
|
PKGCONFIG = os.environ.get('PKG_CONFIG', PKGCONFIG)
|
||||||
if islinux and not PKGCONFIG:
|
if (islinux or ishaiku) and not PKGCONFIG:
|
||||||
raise SystemExit('Failed to find pkg-config on your system. You can use the environment variable PKG_CONFIG to point to the pkg-config executable')
|
raise SystemExit('Failed to find pkg-config on your system. You can use the environment variable PKG_CONFIG to point to the pkg-config executable')
|
||||||
|
|
||||||
def run_pkgconfig(name, envvar, default, flag, prefix):
|
def run_pkgconfig(name, envvar, default, flag, prefix):
|
||||||
@ -97,8 +97,8 @@ def get_sip_dir():
|
|||||||
pyqt['pyqt_sip_dir'] = get_sip_dir()
|
pyqt['pyqt_sip_dir'] = get_sip_dir()
|
||||||
pyqt['sip_inc_dir'] = os.environ.get('SIP_INC_DIR', sysconfig.get_path('include'))
|
pyqt['sip_inc_dir'] = os.environ.get('SIP_INC_DIR', sysconfig.get_path('include'))
|
||||||
|
|
||||||
glib_flags = subprocess.check_output([PKGCONFIG, '--libs', 'glib-2.0']).strip() if islinux else ''
|
glib_flags = subprocess.check_output([PKGCONFIG, '--libs', 'glib-2.0']).strip() if islinux or ishaiku else ''
|
||||||
fontconfig_flags = subprocess.check_output([PKGCONFIG, '--libs', 'fontconfig']).strip() if islinux else ''
|
fontconfig_flags = subprocess.check_output([PKGCONFIG, '--libs', 'fontconfig']).strip() if islinux or ishaiku else ''
|
||||||
qt_inc = pyqt['inc']
|
qt_inc = pyqt['inc']
|
||||||
qt_lib = pyqt['lib']
|
qt_lib = pyqt['lib']
|
||||||
ft_lib_dirs = []
|
ft_lib_dirs = []
|
||||||
@ -121,7 +121,7 @@ QT_DLLS = ['Qt5' + x for x in (
|
|||||||
'WebKit', 'WebKitWidgets', 'Widgets', 'Multimedia', 'MultimediaWidgets', 'Xml', # 'XmlPatterns',
|
'WebKit', 'WebKitWidgets', 'Widgets', 'Multimedia', 'MultimediaWidgets', 'Xml', # 'XmlPatterns',
|
||||||
)]
|
)]
|
||||||
QT_PLUGINS = ('imageformats', 'audio', 'iconengines', 'mediaservice', 'platforms', 'playlistformats', 'printsupport', 'sqldrivers')
|
QT_PLUGINS = ('imageformats', 'audio', 'iconengines', 'mediaservice', 'platforms', 'playlistformats', 'printsupport', 'sqldrivers')
|
||||||
if islinux:
|
if islinux or ishaiku:
|
||||||
# platformthemes cause crashes in Ubuntu
|
# platformthemes cause crashes in Ubuntu
|
||||||
QT_PLUGINS += ('platforminputcontexts', 'generic',)
|
QT_PLUGINS += ('platforminputcontexts', 'generic',)
|
||||||
|
|
||||||
|
@ -201,13 +201,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "libusb",
|
"name": "libusb",
|
||||||
"only": "osx linux",
|
"only": "osx linux haiku",
|
||||||
"sources": "calibre/devices/libusb/libusb.c",
|
"sources": "calibre/devices/libusb/libusb.c",
|
||||||
"libraries": "usb-1.0"
|
"libraries": "usb-1.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "libmtp",
|
"name": "libmtp",
|
||||||
"only": "osx linux",
|
"only": "osx linux haiku",
|
||||||
"sources": "calibre/devices/mtp/unix/devices.c calibre/devices/mtp/unix/libmtp.c",
|
"sources": "calibre/devices/mtp/unix/devices.c calibre/devices/mtp/unix/libmtp.c",
|
||||||
"headers": "calibre/devices/mtp/unix/devices.h calibre/devices/mtp/unix/upstream/music-players.h calibre/devices/mtp/unix/upstream/device-flags.h",
|
"headers": "calibre/devices/mtp/unix/devices.h calibre/devices/mtp/unix/upstream/music-players.h calibre/devices/mtp/unix/upstream/device-flags.h",
|
||||||
"libraries": "mtp"
|
"libraries": "mtp"
|
||||||
@ -218,6 +218,8 @@
|
|||||||
"inc_dirs": "unrar",
|
"inc_dirs": "unrar",
|
||||||
"defines": "SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE",
|
"defines": "SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE",
|
||||||
"windows_defines": "SILENT RARDLL UNRAR",
|
"windows_defines": "SILENT RARDLL UNRAR",
|
||||||
|
"haiku_defines": "LITTLE_ENDIAN SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _BSD_SOURCE",
|
||||||
|
"haiku_libraries": "bsd",
|
||||||
"optimize_level": 2,
|
"optimize_level": 2,
|
||||||
"windows_libraries": "User32 Advapi32 kernel32 Shell32"
|
"windows_libraries": "User32 Advapi32 kernel32 Shell32"
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import sys, os, textwrap, subprocess, shutil, tempfile, atexit, glob
|
import sys, os, textwrap, subprocess, shutil, tempfile, atexit, glob
|
||||||
|
|
||||||
from setup import (Command, islinux, isbsd, basenames, modules, functions,
|
from setup import (Command, islinux, isbsd, ishaiku, basenames, modules, functions,
|
||||||
__appname__, __version__)
|
__appname__, __version__)
|
||||||
|
|
||||||
HEADER = '''\
|
HEADER = '''\
|
||||||
@ -115,7 +115,7 @@ class Develop(Command):
|
|||||||
self.info('\tSHARE:', self.staging_sharedir)
|
self.info('\tSHARE:', self.staging_sharedir)
|
||||||
|
|
||||||
def pre_sub_commands(self, opts):
|
def pre_sub_commands(self, opts):
|
||||||
if not (islinux or isbsd):
|
if not (islinux or isbsd or ishaiku):
|
||||||
self.info('\nSetting up a source based development environment is only '
|
self.info('\nSetting up a source based development environment is only '
|
||||||
'supported on linux. On other platforms, see the User Manual'
|
'supported on linux. On other platforms, see the User Manual'
|
||||||
' for help with setting up a development environment.')
|
' for help with setting up a development environment.')
|
||||||
|
@ -22,9 +22,10 @@ isfreebsd = 'freebsd' in _plat
|
|||||||
isnetbsd = 'netbsd' in _plat
|
isnetbsd = 'netbsd' in _plat
|
||||||
isdragonflybsd = 'dragonfly' in _plat
|
isdragonflybsd = 'dragonfly' in _plat
|
||||||
isbsd = isfreebsd or isnetbsd or isdragonflybsd
|
isbsd = isfreebsd or isnetbsd or isdragonflybsd
|
||||||
islinux = not(iswindows or isosx or isbsd)
|
ishaiku = 'haiku1' in _plat
|
||||||
|
islinux = not(iswindows or isosx or isbsd or ishaiku)
|
||||||
isfrozen = hasattr(sys, 'frozen')
|
isfrozen = hasattr(sys, 'frozen')
|
||||||
isunix = isosx or islinux
|
isunix = isosx or islinux or ishaiku
|
||||||
isportable = os.environ.get('CALIBRE_PORTABLE_BUILD', None) is not None
|
isportable = os.environ.get('CALIBRE_PORTABLE_BUILD', None) is not None
|
||||||
ispy3 = sys.version_info.major > 2
|
ispy3 = sys.version_info.major > 2
|
||||||
isxp = iswindows and sys.getwindowsversion().major < 6
|
isxp = iswindows and sys.getwindowsversion().major < 6
|
||||||
|
@ -1,23 +1,30 @@
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
import sys, os, time, socket, traceback, re
|
import os
|
||||||
|
import re
|
||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import traceback
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
import apsw
|
import apsw
|
||||||
from PyQt5.Qt import (
|
from PyQt5.Qt import QCoreApplication, QIcon, QObject, QTimer
|
||||||
QCoreApplication, QIcon, QObject, QTimer)
|
|
||||||
|
|
||||||
from calibre import prints, plugins, force_unicode
|
from calibre import force_unicode, plugins, prints
|
||||||
from calibre.constants import (iswindows, __appname__, isosx, DEBUG, islinux,
|
from calibre.constants import (
|
||||||
filesystem_encoding, get_portable_base)
|
DEBUG, __appname__, filesystem_encoding, get_portable_base, islinux, isosx,
|
||||||
from calibre.utils.ipc import gui_socket_address, RC
|
iswindows
|
||||||
|
)
|
||||||
from calibre.gui2 import (
|
from calibre.gui2 import (
|
||||||
initialize_file_icon_provider, Application, choose_dir,
|
Application, choose_dir, error_dialog, gprefs, initialize_file_icon_provider,
|
||||||
error_dialog, question_dialog, gprefs, setup_gui_option_parser)
|
question_dialog, setup_gui_option_parser
|
||||||
|
)
|
||||||
from calibre.gui2.main_window import option_parser as _option_parser
|
from calibre.gui2.main_window import option_parser as _option_parser
|
||||||
from calibre.gui2.splash_screen import SplashScreen
|
from calibre.gui2.splash_screen import SplashScreen
|
||||||
from calibre.utils.config import prefs, dynamic
|
from calibre.utils.config import dynamic, prefs
|
||||||
|
from calibre.utils.ipc import RC, gui_socket_address
|
||||||
|
|
||||||
if iswindows:
|
if iswindows:
|
||||||
winutil = plugins['winutil'][0]
|
winutil = plugins['winutil'][0]
|
||||||
|
@ -6,7 +6,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
Secure access to locked files from multiple processes.
|
Secure access to locked files from multiple processes.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
from calibre.constants import iswindows, __appname__, islinux, win32api, win32event, winerror, fcntl
|
from calibre.constants import iswindows, __appname__, islinux, ishaiku, win32api, win32event, winerror, fcntl
|
||||||
import time, atexit, os, stat, errno
|
import time, atexit, os, stat, errno
|
||||||
|
|
||||||
|
|
||||||
@ -228,6 +228,10 @@ elif islinux:
|
|||||||
fcntl.fcntl(fd, fcntl.F_SETFD, old_flags | fcntl.FD_CLOEXEC)
|
fcntl.fcntl(fd, fcntl.F_SETFD, old_flags | fcntl.FD_CLOEXEC)
|
||||||
atexit.register(sock.close)
|
atexit.register(sock.close)
|
||||||
return True
|
return True
|
||||||
|
elif ishaiku:
|
||||||
|
def singleinstance(name):
|
||||||
|
# Somebody should fix this.
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
def singleinstance_path(name):
|
def singleinstance_path(name):
|
||||||
home = os.path.expanduser('~')
|
home = os.path.expanduser('~')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user