1
0
mirror of https://gitlab.com/openlp/packaging.git synced 2024-12-22 21:12:50 +00:00

Fixes for packaging on windows. Also added packaging of mudraw for Pdf support.

This commit is contained in:
Tomas Groth 2014-05-30 10:59:26 +02:00
parent bbe296c19c
commit 9a512a548c
6 changed files with 86 additions and 38 deletions

View File

@ -4,12 +4,14 @@
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2008-2013 Raoul Snyman # # Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2013 Tim Bentley, Jonathan Corwin, Michael # # Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
# Woldsund # # Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
# Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it # # This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free # # under the terms of the GNU General Public License as published by the Free #
@ -87,6 +89,9 @@ SQLAlchemy Migrate
http://code.google.com/p/sqlalchemy-migrate/ http://code.google.com/p/sqlalchemy-migrate/
MuPDF
Required for PDF support in OpenLP. Install using macports, or use the
'--mudraw-bin' option of this script to point to the mudraw binary.
config.ini.default config.ini.default
The configuration file contains settings of the version string to include The configuration file contains settings of the version string to include
@ -226,6 +231,8 @@ class MacosxBuilder(object):
parser.add_argument('--transifex-pass', dest='transifex_pass', help='Transifex password.') parser.add_argument('--transifex-pass', dest='transifex_pass', help='Transifex password.')
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False, parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False,
help='Print out additional information.') help='Print out additional information.')
parser.add_argument('--mudraw-bin', dest='mudraw_bin', default='/opt/local/bin/mudraw',
help='Path to the mudraw binary.')
self.args = parser.parse_args() self.args = parser.parse_args()
def read_config(self): def read_config(self):
@ -267,7 +274,10 @@ class MacosxBuilder(object):
self.docs_path = os.path.abspath(self.args.docs) self.docs_path = os.path.abspath(self.args.docs)
else: else:
self.docs_path = self.config.get('paths', 'documentation') self.docs_path = self.config.get('paths', 'documentation')
if self.args.mudraw_bin:
self.mudraw_bin = self.args.mudraw_bin
else:
self.mudraw_bin = ''
self.openlp_script = os.path.abspath(os.path.join(self.branch_path, 'openlp.py')) self.openlp_script = os.path.abspath(os.path.join(self.branch_path, 'openlp.py'))
self.hooks_path = os.path.abspath(os.path.join(self.branch_path, self.config.get('paths', 'hooks'))) self.hooks_path = os.path.abspath(os.path.join(self.branch_path, self.config.get('paths', 'hooks')))
self.mac_icon = os.path.abspath(self.config.get('paths', 'macicon')) self.mac_icon = os.path.abspath(self.config.get('paths', 'macicon'))
@ -438,6 +448,11 @@ class MacosxBuilder(object):
self._print('Copying extra files for Mac OS X...') self._print('Copying extra files for Mac OS X...')
self._print_verbose('... LICENSE.txt') self._print_verbose('... LICENSE.txt')
copy(os.path.join(self.script_path, 'LICENSE.txt'), os.path.join(self.dist_path, 'LICENSE.txt')) copy(os.path.join(self.script_path, 'LICENSE.txt'), os.path.join(self.dist_path, 'LICENSE.txt'))
self._print_verbose('... mudraw')
if self.mudraw_bin and os.path.isfile(self.mudraw_bin):
copy(os.path.join(self.mudraw_bin), os.path.join(self.dist_path, 'mudraw'))
else:
self._print('... WARNING: mudraw not found')
def update_translations(self): def update_translations(self):
""" """
@ -636,6 +651,7 @@ class MacosxBuilder(object):
self._print_verbose('"hooks" path: ............%s', self.hooks_path) self._print_verbose('"hooks" path: ............%s', self.hooks_path)
self._print_verbose('PyInstaller: .............%s', self.pyinstaller) self._print_verbose('PyInstaller: .............%s', self.pyinstaller)
self._print_verbose('Documentation branch path:%s', self.docs_path) self._print_verbose('Documentation branch path:%s', self.docs_path)
self._print_verbose('Mudraw binary ............%s', self.mudraw_bin)
self._print_verbose('') self._print_verbose('')
if not self.args.skip_update: if not self.args.skip_update:
self.update_code() self.update_code()

View File

