From 77fb9cf416d7557680325f20e6071089a75536a1 Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Thu, 27 Sep 2018 13:53:08 -0500 Subject: [PATCH] chore: stop using electron.gyp for branding and version (#14559) * chore: stop using electron.gyp for version info * chore: remove branding info from electron.gyp * Use get_electron_branding instead of gn read * Flip project_name/product_name --- BUILD.gn | 31 ++++++++++++++++--------------- VERSION | 1 + atom/app/BRANDING.json | 5 +++++ build/write_version.py | 11 ----------- electron.gyp | 7 ------- script/bump-version.py | 19 ++++--------------- script/dump-symbols.py | 10 ++++++---- script/lib/util.py | 19 ++++++++++--------- script/test.py | 6 +++--- script/upload-symbols.py | 7 ++++--- script/upload.py | 6 +++--- script/verify-ffmpeg.py | 24 ++++++++---------------- 12 files changed, 60 insertions(+), 86 deletions(-) create mode 100644 VERSION create mode 100644 atom/app/BRANDING.json delete mode 100644 build/write_version.py delete mode 100644 electron.gyp diff --git a/BUILD.gn b/BUILD.gn index 73286ae74dea..fb6acf9e2e12 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -25,13 +25,12 @@ if (is_linux) { } } -declare_args() { - electron_project_name = "electron" - electron_product_name = "Electron" - electron_company_name = "GitHub, Inc" - electron_company_abbr = "github" - electron_version = "0.0.0-dev" +branding = read_file("atom/app/BRANDING.json", "json") +electron_project_name = branding.project_name +electron_product_name = branding.product_name +electron_mac_bundle_id = branding.mac_bundle_id +declare_args() { enable_desktop_capturer = true enable_run_as_node = true enable_osr = true @@ -462,11 +461,10 @@ electron_paks("packed_resources") { } if (is_mac) { - electron_framework_name = electron_product_name + " Framework" - electron_helper_name = electron_product_name + " Helper" - electron_login_helper_name = electron_product_name + " Login Helper" + electron_framework_name = "$electron_product_name Framework" + electron_helper_name = "$electron_product_name Helper" + electron_login_helper_name = "$electron_product_name Login Helper" electron_framework_version = "A" - electron_mac_bundle_id = "com.$electron_company_abbr.$electron_project_name" mac_xib_bundle_data("electron_xibs") { sources = [ @@ -545,6 +543,8 @@ if (is_mac) { deps += [ ":electron_crashpad_helper" ] } info_plist = "atom/common/resources/mac/Info.plist" + + electron_version = read_file("VERSION", "trim string") extra_substitutions = [ "ATOM_BUNDLE_ID=$electron_mac_bundle_id.framework", "ELECTRON_VERSION=$electron_version", @@ -881,12 +881,13 @@ group("licenses") { ] } -action("electron_version") { - script = "build/write_version.py" - outputs = [ - "$root_build_dir/version", +copy("electron_version") { + sources = [ + "VERSION" + ] + outputs = [ + "$root_build_dir/version" ] - args = rebase_path(outputs, root_build_dir) + [ electron_version ] } dist_zip("electron_dist_zip") { diff --git a/VERSION b/VERSION new file mode 100644 index 000000000000..4ec46208f731 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +4.0.0-nightly.20180823 \ No newline at end of file diff --git a/atom/app/BRANDING.json b/atom/app/BRANDING.json new file mode 100644 index 000000000000..118f3d1593c4 --- /dev/null +++ b/atom/app/BRANDING.json @@ -0,0 +1,5 @@ +{ + "project_name": "electron", + "product_name": "Electron", + "mac_bundle_id": "com.github.Electron" +} diff --git a/build/write_version.py b/build/write_version.py deleted file mode 100644 index 1608074ea2ba..000000000000 --- a/build/write_version.py +++ /dev/null @@ -1,11 +0,0 @@ -import sys - - -def main(argv): - out_file, version = argv - with open(out_file, 'w') as f: - f.write(version) - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) diff --git a/electron.gyp b/electron.gyp deleted file mode 100644 index 7e80850a7ab9..000000000000 --- a/electron.gyp +++ /dev/null @@ -1,7 +0,0 @@ -{ - 'variables': { - 'project_name%': 'electron', - 'product_name%': 'Electron', - 'version%': '4.0.0-nightly.20180823', - } -} diff --git a/script/bump-version.py b/script/bump-version.py index e3c37e78539f..dafbd99b0874 100755 --- a/script/bump-version.py +++ b/script/bump-version.py @@ -96,7 +96,7 @@ def main(): return 0 with scoped_cwd(SOURCE_ROOT): - update_electron_gyp(version, suffix) + update_version(version, suffix) update_win_rc(version, versions) update_version_h(versions, suffix) update_info_plist(version) @@ -115,20 +115,9 @@ def increase_version(versions, index): return versions -def update_electron_gyp(version, suffix): - assert False, "electron.gyp must not be used anymore. We build with GN now." - - pattern = re.compile(" *'version%' *: *'[0-9.]+(-beta[0-9.]*)?(-dev)?" - + "(-nightly[0-9.]*)?'") - with open('electron.gyp', 'r') as f: - lines = f.readlines() - - for i in range(0, len(lines)): - if pattern.match(lines[i]): - lines[i] = " 'version%': '{0}',\n".format(version + suffix) - with open('electron.gyp', 'w') as f: - f.write(''.join(lines)) - return +def update_version(version, suffix): + with open('VERSION', 'w') as f: + f.write(version + suffix) def update_win_rc(version, versions): diff --git a/script/dump-symbols.py b/script/dump-symbols.py index 963b07773aaf..c4884e40b92e 100755 --- a/script/dump-symbols.py +++ b/script/dump-symbols.py @@ -5,8 +5,7 @@ import os import sys from lib.config import PLATFORM, enable_verbose_mode, is_verbose_mode -from lib.gn import gn -from lib.util import execute, rm_rf +from lib.util import get_electron_branding, execute, rm_rf ELECTRON_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) SOURCE_ROOT = os.path.abspath(os.path.dirname(ELECTRON_ROOT)) @@ -19,8 +18,7 @@ def main(): rm_rf(args.destination) source_root = os.path.abspath(args.source_root) build_path = os.path.join(source_root, args.build_dir) - product_name = gn(build_path).args().get_string('electron_product_name') - project_name = gn(build_path).args().get_string('electron_project_name') + (project_name, product_name) = get_names_from_branding() if PLATFORM in ['darwin', 'linux']: @@ -50,6 +48,10 @@ def main(): ] execute([sys.executable, generate_breakpad_symbols] + args) +def get_names_from_branding(): + variables = get_electron_branding() + return (variables['project_name'], variables['product_name']) + def generate_posix_symbols(binary, source_root, build_dir, destination): generate_breakpad_symbols = os.path.join(source_root, 'components', 'crash', 'content', 'tools', diff --git a/script/lib/util.py b/script/lib/util.py index 52ec0b182738..d82bd6a11255 100644 --- a/script/lib/util.py +++ b/script/lib/util.py @@ -4,6 +4,8 @@ import atexit import contextlib import datetime import errno +import json +import os import platform import re import shutil @@ -14,7 +16,6 @@ import sys import tarfile import tempfile import urllib2 -import os import zipfile from lib.config import is_verbose_mode, PLATFORM @@ -171,17 +172,17 @@ def execute_stdout(argv, env=None, cwd=None): else: execute(argv, env, cwd) -def electron_gyp(): - # FIXME(alexeykuzmin): Use data from //BUILD.gn. - # electron.gyp is not used during the build. +def get_electron_branding(): SOURCE_ROOT = os.path.abspath(os.path.join(__file__, '..', '..', '..')) - gyp = os.path.join(SOURCE_ROOT, 'electron.gyp') - with open(gyp) as f: - obj = eval(f.read()); - return obj['variables'] + branding_file_path = os.path.join(SOURCE_ROOT, 'atom', 'app', 'BRANDING.json') + with open(branding_file_path) as f: + return json.load(f) def get_electron_version(): - return 'v' + electron_gyp()['version%'] + SOURCE_ROOT = os.path.abspath(os.path.join(__file__, '..', '..', '..')) + version_file = os.path.join(SOURCE_ROOT, 'VERSION') + with open(version_file) as f: + return 'v' + f.read().strip() def boto_path_dirs(): return [ diff --git a/script/test.py b/script/test.py index 9f6fd872108e..f762deced8d3 100755 --- a/script/test.py +++ b/script/test.py @@ -8,8 +8,8 @@ import subprocess import sys from lib.config import enable_verbose_mode +from lib.util import get_electron_branding, execute_stdout, rm_rf import lib.dbus_mock -from lib.util import electron_gyp, execute_stdout, rm_rf if sys.platform == 'linux2': @@ -29,8 +29,8 @@ if sys.platform == 'linux2': SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) -PROJECT_NAME = electron_gyp()['project_name%'] -PRODUCT_NAME = electron_gyp()['product_name%'] +PROJECT_NAME = get_electron_branding()['project_name'] +PRODUCT_NAME = get_electron_branding()['product_name'] def main(): diff --git a/script/upload-symbols.py b/script/upload-symbols.py index 1e9b97365655..34b7ab15a919 100755 --- a/script/upload-symbols.py +++ b/script/upload-symbols.py @@ -5,15 +5,16 @@ import glob import sys from lib.config import PLATFORM, s3_config, enable_verbose_mode -from lib.util import electron_gyp, execute, rm_rf, safe_mkdir, s3put +from lib.util import get_electron_branding, execute, rm_rf, safe_mkdir, s3put SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) DIST_DIR = os.path.join(SOURCE_ROOT, 'dist') RELEASE_DIR = os.path.join(SOURCE_ROOT, 'out', 'R') -PROJECT_NAME = electron_gyp()['project_name%'] -PRODUCT_NAME = electron_gyp()['product_name%'] + +PROJECT_NAME = get_electron_branding()['project_name'] +PRODUCT_NAME = get_electron_branding()['product_name'] if PLATFORM == 'win32': SYMBOLS_DIR = os.path.join(DIST_DIR, 'symbols') diff --git a/script/upload.py b/script/upload.py index 74c60314f3ca..76dd6e6f1aab 100755 --- a/script/upload.py +++ b/script/upload.py @@ -13,15 +13,15 @@ import tempfile from io import StringIO from lib.config import PLATFORM, get_target_arch, get_env_var, s3_config, \ get_zip_name -from lib.util import electron_gyp, execute, get_electron_version, \ +from lib.util import get_electron_branding, execute, get_electron_version, \ parse_version, scoped_cwd, s3put ELECTRON_REPO = 'electron/electron' ELECTRON_VERSION = get_electron_version() -PROJECT_NAME = electron_gyp()['project_name%'] -PRODUCT_NAME = electron_gyp()['product_name%'] +PROJECT_NAME = get_electron_branding()['project_name'] +PRODUCT_NAME = get_electron_branding()['product_name'] SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'R') diff --git a/script/verify-ffmpeg.py b/script/verify-ffmpeg.py index 940a33f083f2..bd45c3995442 100755 --- a/script/verify-ffmpeg.py +++ b/script/verify-ffmpeg.py @@ -5,13 +5,12 @@ import shutil import subprocess import sys -from lib.gn import gn -from lib.util import rm_rf - +from lib.util import get_electron_branding, rm_rf +PROJECT_NAME = get_electron_branding()['project_name'] +PRODUCT_NAME = get_electron_branding()['product_name'] SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) - def main(): args = parse_args() @@ -19,23 +18,18 @@ def main(): initial_app_path = os.path.join(source_root, args.build_dir) app_path = create_app_copy(initial_app_path) - # Those are the same in the original app and its copy. - # So it is ok to get them from the original build dir and use in the copy. - product_name = gn(initial_app_path).args().get_string('electron_product_name') - project_name = gn(initial_app_path).args().get_string('electron_project_name') - if sys.platform == 'darwin': - electron = os.path.join(app_path, 'Contents', 'MacOS', product_name) + electron = os.path.join(app_path, 'Contents', 'MacOS', PRODUCT_NAME) ffmpeg_name = 'libffmpeg.dylib' ffmpeg_app_path = os.path.join(app_path, 'Contents', 'Frameworks', - '{0} Framework.framework'.format(product_name), + '{0} Framework.framework'.format(PRODUCT_NAME), 'Libraries') elif sys.platform == 'win32': - electron = os.path.join(app_path, '{0}.exe'.format(project_name)) + electron = os.path.join(app_path, '{0}.exe'.format(PROJECT_NAME)) ffmpeg_app_path = app_path ffmpeg_name = 'ffmpeg.dll' else: - electron = os.path.join(app_path, project_name) + electron = os.path.join(app_path, PROJECT_NAME) ffmpeg_app_path = app_path ffmpeg_name = 'libffmpeg.so' @@ -65,9 +59,7 @@ def create_app_copy(initial_app_path): + '-no-proprietary-codecs') if sys.platform == 'darwin': - product_name = gn(initial_app_path).args().get_string( - 'electron_product_name') - app_name = '{0}.app'.format(product_name) + app_name = '{0}.app'.format(PRODUCT_NAME) initial_app_path = os.path.join(initial_app_path, app_name) app_path = os.path.join(app_path, app_name)