# LibreWolf msix.patch # # Author: Malte Jürgens # Description: Allows us to build a msix for the Microsoft Store # Last Updated: 2023-03-11 # License: MPL 2.0 --- a/browser/installer/windows/msix/AppxManifest.xml.in +++ b/browser/installer/windows/msix/AppxManifest.xml.in @@ -29,13 +29,14 @@ + - + @@ -108,31 +109,4 @@ - - - - - - - - - - - - - - - --- a/python/mozbuild/mozbuild/mach_commands.py +++ b/python/mozbuild/mozbuild/mach_commands.py @@ -2325,7 +2325,7 @@ def repackage_msi( @CommandArgument( "--vendor", type=str, - default="Mozilla", + default=None, required=False, help="The vendor to use in the Package/Identity/Name string to use in the App Manifest." + " Defaults to 'Mozilla'.", @@ -2462,7 +2462,7 @@ def repackage_msix( command_context.topsrcdir, channel=channel, arch=arch, - displayname=identity_name, + identity=identity_name, vendor=vendor, publisher=publisher, publisher_display_name=publisher_display_name, --- a/python/mozbuild/mozbuild/repackaging/msix.py +++ b/python/mozbuild/mozbuild/repackaging/msix.py @@ -97,7 +97,7 @@ def find_sdk_tool(binary, log=None): finder = FileFinder(sdk) # TODO: handle running on ARM. - is_64bits = sys.maxsize > 2 ** 32 + is_64bits = sys.maxsize > 2**32 arch = "x64" if is_64bits else "x86" for p, f in finder.find( @@ -122,68 +122,19 @@ def get_embedded_version(version, buildid): the dotted quad to be identically 0, so we enforce that here. """ - # It's irritating to roll our own version parsing, but the tree doesn't seem - # to contain exactly what we need at this time. - version = version.rsplit("esr", 1)[0] - alpha = "a" in version - - tail = None - if "a" in version: - head, tail = version.rsplit("a", 1) - if tail != "1": - # Disallow anything beyond `X.Ya1`. - raise ValueError( - f"Alpha version not of the form X.0a1 is not supported: {version}" - ) - tail = buildid - elif "b" in version: - head, tail = version.rsplit("b", 1) - if len(head.split(".")) > 2: - raise ValueError( - f"Beta version not of the form X.YbZ is not supported: {version}" - ) - elif "rc" in version: - head, tail = version.rsplit("rc", 1) - if len(head.split(".")) > 2: - raise ValueError( - f"Release candidate version not of the form X.YrcZ is not supported: {version}" - ) - else: - head = version - - components = (head.split(".") + ["0", "0", "0"])[:3] - if tail: - components[2] = tail - - if alpha: - # Nightly builds are all `X.0a1`, which isn't helpful. Include build ID - # to disambiguate. But each part of the dotted quad is 16 bits, so we - # have to squash. - if components[1] != "0": - # Disallow anything beyond `X.0a1`. - raise ValueError( - f"Alpha version not of the form X.0a1 is not supported: {version}" - ) + [ver, rel] = version.split("-") - # Last two digits only to save space. Nightly builds in 2066 and 2099 - # will be impacted, but future us can deal with that. - year = buildid[2:4] - if year[0] == "0": - # Avoid leading zero, like `.0YMm`. - year = year[1:] - month = buildid[4:6] - day = buildid[6:8] - if day[0] == "0": - # Avoid leading zero, like `.0DHh`. - day = day[1:] - hour = buildid[8:10] + ver_parts = ver.split(".") + ver_parts += ["0"] * (3 - len(ver_parts)) - components[1] = "".join((year, month)) - components[2] = "".join((day, hour)) - - version = "{}.{}.{}.0".format(*components) - - return version + return ".".join( + [ + ver_parts[0], + str(100 * int(ver_parts[1]) + int(ver_parts[2])), + str(int(rel) * 100), + "0", + ] + ) def get_appconstants_sys_mjs_values(finder, *args): @@ -417,12 +368,7 @@ def repackage_msix( ) first = next(values) - if not displayname: - displayname = "Mozilla {}".format(first) - - if channel == "beta": - # Release (official) and Beta share branding. Differentiate Beta a little bit. - displayname += " Beta" + displayname = displayname or first second = next(values) vendor = vendor or second --- a/python/mozbuild/mozbuild/repackaging/msix.py +++ b/python/mozbuild/mozbuild/repackaging/msix.py @@ -193,9 +193,9 @@ yield value -def get_branding(use_official, build_app, finder, log=None): +def get_branding(use_official, topsrcdir, build_app, finder, log=None): """Figure out which branding directory to use.""" - conf_vars = mozpath.join(build_app, "confvars.sh") + conf_vars = mozpath.join(topsrcdir, build_app, "confvars.sh") def conf_vars_value(key): lines = open(conf_vars).readlines() @@ -254,7 +254,7 @@ }, "{branding_reason}; Using branding from '{branding}'.", ) - return branding + return mozpath.join(topsrcdir, branding) def unpack_msix(input_msix, output, log=None, verbose=False): @@ -471,8 +471,8 @@ # Release (official) and Beta share branding. Differentiate Beta a little bit. brandFullName += " Beta" - branding = os.path.join( - topsrcdir, get_branding(use_official_branding, build_app, unpack_finder, log) + branding = get_branding( + use_official_branding, topsrcdir, build_app, unpack_finder, log ) if not os.path.isdir(branding): raise Exception("branding dir {} does not exist".format(branding))