thunderbird: update to 115.0

This commit is contained in:
Pascal Huber 2023-04-26 12:09:15 +02:00 committed by classabbyamp
parent 8b189768f2
commit 22bcc624cd
12 changed files with 54 additions and 374 deletions

View file

@ -1,15 +0,0 @@
Author: Rasmus Thomsen <oss@cogitri.dev>
Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones
(linux/if.h), leading to redefinitions. We need to include net/if.h before
linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt
Upstream: No
--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:32.359751046 +0200
+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:37.856343751 +0200
@@ -31,6 +31,7 @@
*/
#if defined(LINUX)
+#include <net/if.h>
#include "addrs-netlink.h"
#include <csi_platform.h>
#include <assert.h>

View file

@ -14,5 +14,5 @@
typedef double __double_t;
+#endif
typedef __double_t double_t;
typedef float __float_t;
/*

View file

@ -12,7 +12,7 @@ index 53fc3c9937f7..b23771ab80fa 100644
namespace mozilla {
@@ -14,6 +15,10 @@ namespace mozilla {
@@ -14,5 +15,9 @@ namespace mozilla {
bool FlacDecoder::IsEnabled() {
#ifdef MOZ_FFVPX
return StaticPrefs::media_flac_enabled();
@ -21,5 +21,4 @@ index 53fc3c9937f7..b23771ab80fa 100644
+ return StaticPrefs::media_flac_enabled() &&
+ platform->SupportsMimeType("audio/flac"_ns);
#else
// Until bug 1295886 is fixed.
return false;

View file

@ -1,17 +1,20 @@
$OpenBSD: patch-config_makefiles_rust_mk,v 1.6 2021/01/26 15:52:58 landry Exp $
This patch is a modified version of the OpenBSD patch
use lto=thin to reduce memory pressure when building gkrust
try to consume less memory when linking gkrust with debug symbols ?
openbsd patch: https://github.com/openbsd/ports/blob/master/mail/mozilla-thunderbird/patches/patch-config_makefiles_rust_mk
https://bugzilla.mozilla.org/show_bug.cgi?id=1644409
https://bugzilla.mozilla.org/show_bug.cgi?id=1640982
Index: config/makefiles/rust.mk
--- a/config/makefiles/rust.mk.orig
+++ a/config/makefiles/rust.mk
@@ -70,7 +70,8 @@ ifndef MOZ_DEBUG_RUST
# gkrust_gtest. And not when doing cross-language LTO.
ifndef MOZ_LTO_RUST_CROSS
---
diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
index a243ee5f7f..89593f1fe1 100644
--- a/config/makefiles/rust.mk
+++ b/config/makefiles/rust.mk
@@ -90,7 +90,8 @@ ifndef rustflags_sancov
# Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
ifndef MOZ_CODE_COVERAGE
ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
-cargo_rustc_flags += -Clto
-cargo_rustc_flags += -Clto$(if $(filter full,$(MOZ_LTO_RUST_CROSS)),=fat)
+cargo_rustc_flags += -Clto=thin
+export CARGO_PROFILE_RELEASE_LTO=thin
endif

View file

@ -1,14 +1,16 @@
--- a/xpcom/base/nsMemoryReporterManager.cpp 2019-03-19 17:12:20.844810044 +0100
+++ b/xpcom/base/nsMemoryReporterManager.cpp 2019-03-19 17:13:32.505133615 +0100
@@ -123,6 +123,7 @@
return GetProcSelfSmapsPrivate(aN);
diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
index 30bc60e01a..caf9f740d2 100644
--- a/xpcom/base/nsMemoryReporterManager.cpp
+++ b/xpcom/base/nsMemoryReporterManager.cpp
@@ -127,6 +127,7 @@ using namespace dom;
return GetProcSelfSmapsPrivate(aN, aPid);
}
+#ifdef __GLIBC__
# ifdef HAVE_MALLINFO
# define HAVE_SYSTEM_HEAP_REPORTER 1
static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
@@ -142,6 +143,7 @@
[[nodiscard]] static nsresult SystemHeapSize(int64_t* aSizeOut) {
@@ -146,6 +147,7 @@ using namespace dom;
return NS_OK;
}
# endif
@ -16,16 +18,16 @@
#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
defined(__OpenBSD__) || defined(__FreeBSD_kernel__)
@@ -642,6 +644,7 @@
@@ -653,6 +655,7 @@ static bool InSharedRegion(mach_vm_address_t aAddr, cpu_type_t aType) {
return NS_OK;
}
+#ifdef __GLIBC__
# define HAVE_SYSTEM_HEAP_REPORTER 1
// Windows can have multiple separate heaps. During testing there were multiple
// heaps present but the non-default ones had sizes no more than a few 10s of
@@ -698,6 +701,7 @@
*aSizeOut = heapsSize;
// Windows can have multiple separate heaps, but we should not touch non-default
// heaps because they may be destroyed at anytime while we hold a handle. So we
@@ -685,6 +688,7 @@ static bool InSharedRegion(mach_vm_address_t aAddr, cpu_type_t aType) {
*aSizeOut = heapSize;
return NS_OK;
}
+#endif // __GLIBC__

View file

@ -1,32 +0,0 @@
Patch-Source: https://github.com/mozilla/mp4parse-rust/commit/8d58b2d5fc7f552d585964354d8269bcca3d9251
--
From 8d58b2d5fc7f552d585964354d8269bcca3d9251 Mon Sep 17 00:00:00 2001
From: Matthew Gregan <kinetik@flim.org>
Date: Thu, 16 Jun 2022 13:54:02 +1200
Subject: [PATCH] Fix `unstable-name-collisions` warning by using fully
qualified path.
---
mp4parse/src/lib.rs | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/mp4parse/src/lib.rs b/mp4parse/src/lib.rs
index 567ee21d..4f3d7153 100644
--- a/third_party/rust/mp4parse/src/lib.rs
+++ b/third_party/rust/mp4parse/src/lib.rs
@@ -3506,8 +3506,13 @@ macro_rules! impl_mul {
type Output = $output;
fn mul(self, rhs: $rhs) -> Self::Output {
- static_assertions::const_assert!(<$output>::MAX <= <$inner>::MAX as u64);
- static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
+ static_assertions::const_assert!(
+ <$output as UpperBounded>::MAX <= <$inner>::MAX as u64
+ );
+ static_assertions::const_assert!(
+ <$lhs as UpperBounded>::MAX * <$rhs as UpperBounded>::MAX
+ <= <$output as UpperBounded>::MAX
+ );
let lhs: $inner = self.get().into();
let rhs: $inner = rhs.get().into();

View file

@ -1,238 +0,0 @@
Patch-Source: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267709
Patch-Source: https://hg.mozilla.org/mozilla-central/rev/f54162b2c1f2fe52c6137ab2c3469a1944f58b27
--- a/xpcom/idl-parser/xpidl/xpidl.py
+++ b/xpcom/idl-parser/xpidl/xpidl.py
@@ -1633,13 +1633,13 @@ class IDLParser(object):
t_ignore = " \t"
def t_multilinecomment(self, t):
- r"/\*(?s).*?\*/"
+ r"/\*(\n|.)*?\*/"
t.lexer.lineno += t.value.count("\n")
if t.value.startswith("/**"):
self._doccomments.append(t.value)
def t_singlelinecomment(self, t):
- r"(?m)//.*?$"
+ r"//[^\n]*"
def t_IID(self, t):
return t
@@ -1652,7 +1652,7 @@ class IDLParser(object):
return t
def t_LCDATA(self, t):
- r"(?s)%\{[ ]*C\+\+[ ]*\n(?P<cdata>.*?\n?)%\}[ ]*(C\+\+)?"
+ r"%\{[ ]*C\+\+[ ]*\n(?P<cdata>(\n|.)*?\n?)%\}[ ]*(C\+\+)?"
t.type = "CDATA"
t.value = t.lexer.lexmatch.group("cdata")
t.lexer.lineno += t.value.count("\n")
# HG changeset patch
# User ahochheiden <ahochheiden@mozilla.com>
# Date 1654151264 0
# Node ID f54162b2c1f2fe52c6137ab2c3469a1944f58b27
# Parent 6e7776492240c27732840d65a33dcc440fa1aba0
Bug 1769631 - Remove 'U' from 'mode' parameters for various 'open' calls to ensure Python3.11 compatibility r=firefox-build-system-reviewers,glandium
The 'U' flag represents "universal newline". It has been deprecated
since Python3.3. Since then "universal newline" is the default when a
file is opened in text mode (not bytes). In Python3.11 using the 'U'
flag throws errors. There should be no harm in removing 'U' from 'open'
everywhere it is used, and doing allows the use of Python3.11.
For more reading see: https://docs.python.org/3.11/whatsnew/3.11.html#changes-in-the-python-api
Differential Revision: https://phabricator.services.mozilla.com/D147721
diff --git a/dom/base/usecounters.py b/dom/base/usecounters.py
--- a/dom/base/usecounters.py
+++ b/dom/base/usecounters.py
@@ -3,17 +3,17 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import collections
import re
def read_conf(conf_filename):
# Can't read/write from a single StringIO, so make a new one for reading.
- stream = open(conf_filename, "rU")
+ stream = open(conf_filename, "r")
def parse_counters(stream):
for line_num, line in enumerate(stream):
line = line.rstrip("\n")
if not line or line.startswith("//"):
# empty line or comment
continue
m = re.match(r"method ([A-Za-z0-9]+)\.([A-Za-z0-9]+)$", line)
diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
--- a/python/mozbuild/mozbuild/action/process_define_files.py
+++ b/python/mozbuild/mozbuild/action/process_define_files.py
@@ -31,17 +31,17 @@ def process_define_file(output, input):
config = PartialConfigEnvironment(topobjdir)
if mozpath.basedir(
path, [mozpath.join(topsrcdir, "js/src")]
) and not config.substs.get("JS_STANDALONE"):
config = PartialConfigEnvironment(mozpath.join(topobjdir, "js", "src"))
- with open(path, "rU") as input:
+ with open(path, "r") as input:
r = re.compile(
"^\s*#\s*(?P<cmd>[a-z]+)(?:\s+(?P<name>\S+)(?:\s+(?P<value>\S+))?)?", re.U
)
for l in input:
m = r.match(l)
if m:
cmd = m.group("cmd")
name = m.group("name")
diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
--- a/python/mozbuild/mozbuild/backend/base.py
+++ b/python/mozbuild/mozbuild/backend/base.py
@@ -267,17 +267,17 @@ class BuildBackend(LoggingMixin):
If an exception is raised, |mach build| will fail with a
non-zero exit code.
"""
self._write_purgecaches(config)
return status
@contextmanager
- def _write_file(self, path=None, fh=None, readmode="rU"):
+ def _write_file(self, path=None, fh=None, readmode="r"):
"""Context manager to write a file.
This is a glorified wrapper around FileAvoidWrite with integration to
update the summary data on this instance.
Example usage:
with self._write_file('foo.txt') as fh:
diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
--- a/python/mozbuild/mozbuild/preprocessor.py
+++ b/python/mozbuild/mozbuild/preprocessor.py
@@ -526,17 +526,17 @@ class Preprocessor:
if not options.output:
raise Preprocessor.Error(
self, "--depend doesn't work with stdout", None
)
depfile = get_output_file(options.depend)
if args:
for f in args:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
self.processFile(input=input, output=out)
if depfile:
mk = Makefile()
mk.create_rule([six.ensure_text(options.output)]).add_dependencies(
self.includes
)
mk.dump(depfile)
depfile.close()
@@ -855,17 +855,17 @@ class Preprocessor:
self.checkLineNumbers = False
if isName:
try:
args = _to_text(args)
if filters:
args = self.applyFilters(args)
if not os.path.isabs(args):
args = os.path.join(self.curdir, args)
- args = io.open(args, "rU", encoding="utf-8")
+ args = io.open(args, "r", encoding="utf-8")
except Preprocessor.Error:
raise
except Exception:
raise Preprocessor.Error(self, "FILE_NOT_FOUND", _to_text(args))
self.checkLineNumbers = bool(
re.search("\.(js|jsm|java|webidl)(?:\.in)?$", args.name)
)
oldFile = self.context["FILE"]
@@ -909,17 +909,17 @@ class Preprocessor:
def do_error(self, args):
raise Preprocessor.Error(self, "Error: ", _to_text(args))
def preprocess(includes=[sys.stdin], defines={}, output=sys.stdout, marker="#"):
pp = Preprocessor(defines=defines, marker=marker)
for f in includes:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
pp.processFile(input=input, output=output)
return pp.includes
# Keep this module independently executable.
if __name__ == "__main__":
pp = Preprocessor()
pp.handleCommandLine(None, True)
diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -231,17 +231,17 @@ class FileAvoidWrite(BytesIO):
enabled by default because it a) doesn't make sense for binary files b)
could add unwanted overhead to calls.
Additionally, there is dry run mode where the file is not actually written
out, but reports whether the file was existing and would have been updated
still occur, as well as diff capture if requested.
"""
- def __init__(self, filename, capture_diff=False, dry_run=False, readmode="rU"):
+ def __init__(self, filename, capture_diff=False, dry_run=False, readmode="r"):
BytesIO.__init__(self)
self.name = filename
assert type(capture_diff) == bool
assert type(dry_run) == bool
assert "r" in readmode
self._capture_diff = capture_diff
self._write_to_file = not dry_run
self.diff = None
diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
--- a/python/mozbuild/mozpack/files.py
+++ b/python/mozbuild/mozpack/files.py
@@ -549,17 +549,17 @@ class PreprocessedFile(BaseFile):
self.defines = defines
self.extra_depends = list(extra_depends or [])
self.silence_missing_directive_warnings = silence_missing_directive_warnings
def inputs(self):
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
with _open(os.devnull, "w") as output:
pp.processFile(input=input, output=output)
# This always yields at least self.path.
return pp.includes
def copy(self, dest, skip_if_older=True):
"""
@@ -606,17 +606,17 @@ class PreprocessedFile(BaseFile):
return False
deps_out = None
if self.depfile:
deps_out = FileAvoidWrite(self.depfile)
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
pp.processFile(input=input, output=dest, depfile=deps_out)
dest.close()
if self.depfile:
deps_out.close()
return True

