def createBuild(baseDir, type, outFile=None, buildNum=None, releaseBuild=False, keyFile=None): metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if not outFile: outFile = getDefaultFileName(baseDir, metadata, version, 'safariextz' if keyFile else 'zip') params = { 'type': type, 'baseDir': baseDir, 'releaseBuild': releaseBuild, 'version': version, 'devenv': False, 'metadata': metadata, } requiredAssets = () requiredAssetsPath = None if metadata.has_section('buildConfig'): requiredAssets = re.split(r'\s+', metadata.get('buildConfig', 'requiredAssets')) requiredAssetsPath = metadata.get('buildConfig', 'requiredAssetsPath') files = Files(getPackageFiles(params), getIgnoredFiles(params), requiredAssets=requiredAssets, requiredAssetsPath=requiredAssetsPath, process=lambda path, data: processFile(path, data, params)) if metadata.has_section('mapping'): files.readMappedFiles(metadata.items('mapping')) files.read(baseDir) if metadata.has_section('convert_js'): convertJS(params, files) if metadata.has_section('convert_img'): from imageConversion import convertImages convertImages(params, files) if metadata.has_section('preprocess'): files.preprocess( [f for f, _ in metadata.items('preprocess')], {'needsExt': True} ) if metadata.has_section('import_locales'): importGeckoLocales(params, files) files['lib/info.js'] = createInfoModule(params) files['background.html'] = createBackgroundPage(params) files['Info.plist'] = createManifest(params, files) fixAbsoluteUrls(files) dirname = metadata.get('general', 'basename') + '.safariextension' for filename in files.keys(): files[os.path.join(dirname, filename)] = files.pop(filename) if keyFile: createSignedXarArchive(outFile, files, keyFile) else: files.zip(outFile)
def createBuild(baseDir, type, outFile=None, buildNum=None, releaseBuild=False, keyFile=None, devenv=False): metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if not outFile: outFile = getDefaultFileName(metadata, version, 'safariextz' if keyFile else 'zip') params = { 'type': type, 'baseDir': baseDir, 'releaseBuild': releaseBuild, 'version': version, 'devenv': devenv, 'metadata': metadata, } mapped = metadata.items('mapping') if metadata.has_section('mapping') else [] files = Files(getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params)) files.readMappedFiles(mapped) files.read(baseDir, skip=[opt for opt, _ in mapped]) if metadata.has_section('convert_js'): convertJS(params, files) if metadata.has_section('preprocess'): files.preprocess( [f for f, _ in metadata.items('preprocess')], {'needsExt': True} ) if metadata.has_section('import_locales'): importGeckoLocales(params, files) if metadata.has_option('general', 'testScripts'): files['qunit/index.html'] = createScriptPage(params, 'testIndex.html.tmpl', ('general', 'testScripts')) if keyFile: certs, key = get_certificates_and_key(keyFile) params['developerIdentifier'] = get_developer_identifier(certs) files['lib/info.js'] = createInfoModule(params) files['background.html'] = createScriptPage(params, 'background.html.tmpl', ('general', 'backgroundScripts')) files['Info.plist'] = createManifest(params, files) fixAbsoluteUrls(files) dirname = metadata.get('general', 'basename') + '.safariextension' for filename in files.keys(): files[os.path.join(dirname, filename)] = files.pop(filename) if not devenv and keyFile: createSignedXarArchive(outFile, files, certs, key) else: files.zip(outFile)
def createBuild(baseDir, type, outFile=None, buildNum=None, releaseBuild=False, keyFile=None): metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if not outFile: outFile = getDefaultFileName(baseDir, metadata, version, 'safariextz' if keyFile else 'zip') params = { 'type': type, 'baseDir': baseDir, 'releaseBuild': releaseBuild, 'version': version, 'devenv': False, 'metadata': metadata, } files = Files(getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params)) if metadata.has_section('mapping'): files.readMappedFiles(metadata.items('mapping')) files.read(baseDir) if metadata.has_section('convert_js'): convertJS(params, files) if metadata.has_section('convert_img'): from imageConversion import convertImages convertImages(params, files) if metadata.has_section('preprocess'): files.preprocess([f for f, _ in metadata.items('preprocess')], {'needsExt': True}) if metadata.has_section('import_locales'): importGeckoLocales(params, files) files['lib/info.js'] = createInfoModule(params) files['background.html'] = createBackgroundPage(params) files['Info.plist'] = createManifest(params, files) fixAbsoluteUrls(files) dirname = metadata.get('general', 'basename') + '.safariextension' for filename in files.keys(): files[os.path.join(dirname, filename)] = files.pop(filename) if keyFile: createSignedXarArchive(outFile, files, keyFile) else: files.zip(outFile)
def createBuild(baseDir, type, outFile=None, buildNum=None, releaseBuild=False, keyFile=None, devenv=False): metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if not outFile: outFile = getDefaultFileName(metadata, version, "safariextz" if keyFile else "zip") params = { "type": type, "baseDir": baseDir, "releaseBuild": releaseBuild, "version": version, "devenv": devenv, "metadata": metadata, } mapped = metadata.items("mapping") if metadata.has_section("mapping") else [] files = Files( getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params) ) files.readMappedFiles(mapped) files.read(baseDir, skip=[opt for opt, _ in mapped]) if metadata.has_section("convert_js"): convertJS(params, files) if metadata.has_section("preprocess"): files.preprocess([f for f, _ in metadata.items("preprocess")], {"needsExt": True}) if metadata.has_section("import_locales"): importGeckoLocales(params, files) if metadata.has_option("general", "testScripts"): files["qunit/index.html"] = createScriptPage(params, "testIndex.html.tmpl", ("general", "testScripts")) if keyFile: from buildtools import xarfile certs, key = xarfile.read_certificates_and_key(keyFile) params["developerIdentifier"] = get_developer_identifier(certs) files["lib/info.js"] = createInfoModule(params) files["background.html"] = createScriptPage(params, "background.html.tmpl", ("general", "backgroundScripts")) files["Info.plist"] = createManifest(params, files) fixAbsoluteUrls(files) dirname = metadata.get("general", "basename") + ".safariextension" for filename in files.keys(): files[os.path.join(dirname, filename)] = files.pop(filename) if not devenv and keyFile: from buildtools import xarfile xarfile.create(outFile, files, keyFile) else: files.zip(outFile)
def createBuild(baseDir, type='gecko', outFile=None, locales=None, buildNum=None, releaseBuild=False, keyFile=None, multicompartment=False): if locales == None: locales = getLocales(baseDir) elif locales == 'all': locales = getLocales(baseDir, True) metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if outFile == None: outFile = getDefaultFileName(metadata, version, 'xpi') contributors = getContributors(metadata) params = { 'baseDir': baseDir, 'locales': locales, 'releaseBuild': releaseBuild, 'version': version.encode('utf-8'), 'metadata': metadata, 'contributors': contributors, 'multicompartment': multicompartment, 'jsonRequires': {}, } mapped = metadata.items('mapping') if metadata.has_section( 'mapping') else [] skip = [opt for opt, _ in mapped] + ['chrome'] files = Files(getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params)) files['install.rdf'] = createManifest(params) files.readMappedFiles(mapped) files.read(baseDir, skip=skip) for name, path in getChromeSubdirs(baseDir, params['locales']).iteritems(): if os.path.isdir(path): files.read(path, 'chrome/%s' % name, skip=skip) importLocales(params, files) fixupLocales(params, files) processJSONFiles(params, files) if not 'bootstrap.js' in files: addMissingFiles(params, files) if metadata.has_section('preprocess'): files.preprocess([f for f, _ in metadata.items('preprocess')]) if keyFile: signFiles(files, keyFile) files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else x)
def createBuild(baseDir, type="gecko", outFile=None, locales=None, buildNum=None, releaseBuild=False, keyFile=None, multicompartment=False): if locales == None: locales = getLocales(baseDir) elif locales == 'all': locales = getLocales(baseDir, True) metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if outFile == None: outFile = getDefaultFileName(metadata, version, 'xpi') contributors = getContributors(metadata) params = { 'baseDir': baseDir, 'locales': locales, 'releaseBuild': releaseBuild, 'version': version.encode('utf-8'), 'metadata': metadata, 'contributors': contributors, 'multicompartment': multicompartment, 'jsonRequires': {}, } mapped = metadata.items('mapping') if metadata.has_section('mapping') else [] skip = [opt for opt, _ in mapped] + ['chrome'] files = Files(getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params)) files['install.rdf'] = createManifest(params) files.readMappedFiles(mapped) files.read(baseDir, skip=skip) for name, path in getChromeSubdirs(baseDir, params['locales']).iteritems(): if os.path.isdir(path): files.read(path, 'chrome/%s' % name, skip=skip) importLocales(params, files) fixupLocales(params, files) processJSONFiles(params, files) if not 'bootstrap.js' in files: addMissingFiles(params, files) if metadata.has_section('preprocess'): files.preprocess([f for f, _ in metadata.items('preprocess')]) if keyFile: signFiles(files, keyFile) files.zip(outFile, sortKey=lambda x: '!' if x == 'META-INF/zigbert.rsa' else x)
def createBuild(baseDir, type, outFile=None, buildNum=None, releaseBuild=False, keyFile=None, devenv=False): metadata = readMetadata(baseDir, type) version = getBuildVersion(baseDir, metadata, releaseBuild, buildNum) if not outFile: outFile = getDefaultFileName(metadata, version, 'safariextz' if keyFile else 'zip') params = { 'type': type, 'baseDir': baseDir, 'releaseBuild': releaseBuild, 'version': version, 'devenv': devenv, 'metadata': metadata, } mapped = metadata.items('mapping') if metadata.has_section( 'mapping') else [] files = Files(getPackageFiles(params), getIgnoredFiles(params), process=lambda path, data: processFile(path, data, params)) files.readMappedFiles(mapped) files.read(baseDir, skip=[opt for opt, _ in mapped]) if metadata.has_section('convert_js'): convertJS(params, files) if metadata.has_section('preprocess'): files.preprocess([f for f, _ in metadata.items('preprocess')], {'needsExt': True}) if metadata.has_section('import_locales'): importGeckoLocales(params, files) if metadata.has_option('general', 'testScripts'): files['qunit/index.html'] = createScriptPage( params, 'testIndex.html.tmpl', ('general', 'testScripts')) if keyFile: from buildtools import xarfile certs, key = xarfile.read_certificates_and_key(keyFile) params['developerIdentifier'] = get_developer_identifier(certs) files['lib/info.js'] = createInfoModule(params) files['background.html'] = createScriptPage( params, 'background.html.tmpl', ('general', 'backgroundScripts')) files['Info.plist'] = createManifest(params, files) dirname = metadata.get('general', 'basename') + '.safariextension' for filename in files.keys(): files[os.path.join(dirname, filename)] = files.pop(filename) if not devenv and keyFile: from buildtools import xarfile xarfile.create(outFile, files, keyFile) else: files.zip(outFile)