Issue #2160 - Initial support for notarizing during DMG package. Added --with-macbundle-idenity configure option to set a codesign identity. If no identity is set or cross-compiling from Linux no codesigning will be done. Currently doing a full deep bundle v2 sign, instead of limited v1.

This commit is contained in:
Brian Smith 2023-03-14 15:28:51 -05:00 committed by roytam1
commit 3d2a4f4066
3 changed files with 17 additions and 0 deletions

View file

@ -278,6 +278,7 @@ def old_configure_options(*options):
'--with-ios-sdk',
'--with-jitreport-granularity',
'--with-macbundlename-prefix',
'--with-macbundle-identity',
'--with-macos-private-frameworks',
'--with-macos-sdk',
'--with-nspr-cflags',

View file

@ -4983,6 +4983,16 @@ fi
AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
AC_SUBST(MOZ_MACBUNDLE_ID)
dnl ========================================================
dnl = Mac bundle codesign identity
dnl ========================================================
MOZ_ARG_WITH_STRING(macbundle-identity,
[ --with-macbundle-identity=identity
Identity to codesign the Mac application bundle],
[ MOZ_MACBUNDLE_IDENTITY="$withval"])
AC_SUBST(MOZ_MACBUNDLE_IDENTITY)
dnl ========================================================
dnl = Child Process Name for IPC
dnl ========================================================

View file

@ -102,6 +102,7 @@ def create_dmg(source_directory, output_dmg, volume_name, extra_files):
if is_linux:
check_tools('DMG_TOOL', 'GENISOIMAGE')
with mozfile.TemporaryDirectory() as tmpdir:
import buildconfig
stagedir = os.path.join(tmpdir, 'stage')
os.mkdir(stagedir)
# Copy the app bundle over using rsync
@ -118,4 +119,9 @@ def create_dmg(source_directory, output_dmg, volume_name, extra_files):
# Set the folder attributes to use a custom icon
set_folder_icon(stagedir)
chmod(stagedir)
if not is_linux:
identity = buildconfig.substs['MOZ_MACBUNDLE_IDENTITY']
if identity != '':
appbundle = os.path.join(stagedir, buildconfig.substs['MOZ_MACBUNDLE_NAME'])
subprocess.check_call(['codesign', '--deep', '-s', identity, appbundle])
create_dmg_from_staged(stagedir, output_dmg, tmpdir, volume_name)