View file

@ -6,9 +6,11 @@ instead use what is set in RUST_TARGET
Skip extra checks on cross builds (broken for arm*)
--- a/build/moz.configure/rust.configure 2020-12-12 01:35:33.000000000 +0100
+++ b/build/moz.configure/rust.configure 2020-12-15 19:45:16.467750787 +0100
@@ -91,9 +91,6 @@
diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure
index e64dc5d5ec..c4778f8cc8 100644
--- a/build/moz.configure/rust.configure
+++ b/build/moz.configure/rust.configure
@@ -91,9 +91,6 @@ def unwrap_rustup(prog, name):
return unwrap
@ -18,7 +20,7 @@ Skip extra checks on cross builds (broken for arm*)
set_config("CARGO", cargo)
set_config("RUSTC", rustc)
@@ -260,7 +257,9 @@
@@ -274,7 +271,9 @@ def rust_supported_targets(rustc):
data.setdefault(key, []).append(namespace(rust_target=t, target=info))
return data
@ -29,24 +31,26 @@ Skip extra checks on cross builds (broken for arm*)
def detect_rustc_target(
host_or_target, compiler_info, arm_target, rust_supported_targets
):
@@ -382,12 +381,12 @@
@@ -396,12 +395,14 @@ def detect_rustc_target(
return None
- rustc_target = find_candidate(candidates)
+ rustc_target = os.environ['RUST_TARGET']
+
if rustc_target is None:
die("Don't know how to translate {} for rustc".format(host_or_target.alias))
- return rustc_target
+ return ensure_unicode(rustc_target, system_encoding)
+
@imports("os")
@@ -410,35 +409,6 @@
@@ -423,35 +424,6 @@ def assert_rust_compile(host_or_target, rustc_target, rustc):
os.write(in_fd, ensure_binary(source))
os.write(in_fd, source)
os.close(in_fd)
-
- cmd = [
@ -80,7 +84,7 @@ Skip extra checks on cross builds (broken for arm*)
finally:
os.remove(in_path)
os.remove(out_path)
@@ -462,28 +432,7 @@
@@ -475,28 +447,7 @@ def rust_host_triple(
host, compiler_info, arm_target, rust_supported_targets
)
if rustc_target != rustc_host:

View file

@ -1,8 +1,8 @@
make SYS_fork non-fatal, musl uses it for fork(2)
diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp
index 20e9b59685..e053580992 100644
--- a/security/sandbox/linux/SandboxFilter.cpp
+++ b/security/sandbox/linux/SandboxFilter.cpp
@@ -1420,6 +1420,10 @@
@@ -1598,6 +1598,11 @@ class ContentSandboxPolicy : public SandboxPolicyCommon {
// usually do something reasonable on error.
case __NR_clone:
return ClonePolicy(Error(EPERM));
@ -10,6 +10,7 @@ make SYS_fork non-fatal, musl uses it for fork(2)
+ case __NR_fork:
+ return Error(ENOSYS);
+# endif
+
# ifdef __NR_fadvise64
case __NR_fadvise64:
case __NR_clone3:
return Error(ENOSYS);

View file

@ -1,8 +1,8 @@
https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c5
https://bugzilla.mozilla.org/attachment.cgi?id=9028600
--- a/gfx/skia/skia/third_party/skcms/skcms.cc
+++ b/gfx/skia/skia/third_party/skcms/skcms.cc
--- a/gfx/skia/skia/modules/skcms/skcms.cc
+++ b/gfx/skia/skia/modules/skcms/skcms.cc
@@ -30,6 +30,8 @@
#include <avx512fintrin.h>
#include <avx512dqintrin.h>
@ -11,7 +11,7 @@ https://bugzilla.mozilla.org/attachment.cgi?id=9028600
+ #define SKCMS_PORTABLE
#endif
// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
static bool runtime_cpu_detection = true;
@@ -280,20 +282,28 @@ enum {
static uint16_t read_big_u16(const uint8_t* ptr) {
uint16_t be;

View file

@ -1,44 +0,0 @@
# HG changeset patch
# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
--- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
+++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
@@ -238,7 +238,18 @@
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
+ // On Big endian the commented out variant doesn't work,
+ // and honestly, I have no idea why it exists in the first place.
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
+ // cutting off the wrong half again.
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
+#ifdef SK_CPU_BENDIAN
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
+#else
AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
+#endif
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
@@ -203,7 +203,13 @@
// ~~~>
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
// c = 0*aa + d(1-1*aa) = d(1-aa)
+
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
+#ifdef SK_CPU_BENDIAN
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
+#else
return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
+#endif
+ d.approxMulDiv255(aa.inv());
};
while (h --> 0) {

View file

@ -3,15 +3,15 @@
# THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/thunderbird-i18n".
#
pkgname=thunderbird
version=102.6.1
revision=4
version=115.0
revision=1
build_helper="rust"
short_desc="Standalone Mail/News reader"
maintainer="Érico Nogueira <ericonr@disroot.org>"
license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
homepage="https://www.thunderbird.net/"
distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz"
checksum=8b8cb5d7532ad8ee65061d2f284ae9f0470e7614dfcfc3c37ca945bcb96d1183
distfiles="${MOZILLA_SITE}/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"
checksum=3edc85647dcebde8b84c17e6eeff6ca9866a9f0ffe9a67d786fdb442c8a9a9ad
lib32disabled=yes
@ -24,7 +24,7 @@ makedepends="nss-devel libjpeg-turbo-devel gtk+3-devel icu-devel
$(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel)
$(vopt_if xscreensaver libXScrnSaver-devel)
$(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)"
depends="nss>=3.72 nspr>=4.32 desktop-file-utils hicolor-icon-theme"
depends="nss>=3.72 nspr>=4.32 desktop-file-utils hicolor-icon-theme libotr"
build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland"
build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"