diff --git a/osx/macosx-builder.py b/osx/macosx-builder.py index 7ebc22d..6c442dc 100644 --- a/osx/macosx-builder.py +++ b/osx/macosx-builder.py @@ -4,12 +4,14 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2013 Raoul Snyman # -# Portions copyright (c) 2008-2013 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # -# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # -# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # -# Woldsund # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # +# 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 # # 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/ +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 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('-v', '--verbose', dest='verbose', action='store_true', default=False, 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() def read_config(self): @@ -267,7 +274,10 @@ class MacosxBuilder(object): self.docs_path = os.path.abspath(self.args.docs) else: 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.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')) @@ -438,6 +448,11 @@ class MacosxBuilder(object): self._print('Copying extra files for Mac OS X...') self._print_verbose('... 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): """ @@ -636,6 +651,7 @@ class MacosxBuilder(object): self._print_verbose('"hooks" path: ............%s', self.hooks_path) self._print_verbose('PyInstaller: .............%s', self.pyinstaller) self._print_verbose('Documentation branch path:%s', self.docs_path) + self._print_verbose('Mudraw binary ............%s', self.mudraw_bin) self._print_verbose('') if not self.args.skip_update: self.update_code() diff --git a/pyinstaller-hooks/hook-openlp.core.ui.media.py b/pyinstaller-hooks/hook-openlp.core.ui.media.py index 36d98ab..5d1828c 100644 --- a/pyinstaller-hooks/hook-openlp.core.ui.media.py +++ b/pyinstaller-hooks/hook-openlp.core.ui.media.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2013 Raoul Snyman # -# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # diff --git a/pyinstaller-hooks/hook-openlp.plugins.presentations.presentationplugin.py b/pyinstaller-hooks/hook-openlp.plugins.presentations.presentationplugin.py index 4948a64..39318ce 100644 --- a/pyinstaller-hooks/hook-openlp.plugins.presentations.presentationplugin.py +++ b/pyinstaller-hooks/hook-openlp.plugins.presentations.presentationplugin.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2013 Raoul Snyman # -# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # @@ -28,5 +28,6 @@ ############################################################################### hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller', + 'openlp.plugins.presentations.lib.pdfcontroller', 'openlp.plugins.presentations.lib.powerpointcontroller', 'openlp.plugins.presentations.lib.pptviewcontroller'] diff --git a/pyinstaller-hooks/hook-openlp.py b/pyinstaller-hooks/hook-openlp.py index 4a78d93..984f16f 100644 --- a/pyinstaller-hooks/hook-openlp.py +++ b/pyinstaller-hooks/hook-openlp.py @@ -4,8 +4,8 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2013 Raoul Snyman # -# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # # Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # # Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # @@ -27,12 +27,12 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -hiddenimports = ['plugins.songs.songsplugin', - 'plugins.bibles.bibleplugin', - 'plugins.presentations.presentationplugin', - 'plugins.media.mediaplugin', - 'plugins.images.imageplugin', - 'plugins.custom.customplugin', - 'plugins.songusage.songusageplugin', - 'plugins.remotes.remoteplugin', - 'plugins.alerts.alertsplugin'] +hiddenimports = ['openlp.plugins.songs.songsplugin', + 'openlp.plugins.bibles.bibleplugin', + 'openlp.plugins.presentations.presentationplugin', + 'openlp.plugins.media.mediaplugin', + 'openlp.plugins.images.imageplugin', + 'openlp.plugins.custom.customplugin', + 'openlp.plugins.songusage.songusageplugin', + 'openlp.plugins.remotes.remoteplugin', + 'openlp.plugins.alerts.alertsplugin'] diff --git a/windows/OpenLP-2.0.iss.default b/windows/OpenLP-2.0.iss.default index 939342e..426c692 100644 --- a/windows/OpenLP-2.0.iss.default +++ b/windows/OpenLP-2.0.iss.default @@ -27,7 +27,7 @@ DefaultDirName={pf}\{#AppName} DefaultGroupName={#AppVerName} AllowNoIcons=true LicenseFile=LICENSE.txt -OutputDir=%(branch)s\dist +OutputDir=%(branch)s\dist\OpenLP\ OutputBaseFilename=OpenLP-{#RealVersion}-setup Compression=lzma/Max SolidCompression=true @@ -38,7 +38,6 @@ ChangesAssociations=true [Languages] Name: english; MessagesFile: compiler:Default.isl -Name: basque; MessagesFile: compiler:Languages\Basque.isl Name: brazilianportuguese; MessagesFile: compiler:Languages\BrazilianPortuguese.isl Name: catalan; MessagesFile: compiler:Languages\Catalan.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: portuguese; MessagesFile: compiler:Languages\Portuguese.isl Name: russian; MessagesFile: compiler:Languages\Russian.isl -Name: slovak; MessagesFile: compiler:Languages\Slovak.isl Name: slovenian; MessagesFile: compiler:Languages\Slovenian.isl Name: spanish; MessagesFile: compiler:Languages\Spanish.isl diff --git a/windows/windows-builder.py b/windows/windows-builder.py index 3b41562..9e35883 100644 --- a/windows/windows-builder.py +++ b/windows/windows-builder.py @@ -4,12 +4,14 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # -# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # -# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # -# Woldsund # +# Copyright (c) 2008-2014 Raoul Snyman # +# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # +# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # +# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # +# 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 # # 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/ +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 The following are required if you are planning to make a portable build of 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.') parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False, 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() def read_config(self): @@ -192,7 +200,8 @@ class WindowsBuilder(object): 'pyroot': self.python_root, 'progfiles': self.program_files, '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)) @@ -200,9 +209,9 @@ class WindowsBuilder(object): """ 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_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.program_files = os.getenv('PROGRAMFILES') @@ -253,6 +262,10 @@ class WindowsBuilder(object): self.args.portable = self.portable_path else: 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.hooks_path = os.path.abspath(self.config.get('paths', 'hooks')) 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.build_path = os.path.join(self.branch_path, 'build') 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') def update_code(self): @@ -299,11 +313,12 @@ class WindowsBuilder(object): '--noupx', '--additional-hooks-dir', self.hooks_path, '--runtime-hook', os.path.join(self.hooks_path, 'rthook_openlp_pyqt4.py'), - '--log-level=ERROR', - '--distpath', self.branch_path, + '--log-level=DEBUG', + '--distpath', self.dist_path_pyinst_arg, '-i', self.win32_icon, '-p', self.branch_path, '-n', 'OpenLP', + '-d', '-c', # for now this is needed to make OpenLP run under windows self.openlp_script), stdout=PIPE) 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')) else: 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): """ @@ -421,7 +453,7 @@ class WindowsBuilder(object): raise Exception('No option named "password" found.') username = self.config.get('transifex', 'username') 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]) code = translation_utils.wait() if code != 0: @@ -593,7 +625,7 @@ class WindowsBuilder(object): The main function to run the Windows builder. """ 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('Source path: .............%s', self.source_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('VCBuild path: ............%s', self.vcbuild) self._print_verbose('PPTVIEWLIB path: .........%s', self.pptviewlib_path) + self._print_verbose('Mudraw binary ............%s', self.mudraw_bin) self._print_verbose('') if not self.args.skip_update: self.update_code()