Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
Program("org.mozilla.updater")
else:
Program("updater")
updater_rel_path = ""
include("updater-common.build")
DIRS += ["updater-dep"]
TEST_DIRS += ["updater-xpcshell"]
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
GeneratedFile(
"Info.plist",
script="/python/mozbuild/mozbuild/action/preprocessor.py",
entry_point="generate",
inputs=["macbuild/Contents/Info.plist.in"],
flags=[
"-Fsubstitution",
f"-DMOZ_MACBUNDLE_ID={CONFIG['MOZ_MACBUNDLE_ID']}",
f"-DMOZ_SMAUTHORIZEDCLIENTS_REQUIREMENTS={CONFIG['MOZ_SMAUTHORIZEDCLIENTS_REQUIREMENTS']}",
],
)
GeneratedFile(
"InfoPlist.strings",
script="/python/mozbuild/mozbuild/action/preprocessor.py",
entry_point="generate",
inputs=["macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in"],
flags=[
"-Fsubstitution",
"--output-encoding",
"utf-16",
f"-DAPP_NAME={CONFIG['MOZ_APP_DISPLAYNAME']}",
],
)
FINAL_TARGET_FILES += ["!Info.plist"]
LDFLAGS += [
"-sectcreate",
"__TEXT",
"__info_plist",
OBJDIR + "/Info.plist",
"-sectcreate",
"__TEXT",
"__launchd_plist",
SRCDIR + "/Launchd.plist",
]
EXTRA_LINK_DEPS += ["!Info.plist", "Launchd.plist"]
DIRS += [
"macos-frameworks",
]
# In a compile build, the moz.build stanzas produce the binary named
# `UpdateSettings`; we just need it in the correct place. In an artifact
# build, we copy upstream artifacts from
# `dist/update_framework_artifacts/UpdateSettings-localbuild.framework`.
if CONFIG["COMPILE_ENVIRONMENT"]:
update_settings = f"!/{FINAL_TARGET}/UpdateSettings"
elif CONFIG["MOZ_ARTIFACT_BUILDS"]:
update_settings = (
"!/dist/update_framework_artifacts/"
"UpdateSettings-localbuild.framework/UpdateSettings"
)
else:
update_settings = None
extra_files = []
if update_settings:
extra_files.append((
update_settings,
"Frameworks/UpdateSettings.framework/UpdateSettings",
))
extra_files.append((
"macos-frameworks/UpdateSettings/Info.plist",
"Frameworks/UpdateSettings.framework/Resources/Info.plist",
))
MacOSBundle(
f"!/{FINAL_TARGET}/updater.app",
skeleton="macbuild/Contents",
info_plist="!Info.plist",
strings="!InfoPlist.strings",
binaries=[(f"!/{FINAL_TARGET}/org.mozilla.updater", "org.mozilla.updater")],
extra_files=extra_files,
)
GENERATED_FILES += [
"dep1Cert.h",
"dep2Cert.h",
"primaryCert.h",
"secondaryCert.h",
"xpcshellCert.h",
]
primary_cert = GENERATED_FILES["primaryCert.h"]
secondary_cert = GENERATED_FILES["secondaryCert.h"]
# This is how the xpcshellCertificate.der file is generated, in case we ever
# have to regenerate it.
# ./certutil -L -d modules/libmar/tests/unit/data -n mycert -r > xpcshellCertificate.der
xpcshell_cert = GENERATED_FILES["xpcshellCert.h"]
dep1_cert = GENERATED_FILES["dep1Cert.h"]
dep2_cert = GENERATED_FILES["dep2Cert.h"]
primary_cert.script = "gen_cert_header.py:create_header"
secondary_cert.script = "gen_cert_header.py:create_header"
xpcshell_cert.script = "gen_cert_header.py:create_header"
dep1_cert.script = "gen_cert_header.py:create_header"
dep2_cert.script = "gen_cert_header.py:create_header"
if CONFIG["MOZ_UPDATE_CHANNEL"] in ("beta", "release", "esr"):
primary_cert.inputs += ["release_primary.der"]
secondary_cert.inputs += ["release_secondary.der"]
elif CONFIG["MOZ_UPDATE_CHANNEL"] in (
"nightly",
"aurora",
"nightly-elm",
"nightly-pine",
"nightly-cypress",
"nightly-profiling",
"nightly-oak",
"nightly-ux",
"nightly-larch",
):
primary_cert.inputs += ["nightly_aurora_level3_primary.der"]
secondary_cert.inputs += ["nightly_aurora_level3_secondary.der"]
else:
primary_cert.inputs += ["dep1.der"]
secondary_cert.inputs += ["dep2.der"]
dep1_cert.inputs += ["dep1.der"]
dep2_cert.inputs += ["dep2.der"]
xpcshell_cert.inputs += ["xpcshellCertificate.der"]
if CONFIG["MOZ_DEBUG"]:
WINCONSOLE = True
else:
WINCONSOLE = False
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
FINAL_TARGET_FILES.icons += ["updater.png"]