bug 1490119: Add build system bits for building dep updater. r=rstrong
☠☠ backed out by 0ce61c4a2125 ☠ ☠
authorBen Hearsum <bhearsum@mozilla.com>
Tue, 11 Sep 2018 18:15:44 +0000
changeset 491530 59f5c546faa289cd0b7b713dc5ac9e4e53cb0c02
parent 491529 d5b6fd5ab51272a6bb9620a4d4023ab39164a466
child 491531 e97cfb1a3f88d0e76e4dfd665aa5f7713881558a
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersrstrong
bugs1490119
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
bug 1490119: Add build system bits for building dep updater. r=rstrong This patch gets us building an updater binary that always embeds the dep certificates (instead of release or nightly). It gets installed to its own directory, and a subsequent patch will get us creating a test package that includes it. Differential Revision: https://phabricator.services.mozilla.com/D5539
toolkit/mozapps/update/updater/archivereader.cpp
toolkit/mozapps/update/updater/moz.build
toolkit/mozapps/update/updater/updater-dep/Makefile.in
toolkit/mozapps/update/updater/updater-dep/moz.build
toolkit/mozapps/update/updater/updater.rc
--- a/toolkit/mozapps/update/updater/archivereader.cpp
+++ b/toolkit/mozapps/update/updater/archivereader.cpp
@@ -20,16 +20,19 @@
 #define XZ_USE_CRC64
 #include "xz.h"
 
 // These are generated at compile time based on the DER file for the channel
 // being used
 #ifdef MOZ_VERIFY_MAR_SIGNATURE
 #ifdef TEST_UPDATER
 #include "../xpcshellCert.h"
+#elif DEP_UPDATER
+#include "../dep1Cert.h"
+#include "../dep2Cert.h"
 #else
 #include "primaryCert.h"
 #include "secondaryCert.h"
 #endif
 #endif
 
 #define UPDATER_NO_STRING_GLUE_STL
 #include "nsVersionComparator.cpp"
@@ -82,16 +85,21 @@ ArchiveReader::VerifySignature()
     return ARCHIVE_NOT_OPEN;
   }
 
 #ifndef MOZ_VERIFY_MAR_SIGNATURE
   return OK;
 #else
 #ifdef TEST_UPDATER
   int rv = VerifyLoadedCert(mArchive, xpcshellCertData);
+#elif DEP_UPDATER
+  int rv = VerifyLoadedCert(mArchive, dep1CertData);
+  if (rv != OK) {
+    rv = VerifyLoadedCert(mArchive, dep2CertData);
+  }
 #else
   int rv = VerifyLoadedCert(mArchive, primaryCertData);
   if (rv != OK) {
     rv = VerifyLoadedCert(mArchive, secondaryCertData);
   }
 #endif
   return rv;
 #endif
--- a/toolkit/mozapps/update/updater/moz.build
+++ b/toolkit/mozapps/update/updater/moz.build
@@ -6,55 +6,64 @@
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     Program('org.mozilla.updater')
 else:
     Program('updater')
 
 updater_rel_path = ''
 include('updater-common.build')
+DIRS += ['updater-dep']
 if CONFIG['ENABLE_TESTS']:
     DIRS += ['updater-xpcshell']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     LDFLAGS += ['-sectcreate',
                 '__TEXT',
                 '__info_plist',
                 TOPOBJDIR + '/dist/bin/Info.plist',
                 '-sectcreate',
                 '__TEXT',
                 '__launchd_plist',
                 SRCDIR + '/Launchd.plist']
 
 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-profiling', 'nightly-oak',
                                       'nightly-ux'):
     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 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
     FINAL_TARGET_FILES.icons += ['updater.png']
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/updater/updater-dep/Makefile.in
@@ -0,0 +1,26 @@
+# vim:set ts=8 sw=8 sts=8 noet:
+# 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/.
+
+# For changes here, also consider ../Makefile.in
+
+DEPUPDATERDIR = $(topobjdir)/_tests/dep-updater
+
+include $(topsrcdir)/config/rules.mk
+
+tools::
+	mkdir -p $(DEPUPDATERDIR)
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+	# Copy for xpcshell tests
+	$(NSINSTALL) -D $(DEPUPDATERDIR)/updater-dep.app
+	rsync -a -C --exclude '*.in' $(srcdir)/../macbuild/Contents $(DEPUPDATERDIR)/updater-dep.app
+	sed -e 's/%APP_NAME%/$(MOZ_APP_DISPLAYNAME)/' $(srcdir)/../macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | \
+	  iconv -f UTF-8 -t UTF-16 > $(DEPUPDATERDIR)/updater-dep.app/Contents/Resources/English.lproj/InfoPlist.strings
+	$(NSINSTALL) -D $(DEPUPDATERDIR)/updater-dep.app/Contents/MacOS
+	$(NSINSTALL) $(FINAL_TARGET)/updater-dep $(DEPUPDATERDIR)/updater-dep.app/Contents/MacOS
+	mv $(DEPUPDATERDIR)/updater-dep.app/Contents/MacOS/updater-dep $(DEPUPDATERDIR)/updater-dep.app/Contents/MacOS/org.mozilla.updater
+
+else
+	cp $(FINAL_TARGET)/updater-dep$(BIN_SUFFIX) $(DEPUPDATERDIR)/updater-dep$(BIN_SUFFIX)
+endif
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/updater/updater-dep/moz.build
@@ -0,0 +1,15 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+FINAL_TARGET = '_tests/xpcshell/toolkit/mozapps/update/tests'
+
+Program('updater-dep')
+
+FORCE_STATIC_LIB = True
+updater_rel_path = '../'
+DEFINES['DEP_UPDATER'] = True
+include('../updater-common.build')
+
--- a/toolkit/mozapps/update/updater/updater.rc
+++ b/toolkit/mozapps/update/updater/updater.rc
@@ -1,15 +1,15 @@
 /* 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/. */
 
 // Microsoft Visual C++ generated resource script.
 //
-#ifdef TEST_UPDATER
+#if defined(TEST_UPDATER) || defined(DEP_UPDATER)
 #include "../resource.h"
 #define MANIFEST_PATH "../updater.exe.manifest"
 #define COMCTL32_MANIFEST_PATH "../updater.exe.comctl32.manifest"
 #define ICON_PATH "../updater.ico"
 #else
 #include "resource.h"
 #define MANIFEST_PATH "updater.exe.manifest"
 #define COMCTL32_MANIFEST_PATH "updater.exe.comctl32.manifest"