Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package seamonkey for openSUSE:Factory checked in at 2021-05-18 18:27:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/seamonkey (Old) and /work/SRC/openSUSE:Factory/.seamonkey.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seamonkey" Tue May 18 18:27:22 2021 rev:2 rq:894071 version:2.53.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/seamonkey/seamonkey.changes 2021-04-29 01:39:16.098652249 +0200 +++ /work/SRC/openSUSE:Factory/.seamonkey.new.2988/seamonkey.changes 2021-05-18 18:27:53.334586263 +0200 @@ -2 +2,33 @@ -Mon Apr 27 11:54:30 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> +Tue May 18 07:04:59 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> + +- add patch seamonkey-rustc-bootstrap.patch adapted from + https://bugzilla.mozilla.org/show_bug.cgi?id=1710154 to enable + compilation with rust >= 1.50.0 + +------------------------------------------------------------------- +Tue May 05 18:36:24 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> + +- update GNU Makefile from upstream + https://bugzilla.mozilla.org/show_bug.cgi?id=1692516#c8 -- besides + some general improvements, this Makefile now allows the language + packs for the bundled extensions to be split off again if desired + (though our spec file does not yet take advantage of this) + +------------------------------------------------------------------- +Tue May 04 08:19:42 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> + +- use system libraries for bz2, webp, and icu to reduce package size + and because this is probably more secure (since our own libraries + are probably updated more often than the ones bundled with + SeaMonkey) + +------------------------------------------------------------------- +Wed Apr 28 07:59:04 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> + +- add upstream patch seamonkey-websocketloop.patch from + https://bugzilla.mozilla.org/attachment.cgi?id=9218795&action=diff + to solve critical performance issue + https://bugzilla.mozilla.org/show_bug.cgi?id=1633339 + +------------------------------------------------------------------- +Tue Apr 27 11:54:30 UTC 2021 - Tristan Miller <psychon...@nothingisreal.com> New: ---- seamonkey-rustc-bootstrap.patch seamonkey-websocketloop.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ seamonkey.spec ++++++ --- /var/tmp/diff_new_pack.ned8hC/_old 2021-05-18 18:27:55.206578149 +0200 +++ /var/tmp/diff_new_pack.ned8hC/_new 2021-05-18 18:27:55.210578131 +0200 @@ -25,10 +25,18 @@ BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: hunspell-devel +# Using system AV1 decoder depends on pending patch from +# https://bugzilla.mozilla.org/show_bug.cgi?id=1559213 +#BuildRequires: dav1d5-devel BuildRequires: libidl-devel BuildRequires: libiw-devel BuildRequires: libnotify-devel BuildRequires: libproxy-devel +#BuildRequires: libvpx-devel # Compile errors with 1.10.0 +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200 && 0%{?is_opensuse} +BuildRequires: libwebp-devel >= 1.0.0 +BuildRequires: libicu-devel >= 63.1 +%endif BuildRequires: makeinfo BuildRequires: memory-constraints BuildRequires: python-devel @@ -78,6 +86,8 @@ Patch3: mozilla-ntlm-full-path.patch Patch4: seamonkey-lto.patch Patch5: seamonkey-man-page.patch +Patch6: seamonkey-websocketloop.patch +Patch7: seamonkey-rustc-bootstrap.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: /bin/sh coreutils Provides: seamonkey-mail = %{version} @@ -210,6 +220,8 @@ %patch3 -p2 %patch4 -p2 %patch5 -p0 +%patch6 -p1 +%patch7 -p1 cat << EOF > .mozconfig mk_add_options MOZILLA_OFFICIAL=1 @@ -235,11 +247,24 @@ %endif ac_add_options --disable-debug + ac_add_options --with-system-nspr ac_add_options --with-system-nss ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200 && 0%{?is_opensuse} +ac_add_options --with-system-webp +ac_add_options --with-system-icu +%endif + +# Compile errors with system libvpx-1.10.0 +#ac_add_options --with-system-libvpx + +# Using system AV1 decoder depends on pending patch from +# https://bugzilla.mozilla.org/show_bug.cgi?id=1559213 +# ac_add_options --with-system-av1 -# Mozilla's internal JPEG library is used, probably because of the "turbo" patches +# Mozilla's internal JPEG library is used because of the "turbo" patches # that make it more efficient than the stock system libjpeg: # https://bugzilla.mozilla.org/show_bug.cgi?id=573948 #ac_add_options --with-system-jpeg ++++++ seamonkey-GNUmakefile ++++++ --- /var/tmp/diff_new_pack.ned8hC/_old 2021-05-18 18:27:55.262577907 +0200 +++ /var/tmp/diff_new_pack.ned8hC/_new 2021-05-18 18:27:55.262577907 +0200 @@ -25,7 +25,7 @@ # make locales # # to provide all the shipped locales (will appear in a form of langpack extensions). -# If irc and/or calendar included, they will be prepared properly. +# If irc and/or calendar are built, their data will be included too. # (See below for more details about locales target). # @@ -91,18 +91,15 @@ # LOCALES # # +# The target `locales' creates all the needed langpacks. +# # By default, all available locales will be used. You can change it # by overriding SHIPPED_LOCALES variable on the command line. # -# The target `locales' performs all the needed work. It depends on -# `locales-all' and `repacks'. First builds all needed langpacks, -# second checks whether irc and/or calendar extensions are built -# and prepares them by required additional locales. -# -# Some internal targets might be useful too, fe. `make locale-LANG' -# to create one (or several) langpack separately. +# Additionally, you can use `make locale-LANG' to create one (or several) +# langpack separately. # -# For example, to build all with `fr' and 'it' only, use: +# For example, to build `fr' and 'it' only, use: # # make locales SHIPPED_LOCALES="fr it" # @@ -110,7 +107,7 @@ # # make locale-ru # -# Use `clear-locales' and `clear-repacks' for clearing. +# Use `clear-locales' for clearing. # # # NOTE! NOTE! NOTE! @@ -120,7 +117,7 @@ # It is better to use `-j1' explicitly (`make -j1 locales') to avoid issues. # -.PHONY: locales locales-all repacks clear-locales clear-repacks dictionaries clear-dictionaries +.PHONY: locales clear-locales dictionaries clear-dictionaries drop_extra := $(if $(or $(filter Windows_NT,$(OS)),$(filter-out Darwin,$(shell uname))),ja-JP-mac,ja) @@ -128,7 +125,7 @@ SHIPPED_LOCALES := $(shell while read loc rest; do echo $$loc; done <comm/suite/locales/shipped-locales) SHIPPED_LOCALES := $(filter-out en-US $(drop_extra),$(sort $(SHIPPED_LOCALES))) -locales-all: $(SHIPPED_LOCALES:%=locale-%) +locales: $(SHIPPED_LOCALES:%=locale-%) PACKAGE_MANIFEST = $(OBJDIR)/comm/suite/installer/package-manifest @@ -146,9 +143,24 @@ $(stage)-%: $(MAKE) -C $(OBJDIR)/comm/suite/locales langpack-$* +# Combine extensions data with the main localization stuff and leave only one manifest file + for manifest in `find $@/extensions $@/../chatzilla-$* -name "*.manifest" -print` ; \ + do \ + while read keyword name lang path rest ; \ + do \ + [ "$$keyword" = locale ] || continue ; \ + [ "$$lang" = "$*" ] || continue ; \ + [ "$${path%/*/}/$$name/" = "$$path" ] || continue ; \ + tar -C $${manifest%/*}/$${path%/*/} -chf - $$name | tar -C $@/chrome/$*/locale/$* -xf - ; \ + echo "locale $$name $* $*/locale/$*/$$name/$${rest:+ $$rest}" >> $@/chrome/$*.manifest ; \ + done < $$manifest ; \ + done + + sed 's,$*/locale/$*,chrome/&,' $@/chrome/$*.manifest | sort > $@/chrome.manifest + rm -f $@/chrome/$*.manifest # Spanish locales other than es-ES are from Latam, where the es-AR langpack is most preferred - [ $* = es-AR ] && find $@ -name "*.manifest" -exec sed -i '/^locale/ s/es-AR/es-*/' {} \; || : + [ $* = es-AR ] && sed -i '/^locale/ s/es-AR/es-*/' $@/chrome.manifest || : locale-%: REL_NAME = extensions/langpack-$*@seamonkey.mozilla.org.xpi @@ -160,7 +172,7 @@ locale-%: $(stage)-% $(PACKAGE_MANIFEST) rm -f $(DEST_NAME) - cd $<; zip -0 -D -X $(DEST_NAME) chrome.manifest install.rdf chrome/$*.manifest + cd $<; zip -0 -D -X $(DEST_NAME) chrome.manifest install.rdf cd $<; zip -g -r -9 -D -X $(DEST_NAME) chrome/$* fgrep $(manifest_entry) $(PACKAGE_MANIFEST) || echo $(manifest_entry) >>$(PACKAGE_MANIFEST) @@ -171,71 +183,10 @@ # -# REPACKS -# - -ext_dir := $(OBJDIR)/dist/bin/extensions - -CAL_NAME = {e2fda1a4-762b-4020-b5ad-a41df1933103} -IRC_NAME = {59c81df5-4b7a-477b-912d-4e0fdf64e5f2} - -repack-$(CAL_NAME): LOCALE_PATH = $(OBJDIR)/dist/xpi-stage/locale-*/extensions/$(CAL_NAME) -repack-$(CAL_NAME): MANIFEST_FILE = chrome.manifest - -repack-$(IRC_NAME): LOCALE_PATH = $(OBJDIR)/dist/xpi-stage/chatzilla-* -repack-$(IRC_NAME): MANIFEST_FILE = chrome/chatzilla.manifest - -repack-%: tmp_dir = $(OBJDIR)/tmp-$* -repack-%: all_manifests = $(foreach loc,$(SHIPPED_LOCALES),$(subst *,$(loc),$(LOCALE_PATH)/$(MANIFEST_FILE))) - -repack-cal: repack-$(CAL_NAME) -repack-irc: repack-$(IRC_NAME) - - -define _ADD_LOCALE -while read line; \ -do \ - [ "$${line#locale}" = "$$line" ] && continue; \ - tar -C $(dir $(manifest)) -chf - $${line##* } | tar -C $(dir $(tmp_dir)/$(MANIFEST_FILE)) -xf -; \ - echo $$line >>$(tmp_dir)/$(MANIFEST_FILE); \ -done < $(manifest) - -endef # do not remove the blank line! - - -repack-%: $(ext_dir)/%.xpi $(SHIPPED_LOCALES:%=$(stage)-%) - mkdir $(tmp_dir) - cd $(tmp_dir); unzip $< - - $(foreach manifest,$(wildcard $(all_manifests)),$(_ADD_LOCALE)) - mf=$(tmp_dir)/$(MANIFEST_FILE); sort $$mf >$$mf.new && mv -f $$mf.new $$mf - - [ -f $<.orig ] && rm -f $< || mv -f $< $<.orig - cd $(tmp_dir); zip -r -9 -D -X $< . - rm -rf $(tmp_dir) - - -clear-repacks: - for ext in $(CAL_NAME) $(IRC_NAME); \ - do \ - [ -f $(ext_dir)/$$ext.xpi.orig ] && mv -f $(ext_dir)/$$ext.xpi.orig $(ext_dir)/$$ext.xpi || : ; \ - done - - -ext_deps := $(patsubst $(ext_dir)/%.xpi,repack-%,$(wildcard $(ext_dir)/$(CAL_NAME).xpi $(ext_dir)/$(IRC_NAME).xpi)) -ext_deps := $(strip $(ext_deps)) - -repacks: $(ext_deps) - - -locales: locales-all repacks - - -# # Dictionaries # # It is better to use system dictionaries, specifying directory path for them -# by "spellchecker.dictionary_path" preference (or even use symlink if possible). +# by "spellchecker.dictionary_path" preference (or even use symlink when possible). # DICT_DEST := $(OBJDIR)/dist/bin/dictionaries ++++++ seamonkey-rustc-bootstrap.patch ++++++ # HG changeset patch # User Mike Hommey <mh+mozi...@glandium.org> # Date 1613598448 0 # Node ID b182a3466285a41aa7393af0359eeee16be1350a # Parent 83d58b5de13b57d482f6e5e3744c98ca96b6669c Bug 1670538 - Use an allow-list in RUSTC_BOOTSTRAP for rustc >= 1.50.0. r=firefox-build-system-reviewers,andi,sheehan,mhentges While we could change qcms, encoding_rs and packed_simd to not emit RUSTC_BOOTSTRAP on newer versions of rust, like we do for gkrust-shared, it's not worth the effort (especially for those that are vendored). Differential Revision: https://phabricator.services.mozilla.com/D105423 diff --git a/config/rules.mk b/config/rules.mk --- a/config/rules.mk +++ b/config/rules.mk @@ -866,6 +866,17 @@ endif endif +ifndef RUSTC_BOOTSTRAP +ifeq (,$(filter 1.47.% 1.48.% 1.49.%,$(RUSTC_VERSION))) +# RUSTC_BOOTSTRAP := gkrust_shared,qcms for later +RUSTC_BOOTSTRAP := gkrust_shared +ifdef MOZ_RUST_SIMD +RUSTC_BOOTSTRAP := $(RUSTC_BOOTSTRAP),encoding_rs,packed_simd +endif +export RUSTC_BOOTSTRAP +endif +endif + rustflags_override = RUSTFLAGS='$(MOZ_RUST_DEFAULT_FLAGS) $(RUSTFLAGS)' ifdef MOZ_MSVCBITS diff --git a/toolkit/library/rust/shared/build.rs.1670538.later b/toolkit/library/rust/shared/build.rs.1670538.later new file mode 100644 --- /dev/null +++ b/toolkit/library/rust/shared/build.rs.1670538.later @@ -0,0 +1,16 @@ +--- build.rs ++++ build.rs +@@ -17,12 +17,12 @@ fn main() { + } else if std::env::var("MOZ_AUTOMATION").is_ok() { + panic!("Builds on automation must use a version of rust for which we know how to hook OOM: want < {}, have {}", + max_oom_hook_version, ver); + } + + // This is a rather awful thing to do, but we're only doing it on + // versions of rustc that are not going to change the unstable APIs + // we use from under us, all being already released or beta. +- if bootstrap { ++ if bootstrap && ver < Version::parse("1.50.0").unwrap() { + println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1"); + } + } ++++++ seamonkey-websocketloop.patch ++++++ # HG changeset patch # User Dmitry Butskoy <dmi...@butskoy.name> # Date 1619303931 -7200 # Parent f113610c2ced0b266dbad3626b7f43580d412d15 Bug 1633339 - Fix infinite loop when network changes and e10s is disabled. r=frg a=frg diff --git a/netwerk/protocol/websocket/WebSocketChannel.cpp b/netwerk/protocol/websocket/WebSocketChannel.cpp --- a/netwerk/protocol/websocket/WebSocketChannel.cpp +++ b/netwerk/protocol/websocket/WebSocketChannel.cpp @@ -1265,52 +1265,54 @@ WebSocketChannel::Observe(nsISupports *s if (!mSocketThread) { // there has not been an asyncopen yet on the object and then we need // no ping. LOG(("WebSocket: early object, no ping needed")); } else { // Next we check mDataStarted, which we need to do on mTargetThread. if (!IsOnTargetThread()) { mTargetThread->Dispatch( - NewRunnableMethod("net::WebSocketChannel::OnNetworkChanged", + NewRunnableMethod("net::WebSocketChannel::OnNetworkChangedTargetThread", this, - &WebSocketChannel::OnNetworkChanged), + &WebSocketChannel::OnNetworkChangedTargetThread), NS_DISPATCH_NORMAL); } else { - nsresult rv = OnNetworkChanged(); + nsresult rv = OnNetworkChangedTargetThread(); if (NS_FAILED(rv)) { - LOG(("WebSocket: OnNetworkChanged failed (%08" PRIx32 ")", + LOG(("WebSocket: OnNetworkChangedTargetThread failed (%08" PRIx32 ")", static_cast<uint32_t>(rv))); } } } } } return NS_OK; } nsresult +WebSocketChannel::OnNetworkChangedTargetThread() +{ + LOG(("WebSocketChannel::OnNetworkChangedTargetThread() - on target thread %p", this)); + + if (!mDataStarted) { + LOG(("WebSocket: data not started yet, no ping needed")); + return NS_OK; + } + + return mSocketThread->Dispatch( + NewRunnableMethod("net::WebSocketChannel::OnNetworkChanged", + this, + &WebSocketChannel::OnNetworkChanged), + NS_DISPATCH_NORMAL); +} + +nsresult WebSocketChannel::OnNetworkChanged() { - if (IsOnTargetThread()) { - LOG(("WebSocketChannel::OnNetworkChanged() - on target thread %p", this)); - - if (!mDataStarted) { - LOG(("WebSocket: data not started yet, no ping needed")); - return NS_OK; - } - - return mSocketThread->Dispatch( - NewRunnableMethod("net::WebSocketChannel::OnNetworkChanged", - this, - &WebSocketChannel::OnNetworkChanged), - NS_DISPATCH_NORMAL); - } - MOZ_ASSERT(OnSocketThread(), "not on socket thread"); LOG(("WebSocketChannel::OnNetworkChanged() - on socket thread %p", this)); if (mPingOutstanding) { // If there's an outstanding ping that's expected to get a pong back // we let that do its thing. LOG(("WebSocket: pong already pending")); diff --git a/netwerk/protocol/websocket/WebSocketChannel.h b/netwerk/protocol/websocket/WebSocketChannel.h --- a/netwerk/protocol/websocket/WebSocketChannel.h +++ b/netwerk/protocol/websocket/WebSocketChannel.h @@ -146,16 +146,17 @@ private: void EnqueueOutgoingMessage(nsDeque &aQueue, OutboundMessage *aMsg); void PrimeNewOutgoingMessage(); void DeleteCurrentOutGoingMessage(); void GeneratePong(uint8_t *payload, uint32_t len); void GeneratePing(); + MOZ_MUST_USE nsresult OnNetworkChangedTargetThread(); MOZ_MUST_USE nsresult OnNetworkChanged(); MOZ_MUST_USE nsresult StartPinging(); void BeginOpen(bool aCalledFromAdmissionManager); void BeginOpenInternal(); MOZ_MUST_USE nsresult HandleExtensions(); MOZ_MUST_USE nsresult SetupRequest(); MOZ_MUST_USE nsresult ApplyForAdmission();