Accepting request 894069 from mozilla
Add patch to enable compilation with rust >= 1.50.0 OBS-URL: https://build.opensuse.org/request/show/894069 OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/seamonkey?expand=0&rev=5
This commit is contained in:
parent
75a2c77b5a
commit
d31abd614c
@ -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 @@ distclean: clean
|
||||
# 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 @@ distclean: clean
|
||||
#
|
||||
# make locale-ru
|
||||
#
|
||||
# Use `clear-locales' and `clear-repacks' for clearing.
|
||||
# Use `clear-locales' for clearing.
|
||||
#
|
||||
#
|
||||
# NOTE! NOTE! NOTE!
|
||||
@ -120,7 +117,7 @@ distclean: clean
|
||||
# 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 @@ drop_extra := $(if $(or $(filter Windows_NT,$(OS)),$(filter-out Darwin,$(shell u
|
||||
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 := $(OBJDIR)/dist/xpi-stage/locale
|
||||
$(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-%: manifest_entry = @RESPATH@/$(REL_NAME)
|
||||
|
||||
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)
|
||||
|
||||
@ -170,72 +182,11 @@ clear-locales:
|
||||
rm -f $(OBJDIR)/dist/bin/extensions/langpack-*@seamonkey.mozilla.org.xpi
|
||||
|
||||
|
||||
#
|
||||
# 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
|
||||
|
55
seamonkey-rustc-bootstrap.patch
Normal file
55
seamonkey-rustc-bootstrap.patch
Normal file
@ -0,0 +1,55 @@
|
||||
# HG changeset patch
|
||||
# User Mike Hommey <mh+mozilla@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");
|
||||
+ }
|
||||
+ }
|
104
seamonkey-websocketloop.patch
Normal file
104
seamonkey-websocketloop.patch
Normal file
@ -0,0 +1,104 @@
|
||||
# HG changeset patch
|
||||
# User Dmitry Butskoy <dmitry@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();
|
@ -1,5 +1,37 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 27 11:54:30 UTC 2021 - Tristan Miller <psychonaut@nothingisreal.com>
|
||||
Tue May 18 07:04:59 UTC 2021 - Tristan Miller <psychonaut@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 <psychonaut@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 <psychonaut@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 <psychonaut@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 <psychonaut@nothingisreal.com>
|
||||
|
||||
- requested inclusion in Leap 15.2:
|
||||
https://bugzilla.opensuse.org/show_bug.cgi?id=1185349
|
||||
|
@ -25,10 +25,18 @@ BuildRequires: dbus-1-glib-devel
|
||||
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 @@ Patch2: mozilla-language.patch
|
||||
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 @@ cp %{SOURCE12} GNUmakefile
|
||||
%patch3 -p2
|
||||
%patch4 -p2
|
||||
%patch5 -p0
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
cat << EOF > .mozconfig
|
||||
mk_add_options MOZILLA_OFFICIAL=1
|
||||
@ -235,11 +247,24 @@ ac_add_options --disable-elf-hack
|
||||
%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
|
||||
|
||||
# Mozilla's internal JPEG library is used, probably because of the "turbo" patches
|
||||
# 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 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
|
||||
|
Loading…
Reference in New Issue
Block a user