Index: branches/2019Q1/mail/thunderbird/Makefile =================================================================== --- branches/2019Q1/mail/thunderbird/Makefile (revision 495784) +++ branches/2019Q1/mail/thunderbird/Makefile (revision 495785) @@ -1,79 +1,79 @@ # Created by: Joe Marcus Clarke # $FreeBSD$ PORTNAME= thunderbird -DISTVERSION= 60.5.3 +DISTVERSION= 60.6.0 CATEGORIES= mail news net-im ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ - MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source + MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build2/source DISTFILES= ${DISTNAME}.source${EXTRACT_SUFX} MAINTAINER= gecko@FreeBSD.org COMMENT= Mozilla Thunderbird is standalone mail and news that stands above BUILD_DEPENDS= nspr>=4.19:devel/nspr \ nss>=3.36.7:security/nss \ icu>=59.1,1:devel/icu \ libevent>=2.1.8:devel/libevent \ harfbuzz>=1.7.6:print/harfbuzz \ graphite2>=1.3.11:graphics/graphite2 \ png>=1.6.34:graphics/png \ libvorbis>=1.3.6,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ sqlite3>=3.22.0:databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ v4l_compat>0:multimedia/v4l_compat \ autoconf-2.13:devel/autoconf213 \ yasm:devel/yasm \ zip:archivers/zip SSP_UNSAFE= yes USE_GECKO= gecko USE_MOZILLA= -webp USES= tar:xz MOZ_OPTIONS= --enable-application=comm/mail --enable-official-branding MOZ_MK_OPTIONS= MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 MOZ_EXPORT= MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 MOZ_PKGCONFIG_FILES= PORTNAME_ICON= ${MOZILLA}.png PORTNAME_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png SYSTEM_PREFS= ${FAKEDIR}/lib/${PORTNAME}/defaults/pref/${PORTNAME}.js MOZ_PIS_SCRIPTS=moz_pis_S50cleanhome OPTIONS_DEFINE= LIGHTNING OPTIONS_DEFAULT=CANBERRA LIGHTNING .include "${.CURDIR}/../../www/firefox/Makefile.options" .include .if ${PORT_OPTIONS:MLIGHTNING} MOZ_OPTIONS+= --enable-calendar .else MOZ_OPTIONS+= --disable-calendar .endif post-extract: @${SED} -e 's|@PORTNAME_ICON@|${PORTNAME_ICON}|;s|@MOZILLA@|${MOZILLA}|' \ <${FILESDIR}/thunderbird.desktop.in >${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/comm/mail/app/nsMailApp.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${MOZSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${MOZSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) port-pre-install: ${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/defaults post-install: ${INSTALL_DATA} ${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop ${STAGEDIR}${PREFIX}/share/applications ${LN} -sf ${PORTNAME_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${PORTNAME_ICON} .include Index: branches/2019Q1/mail/thunderbird/distinfo =================================================================== --- branches/2019Q1/mail/thunderbird/distinfo (revision 495784) +++ branches/2019Q1/mail/thunderbird/distinfo (revision 495785) @@ -1,3 +1,3 @@ -TIMESTAMP = 1551781243 -SHA256 (thunderbird-60.5.3.source.tar.xz) = 83c91c4dc9b537aca99db45f99ccf2258cd830c704fb4aa994df18272c8a5211 -SIZE (thunderbird-60.5.3.source.tar.xz) = 284754320 +TIMESTAMP = 1552589899 +SHA256 (thunderbird-60.6.0.source.tar.xz) = bd8e894cb5001941e54d36f7843bf83f8ed1e85e185848c2096bc01417ebf3da +SIZE (thunderbird-60.6.0.source.tar.xz) = 285222616 Index: branches/2019Q1/mail/thunderbird/files/patch-z-bug1436911 =================================================================== --- branches/2019Q1/mail/thunderbird/files/patch-z-bug1436911 (revision 495784) +++ branches/2019Q1/mail/thunderbird/files/patch-z-bug1436911 (revision 495785) @@ -1,1135 +1,1136 @@ commit 6b81d0b99f20 Author: Nicholas Nethercote Date: Thu Mar 8 15:47:24 2018 +1100 Bug 1436911 - Avoid the early/late prefs split. r=glandium All prefs that need to be sent to a new content process are now put into the shared memory segment, and they are identified by the pref name instead of an index into a list. The old IPC used at process startup (in XPCOMInitData) is removed. Benefits: - It removes the need for the early prefs list (dom/ipc/ContentProcesses.{h,cpp}) and the associated checking, which is ugly and often trips people up (e.g. bug 1432979, bug 1439406). - Using prefnames instead of indices fixes some fragility (fixing bug 1419432). - It fixes the problem of early prefs being installed as unlocked default values even if they are locked and/or have user values. MozReview-Commit-ID: FRIzHF8Tjd --- dom/ipc/ContentChild.cpp | 2 - dom/ipc/ContentParent.cpp | 4 +- dom/ipc/ContentPrefs.cpp | 357 ------------------------------ dom/ipc/ContentPrefs.h | 27 --- dom/ipc/ContentProcess.cpp | 5 +- dom/ipc/PContent.ipdl | 7 +- dom/ipc/moz.build | 2 - layout/style/nsCSSProps.h | 2 +- modules/libpref/Preferences.cpp | 470 ++++++++++++++++++++++------------------ modules/libpref/Preferences.h | 15 +- 10 files changed, 278 insertions(+), 613 deletions(-) diff --git dom/ipc/ContentChild.cpp dom/ipc/ContentChild.cpp index f61ab07b81e2..af1ef9cf4c7e 100644 --- dom/ipc/ContentChild.cpp +++ dom/ipc/ContentChild.cpp @@ -1094,8 +1094,6 @@ void ContentChild::InitGraphicsDeviceData(const Conten void ContentChild::InitXPCOM( const XPCOMInitData& aXPCOMInit, const mozilla::dom::ipc::StructuredCloneData& aInitialData) { - Preferences::SetLatePreferences(&aXPCOMInit.prefs()); - // Do this as early as possible to get the parent process to initialize the // background thread since we'll likely need database information very soon. BackgroundChild::Startup(); diff --git dom/ipc/ContentParent.cpp dom/ipc/ContentParent.cpp index 208bb47a970b..4ce5c6bf23d5 100644 --- dom/ipc/ContentParent.cpp +++ dom/ipc/ContentParent.cpp @@ -197,7 +197,6 @@ #include "nsLayoutStylesheetCache.h" -#include "ContentPrefs.h" #include "mozilla/Sprintf.h" #ifdef MOZ_WEBRTC @@ -1863,7 +1862,7 @@ bool ContentParent::LaunchSubprocess( // Serialize the early prefs. nsAutoCStringN<1024> prefs; - Preferences::SerializeEarlyPreferences(prefs); + Preferences::SerializePreferences(prefs); // Set up the shared memory. base::SharedMemory shm; @@ -2034,7 +2033,6 @@ void ContentParent::InitInternal(ProcessPriority aInit XPCOMInitData xpcomInit; - Preferences::GetPreferences(&xpcomInit.prefs()); nsCOMPtr io(do_GetIOService()); MOZ_ASSERT(io, "No IO service?"); DebugOnly rv = io->GetOffline(&xpcomInit.isOffline()); diff --git dom/ipc/ContentPrefs.cpp dom/ipc/ContentPrefs.cpp deleted file mode 100644 index 808b797d9bee..000000000000 --- dom/ipc/ContentPrefs.cpp +++ /dev/null -@@ -1,360 +0,0 @@ +@@ -1,361 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#include "ContentPrefs.h" - -/****************************************************************************** - * - * DO NOT ADD PREFS TO THIS LIST WITHOUT DOM PEER REVIEW - * - * This is the list of preferences that are sent to the content process on - * startup. Only prefs that are required immediately upon startup should be - * listed here. The first IPC message received in the content process will - * contain all the other prefs. Prefs should only be listed here if they must be - * read before the first IPC message is received. - * - ******************************************************************************/ - -const char* mozilla::dom::ContentPrefs::gEarlyPrefs[] = { - "accessibility.monoaudio.enable", - "accessibility.mouse_focuses_formcontrol", - "accessibility.tabfocus_applies_to_xul", - "app.update.channel", - "browser.autofocus", - "browser.dom.window.dump.enabled", - "browser.sessionhistory.max_entries", - "browser.sessionhistory.max_total_viewers", -#if defined(NIGHTLY_BUILD) || defined(DEBUG) - "browser.startup.record", -#endif -#if defined(ANDROID) - "consoleservice.logcat", -#endif - "content.cors.disable", - "content.cors.no_private_data", - "content.notify.backoffcount", - "content.notify.interval", - "content.notify.ontimer", - "content.sink.enable_perf_mode", - "content.sink.event_probe_rate", - "content.sink.initial_perf_time", - "content.sink.interactive_deflect_count", - "content.sink.interactive_parse_time", - "content.sink.interactive_time", - "content.sink.pending_event_mode", - "content.sink.perf_deflect_count", - "content.sink.perf_parse_time", - "device.storage.prompt.testing", - "device.storage.writable.name", - "devtools.enabled", - "dom.allow_XUL_XBL_for_file", - "dom.allow_cut_copy", - "dom.animations-api.core.enabled", - "dom.animations-api.element-animate.enabled", - "dom.animations-api.pending-member.enabled", - "dom.enable_frame_timing", - "dom.enable_performance", - "dom.enable_performance_navigation_timing", - "dom.enable_resource_timing", - "dom.event.handling-user-input-time-limit", - "dom.event.touch.coalescing.enabled", - "dom.forms.autocomplete.formautofill", - "dom.forms.inputmode", - "dom.input.skip_cursor_move_for_same_value_set", - "dom.ipc.processPriorityManager.backgroundGracePeriodMS", - "dom.ipc.processPriorityManager.backgroundPerceivableGracePeriodMS", - "dom.ipc.useNativeEventProcessing.content", - "dom.max_chrome_script_run_time", - "dom.max_ext_content_script_run_time", - "dom.max_script_run_time", - "dom.mozBrowserFramesEnabled", - "dom.performance.enable_notify_performance_timing", - "dom.performance.enable_user_timing_logging", - "dom.placeholder.show_on_focus", - "dom.requestIdleCallback.enabled", - "dom.script_loader.bytecode_cache.enabled", - "dom.script_loader.bytecode_cache.strategy", - "dom.storage.testing", - "dom.url.encode_decode_hash", - "dom.url.getters_decode_hash", - "dom.use_watchdog", - "dom.vibrator.enabled", - "dom.vibrator.max_vibrate_list_len", - "dom.vibrator.max_vibrate_ms", - "dom.webcomponents.customelements.enabled", - "dom.webcomponents.shadowdom.enabled", - "focusmanager.testmode", - "font.size.inflation.disabledInMasterProcess", - "font.size.inflation.emPerLine", - "font.size.inflation.forceEnabled", - "font.size.inflation.lineThreshold", - "font.size.inflation.mappingIntercept", - "font.size.inflation.maxRatio", - "font.size.inflation.minTwips", - "font.size.systemFontScale", - "full-screen-api.allow-trusted-requests-only", - "full-screen-api.enabled", - "full-screen-api.unprefix.enabled", -#ifdef FUZZING - "fuzzing.enabled", -#endif - "gfx.font_rendering.opentype_svg.enabled", - "hangmonitor.timeout", - "html5.flushtimer.initialdelay", - "html5.flushtimer.subsequentdelay", - "html5.offmainthread", - "intl.charset.fallback.tld", - "intl.charset.fallback.utf8_for_file", - "intl.ime.hack.on_ime_unaware_apps.fire_key_events_for_composition", - "javascript.enabled", - "javascript.options.array_prototype_values", - "javascript.options.asmjs", - "javascript.options.asyncstack", - "javascript.options.baselinejit", - "javascript.options.baselinejit.threshold", - "javascript.options.baselinejit.unsafe_eager_compilation", - "javascript.options.discardSystemSource", - "javascript.options.dump_stack_on_debuggee_would_run", - "javascript.options.gczeal", - "javascript.options.gczeal.frequency", - "javascript.options.ion", - "javascript.options.ion.offthread_compilation", - "javascript.options.ion.threshold", - "javascript.options.ion.unsafe_eager_compilation", - "javascript.options.jit.full_debug_checks", - "javascript.options.native_regexp", - "javascript.options.parallel_parsing", - "javascript.options.shared_memory", - "javascript.options.spectre.index_masking", - "javascript.options.spectre.jit_to_C++_calls", - "javascript.options.spectre.object_mitigations.barriers", - "javascript.options.spectre.object_mitigations.misc", - "javascript.options.spectre.string_mitigations", - "javascript.options.spectre.value_masking", - "javascript.options.streams", - "javascript.options.strict", - "javascript.options.strict.debug", - "javascript.options.throw_on_asmjs_validation_failure", - "javascript.options.throw_on_debuggee_would_run", +- "javascript.options.unboxed_objects", - "javascript.options.wasm", - "javascript.options.wasm_baselinejit", - "javascript.options.wasm_ionjit", - "javascript.options.werror", - "javascript.use_us_english_locale", - "jsloader.shareGlobal", - "layout.css.all-shorthand.enabled", - "layout.css.background-blend-mode.enabled", - "layout.css.box-decoration-break.enabled", - "layout.css.color-adjust.enabled", - "layout.css.column-span.enabled", - "layout.css.contain.enabled", - "layout.css.control-characters.visible", - "layout.css.emulate-moz-box-with-flex", - "layout.css.expensive-style-struct-assertions.enabled", - "layout.css.float-logical-values.enabled", - "layout.css.font-display.enabled", - "layout.css.font-variations.enabled", - "layout.css.frames-timing.enabled", - "layout.css.getBoxQuads.enabled", - "layout.css.grid-template-subgrid-value.enabled", - "layout.css.grid.enabled", - "layout.css.image-orientation.enabled", - "layout.css.individual-transform.enabled", - "layout.css.initial-letter.enabled", - "layout.css.isolation.enabled", - "layout.css.mix-blend-mode.enabled", - "layout.css.moz-document.content.enabled", - "layout.css.osx-font-smoothing.enabled", - "layout.css.overflow-clip-box.enabled", - "layout.css.overscroll-behavior.enabled", - "layout.css.prefixes.animations", - "layout.css.prefixes.border-image", - "layout.css.prefixes.box-sizing", - "layout.css.prefixes.device-pixel-ratio-webkit", - "layout.css.prefixes.font-features", - "layout.css.prefixes.gradients", - "layout.css.prefixes.transforms", - "layout.css.prefixes.transitions", - "layout.css.prefixes.webkit", - "layout.css.scope-pseudo.enabled", - "layout.css.scoped-style.enabled", - "layout.css.scroll-behavior.property-enabled", - "layout.css.scroll-snap.enabled", -#ifdef MOZ_STYLO - "layout.css.servo.chrome.enabled", - "layout.css.servo.enabled", -#endif - "layout.css.shape-outside.enabled", - "layout.css.text-align-unsafe-value.enabled", - "layout.css.text-combine-upright-digits.enabled", - "layout.css.text-combine-upright.enabled", - "layout.css.text-justify.enabled", - "layout.css.touch_action.enabled", - "layout.css.visited_links_enabled", - "layout.idle_period.required_quiescent_frames", - "layout.idle_period.time_limit", - "layout.interruptible-reflow.enabled", - "mathml.disabled", - "media.audio-max-decode-error", - "media.cache_readahead_limit", - "media.cache_resume_threshold", - "media.cache_size", - "media.clearkey.persistent-license.enabled", - "media.cubeb.backend", - "media.cubeb.sandbox", - "media.cubeb_latency_msg_frames", - "media.cubeb_latency_playback_ms", - "media.decoder-doctor.wmf-disabled-is-failure", - "media.decoder.recycle.enabled", - "media.decoder.skip-to-next-key-frame.enabled", - "media.dormant-on-pause-timeout-ms", - "media.eme.audio.blank", - "media.eme.chromium-api.video-shmems", - "media.eme.enabled", - "media.eme.video.blank", - "media.ffmpeg.enabled", - "media.ffmpeg.low-latency.enabled", - "media.ffvpx.enabled", - "media.ffvpx.low-latency.enabled", - "media.flac.enabled", - "media.forcestereo.enabled", - "media.gmp.decoder.enabled", - "media.gmp.insecure.allow", - "media.gpu-process-decoder", - "media.hls.enabled", - "media.libavcodec.allow-obsolete", - "media.memory_cache_max_size", - "media.memory_caches_combined_limit_kb", - "media.memory_caches_combined_limit_pc_sysmem", - "media.mp4.enabled", - "media.navigator.mediadatadecoder_enabled", - "media.ogg.enabled", - "media.ogg.flac.enabled", - "media.playback.warnings-as-errors", - "media.playback.warnings-as-errors.stagefright-vs-rust", - "media.resampling.enabled", - "media.resume-bkgnd-video-on-tabhover", - "media.ruin-av-sync.enabled", - "media.rust.mp4parser", - "media.rust.test_mode", - "media.seamless-looping", - "media.suspend-bkgnd-video.delay-ms", - "media.suspend-bkgnd-video.enabled", - "media.use-blank-decoder", - "media.video-max-decode-error", - "media.video_stats.enabled", - "media.videocontrols.lock-video-orientation", - "media.volume_scale", - "media.webspeech.recognition.enable", - "media.webspeech.recognition.force_enable", - "media.webspeech.synth.force_global_queue", - "media.webspeech.test.enable", - "media.webspeech.test.fake_fsm_events", - "media.webspeech.test.fake_recognition_service", - "media.wmf.allow-unsupported-resolutions", - "media.wmf.enabled", - "media.wmf.skip-blacklist", - "media.wmf.vp9.enabled", - "network.IDN.blacklist_chars", - "network.IDN.restriction_profile", - "network.IDN.use_whitelist", - "network.IDN_show_punycode", - "network.buffer.cache.count", - "network.buffer.cache.size", - "network.captive-portal-service.enabled", - "network.cookie.cookieBehavior", - "network.cookie.lifetimePolicy", - "network.dns.disablePrefetch", - "network.dns.disablePrefetchFromHTTPS", - "network.file.disable_unc_paths", - "network.file.path_blacklist", - "network.http.tailing.enabled", - "network.jar.block-remote-files", - "network.loadinfo.skip_type_assertion", - "network.notify.changed", - "network.offline-mirrors-connectivity", - "network.protocol-handler.external.jar", - "network.proxy.type", - "network.security.ports.banned", - "network.security.ports.banned.override", - "network.standard-url.enable-rust", - "network.standard-url.max-length", - "network.standard-url.punycode-host", - "network.sts.max_time_for_events_between_two_polls", - "network.sts.max_time_for_pr_close_during_shutdown", - "network.tcp.keepalive.enabled", - "network.tcp.keepalive.idle_time", - "network.tcp.keepalive.probe_count", - "network.tcp.keepalive.retry_interval", - "network.tcp.sendbuffer", - "nglayout.debug.invalidation", - "privacy.donottrackheader.enabled", - "privacy.firstparty.isolate", - "privacy.firstparty.isolate.restrict_opener_access", - "privacy.reduceTimerPrecision", - "privacy.resistFingerprinting", - "privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", - "privacy.resistFingerprinting.reduceTimerPrecision.jitter", - "privacy.resistFingerprinting.reduceTimerPrecision.microseconds", - "privacy.resistFingerprinting.target_video_res", - "privacy.resistFingerprinting.video_dropped_ratio", - "privacy.resistFingerprinting.video_frames_per_sec", - "privacy.spoof_english", - "privacy.trackingprotection.lower_network_priority", - "privacy.window.maxInnerHeight", - "privacy.window.maxInnerWidth", - "security.csp.enable", - "security.data_uri.block_toplevel_data_uri_navigations", - "security.data_uri.unique_opaque_origin", - "security.fileuri.strict_origin_policy", - "security.mixed_content.block_active_content", - "security.mixed_content.block_display_content", - "security.mixed_content.block_object_subrequest", - "security.mixed_content.hsts_priming_cache_timeout", - "security.mixed_content.send_hsts_priming", - "security.mixed_content.upgrade_display_content", - "security.mixed_content.use_hsts", - "security.sandbox.content.level", - "security.sandbox.content.tempDirSuffix", - "security.sandbox.logging.enabled", - "security.sandbox.mac.track.violations", - "security.sandbox.windows.log.stackTraceDepth", - "svg.disabled", - "svg.display-lists.hit-testing.enabled", - "svg.display-lists.painting.enabled", - "svg.new-getBBox.enabled", - "svg.path-caching.enabled", - "svg.transform-box.enabled", - "toolkit.asyncshutdown.crash_timeout", - "toolkit.asyncshutdown.log", - "toolkit.osfile.log", - "toolkit.osfile.log.redirect", - "toolkit.telemetry.enabled", - "toolkit.telemetry.idleTimeout", - "toolkit.telemetry.initDelay", - "toolkit.telemetry.log.dump", - "toolkit.telemetry.log.level", - "toolkit.telemetry.minSubsessionLength", - "toolkit.telemetry.scheduler.idleTickInterval", - "toolkit.telemetry.scheduler.tickInterval", - "toolkit.telemetry.testing.overridePreRelease", - "toolkit.telemetry.unified", - "ui.key.menuAccessKeyFocuses", - "ui.popup.disable_autohide", - "ui.use_activity_cursor", - "view_source.editor.external", - "zoom.maxPercent", - "zoom.minPercent"}; - -const char** mozilla::dom::ContentPrefs::GetEarlyPrefs(size_t* aCount) { - *aCount = ArrayLength(ContentPrefs::gEarlyPrefs); - return gEarlyPrefs; -} - -const char* mozilla::dom::ContentPrefs::GetEarlyPref(size_t aIndex) { - MOZ_ASSERT(aIndex < ArrayLength(ContentPrefs::gEarlyPrefs)); - return gEarlyPrefs[aIndex]; -} diff --git dom/ipc/ContentPrefs.h dom/ipc/ContentPrefs.h deleted file mode 100644 index 72ce8d236c11..000000000000 --- dom/ipc/ContentPrefs.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -#ifndef mozilla_dom_ContentPrefs_h -#define mozilla_dom_ContentPrefs_h - -// See the comment in ContentPrefs.cpp for more information. - -namespace mozilla { -namespace dom { - -class ContentPrefs { - public: - static const char** GetEarlyPrefs(size_t* aCount); - static const char* GetEarlyPref(size_t aIndex); - - private: - static const char* gEarlyPrefs[]; -}; - -} // namespace dom -} // namespace mozilla - -#endif diff --git dom/ipc/ContentProcess.cpp dom/ipc/ContentProcess.cpp index 2441c8cb9224..c00283dc5084 100644 --- dom/ipc/ContentProcess.cpp +++ dom/ipc/ContentProcess.cpp @@ -7,7 +7,6 @@ #include "mozilla/ipc/IOThreadChild.h" #include "ContentProcess.h" -#include "ContentPrefs.h" #include "base/shared_memory.h" #include "mozilla/Preferences.h" #include "mozilla/Scheduler.h" @@ -212,8 +211,8 @@ bool ContentProcess::Init(int aArgc, char* aArgv[]) { NS_ERROR("failed to map shared memory in the child"); return false; } - Preferences::DeserializeEarlyPreferences(static_cast(shm.memory()), - prefsLen); + Preferences::DeserializePreferences(static_cast(shm.memory()), + prefsLen); Scheduler::SetPrefs(schedulerPrefs); mContent.Init(IOThreadChild::message_loop(), ParentPid(), diff --git dom/ipc/PContent.ipdl dom/ipc/PContent.ipdl index 5d077976569a..fb967ffc53a9 100644 --- dom/ipc/PContent.ipdl +++ dom/ipc/PContent.ipdl @@ -155,6 +155,12 @@ union MaybePrefValue { null_t; }; +// This serialization form mirrors that used in mozilla::Pref in +// Preferences.cpp. The two should be kept in sync, e.g. if something is added +// to one it should also be added to the other. +// +// Note: there is no need to pass the isSticky attribute because that's an +// immutable attribute obtained from file at startup. struct Pref { nsCString name; bool isLocked; @@ -273,7 +279,6 @@ struct XPCOMInitData ClipboardCapabilities clipboardCaps; DomainPolicyClone domainPolicy; OptionalURIParams userContentSheetURL; - Pref[] prefs; GfxVarUpdate[] gfxNonDefaultVarUpdates; ContentDeviceData contentDeviceData; GfxInfoFeatureStatus[] gfxFeatureStatus; diff --git dom/ipc/moz.build dom/ipc/moz.build index 3c5541c7791b..5e92a0d52b5d 100644 --- dom/ipc/moz.build +++ dom/ipc/moz.build @@ -26,7 +26,6 @@ EXPORTS.mozilla.dom += [ 'ContentBridgeParent.h', 'ContentChild.h', 'ContentParent.h', - 'ContentPrefs.h', 'ContentProcess.h', 'ContentProcessHost.h', 'ContentProcessManager.h', @@ -59,7 +58,6 @@ UNIFIED_SOURCES += [ 'ContentBridgeChild.cpp', 'ContentBridgeParent.cpp', 'ContentParent.cpp', - 'ContentPrefs.cpp', 'ContentProcess.cpp', 'ContentProcessHost.cpp', 'ContentProcessManager.cpp', diff --git layout/style/nsCSSProps.h layout/style/nsCSSProps.h index dce44bf61b35..80288336a08b 100644 --- layout/style/nsCSSProps.h +++ layout/style/nsCSSProps.h @@ -640,7 +640,7 @@ class nsCSSProps { // In the child process, assert that we're not trying to parse stylesheets // before we've gotten all our prefs. MOZ_ASSERT_IF(!XRE_IsParentProcess(), - mozilla::Preferences::AreAllPrefsSetInContentProcess()); + mozilla::Preferences::ArePrefsInitedInContentProcess()); return gPropertyEnabled[aProperty]; } diff --git modules/libpref/Preferences.cpp modules/libpref/Preferences.cpp index fe780686f2eb..488095f49236 100644 --- modules/libpref/Preferences.cpp +++ modules/libpref/Preferences.cpp @@ -15,7 +15,6 @@ #include "mozilla/ArenaAllocator.h" #include "mozilla/ArrayUtils.h" #include "mozilla/Attributes.h" -#include "mozilla/dom/ContentPrefs.h" #include "mozilla/dom/PContent.h" #include "mozilla/HashFunctions.h" #include "mozilla/Logging.h" @@ -129,6 +128,25 @@ enum class PrefType : uint8_t { Bool = 3, }; +// This is used for pref names and string pref values. We encode the string +// length, then a '/', then the string chars. This encoding means there are no +// special chars that are forbidden or require escaping. +static void SerializeAndAppendString(const char* aChars, nsCString& aStr) { + aStr.AppendInt(uint32_t(strlen(aChars))); + aStr.Append('/'); + aStr.Append(aChars); +} + +static char* DeserializeString(char* aChars, nsCString& aStr) { + char* p = aChars; + uint32_t length = strtol(p, &p, 10); + MOZ_ASSERT(p[0] == '/'); + p++; // move past the '/' + aStr.Assign(p, length); + p += length; // move past the string itself + return p; +} + // Keep this in sync with PrefValue in prefs_parser/src/lib.rs. union PrefValue { const char* mStringVal; @@ -215,6 +233,61 @@ union PrefValue { MOZ_CRASH(); } } + + void SerializeAndAppend(PrefType aType, nsCString& aStr) { + switch (aType) { + case PrefType::Bool: + aStr.Append(mBoolVal ? 'T' : 'F'); + break; + + case PrefType::Int: + aStr.AppendInt(mIntVal); + break; + + case PrefType::String: { + SerializeAndAppendString(mStringVal, aStr); + break; + } + + case PrefType::None: + default: + MOZ_CRASH(); + } + } + + static char* Deserialize(PrefType aType, char* aStr, + dom::MaybePrefValue* aDomValue) { + char* p = aStr; + + switch (aType) { + case PrefType::Bool: + if (*p == 'T') { + *aDomValue = true; + } else if (*p == 'F') { + *aDomValue = false; + } else { + *aDomValue = false; + NS_ERROR("bad bool pref value"); + } + p++; + return p; + + case PrefType::Int: { + *aDomValue = int32_t(strtol(p, &p, 10)); + return p; + } + + case PrefType::String: { + nsCString str; + p = DeserializeString(p, str); + *aDomValue = str; + return p; + } + + default: + MOZ_CRASH(); + } + } }; #ifdef DEBUG @@ -656,6 +729,157 @@ class Pref { return false; } + // Prefs are serialized in a manner that mirrors dom::Pref. The two should be + // kept in sync. E.g. if something is added to one it should also be added to + // the other. (It would be nice to be able to use the code generated from + // IPDL for serializing dom::Pref here instead of writing by hand this + // serialization/deserialization. Unfortunately, that generated code is + // difficult to use directly, outside of the IPDL IPC code.) + // + // The grammar for the serialized prefs has the following form. + // + // = ':' ':' ? ':' ? '\n' + // = 'B' | 'I' | 'S' + // = 'L' | '-' + // = + // = | | + // = 'T' | 'F' + // = an integer literal accepted by strtol() + // = '/' + // = any char sequence of length dictated by the preceding + // . + // + // No whitespace is tolerated between tokens. must match the types of + // the values. + // + // The serialization is text-based, rather than binary, for the following + // reasons. + // + // - The size difference wouldn't be much different between text-based and + // binary. Most of the space is for strings (pref names and string pref + // values), which would be the same in both styles. And other differences + // would be minimal, e.g. small integers are shorter in text but long + // integers are longer in text. + // + // - Likewise, speed differences should be negligible. + // + // - It's much easier to debug a text-based serialization. E.g. you can + // print it and inspect it easily in a debugger. + // + // Examples of unlocked boolean prefs: + // - "B-:8/my.bool1:F:T\n" + // - "B-:8/my.bool2:F:\n" + // - "B-:8/my.bool3::T\n" + // + // Examples of locked integer prefs: + // - "IL:7/my.int1:0:1\n" + // - "IL:7/my.int2:123:\n" + // - "IL:7/my.int3::-99\n" + // + // Examples of unlocked string prefs: + // - "S-:10/my.string1:3/abc:4/wxyz\n" + // - "S-:10/my.string2:5/1.234:\n" + // - "S-:10/my.string3::7/string!\n" + + void SerializeAndAppend(nsCString& aStr) { + switch (Type()) { + case PrefType::Bool: + aStr.Append('B'); + break; + + case PrefType::Int: + aStr.Append('I'); + break; + + case PrefType::String: { + aStr.Append('S'); + break; + } + + case PrefType::None: + default: + MOZ_CRASH(); + } + + aStr.Append(mIsLocked ? 'L' : '-'); + aStr.Append(':'); + + SerializeAndAppendString(mName, aStr); + aStr.Append(':'); + + if (mHasDefaultValue) { + mDefaultValue.SerializeAndAppend(Type(), aStr); + } + aStr.Append(':'); + + if (mHasUserValue) { + mUserValue.SerializeAndAppend(Type(), aStr); + } + aStr.Append('\n'); + } + + static char* Deserialize(char* aStr, dom::Pref* aDomPref) { + char* p = aStr; + + // The type. + PrefType type; + if (*p == 'B') { + type = PrefType::Bool; + } else if (*p == 'I') { + type = PrefType::Int; + } else if (*p == 'S') { + type = PrefType::String; + } else { + NS_ERROR("bad pref type"); + type = PrefType::None; + } + p++; // move past the type char + + // Locked? + bool isLocked; + if (*p == 'L') { + isLocked = true; + } else if (*p == '-') { + isLocked = false; + } else { + NS_ERROR("bad pref locked status"); + isLocked = false; + } + p++; // move past the isLocked char + + MOZ_ASSERT(*p == ':'); + p++; // move past the ':' + + // The pref name. + nsCString name; + p = DeserializeString(p, name); + + MOZ_ASSERT(*p == ':'); + p++; // move past the ':' preceding the default value + + dom::MaybePrefValue maybeDefaultValue; + if (*p != ':') { + dom::PrefValue defaultValue; + p = PrefValue::Deserialize(type, p, &maybeDefaultValue); + } + + MOZ_ASSERT(*p == ':'); + p++; // move past the ':' between the default and user values + + dom::MaybePrefValue maybeUserValue; + if (*p != '\n') { + dom::PrefValue userValue; + p = PrefValue::Deserialize(type, p, &maybeUserValue); + } + + MOZ_ASSERT(*p == '\n'); + p++; // move past the '\n' following the user value + + *aDomPref = dom::Pref(name, isLocked, maybeDefaultValue, maybeUserValue); + + return p; + } + void AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf, PrefsSizes& aSizes) { // Note: mName is allocated in gPrefNameArena, measured elsewhere. aSizes.mPrefValues += aMallocSizeOf(this); @@ -817,57 +1041,17 @@ static PrefSaveData pref_savePrefs() { #ifdef DEBUG -// For content processes, what prefs have been initialized? -enum class ContentProcessPhase { - eNoPrefsSet, - eEarlyPrefsSet, - eEarlyAndLatePrefsSet, -}; - // Note that this never changes in the parent process, and is only read in // content processes. -static ContentProcessPhase gPhase = ContentProcessPhase::eNoPrefsSet; +static bool gContentProcessPrefsAreInited = false; -struct StringComparator { - const char* mPrefName; - - explicit StringComparator(const char* aPrefName) : mPrefName(aPrefName) {} - - int operator()(const char* aPrefName) const { - return strcmp(mPrefName, aPrefName); - } -}; - -static bool IsEarlyPref(const char* aPrefName) { - size_t prefsLen; - size_t found; - const char** list = mozilla::dom::ContentPrefs::GetEarlyPrefs(&prefsLen); - return BinarySearchIf(list, 0, prefsLen, StringComparator(aPrefName), &found); -} - #endif // DEBUG static PrefEntry* pref_HashTableLookupInner(const char* aPrefName) { MOZ_ASSERT(NS_IsMainThread() || mozilla::ServoStyleSet::IsInServoTraversal()); -#ifdef DEBUG - if (!XRE_IsParentProcess()) { - if (gPhase == ContentProcessPhase::eNoPrefsSet) { - MOZ_CRASH_UNSAFE_PRINTF("accessing pref %s before early prefs are set", - aPrefName); - } + MOZ_ASSERT_IF(!XRE_IsParentProcess(), gContentProcessPrefsAreInited); - if (gPhase == ContentProcessPhase::eEarlyPrefsSet && - !IsEarlyPref(aPrefName)) { - // If you hit this crash, you have an early access of a non-early pref. - // Consider moving the access later or add the pref to the whitelist of - // early prefs in ContentPrefs.cpp and get review from a DOM peer. - MOZ_CRASH_UNSAFE_PRINTF( - "accessing non-early pref %s before late prefs are set", aPrefName); - } - } -#endif - return static_cast(gHashTable->Search(aPrefName)); } @@ -2637,8 +2821,8 @@ class AddPreferencesMemoryReporterRunnable : public Ru } // namespace -// A list of prefs sent early from the parent, via shared memory. -static InfallibleTArray* gEarlyDomPrefs; +// A list of changed prefs sent from the parent via shared memory. +static InfallibleTArray* gChangedDomPrefs; /* static */ already_AddRefed Preferences::GetInstanceForService() { @@ -2668,12 +2852,12 @@ Preferences::GetInstanceForService() { } if (!XRE_IsParentProcess()) { - MOZ_ASSERT(gEarlyDomPrefs); - for (unsigned int i = 0; i < gEarlyDomPrefs->Length(); i++) { - Preferences::SetPreference(gEarlyDomPrefs->ElementAt(i)); + MOZ_ASSERT(gChangedDomPrefs); + for (unsigned int i = 0; i < gChangedDomPrefs->Length(); i++) { + Preferences::SetPreference(gChangedDomPrefs->ElementAt(i)); } - delete gEarlyDomPrefs; - gEarlyDomPrefs = nullptr; + delete gChangedDomPrefs; + gChangedDomPrefs = nullptr; } else { // Check if there is a deployment configuration file. If so, set up the @@ -2782,143 +2966,45 @@ Preferences::~Preferences() { NS_IMPL_ISUPPORTS(Preferences, nsIPrefService, nsIObserver, nsIPrefBranch, nsISupportsWeakReference) -/* static */ void Preferences::SerializeEarlyPreferences(nsCString& aStr) { +/* static */ void Preferences::SerializePreferences(nsCString& aStr) { MOZ_RELEASE_ASSERT(InitStaticMembers()); - nsAutoCStringN<256> boolPrefs, intPrefs, stringPrefs; - size_t numEarlyPrefs; - dom::ContentPrefs::GetEarlyPrefs(&numEarlyPrefs); + aStr.Truncate(); - for (unsigned int i = 0; i < numEarlyPrefs; i++) { - const char* prefName = dom::ContentPrefs::GetEarlyPref(i); - MOZ_ASSERT_IF(i > 0, - strcmp(prefName, dom::ContentPrefs::GetEarlyPref(i - 1)) > 0); - - Pref* pref = pref_HashTableLookup(prefName); - if (!pref || !pref->MustSendToContentProcesses()) { - continue; + for (auto iter = gHashTable->Iter(); !iter.Done(); iter.Next()) { + Pref* pref = static_cast(iter.Get())->mPref; + if (pref->MustSendToContentProcesses() && pref->HasAdvisablySizedValues()) { + pref->SerializeAndAppend(aStr); } - - switch (pref->Type()) { - case PrefType::Bool: - boolPrefs.Append( - nsPrintfCString("%u:%d|", i, Preferences::GetBool(prefName))); - break; - case PrefType::Int: - intPrefs.Append( - nsPrintfCString("%u:%d|", i, Preferences::GetInt(prefName))); - break; - case PrefType::String: { - nsAutoCString value; - Preferences::GetCString(prefName, value); - stringPrefs.Append( - nsPrintfCString("%u:%d;%s|", i, value.Length(), value.get())); - } break; - case PrefType::None: - break; - default: - printf_stderr("preference type: %d\n", int(pref->Type())); - MOZ_CRASH(); - } } - aStr.Truncate(); - aStr.Append(boolPrefs); - aStr.Append('\n'); - aStr.Append(intPrefs); - aStr.Append('\n'); - aStr.Append(stringPrefs); - aStr.Append('\n'); aStr.Append('\0'); } -/* static */ void Preferences::DeserializeEarlyPreferences(char* aStr, - size_t aStrLen) { +/* static */ void Preferences::DeserializePreferences(char* aStr, + size_t aPrefsLen) { MOZ_ASSERT(!XRE_IsParentProcess()); - MOZ_ASSERT(!gEarlyDomPrefs); - gEarlyDomPrefs = new InfallibleTArray(); + MOZ_ASSERT(!gChangedDomPrefs); + gChangedDomPrefs = new InfallibleTArray(); char* p = aStr; - - // XXX: we assume these pref values are default values, which may not be - // true. We also assume they are unlocked. Fortunately, these prefs get reset - // properly by the first IPC message. - - // Get the bool prefs. - while (*p != '\n') { - int32_t index = strtol(p, &p, 10); - MOZ_ASSERT(p[0] == ':'); - p++; - int v = strtol(p, &p, 10); - MOZ_ASSERT(v == 0 || v == 1); - dom::MaybePrefValue value(dom::PrefValue(!!v)); - MOZ_ASSERT(p[0] == '|'); - p++; - dom::Pref pref(nsCString(dom::ContentPrefs::GetEarlyPref(index)), - /* isLocked */ false, value, dom::MaybePrefValue()); - gEarlyDomPrefs->AppendElement(pref); + while (*p != '\0') { + dom::Pref pref; + p = Pref::Deserialize(p, &pref); + gChangedDomPrefs->AppendElement(pref); } - p++; - // Get the int prefs. - while (*p != '\n') { - int32_t index = strtol(p, &p, 10); - MOZ_ASSERT(p[0] == ':'); - p++; - dom::MaybePrefValue value( - dom::PrefValue(static_cast(strtol(p, &p, 10)))); - MOZ_ASSERT(p[0] == '|'); - p++; - dom::Pref pref(nsCString(dom::ContentPrefs::GetEarlyPref(index)), - /* isLocked */ false, value, dom::MaybePrefValue()); - gEarlyDomPrefs->AppendElement(pref); - } - p++; - - // Get the string prefs. - while (*p != '\n') { - int32_t index = strtol(p, &p, 10); - MOZ_ASSERT(p[0] == ':'); - p++; - int32_t length = strtol(p, &p, 10); - MOZ_ASSERT(p[0] == ';'); - p++; - dom::MaybePrefValue value(dom::PrefValue(nsCString(p, length))); - dom::Pref pref(nsCString(dom::ContentPrefs::GetEarlyPref(index)), - /* isLocked */ false, value, dom::MaybePrefValue()); - gEarlyDomPrefs->AppendElement(pref); - p += length + 1; - MOZ_ASSERT(*(p - 1) == '|'); - } - p++; - - MOZ_ASSERT(*p == '\0'); - // We finished parsing on a '\0'. That should be the last char in the shared - // memory. - MOZ_ASSERT(aStr + aStrLen - 1 == p); + // memory. (aPrefsLen includes the '\0'.) + MOZ_ASSERT(p == aStr + aPrefsLen - 1); #ifdef DEBUG - MOZ_ASSERT(gPhase == ContentProcessPhase::eNoPrefsSet); - gPhase = ContentProcessPhase::eEarlyPrefsSet; + MOZ_ASSERT(!gContentProcessPrefsAreInited); + gContentProcessPrefsAreInited = true; #endif } -/* static */ void Preferences::SetLatePreferences( - const nsTArray* aDomPrefs) { - MOZ_ASSERT(!XRE_IsParentProcess()); - - for (unsigned int i = 0; i < aDomPrefs->Length(); i++) { - Preferences::SetPreference(aDomPrefs->ElementAt(i)); - } - -#ifdef DEBUG - MOZ_ASSERT(gPhase == ContentProcessPhase::eEarlyPrefsSet); - gPhase = ContentProcessPhase::eEarlyAndLatePrefsSet; -#endif -} - /* static */ void Preferences::InitializeUserPrefs() { MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!sPreferences->mCurrentFile, "Should only initialize prefs once"); @@ -3133,32 +3219,10 @@ Preferences::SavePrefFile(nsIFile* aFile) { } } -void Preferences::GetPreferences(InfallibleTArray* aDomPrefs) { - MOZ_ASSERT(XRE_IsParentProcess()); - MOZ_ASSERT(NS_IsMainThread()); - - aDomPrefs->SetCapacity(gHashTable->EntryCount()); - for (auto iter = gHashTable->Iter(); !iter.Done(); iter.Next()) { - Pref* pref = static_cast(iter.Get())->mPref; - - if (!pref->MustSendToContentProcesses()) { - // The pref value hasn't changed since it was initialized at startup. - // Don't bother sending it, because the content process will initialize - // it the same way. - continue; - } - - if (pref->HasAdvisablySizedValues()) { - dom::Pref* setting = aDomPrefs->AppendElement(); - pref->ToDomPref(setting); - } - } -} - #ifdef DEBUG -bool Preferences::AreAllPrefsSetInContentProcess() { +bool Preferences::ArePrefsInitedInContentProcess() { MOZ_ASSERT(!XRE_IsParentProcess()); - return gPhase == ContentProcessPhase::eEarlyAndLatePrefsSet; + return gContentProcessPrefsAreInited; } #endif diff --git modules/libpref/Preferences.h modules/libpref/Preferences.h index 0d976483daae..901425b5b663 100644 --- modules/libpref/Preferences.h +++ modules/libpref/Preferences.h @@ -277,15 +277,10 @@ class Preferences final : public nsIPrefService, static nsresult AddFloatVarCache(float* aVariable, const char* aPref, float aDefault = 0.0f); - // When a content process is created these methods are used to pass prefs in - // bulk from the parent process. "Early" preferences are ones that are needed - // very early on in the content process's lifetime; they are passed via a - // special shared memory segment. "Late" preferences are the remainder, which - // are passed via a standard IPC message. - static void SerializeEarlyPreferences(nsCString& aStr); - static void DeserializeEarlyPreferences(char* aStr, size_t aStrLen); - static void GetPreferences(InfallibleTArray* aSettings); - static void SetLatePreferences(const nsTArray* aSettings); + // When a content process is created these methods are used to pass changed + // prefs in bulk from the parent process, via shared memory. + static void SerializePreferences(nsCString& aStr); + static void DeserializePreferences(char* aStr, size_t aPrefsLen); // When a single pref is changed in the parent process, these methods are // used to pass the update to content processes. @@ -293,7 +288,7 @@ class Preferences final : public nsIPrefService, static void SetPreference(const dom::Pref& aPref); #ifdef DEBUG - static bool AreAllPrefsSetInContentProcess(); + static bool ArePrefsInitedInContentProcess(); #endif static void AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, Index: branches/2019Q1/mail/thunderbird-i18n/Makefile =================================================================== --- branches/2019Q1/mail/thunderbird-i18n/Makefile (revision 495784) +++ branches/2019Q1/mail/thunderbird-i18n/Makefile (revision 495785) @@ -1,80 +1,80 @@ # Created by: Andrew Pantyukhin # $FreeBSD$ PORTNAME= thunderbird-i18n -PORTVERSION= 60.5.3 +PORTVERSION= 60.6.0 CATEGORIES= mail news net-im MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-x86_64/xpi \ - MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-x86_64/xpi + MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build2/linux-x86_64/xpi PKGNAMEPREFIX= DISTFILES= ${THUNDERBIRD_I18N_:S/$/.xpi/} DIST_SUBDIR= xpi/${DISTNAME} MAINTAINER= gecko@FreeBSD.org COMMENT= Localized interface for Thunderbird USES= gecko:thunderbird zip USE_XPI= thunderbird NO_BUILD= yes NO_ARCH= yes USE_SUBMAKE= yes WDIR= langpack-*@thunderbird.mozilla.org XPI_DISTNAMES= ${THUNDERBIRD_I18N_} PLIST?= ${WRKDIR}/plist PLISTF?= ${WRKDIR}/plist_files .include "${.CURDIR}/Makefile.option" .include .ifndef WITHOUT_SWITCHER RUN_DEPENDS+= xpi-quick-locale-switcher>=0:www/xpi-quick-locale-switcher .endif .include "${.CURDIR}/Makefile.lang" THUNDERBIRD_I18N_?= ${THUNDERBIRD_I18N} .for dist in ${XPI_DISTNAMES} XPI_ID_${dist}= langpack-${dist}@thunderbird.mozilla.org .endfor do-extract: @${RM} -r ${WRKDIR} @${MKDIR} ${WRKDIR} ${WRKSRC} @for lang in ${THUNDERBIRD_I18N_}; do \ if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org);\ then \ exit 1; \ fi; \ cd ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org/; \ ${FIND} -H -s * ! -type d | \ ${SED} -e "s|^|lib/xpi/langpack-$$lang@thunderbird.mozilla.org/|" >> ${PLISTF}; \ done ${CAT} ${PLISTF} | ${SORT} >> ${PLIST} do-install: @${MKDIR} ${STAGEDIR}${XPI_LIBDIR} ${XPI_LINKFARMS:S,^,${STAGEDIR},} cd ${WRKSRC}; ${PAX} -rw . ${STAGEDIR}${XPI_LIBDIR} ${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${WDIR}/ @for sldir in ${XPI_LINKFARMS}; do \ ${ECHO_CMD} "@dir $${sldir}" ${_A}; \ done @${ECHO_CMD} '@exec for _dir in ${XPI_LINKFARMS} ; { \ ${LN} -sf ${XPI_LIBDIR}/${WDIR} $$_dir/ ${_Q}; }' ${_A} @${ECHO_CMD} '@unexec for _dir in ${XPI_LINKFARMS}; { ${RM} $$_dir/${WDIR} ; }' ${_A} post-patch: ${FIND} ${WRKSRC} -name install.rdf -print0 | \ ${XARGS} -0L1 ${REINPLACE_CMD} -i '' -e '/ Index: branches/2019Q1/mail/thunderbird-i18n/distinfo =================================================================== --- branches/2019Q1/mail/thunderbird-i18n/distinfo (revision 495784) +++ branches/2019Q1/mail/thunderbird-i18n/distinfo (revision 495785) @@ -1,117 +1,117 @@ -TIMESTAMP = 1551781621 -SHA256 (xpi/thunderbird-i18n-60.5.3/ar.xpi) = 0c9ce060303c8be7ddefa09be6fa7f9394b699b0cfaac51fe53c7656e59ab37d -SIZE (xpi/thunderbird-i18n-60.5.3/ar.xpi) = 627181 -SHA256 (xpi/thunderbird-i18n-60.5.3/ast.xpi) = e72e7957cf8df5db23bad92bbd8aa5aa8ae62290c84a73aea6932b5eab57c170 -SIZE (xpi/thunderbird-i18n-60.5.3/ast.xpi) = 559643 -SHA256 (xpi/thunderbird-i18n-60.5.3/be.xpi) = e456c261c44a39f204097b3b1e52f42424de47130110bec774b34be854a723f7 -SIZE (xpi/thunderbird-i18n-60.5.3/be.xpi) = 659079 -SHA256 (xpi/thunderbird-i18n-60.5.3/bg.xpi) = a05073472de45d115ef770fb5ead5fbe39bea8b45e3076d6bf3fdccfca07f9d5 -SIZE (xpi/thunderbird-i18n-60.5.3/bg.xpi) = 669317 -SHA256 (xpi/thunderbird-i18n-60.5.3/br.xpi) = 40c6a25f198b31f4a6ef295181d3270e6fa067633ff0772e776648ff496aca14 -SIZE (xpi/thunderbird-i18n-60.5.3/br.xpi) = 580372 -SHA256 (xpi/thunderbird-i18n-60.5.3/ca.xpi) = 096bf74e4b386a17200b1ae7deb61ba304c4f2d2dc223ce28f6807d0fd93c8a2 -SIZE (xpi/thunderbird-i18n-60.5.3/ca.xpi) = 591971 -SHA256 (xpi/thunderbird-i18n-60.5.3/cs.xpi) = 0f0c333e3a1526af50fc3f418f9c39984162d2f65633d9b78918e82c761773c0 -SIZE (xpi/thunderbird-i18n-60.5.3/cs.xpi) = 611203 -SHA256 (xpi/thunderbird-i18n-60.5.3/cy.xpi) = fb3feffd821698a8dc75a8154fa8625eeb130787dfad9cd36b7e7c1d6314757e -SIZE (xpi/thunderbird-i18n-60.5.3/cy.xpi) = 586039 -SHA256 (xpi/thunderbird-i18n-60.5.3/da.xpi) = a112c0d2c58a068c82f0d0833942571bee8b2ecb9dab990a981f3eb6a0556146 -SIZE (xpi/thunderbird-i18n-60.5.3/da.xpi) = 570807 -SHA256 (xpi/thunderbird-i18n-60.5.3/de.xpi) = e3509a3f01b14d98781345cadfd41d38163a2f87a0aad379c932b6721437e4c9 -SIZE (xpi/thunderbird-i18n-60.5.3/de.xpi) = 582575 -SHA256 (xpi/thunderbird-i18n-60.5.3/dsb.xpi) = 17395295e63166b3ae5274ea82b2f914ff986e213b1efd4c7611bf60d04ad9c5 -SIZE (xpi/thunderbird-i18n-60.5.3/dsb.xpi) = 617568 -SHA256 (xpi/thunderbird-i18n-60.5.3/el.xpi) = b78b2a3ce2c4065a101e2e5569992b4bcf72ec49a794c7133c5f8a95549c1d57 -SIZE (xpi/thunderbird-i18n-60.5.3/el.xpi) = 694858 -SHA256 (xpi/thunderbird-i18n-60.5.3/en-GB.xpi) = c0ad9d839c6bf4ae342c8f0435cc2aa969b7209cc01169ec772d1bd10e963e64 -SIZE (xpi/thunderbird-i18n-60.5.3/en-GB.xpi) = 553896 -SHA256 (xpi/thunderbird-i18n-60.5.3/en-US.xpi) = a74146f6fd27c749871635e6dcc85aa0ead5342903ff7a6a846426801e51c594 -SIZE (xpi/thunderbird-i18n-60.5.3/en-US.xpi) = 550809 -SHA256 (xpi/thunderbird-i18n-60.5.3/es-AR.xpi) = cb185ebfa17ecb836a4372c87311ee40b1299f4c6c390de44e5d285fbc08a4dc -SIZE (xpi/thunderbird-i18n-60.5.3/es-AR.xpi) = 595048 -SHA256 (xpi/thunderbird-i18n-60.5.3/es-ES.xpi) = 9f1accd6ec302ccb006d9e692f1ffa1aa6ac8d7ad01cdca95362566cfc3f8eb5 -SIZE (xpi/thunderbird-i18n-60.5.3/es-ES.xpi) = 492212 -SHA256 (xpi/thunderbird-i18n-60.5.3/et.xpi) = 597392344c4c0bd4d7db978fc5e896fd7089ebf577359c9343ef1352cd4c4cdf -SIZE (xpi/thunderbird-i18n-60.5.3/et.xpi) = 570868 -SHA256 (xpi/thunderbird-i18n-60.5.3/eu.xpi) = 522dc2612f48c233dde6c4943b1f767c39e2bcc3f84d563066bbe5002f367722 -SIZE (xpi/thunderbird-i18n-60.5.3/eu.xpi) = 581385 -SHA256 (xpi/thunderbird-i18n-60.5.3/fi.xpi) = d81b45703f3054b228b43dd2ecc7b3ce0e5181560fae577086decff05673367b -SIZE (xpi/thunderbird-i18n-60.5.3/fi.xpi) = 575755 -SHA256 (xpi/thunderbird-i18n-60.5.3/fr.xpi) = 0b19da7a162f32097c4c5c0a735fce009f88f9309bf18cf4213e3901256b9c32 -SIZE (xpi/thunderbird-i18n-60.5.3/fr.xpi) = 608466 -SHA256 (xpi/thunderbird-i18n-60.5.3/fy-NL.xpi) = 65670844dcca432f7bd9770636cd5d456b86f84b4fb9439e9c6bdffff152470d -SIZE (xpi/thunderbird-i18n-60.5.3/fy-NL.xpi) = 593851 -SHA256 (xpi/thunderbird-i18n-60.5.3/ga-IE.xpi) = 63f8c067ef5def107687bf926fb2f8f1e1d6275f9d98c9ce4f79e8a62eea60c1 -SIZE (xpi/thunderbird-i18n-60.5.3/ga-IE.xpi) = 603505 -SHA256 (xpi/thunderbird-i18n-60.5.3/gd.xpi) = 67f8b5c70cdf21f6e50be2af83eaee6f65db927b1a90971a0c4b3e73b2bab1d4 -SIZE (xpi/thunderbird-i18n-60.5.3/gd.xpi) = 599262 -SHA256 (xpi/thunderbird-i18n-60.5.3/gl.xpi) = 05d16208494d10283669e163d7de2187f45b74411cdb8723e4b807c264975da5 -SIZE (xpi/thunderbird-i18n-60.5.3/gl.xpi) = 580352 -SHA256 (xpi/thunderbird-i18n-60.5.3/he.xpi) = d9677817eb38ce3347acb7f45e7563d809bdbd3662d0e8921cbe57fa6ba814b7 -SIZE (xpi/thunderbird-i18n-60.5.3/he.xpi) = 617144 -SHA256 (xpi/thunderbird-i18n-60.5.3/hr.xpi) = 4b01bbdfc0e950d7c1945752037c080a78f36daa37c3e7584d4cad11aee2dda0 -SIZE (xpi/thunderbird-i18n-60.5.3/hr.xpi) = 582239 -SHA256 (xpi/thunderbird-i18n-60.5.3/hsb.xpi) = c4b90dd92e8e026ef43c600cb6542fc0415a360b1b20d613a3d6659c6b3b70bb -SIZE (xpi/thunderbird-i18n-60.5.3/hsb.xpi) = 615132 -SHA256 (xpi/thunderbird-i18n-60.5.3/hu.xpi) = 495bfd7cffc23932a0e7f582578e34bb099e16f1d4a5d1dba7b2262be035155a -SIZE (xpi/thunderbird-i18n-60.5.3/hu.xpi) = 615346 -SHA256 (xpi/thunderbird-i18n-60.5.3/hy-AM.xpi) = 373bdc50e0bf171be9e90466adce6378e368bd97fade2d676d5ee61124104b47 -SIZE (xpi/thunderbird-i18n-60.5.3/hy-AM.xpi) = 653531 -SHA256 (xpi/thunderbird-i18n-60.5.3/id.xpi) = 9bb384abf8fa520c9031c2a239bf29fad4d8aa46218a2c0e10f26e08aeeefde8 -SIZE (xpi/thunderbird-i18n-60.5.3/id.xpi) = 568861 -SHA256 (xpi/thunderbird-i18n-60.5.3/is.xpi) = e06bfb2d56db8081fd60ed36cf3c3ccadbb26223fb9541413372467ea479f7b7 -SIZE (xpi/thunderbird-i18n-60.5.3/is.xpi) = 579048 -SHA256 (xpi/thunderbird-i18n-60.5.3/it.xpi) = d8742a81022004a1f75d1a8e9594d7ce6b6150496a344b130a3029b8b83a9cdb -SIZE (xpi/thunderbird-i18n-60.5.3/it.xpi) = 477500 -SHA256 (xpi/thunderbird-i18n-60.5.3/ja.xpi) = 29ff3364753ee94e226f411ab05d2988af31de2caf67164f9a1699472655629e -SIZE (xpi/thunderbird-i18n-60.5.3/ja.xpi) = 653345 -SHA256 (xpi/thunderbird-i18n-60.5.3/kab.xpi) = f40d95ceb7eff5e98a59e82e6b1cb3e38c8ddcaa697530a3ae737edef654d624 -SIZE (xpi/thunderbird-i18n-60.5.3/kab.xpi) = 594015 -SHA256 (xpi/thunderbird-i18n-60.5.3/kk.xpi) = 0bf3e13adeca2343b4e0bb1d1ac3a1432a6d6cc8f020839dc4967a6970561b81 -SIZE (xpi/thunderbird-i18n-60.5.3/kk.xpi) = 669230 -SHA256 (xpi/thunderbird-i18n-60.5.3/ko.xpi) = 6e993159c5c23baeda704b2b69ac4bf166fc91facbbcd84a8388ca27bfe6b1e2 -SIZE (xpi/thunderbird-i18n-60.5.3/ko.xpi) = 619730 -SHA256 (xpi/thunderbird-i18n-60.5.3/lt.xpi) = a13139927ddd3a2577003362d4bb197c95da238f7a3e011bf1dfb51e4e9937f8 -SIZE (xpi/thunderbird-i18n-60.5.3/lt.xpi) = 605442 -SHA256 (xpi/thunderbird-i18n-60.5.3/ms.xpi) = 32a90c6ed9d5403a2e375a4cef115f03cdcb62009326d80c9d311ecbc636e60a -SIZE (xpi/thunderbird-i18n-60.5.3/ms.xpi) = 574308 -SHA256 (xpi/thunderbird-i18n-60.5.3/nb-NO.xpi) = 49ab2e45c4cdb1157c76abe7ac29e52ec9c9c07c7eb55772394db6eba374da61 -SIZE (xpi/thunderbird-i18n-60.5.3/nb-NO.xpi) = 577003 -SHA256 (xpi/thunderbird-i18n-60.5.3/nl.xpi) = efe945c2bbbdea2466ec96448a45f02028ea84db31f588aa2a39887f852f6c20 -SIZE (xpi/thunderbird-i18n-60.5.3/nl.xpi) = 583912 -SHA256 (xpi/thunderbird-i18n-60.5.3/nn-NO.xpi) = 72883be7d362805c6aacf7db31c5f0dbe81c09c2094d3de80d5457c1057cd4ad -SIZE (xpi/thunderbird-i18n-60.5.3/nn-NO.xpi) = 576422 -SHA256 (xpi/thunderbird-i18n-60.5.3/pl.xpi) = 13e93ec017c1f263b68e873ef76405ae07d69a69f3461b29050f2974e451b166 -SIZE (xpi/thunderbird-i18n-60.5.3/pl.xpi) = 480725 -SHA256 (xpi/thunderbird-i18n-60.5.3/pt-BR.xpi) = 9f068f9f34802dfcbabdc591f829e618a5acf72e6c601597998c79767c676418 -SIZE (xpi/thunderbird-i18n-60.5.3/pt-BR.xpi) = 588835 -SHA256 (xpi/thunderbird-i18n-60.5.3/pt-PT.xpi) = 122091cd37965c42f80527aeeeea4ea402d3ebda6145a72954c728122cbe44c4 -SIZE (xpi/thunderbird-i18n-60.5.3/pt-PT.xpi) = 593186 -SHA256 (xpi/thunderbird-i18n-60.5.3/rm.xpi) = d79c340a9f0bf669225f5a234cf71b44a066ea6191eddbbd5b2529eba4fafb06 -SIZE (xpi/thunderbird-i18n-60.5.3/rm.xpi) = 578384 -SHA256 (xpi/thunderbird-i18n-60.5.3/ro.xpi) = 1d5f03dbc1115b1bf5b0ac1d095669694e0448d2f47a2df4831d0f591b005447 -SIZE (xpi/thunderbird-i18n-60.5.3/ro.xpi) = 584309 -SHA256 (xpi/thunderbird-i18n-60.5.3/ru.xpi) = fabc027ab8ec5afdc64ee814bcb15c9ecdec4bc8d3fd93e76f7870d9bd0d5c63 -SIZE (xpi/thunderbird-i18n-60.5.3/ru.xpi) = 694705 -SHA256 (xpi/thunderbird-i18n-60.5.3/si.xpi) = b450658f8dfee77fdffcc096874bd1a34c278c25870be693b78a38f4fdafc1ed -SIZE (xpi/thunderbird-i18n-60.5.3/si.xpi) = 647592 -SHA256 (xpi/thunderbird-i18n-60.5.3/sk.xpi) = e984e3536f8a557710ce708e3d36671a2b74f893e8ab92aa66b9fe06a78008f7 -SIZE (xpi/thunderbird-i18n-60.5.3/sk.xpi) = 612218 -SHA256 (xpi/thunderbird-i18n-60.5.3/sl.xpi) = 4934ea2cfb417b73bd13a41761458692c581df26935bd204ee79ecd49e571f32 -SIZE (xpi/thunderbird-i18n-60.5.3/sl.xpi) = 589947 -SHA256 (xpi/thunderbird-i18n-60.5.3/sq.xpi) = c31e59fc29bee0eb46cf2b3c09f72d434f6a617846cb2c0e5fab8406dde64e19 -SIZE (xpi/thunderbird-i18n-60.5.3/sq.xpi) = 593096 -SHA256 (xpi/thunderbird-i18n-60.5.3/sr.xpi) = 11206857665649dd78e3fc1a992d5297842f22a811b45f0ab746a539265670c6 -SIZE (xpi/thunderbird-i18n-60.5.3/sr.xpi) = 641527 -SHA256 (xpi/thunderbird-i18n-60.5.3/sv-SE.xpi) = dc082c5a002e83a3f426e4d841d58792df8d9410a93c6fc132d4970d0db3019d -SIZE (xpi/thunderbird-i18n-60.5.3/sv-SE.xpi) = 594079 -SHA256 (xpi/thunderbird-i18n-60.5.3/tr.xpi) = 29181be6512504661b5bd4cb533193f7280fd4d6251aeb6069abe293609cae5c -SIZE (xpi/thunderbird-i18n-60.5.3/tr.xpi) = 598010 -SHA256 (xpi/thunderbird-i18n-60.5.3/uk.xpi) = ed141f4efd55abd690eaa4df5859a95a57cd8e3906fd8dd55840046cedf8ccc6 -SIZE (xpi/thunderbird-i18n-60.5.3/uk.xpi) = 684155 -SHA256 (xpi/thunderbird-i18n-60.5.3/vi.xpi) = 2c5eb1f2672c5f39b2246afe64f3339f98367c36aaa2e0e079f1120547496113 -SIZE (xpi/thunderbird-i18n-60.5.3/vi.xpi) = 637197 -SHA256 (xpi/thunderbird-i18n-60.5.3/zh-CN.xpi) = 118d6af610f23d4b82b7e090ae4f97eabb9cdc701b905d435506f0a881c63a31 -SIZE (xpi/thunderbird-i18n-60.5.3/zh-CN.xpi) = 626283 -SHA256 (xpi/thunderbird-i18n-60.5.3/zh-TW.xpi) = 85419468883f11b788b15365bf783474dd9f0004a02c40046c317493d33f9260 -SIZE (xpi/thunderbird-i18n-60.5.3/zh-TW.xpi) = 626189 +TIMESTAMP = 1552590059 +SHA256 (xpi/thunderbird-i18n-60.6.0/ar.xpi) = 1c5ada98f9b48e8ef91fb9f5b0f79a7036cd8d319885a8c2cb9ea279f06299c2 +SIZE (xpi/thunderbird-i18n-60.6.0/ar.xpi) = 627181 +SHA256 (xpi/thunderbird-i18n-60.6.0/ast.xpi) = 371c7ba1f05e5b67293c16dc8d98079503a0261c5feb0dd401d07e8aa3256203 +SIZE (xpi/thunderbird-i18n-60.6.0/ast.xpi) = 559642 +SHA256 (xpi/thunderbird-i18n-60.6.0/be.xpi) = 1b39e7f6009c77960066dff74c358b93b38b937c97d32319100ab0dac891c5f9 +SIZE (xpi/thunderbird-i18n-60.6.0/be.xpi) = 659078 +SHA256 (xpi/thunderbird-i18n-60.6.0/bg.xpi) = a3cf62cfa6b4f0670935990126326d497c15960c742eee1a885f4bfa6c2da6b6 +SIZE (xpi/thunderbird-i18n-60.6.0/bg.xpi) = 669317 +SHA256 (xpi/thunderbird-i18n-60.6.0/br.xpi) = 9c8247ed3c14bb8ebfb38f8f5501f97ddf15a916c7b7844126904df8198e9f53 +SIZE (xpi/thunderbird-i18n-60.6.0/br.xpi) = 580370 +SHA256 (xpi/thunderbird-i18n-60.6.0/ca.xpi) = a23084b8291f2057b896a7564681f82cac9778c4ba667b165ed80f3f20badcbd +SIZE (xpi/thunderbird-i18n-60.6.0/ca.xpi) = 591972 +SHA256 (xpi/thunderbird-i18n-60.6.0/cs.xpi) = b6f584a157e491c6173df03703aab77988009b249a169fce90e9484808101271 +SIZE (xpi/thunderbird-i18n-60.6.0/cs.xpi) = 611202 +SHA256 (xpi/thunderbird-i18n-60.6.0/cy.xpi) = 0b7fa642e87db99edcc685bef9e8480adf82eeb657576191e3ae6dfbfe5508b7 +SIZE (xpi/thunderbird-i18n-60.6.0/cy.xpi) = 586038 +SHA256 (xpi/thunderbird-i18n-60.6.0/da.xpi) = 37a8d398a413c20437e0d18c1db742a34dbaf2b661fe1255fe776ca461dd1ee0 +SIZE (xpi/thunderbird-i18n-60.6.0/da.xpi) = 570807 +SHA256 (xpi/thunderbird-i18n-60.6.0/de.xpi) = 3202aca3db9320d5ecb4a81169fde72a1b16683c42c5798db2a8e13ca75d090a +SIZE (xpi/thunderbird-i18n-60.6.0/de.xpi) = 582574 +SHA256 (xpi/thunderbird-i18n-60.6.0/dsb.xpi) = cce45aad09937f780a9b5224b231715b7a6ccaee28e50dbf08a0a08b2a5ba774 +SIZE (xpi/thunderbird-i18n-60.6.0/dsb.xpi) = 617568 +SHA256 (xpi/thunderbird-i18n-60.6.0/el.xpi) = d349c4c76f70ab9496a01828f31c870d7d77f9ba78ba797b29ea9646705f4245 +SIZE (xpi/thunderbird-i18n-60.6.0/el.xpi) = 694860 +SHA256 (xpi/thunderbird-i18n-60.6.0/en-GB.xpi) = 18668fb916fc191c0462fd515f7970944de7bbe4f1754fa0cf058a6b6b7359ec +SIZE (xpi/thunderbird-i18n-60.6.0/en-GB.xpi) = 553896 +SHA256 (xpi/thunderbird-i18n-60.6.0/en-US.xpi) = 956b171ca3fe28ccded4588a59c69404311642a55d7fbda6d45773abe72808c2 +SIZE (xpi/thunderbird-i18n-60.6.0/en-US.xpi) = 550794 +SHA256 (xpi/thunderbird-i18n-60.6.0/es-AR.xpi) = 9c9bd21d5043511c300ab609cb85cb60093c13733c34d3450cb8073f468942bc +SIZE (xpi/thunderbird-i18n-60.6.0/es-AR.xpi) = 595048 +SHA256 (xpi/thunderbird-i18n-60.6.0/es-ES.xpi) = c67abea8063609e97150b214e7013eacc42a196e278abe395a44684a363ed6be +SIZE (xpi/thunderbird-i18n-60.6.0/es-ES.xpi) = 492212 +SHA256 (xpi/thunderbird-i18n-60.6.0/et.xpi) = aa9b059a8cc523f51e8e61454834bd2fc503299c35dd4449186445824d3b46d2 +SIZE (xpi/thunderbird-i18n-60.6.0/et.xpi) = 570867 +SHA256 (xpi/thunderbird-i18n-60.6.0/eu.xpi) = f4dcead66028d53dab5c0110886cd85605420899ec8d3fd0eddb77d484861a76 +SIZE (xpi/thunderbird-i18n-60.6.0/eu.xpi) = 581384 +SHA256 (xpi/thunderbird-i18n-60.6.0/fi.xpi) = 6b07faa0c69bcece7a79e84ac9edfab8c5272e25f11e436c3ba829ff9584ff82 +SIZE (xpi/thunderbird-i18n-60.6.0/fi.xpi) = 575755 +SHA256 (xpi/thunderbird-i18n-60.6.0/fr.xpi) = f6cdde1b559b41871152dddd78c88bd67ff157c90c07d023294a657e2c84b5ad +SIZE (xpi/thunderbird-i18n-60.6.0/fr.xpi) = 608466 +SHA256 (xpi/thunderbird-i18n-60.6.0/fy-NL.xpi) = 7d7ce1c7a7e9b907981cab087c0fe5dac4ecbdf21c453da8b4e5a5e20d26819a +SIZE (xpi/thunderbird-i18n-60.6.0/fy-NL.xpi) = 593850 +SHA256 (xpi/thunderbird-i18n-60.6.0/ga-IE.xpi) = 28e4b2340c64ab1882252982f11e71e5e49ec1505bcc6d48f8a920158ca5b78d +SIZE (xpi/thunderbird-i18n-60.6.0/ga-IE.xpi) = 603506 +SHA256 (xpi/thunderbird-i18n-60.6.0/gd.xpi) = bd3d9742ce7ed03ab23228a78974ce4dfb0cba5bc9c2506e58d8c4e415921235 +SIZE (xpi/thunderbird-i18n-60.6.0/gd.xpi) = 599262 +SHA256 (xpi/thunderbird-i18n-60.6.0/gl.xpi) = faacd97275a7ea3809fae62a5669c73ee723a64bb8289315033b38ca3edb28cd +SIZE (xpi/thunderbird-i18n-60.6.0/gl.xpi) = 580343 +SHA256 (xpi/thunderbird-i18n-60.6.0/he.xpi) = dd1984baad88f2f8b890d5d53ec69fba651f7330ae4d27c4a498fac326a14b74 +SIZE (xpi/thunderbird-i18n-60.6.0/he.xpi) = 617142 +SHA256 (xpi/thunderbird-i18n-60.6.0/hr.xpi) = 7cccef9606f37597f878c771b5f7c6a79d154e82230a13d4809b56adb97ab030 +SIZE (xpi/thunderbird-i18n-60.6.0/hr.xpi) = 582238 +SHA256 (xpi/thunderbird-i18n-60.6.0/hsb.xpi) = 9ad9289a33bcda0470cf1beb0f1b7aaa99cb61b914be59268168951b6702e25a +SIZE (xpi/thunderbird-i18n-60.6.0/hsb.xpi) = 615132 +SHA256 (xpi/thunderbird-i18n-60.6.0/hu.xpi) = 0ca03d04cbf5416cf25083273dbd54b6743f2aea18203000ae27b5da4139c0e3 +SIZE (xpi/thunderbird-i18n-60.6.0/hu.xpi) = 615346 +SHA256 (xpi/thunderbird-i18n-60.6.0/hy-AM.xpi) = e3fc5da2f1c3bf99944e346936f83e728e272d85f129f881be777f3e3fe920a0 +SIZE (xpi/thunderbird-i18n-60.6.0/hy-AM.xpi) = 653530 +SHA256 (xpi/thunderbird-i18n-60.6.0/id.xpi) = 6b9aaa078d03d59b6710ecbc1b8e0592627ab9c987248c9a81885dd7b438f850 +SIZE (xpi/thunderbird-i18n-60.6.0/id.xpi) = 568861 +SHA256 (xpi/thunderbird-i18n-60.6.0/is.xpi) = 765772e3dc4cd567ceb7018c2f5d15fd72b4815d7df578ca6a36e7b350f89208 +SIZE (xpi/thunderbird-i18n-60.6.0/is.xpi) = 579047 +SHA256 (xpi/thunderbird-i18n-60.6.0/it.xpi) = 6c6c22f4ddb72b31de4e97a7ba8235c6a9906f26ea68d7252f150ee2567e8ed5 +SIZE (xpi/thunderbird-i18n-60.6.0/it.xpi) = 477499 +SHA256 (xpi/thunderbird-i18n-60.6.0/ja.xpi) = 2891877f8201f3cd62704d084f38e8dcd4dacd5cafdfa11798534904507864ac +SIZE (xpi/thunderbird-i18n-60.6.0/ja.xpi) = 653343 +SHA256 (xpi/thunderbird-i18n-60.6.0/kab.xpi) = 8d353a12fab7ce1c902ee29ddbf111da8edb6f12c34e268547fb11246920a5b7 +SIZE (xpi/thunderbird-i18n-60.6.0/kab.xpi) = 594014 +SHA256 (xpi/thunderbird-i18n-60.6.0/kk.xpi) = 61a264a72a03ab1d4621066d9c9d5f192efc83f00b3e51a2cacace8e230397bf +SIZE (xpi/thunderbird-i18n-60.6.0/kk.xpi) = 669231 +SHA256 (xpi/thunderbird-i18n-60.6.0/ko.xpi) = e7383df36a9856081fda2c465092da340196583237b02c707821b97bb553e155 +SIZE (xpi/thunderbird-i18n-60.6.0/ko.xpi) = 619730 +SHA256 (xpi/thunderbird-i18n-60.6.0/lt.xpi) = af20ec64cdfdbc9bd75ec8294cb77c0daddd52cb3563b60628a2fa6d2bb912ea +SIZE (xpi/thunderbird-i18n-60.6.0/lt.xpi) = 605441 +SHA256 (xpi/thunderbird-i18n-60.6.0/ms.xpi) = 618f34ab0f9e99c6fc6ac3b0a596e7a8eec6a45104d71f981b87037bbed5b079 +SIZE (xpi/thunderbird-i18n-60.6.0/ms.xpi) = 574308 +SHA256 (xpi/thunderbird-i18n-60.6.0/nb-NO.xpi) = 98ff29fe74e244565576000df9d568aab8840d21d29124099a7cc116bc2bf978 +SIZE (xpi/thunderbird-i18n-60.6.0/nb-NO.xpi) = 577003 +SHA256 (xpi/thunderbird-i18n-60.6.0/nl.xpi) = 5a8b3695701458a879e667fe9bad096bc99589418862989ee024620c062335d6 +SIZE (xpi/thunderbird-i18n-60.6.0/nl.xpi) = 583913 +SHA256 (xpi/thunderbird-i18n-60.6.0/nn-NO.xpi) = 50f34880e95bf1539cafb651bef9217ba5aec30a2e8544de5fd52affde74a8f6 +SIZE (xpi/thunderbird-i18n-60.6.0/nn-NO.xpi) = 576421 +SHA256 (xpi/thunderbird-i18n-60.6.0/pl.xpi) = 13e0af82c7e1ef1d4968b955a3af7a4e84c8bb4083f8f15d70513cc3a4d43254 +SIZE (xpi/thunderbird-i18n-60.6.0/pl.xpi) = 480724 +SHA256 (xpi/thunderbird-i18n-60.6.0/pt-BR.xpi) = fd01a828bfa2814ee5acf3b8295ed1642e62f3c6b0689d2595e6281ebd9c4d46 +SIZE (xpi/thunderbird-i18n-60.6.0/pt-BR.xpi) = 588835 +SHA256 (xpi/thunderbird-i18n-60.6.0/pt-PT.xpi) = 388198b83059bb21019ed6d0ecddf8ed0f3e8ab5487e23e19111de82646c01da +SIZE (xpi/thunderbird-i18n-60.6.0/pt-PT.xpi) = 593186 +SHA256 (xpi/thunderbird-i18n-60.6.0/rm.xpi) = c9b0f295c93f55479f17a19e4626e926f981877e769e432489bc818c162370bf +SIZE (xpi/thunderbird-i18n-60.6.0/rm.xpi) = 578384 +SHA256 (xpi/thunderbird-i18n-60.6.0/ro.xpi) = b88825b58f66623a1ac8087d34b75a90e4c95b9afaed15b9ae6a1fcc3d13f939 +SIZE (xpi/thunderbird-i18n-60.6.0/ro.xpi) = 584309 +SHA256 (xpi/thunderbird-i18n-60.6.0/ru.xpi) = 660023f25a355c2c51f07599b74eb109e5431b7c1efb2070a0a8c555290f12e3 +SIZE (xpi/thunderbird-i18n-60.6.0/ru.xpi) = 694703 +SHA256 (xpi/thunderbird-i18n-60.6.0/si.xpi) = 38d4116e95a816f0caf1c764a5cf0b39046408ee26298291fe4807b590e9374f +SIZE (xpi/thunderbird-i18n-60.6.0/si.xpi) = 647589 +SHA256 (xpi/thunderbird-i18n-60.6.0/sk.xpi) = 1fde33880caaa2bb99ec10cdc99721ae53e294dbcf17fb001cf9b8865019c0b4 +SIZE (xpi/thunderbird-i18n-60.6.0/sk.xpi) = 612217 +SHA256 (xpi/thunderbird-i18n-60.6.0/sl.xpi) = 6618cd146c3c6041fbbf8151822042ca78bf498b3519d23a111623847478a91d +SIZE (xpi/thunderbird-i18n-60.6.0/sl.xpi) = 589947 +SHA256 (xpi/thunderbird-i18n-60.6.0/sq.xpi) = 6b40e2c930d99e8f2f956be78f295110d8d2337599edf8e5719d09ef54353888 +SIZE (xpi/thunderbird-i18n-60.6.0/sq.xpi) = 593096 +SHA256 (xpi/thunderbird-i18n-60.6.0/sr.xpi) = cfff8b48bc1acba91ed39c8431453dc0f1b4a5616fcc642365c04d38c666fadf +SIZE (xpi/thunderbird-i18n-60.6.0/sr.xpi) = 641526 +SHA256 (xpi/thunderbird-i18n-60.6.0/sv-SE.xpi) = 6e74021d8eb1f2840df8a4bc5c802dba0c88926b60c0076719f3ef1a043eb273 +SIZE (xpi/thunderbird-i18n-60.6.0/sv-SE.xpi) = 594079 +SHA256 (xpi/thunderbird-i18n-60.6.0/tr.xpi) = 2998ae012642042b13b9ad135b9043608b464c9dc870b81fa9a5a324b7c7c89a +SIZE (xpi/thunderbird-i18n-60.6.0/tr.xpi) = 598009 +SHA256 (xpi/thunderbird-i18n-60.6.0/uk.xpi) = fcb969e529100ebac48d494dbe4a3106d331a896c37051730c8be48a847358e3 +SIZE (xpi/thunderbird-i18n-60.6.0/uk.xpi) = 684154 +SHA256 (xpi/thunderbird-i18n-60.6.0/vi.xpi) = 216947433e8d192483126a32043ad6f6bbaab4216f3106c9425afcf563405938 +SIZE (xpi/thunderbird-i18n-60.6.0/vi.xpi) = 637188 +SHA256 (xpi/thunderbird-i18n-60.6.0/zh-CN.xpi) = 82c53502823e8a4e09af2057ca66e8b90cab0dac633cb0fcaf4ecea20666fb7e +SIZE (xpi/thunderbird-i18n-60.6.0/zh-CN.xpi) = 626283 +SHA256 (xpi/thunderbird-i18n-60.6.0/zh-TW.xpi) = f2b767bd23b8ef3333ed5056dcae8e98b6f60e552f83d775515b4afea5297435 +SIZE (xpi/thunderbird-i18n-60.6.0/zh-TW.xpi) = 626189 Index: branches/2019Q1 =================================================================== --- branches/2019Q1 (revision 495784) +++ branches/2019Q1 (revision 495785) Property changes on: branches/2019Q1 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r495784