| OLD | NEW |
| 1 # coding: utf-8 | 1 # coding: utf-8 |
| 2 | 2 |
| 3 # This Source Code is subject to the terms of the Mozilla Public License | 3 # This Source Code is subject to the terms of the Mozilla Public License |
| 4 # version 2.0 (the "License"). You can obtain a copy of the License at | 4 # version 2.0 (the "License"). You can obtain a copy of the License at |
| 5 # http://mozilla.org/MPL/2.0/. | 5 # http://mozilla.org/MPL/2.0/. |
| 6 | 6 |
| 7 import os, subprocess, re, tempfile, shutil, json | 7 import os, subprocess, re, tempfile, shutil, json |
| 8 import buildtools.packager as packager | 8 import buildtools.packagerGecko as packagerBase |
| 9 | 9 |
| 10 libs = ( | 10 libs = ( |
| 11 'libcmt.lib', 'kernel32.lib', 'user32.lib', 'gdi32.lib', 'comctl32.lib', | 11 'libcmt.lib', 'kernel32.lib', 'user32.lib', 'gdi32.lib', 'comctl32.lib', |
| 12 'nspr4.lib', 'plds4.lib', 'plc4.lib', 'xpcom.lib', 'xpcomglue_s.lib', | 12 'nspr4.lib', 'plds4.lib', 'plc4.lib', 'xpcom.lib', 'xpcomglue_s.lib', |
| 13 'embed_base_s.lib', 'unicharutil_external_s.lib', 'js3250.lib' | 13 'embed_base_s.lib', 'unicharutil_external_s.lib', 'js3250.lib' |
| 14 ) | 14 ) |
| 15 compileflags = ('-c', '-O1', '-W3', '-MT', '-DXP_WIN', '-Zc:wchar_t-') | 15 compileflags = ('-c', '-O1', '-W3', '-MT', '-DXP_WIN', '-Zc:wchar_t-') |
| 16 linkflags = ('-DLL', '-NODEFAULTLIB', '-NOLOGO') | 16 linkflags = ('-DLL', '-NODEFAULTLIB', '-NOLOGO') |
| 17 versionflag = '-DABP_VERSION="%s"' | 17 versionflag = '-DABP_VERSION="%s"' |
| 18 | 18 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 subprocess.Popen(command).communicate() | 85 subprocess.Popen(command).communicate() |
| 86 | 86 |
| 87 handle = open(outFile, 'rb') | 87 handle = open(outFile, 'rb') |
| 88 result = handle.read() | 88 result = handle.read() |
| 89 handle.close() | 89 handle.close() |
| 90 return result | 90 return result |
| 91 finally: | 91 finally: |
| 92 shutil.rmtree(tempDir, ignore_errors=True) | 92 shutil.rmtree(tempDir, ignore_errors=True) |
| 93 | 93 |
| 94 def createManifest(baseExtDir, params): | 94 def createManifest(baseExtDir, params): |
| 95 localeMetadata = packager.readLocaleMetadata(baseExtDir, params['locales']) | 95 localeMetadata = packagerBase.readLocaleMetadata(baseExtDir, params['locales']
) |
| 96 | 96 |
| 97 manifest = {} | 97 manifest = {} |
| 98 metadata = params['metadata'] | 98 metadata = params['metadata'] |
| 99 manifest['id'] = metadata.get('general', 'id') | 99 manifest['id'] = metadata.get('general', 'id') |
| 100 manifest['version'] = metadata.get('general', 'version') | 100 manifest['version'] = metadata.get('general', 'version') |
| 101 manifest['version'] = params['version'] | 101 manifest['version'] = params['version'] |
| 102 manifest['name'] = localeMetadata[packager.defaultLocale]['name'] | 102 manifest['name'] = localeMetadata[packagerBase.defaultLocale]['name'] |
| 103 manifest['description'] = localeMetadata[packager.defaultLocale]['description'
] | 103 manifest['description'] = localeMetadata[packagerBase.defaultLocale]['descript
ion'] |
| 104 manifest['creator'] = metadata.get('general', 'author') | 104 manifest['creator'] = metadata.get('general', 'author') |
| 105 manifest['homepage'] = metadata.get('homepage', 'default') | 105 manifest['homepage'] = metadata.get('homepage', 'default') |
| 106 if metadata.has_section('contributors'): | 106 if metadata.has_section('contributors'): |
| 107 manifest['contributors'] = map(lambda item: item[1], metadata.items('contrib
utors')) | 107 manifest['contributors'] = map(lambda item: item[1], metadata.items('contrib
utors')) |
| 108 manifest['contributors'].sort() | 108 manifest['contributors'].sort() |
| 109 else: | 109 else: |
| 110 manifest['contributors'] = [] | 110 manifest['contributors'] = [] |
| 111 manifest['translators'] = packager.getTranslators(localeMetadata) | 111 manifest['translators'] = packagerBase.getTranslators(localeMetadata) |
| 112 return 'var EXPORTED_SYMBOLS = ["manifest"];\nvar manifest = ' + json.dumps(ma
nifest) | 112 return 'var EXPORTED_SYMBOLS = ["manifest"];\nvar manifest = ' + json.dumps(ma
nifest) |
| 113 | 113 |
| 114 def processChromeManifest(data, baseName): | 114 def processChromeManifest(data, baseName): |
| 115 # Manifest location is different in K-Meleon, update paths | 115 # Manifest location is different in K-Meleon, update paths |
| 116 data = re.sub(r'jar:chrome/', 'jar:', data) | 116 data = re.sub(r'jar:chrome/', 'jar:', data) |
| 117 data = re.sub(r'(\s)modules/', r'\1../modules/%s/' % baseName, data) | 117 data = re.sub(r'(\s)modules/', r'\1../modules/%s/' % baseName, data) |
| 118 data = re.sub(r'(\s)defaults/', r'\1../defaults/', data) | 118 data = re.sub(r'(\s)defaults/', r'\1../defaults/', data) |
| 119 return data | 119 return data |
| 120 | 120 |
| 121 def createBuild(baseDir, outFile=None, locales=None, buildNum=None, releaseBuild
=False): | 121 def createBuild(baseDir, outFile=None, locales=None, buildNum=None, releaseBuild
=False): |
| 122 if buildNum == None: | 122 if buildNum == None: |
| 123 buildNum = packager.getBuildNum(baseDir) | 123 buildNum = packagerBase.getBuildNum(baseDir) |
| 124 | 124 |
| 125 baseExtDir = getBaseExtensionDir(baseDir) | 125 baseExtDir = getBaseExtensionDir(baseDir) |
| 126 if locales == None: | 126 if locales == None: |
| 127 locales = packager.getLocales(baseExtDir) | 127 locales = packagerBase.getLocales(baseExtDir) |
| 128 elif locales == 'all': | 128 elif locales == 'all': |
| 129 locales = packager.getLocales(baseExtDir, True) | 129 locales = packagerBase.getLocales(baseExtDir, True) |
| 130 | 130 |
| 131 metadata = packager.readMetadata(baseExtDir) | 131 metadata = packagerBase.readMetadata(baseExtDir) |
| 132 version = metadata.get('general', 'version') | 132 version = metadata.get('general', 'version') |
| 133 if not releaseBuild: | 133 if not releaseBuild: |
| 134 version += '.' + buildNum | 134 version += '.' + buildNum |
| 135 | 135 |
| 136 params = { | 136 params = { |
| 137 'locales': locales, | 137 'locales': locales, |
| 138 'releaseBuild': releaseBuild, | 138 'releaseBuild': releaseBuild, |
| 139 'buildNum': buildNum, | 139 'buildNum': buildNum, |
| 140 'version': version.encode('utf-8'), | 140 'version': version.encode('utf-8'), |
| 141 'metadata': metadata, | 141 'metadata': metadata, |
| 142 'limitMetadata': False, | 142 'limitMetadata': False, |
| 143 } | 143 } |
| 144 baseName = metadata.get('general', 'baseName') | 144 baseName = metadata.get('general', 'baseName') |
| 145 | 145 |
| 146 chromeFiles = {} | 146 chromeFiles = {} |
| 147 for xulFile in getXULFiles(baseDir): | 147 for xulFile in getXULFiles(baseDir): |
| 148 packager.readFile(chromeFiles, params, xulFile, 'content/ui/%s' % os.path.ba
sename(xulFile)) | 148 packagerBase.readFile(chromeFiles, params, xulFile, 'content/ui/%s' % os.pat
h.basename(xulFile)) |
| 149 | 149 |
| 150 files = {} | 150 files = {} |
| 151 files['modules/%s/Manifest.jsm' % baseName] = createManifest(baseExtDir, param
s) | 151 files['modules/%s/Manifest.jsm' % baseName] = createManifest(baseExtDir, param
s) |
| 152 files['kplugins/%s.dll' % baseName] = buildDLL(baseDir, '%s.dll' % baseName, v
ersion) | 152 files['kplugins/%s.dll' % baseName] = buildDLL(baseDir, '%s.dll' % baseName, v
ersion) |
| 153 files['chrome/%s.jar' % baseName] = packager.createChromeJar(baseExtDir, param
s, files=chromeFiles) | 153 files['chrome/%s.jar' % baseName] = packagerBase.createChromeJar(baseExtDir, p
arams, files=chromeFiles) |
| 154 | 154 |
| 155 packager.readFile(files, params, os.path.join(baseExtDir, 'chrome.manifest'),
'chrome/%s.manifest' % baseName) | 155 packagerBase.readFile(files, params, os.path.join(baseExtDir, 'chrome.manifest
'), 'chrome/%s.manifest' % baseName) |
| 156 files['chrome/%s.manifest' % baseName] = processChromeManifest(files['chrome/%
s.manifest' % baseName], baseName) | 156 files['chrome/%s.manifest' % baseName] = processChromeManifest(files['chrome/%
s.manifest' % baseName], baseName) |
| 157 | 157 |
| 158 for macroFile in getMacroFiles(baseDir): | 158 for macroFile in getMacroFiles(baseDir): |
| 159 packager.readFile(files, params, macroFile, 'macros/%s' % os.path.basename(m
acroFile)) | 159 packagerBase.readFile(files, params, macroFile, 'macros/%s' % os.path.basena
me(macroFile)) |
| 160 for interfaceFile in getInterfaceFiles(baseDir): | 160 for interfaceFile in getInterfaceFiles(baseDir): |
| 161 packager.readFile(files, params, interfaceFile, 'components/%s' % os.path.ba
sename(interfaceFile)) | 161 packagerBase.readFile(files, params, interfaceFile, 'components/%s' % os.pat
h.basename(interfaceFile)) |
| 162 for moduleFile in getModuleFiles(baseDir): | 162 for moduleFile in getModuleFiles(baseDir): |
| 163 packager.readFile(files, params, moduleFile, 'modules/%s/%s' % (baseName, os
.path.basename(moduleFile))) | 163 packagerBase.readFile(files, params, moduleFile, 'modules/%s/%s' % (baseName
, os.path.basename(moduleFile))) |
| 164 for prefsFile in getPrefsFiles(baseDir): | 164 for prefsFile in getPrefsFiles(baseDir): |
| 165 packager.readFile(files, params, prefsFile, 'defaults/pref/%s' % os.path.bas
ename(prefsFile)) | 165 packagerBase.readFile(files, params, prefsFile, 'defaults/pref/%s' % os.path
.basename(prefsFile)) |
| 166 | 166 |
| 167 packager.readFile(files, params, os.path.join(baseExtDir, 'defaults'), 'defaul
ts') | 167 packagerBase.readFile(files, params, os.path.join(baseExtDir, 'defaults'), 'de
faults') |
| 168 packager.readFile(files, params, os.path.join(baseExtDir, 'modules'), 'modules
/%s' %baseName) | 168 packagerBase.readFile(files, params, os.path.join(baseExtDir, 'modules'), 'mod
ules/%s' %baseName) |
| 169 | 169 |
| 170 # Correct files names (defaults/preferences/ => defaults/pref/) | 170 # Correct files names (defaults/preferences/ => defaults/pref/) |
| 171 newFiles = {} | 171 newFiles = {} |
| 172 for key, value in files.iteritems(): | 172 for key, value in files.iteritems(): |
| 173 if key.startswith('defaults/preferences/'): | 173 if key.startswith('defaults/preferences/'): |
| 174 key = 'defaults/pref/' + key[len('defaults/preferences/'):] | 174 key = 'defaults/pref/' + key[len('defaults/preferences/'):] |
| 175 newFiles[key] = value | 175 newFiles[key] = value |
| 176 files = newFiles | 176 files = newFiles |
| 177 | 177 |
| 178 # Allow local metadata to overrite settings from base extension | 178 # Allow local metadata to overrite settings from base extension |
| 179 metadata.read(packager.getMetadataPath(baseDir)) | 179 metadata.read(packagerBase.getMetadataPath(baseDir)) |
| 180 if outFile == None: | 180 if outFile == None: |
| 181 outFile = packager.getDefaultFileName(baseDir, metadata, version, 'zip') | 181 outFile = packagerBase.getDefaultFileName(baseDir, metadata, version, 'zip') |
| 182 | 182 |
| 183 packager.writeXPI(files, outFile) | 183 packagerBase.writeXPI(files, outFile) |
| OLD | NEW |