Fix up errors in builder

This commit is contained in:
Raoul Snyman 2019-04-10 10:50:00 -07:00
parent 76ded370db
commit f0b3ce65a1
2 changed files with 17 additions and 14 deletions

View File

@ -1,10 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 # vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
############################################################################### ###############################################################################
# OpenLP - Open Source Lyrics Projection # # OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# Copyright (c) 2004-2016 OpenLP Developers # # Copyright (c) OpenLP Developers #
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# 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 #
@ -36,7 +36,7 @@ PyEnchant
This script expects the precompiled, installable version of PyEnchant to be This script expects the precompiled, installable version of PyEnchant to be
installed. You can find this on the PyEnchant site. installed. You can find this on the PyEnchant site.
Inno Setup 5 WiX Toolset
Inno Setup should be installed into "C:\\%PROGRAMFILES%\\Inno Setup 5" Inno Setup should be installed into "C:\\%PROGRAMFILES%\\Inno Setup 5"
Sphinx Sphinx
@ -140,7 +140,7 @@ class WindowsBuilder(Builder):
if not parts: if not parts:
return dir_dict[search_key] return dir_dict[search_key]
else: else:
return walk_dirs(dir_dict[search_key], os.sep.join(parts)) return self._walk_dirs(dir_dict[search_key], os.sep.join(parts))
else: else:
return None return None
@ -164,21 +164,24 @@ class WindowsBuilder(Builder):
dir_id = 'dir_{parent}_{base}'.format(parent=parent.replace(os.sep, '_'), base=base) dir_id = 'dir_{parent}_{base}'.format(parent=parent.replace(os.sep, '_'), base=base)
element = E.Directory(Id=dir_id, Name=base) element = E.Directory(Id=dir_id, Name=base)
new_dir = {'__dir__': element} new_dir = {'__dir__': element}
parent_dir = walk_dirs(directories, parent) parent_dir = self._walk_dirs(directories, parent)
parent_dir[base] = new_dir parent_dir[base] = new_dir
parent_dir['__dir__'].append(element) parent_dir['__dir__'].append(element)
for fname in files: for fname in files:
if fname in BLACKLIST: if fname in BLACKLIST:
continue continue
source = os.path.join(path, fname) if path else fname source = os.path.join(path, fname) if path else fname
file_id = 'file_{source}'.format(source=source.replace('-', '_').replace(os.sep, '_')) source_id = source.replace('-', '_').replace(os.sep, '_')
file_id = 'file_{source_id}'.format(source_id=source_id)
component_id = 'cmp_{source_id}'.format(source_id=source_id)
file_ = E.File(Id=file_id, KeyPath="yes", Source=source) file_ = E.File(Id=file_id, KeyPath="yes", Source=source)
component = E.Component(file_, Id='cmp_' + fixed_id, Guid='*') component = E.Component(file_, Id=component_id, Guid='*')
element.append(component) element.append(component)
components.append(component) components.append(component)
files_fragment = E.Fragment(directories[start_path]['__dir__']) files_fragment = E.Fragment(directories[start_path]['__dir__'])
comps_fragment = E.Fragment(E.ComponentGroup(*[E.ComponentRef(Id=c.attrib['Id']) for c in components], Id='Files')) comps_fragment = E.Fragment(E.ComponentGroup(*[E.ComponentRef(Id=c.attrib['Id']) for c in components],
Id='Files'))
return files_fragment, comps_fragment return files_fragment, comps_fragment
def _create_wix_file(self): def _create_wix_file(self):
@ -188,15 +191,15 @@ class WindowsBuilder(Builder):
self._print('Creating WiX file...') self._print('Creating WiX file...')
config_dir = os.path.dirname(self.config_path) config_dir = os.path.dirname(self.config_path)
self._print_verbose('Reading base WiX file') self._print_verbose('Reading base WiX file')
with open(os.path.join(config_dir, 'OpenLP-base.wxs'), 'rb') as base_file: with open(os.path.join(config_dir, 'OpenLP-base.wxs'), 'rt') as base_file:
xml = base_file.read() xml = base_file.read()
xml = xml.format(dialog=os.path.join(config_dir, 'WizardMain.bmp'), xml = xml % dict(dialog=os.path.join(config_dir, 'WizardMain.bmp'),
banner=os.path.join(config_dir, 'WizardBanner.bmp')) banner=os.path.join(config_dir, 'WizardBanner.bmp'))
tree = fromstring(xml) tree = fromstring(xml.encode('utf8'))
self._print_verbose('Creating XML fragments from files and directories') self._print_verbose('Creating XML fragments from files and directories')
fragments = self._get_fragments_from_files(self.dist_path) fragments = self._get_fragments_from_files(self.dist_path)
self._print_verbose('Inserting XML fragments into base WiX file') self._print_verbose('Inserting XML fragments into base WiX file')
wix = base_tree.getroot() wix = tree.getroot()
for fragment in fragments: for fragment in fragments:
wix.append(fragment) wix.append(fragment)
self._print_verbose('Writing new WiX file') self._print_verbose('Writing new WiX file')

View File

@ -21,8 +21,8 @@
Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI> </UI>
<WixVariable Id="WixUILicenseRtf" Value="gpl-2.0.rtf" /> <WixVariable Id="WixUILicenseRtf" Value="gpl-2.0.rtf" />
<WixVariable Id="WixUIDialogBmp" Value="{dialog}" /> <WixVariable Id="WixUIDialogBmp" Value="%(dialog)s" />
<WixVariable Id="WixUIBannerBmp" Value="{banner}" /> <WixVariable Id="WixUIBannerBmp" Value="%(banner)s" />
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder"> <Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="OpenLP"/> <Directory Id="INSTALLDIR" Name="OpenLP"/>