@ -4,8 +4,8 @@
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2008-2013 Raoul Snyman # # Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # # Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2008-2013 Raoul Snyman # # Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # # Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -28,5 +28,6 @@
############################################################################### ###############################################################################
hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller', hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller',
'openlp.plugins.presentations.lib.pdfcontroller',
'openlp.plugins.presentations.lib.powerpointcontroller', 'openlp.plugins.presentations.lib.powerpointcontroller',
'openlp.plugins.presentations.lib.pptviewcontroller'] 'openlp.plugins.presentations.lib.pptviewcontroller']

View File

@ -4,8 +4,8 @@
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2008-2013 Raoul Snyman # # Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # # Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -27,12 +27,12 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
hiddenimports = ['plugins.songs.songsplugin', hiddenimports = ['openlp.plugins.songs.songsplugin',
'plugins.bibles.bibleplugin', 'openlp.plugins.bibles.bibleplugin',
'plugins.presentations.presentationplugin', 'openlp.plugins.presentations.presentationplugin',
'plugins.media.mediaplugin', 'openlp.plugins.media.mediaplugin',
'plugins.images.imageplugin', 'openlp.plugins.images.imageplugin',
'plugins.custom.customplugin', 'openlp.plugins.custom.customplugin',
'plugins.songusage.songusageplugin', 'openlp.plugins.songusage.songusageplugin',
'plugins.remotes.remoteplugin', 'openlp.plugins.remotes.remoteplugin',
'plugins.alerts.alertsplugin'] 'openlp.plugins.alerts.alertsplugin']

View File

@ -27,7 +27,7 @@ DefaultDirName={pf}\{#AppName}
DefaultGroupName={#AppVerName} DefaultGroupName={#AppVerName}
AllowNoIcons=true AllowNoIcons=true
LicenseFile=LICENSE.txt LicenseFile=LICENSE.txt
OutputDir=%(branch)s\dist OutputDir=%(branch)s\dist\OpenLP\
OutputBaseFilename=OpenLP-{#RealVersion}-setup OutputBaseFilename=OpenLP-{#RealVersion}-setup
Compression=lzma/Max Compression=lzma/Max
SolidCompression=true SolidCompression=true
@ -38,7 +38,6 @@ ChangesAssociations=true
[Languages] [Languages]
Name: english; MessagesFile: compiler:Default.isl Name: english; MessagesFile: compiler:Default.isl
Name: basque; MessagesFile: compiler:Languages\Basque.isl
Name: brazilianportuguese; MessagesFile: compiler:Languages\BrazilianPortuguese.isl Name: brazilianportuguese; MessagesFile: compiler:Languages\BrazilianPortuguese.isl
Name: catalan; MessagesFile: compiler:Languages\Catalan.isl Name: catalan; MessagesFile: compiler:Languages\Catalan.isl
Name: czech; MessagesFile: compiler:Languages\Czech.isl Name: czech; MessagesFile: compiler:Languages\Czech.isl
@ -55,7 +54,6 @@ Name: norwegian; MessagesFile: compiler:Languages\Norwegian.isl
Name: polish; MessagesFile: compiler:Languages\Polish.isl Name: polish; MessagesFile: compiler:Languages\Polish.isl
Name: portuguese; MessagesFile: compiler:Languages\Portuguese.isl Name: portuguese; MessagesFile: compiler:Languages\Portuguese.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl Name: russian; MessagesFile: compiler:Languages\Russian.isl
Name: slovak; MessagesFile: compiler:Languages\Slovak.isl
Name: slovenian; MessagesFile: compiler:Languages\Slovenian.isl Name: slovenian; MessagesFile: compiler:Languages\Slovenian.isl
Name: spanish; MessagesFile: compiler:Languages\Spanish.isl Name: spanish; MessagesFile: compiler:Languages\Spanish.isl

View File

@ -4,12 +4,14 @@
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2008-2011 Raoul Snyman # # Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # # Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
# Woldsund # # Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
# Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it # # This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free # # under the terms of the GNU General Public License as published by the Free #
@ -104,6 +106,11 @@ SQLAlchemy Migrate
http://code.google.com/p/sqlalchemy-migrate/ http://code.google.com/p/sqlalchemy-migrate/
MuPDF
Required for PDF support in OpenLP. Download the windows build from
mupdf.com, extract it, and use the '--mudraw-bin' option of this script to
point to mudraw.exe.
Portable App Builds Portable App Builds
The following are required if you are planning to make a portable build of The following are required if you are planning to make a portable build of
OpenLP. The portable build conforms to the standards published by OpenLP. The portable build conforms to the standards published by
@ -182,6 +189,7 @@ class WindowsBuilder(object):
help='Do NOT update the language translation files.') help='Do NOT update the language translation files.')
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False, parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False,
help='Print out additional information.') help='Print out additional information.')
parser.add_argument('--mudraw-bin', dest='mudraw_bin', default=None, help='Path to the mudraw binary.')
self.args = parser.parse_args() self.args = parser.parse_args()
def read_config(self): def read_config(self):
@ -192,7 +200,8 @@ class WindowsBuilder(object):
'pyroot': self.python_root, 'pyroot': self.python_root,
'progfiles': self.program_files, 'progfiles': self.program_files,
'sitepackages': self.site_packages, 'sitepackages': self.site_packages,
'here': self.script_path 'here': self.script_path,
'projects': os.path.abspath(os.path.join(self.script_path, '..', '..')),
}) })
self.config.read(os.path.abspath(self.args.config)) self.config.read(os.path.abspath(self.args.config))
@ -200,9 +209,9 @@ class WindowsBuilder(object):
""" """
Set up some system paths. Set up some system paths.
""" """
self.script_path = os.path.split(os.path.abspath(__file__))[0] self.script_path = os.path.dirname(os.path.abspath(__file__))
self.python = sys.executable self.python = sys.executable
self.python_root = os.path.split(self.python)[0] self.python_root = os.path.dirname(self.python)
self.site_packages = os.path.join(self.python_root, 'Lib', 'site-packages') self.site_packages = os.path.join(self.python_root, 'Lib', 'site-packages')
self.program_files = os.getenv('PROGRAMFILES') self.program_files = os.getenv('PROGRAMFILES')
@ -253,6 +262,10 @@ class WindowsBuilder(object):
self.args.portable = self.portable_path self.args.portable = self.portable_path
else: else:
self.portable_path = '' self.portable_path = ''
if self.args.mudraw_bin:
self.mudraw_bin = self.args.mudraw_bin
else:
self.mudraw_bin = ''
self.openlp_script = os.path.abspath(os.path.join(branch_path, 'openlp.py')) self.openlp_script = os.path.abspath(os.path.join(branch_path, 'openlp.py'))
self.hooks_path = os.path.abspath(self.config.get('paths', 'hooks')) self.hooks_path = os.path.abspath(self.config.get('paths', 'hooks'))
self.win32_icon = os.path.abspath(self.config.get('paths', 'win32icon')) self.win32_icon = os.path.abspath(self.config.get('paths', 'win32icon'))
@ -265,6 +278,7 @@ class WindowsBuilder(object):
self.winres_path = os.path.join(self.branch_path, 'resources', 'windows') self.winres_path = os.path.join(self.branch_path, 'resources', 'windows')
self.build_path = os.path.join(self.branch_path, 'build') self.build_path = os.path.join(self.branch_path, 'build')
self.dist_path = os.path.join(self.branch_path, 'dist', 'OpenLP') self.dist_path = os.path.join(self.branch_path, 'dist', 'OpenLP')
self.dist_path_pyinst_arg = os.path.join(self.branch_path, 'dist')
self.pptviewlib_path = os.path.join(self.source_path, 'plugins', 'presentations', 'lib', 'pptviewlib') self.pptviewlib_path = os.path.join(self.source_path, 'plugins', 'presentations', 'lib', 'pptviewlib')
def update_code(self): def update_code(self):
@ -299,11 +313,12 @@ class WindowsBuilder(object):
'--noupx', '--noupx',
'--additional-hooks-dir', self.hooks_path, '--additional-hooks-dir', self.hooks_path,
'--runtime-hook', os.path.join(self.hooks_path, 'rthook_openlp_pyqt4.py'), '--runtime-hook', os.path.join(self.hooks_path, 'rthook_openlp_pyqt4.py'),
'--log-level=ERROR', '--log-level=DEBUG',
'--distpath', self.branch_path, '--distpath', self.dist_path_pyinst_arg,
'-i', self.win32_icon, '-i', self.win32_icon,
'-p', self.branch_path, '-p', self.branch_path,
'-n', 'OpenLP', '-n', 'OpenLP',
'-d', '-c', # for now this is needed to make OpenLP run under windows
self.openlp_script), self.openlp_script),
stdout=PIPE) stdout=PIPE)
output = pyinstaller.communicate()[0] output = pyinstaller.communicate()[0]
@ -407,6 +422,23 @@ class WindowsBuilder(object):
copy(os.path.join(self.helpfile_path, 'OpenLP.chm'), os.path.join(self.dist_path, 'OpenLP.chm')) copy(os.path.join(self.helpfile_path, 'OpenLP.chm'), os.path.join(self.dist_path, 'OpenLP.chm'))
else: else:
self._print('... WARNING: Windows help file not found') self._print('... WARNING: Windows help file not found')
self._print_verbose('... mudraw.exe')
if self.mudraw_bin and os.path.isfile(self.mudraw_bin):
copy(os.path.join(self.mudraw_bin), os.path.join(self.dist_path, 'mudraw.exe'))
else:
self._print('... WARNING: mudraw.exe not found')
self._print_verbose('Tempoary workaround for needed dlls not copied by pyinstaller')
self._print_verbose('... pythoncom33.dll')
if os.path.isfile('C:\\Python33\\Lib\\site-packages\\pywin32_system32\\pythoncom33.dll'):
copy('C:\\Python33\\Lib\\site-packages\\pywin32_system32\\pythoncom33.dll',
os.path.join(self.dist_path, 'pythoncom33.dll'))
else:
self._print('... WARNING: pythoncom33.dll not found')
if os.path.isfile('C:\\windows\\system32\\msvcr100.dll'):
self._print_verbose('... msvcr100.dll')
copy('C:\\windows\\system32\\msvcr100.dll', os.path.join(self.dist_path, 'msvcr100.dll'))
else:
self._print('... WARNING: msvcr100.dll not found')
def update_translations(self): def update_translations(self):
""" """
@ -421,7 +453,7 @@ class WindowsBuilder(object):
raise Exception('No option named "password" found.') raise Exception('No option named "password" found.')
username = self.config.get('transifex', 'username') username = self.config.get('transifex', 'username')
password = self.config.get('transifex', 'password') password = self.config.get('transifex', 'password')
os.chdir(os.path.split(self.i18n_utils)[0]) os.chdir(os.path.dirname(self.i18n_utils))
translation_utils = Popen([self.python, self.i18n_utils, '-qdpu', '-U', username, '-P', password]) translation_utils = Popen([self.python, self.i18n_utils, '-qdpu', '-U', username, '-P', password])
code = translation_utils.wait() code = translation_utils.wait()
if code != 0: if code != 0:
@ -593,7 +625,7 @@ class WindowsBuilder(object):
The main function to run the Windows builder. The main function to run the Windows builder.
""" """
self._print_verbose('OpenLP main script: ......%s', self.openlp_script) self._print_verbose('OpenLP main script: ......%s', self.openlp_script)
self._print_verbose('Script path: .............%s', os.path.split(os.path.abspath(__file__))[0]) self._print_verbose('Script path: .............%s', os.path.dirname(os.path.abspath(__file__)))
self._print_verbose('Branch path: .............%s', self.branch_path) self._print_verbose('Branch path: .............%s', self.branch_path)
self._print_verbose('Source path: .............%s', self.source_path) self._print_verbose('Source path: .............%s', self.source_path)
self._print_verbose('Dist path: ...............%s', self.dist_path) self._print_verbose('Dist path: ...............%s', self.dist_path)
@ -607,6 +639,7 @@ class WindowsBuilder(object):
self._print_verbose('Windows resources: .......%s', self.winres_path) self._print_verbose('Windows resources: .......%s', self.winres_path)
self._print_verbose('VCBuild path: ............%s', self.vcbuild) self._print_verbose('VCBuild path: ............%s', self.vcbuild)
self._print_verbose('PPTVIEWLIB path: .........%s', self.pptviewlib_path) self._print_verbose('PPTVIEWLIB path: .........%s', self.pptviewlib_path)
self._print_verbose('Mudraw binary ............%s', self.mudraw_bin)
self._print_verbose('') self._print_verbose('')
if not self.args.skip_update: if not self.args.skip_update:
self.update_code() self.update_code()