public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Thomas Deutschmann" <whissi@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: www-client/firefox/
Date: Wed, 10 Feb 2021 21:53:52 +0000 (UTC)	[thread overview]
Message-ID: <1612994026.e316ee27432b44e5ce2f324e80c7ace9fd4db253.whissi@gentoo> (raw)

commit:     e316ee27432b44e5ce2f324e80c7ace9fd4db253
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 10 16:57:17 2021 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Wed Feb 10 21:53:46 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e316ee27

www-client/firefox: fix location service

Bug: https://bugs.gentoo.org/724608
Package-Manager: Portage-3.0.14, Repoman-3.0.2
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 www-client/firefox/firefox-78.7.1-r1.ebuild | 1183 +++++++++++++++++++++++++++
 www-client/firefox/firefox-85.0.2-r1.ebuild | 1173 ++++++++++++++++++++++++++
 2 files changed, 2356 insertions(+)

diff --git a/www-client/firefox/firefox-78.7.1-r1.ebuild b/www-client/firefox/firefox-78.7.1-r1.ebuild
new file mode 100644
index 00000000000..6df5a4ea357
--- /dev/null
+++ b/www-client/firefox/firefox-78.7.1-r1.ebuild
@@ -0,0 +1,1183 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+FIREFOX_PATCHSET="firefox-78esr-patches-08.tar.xz"
+
+LLVM_MAX_SLOT=11
+
+PYTHON_COMPAT=( python3_{7..9} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="pgo"
+
+MOZ_ESR=yes
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+	MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+	# Convert the ebuild version to the upstream Mozilla version
+	MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+	MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+	MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+	# ESR releases have slightly different version numbers
+	MOZ_PV="${MOZ_PV}esr"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils llvm \
+	multiprocessing pax-utils python-any-r1 toolchain-funcs \
+	virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+if [[ ${PV} == *_rc* ]] ; then
+	MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}"
+fi
+
+PATCH_URIS=(
+	https://dev.gentoo.org/~{axs,polynomial-c,whissi}/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+	${PATCH_URIS[@]}"
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="https://www.mozilla.com/firefox"
+
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+SLOT="0/esr$(ver_cut 1)"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="+clang cpu_flags_arm_neon dbus debug eme-free geckodriver +gmp-autoupdate
+	hardened hwaccel jack lto +openh264 pgo pulseaudio screencast selinux
+	+system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent
+	+system-libvpx +system-webp wayland wifi"
+
+REQUIRED_USE="debug? ( !system-av1 )
+	screencast? ( wayland )
+	wifi? ( dbus )"
+
+BDEPEND="${PYTHON_DEPS}
+	app-arch/unzip
+	app-arch/zip
+	>=dev-util/cbindgen-0.14.3
+	>=net-libs/nodejs-10.21.0
+	virtual/pkgconfig
+	>=virtual/rust-1.41.0
+	|| (
+		(
+			sys-devel/clang:11
+			sys-devel/llvm:11
+			clang? (
+				=sys-devel/lld-11*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-11*[profile] )
+			)
+		)
+		(
+			sys-devel/clang:10
+			sys-devel/llvm:10
+			clang? (
+				=sys-devel/lld-10*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-10*[profile] )
+			)
+		)
+		(
+			sys-devel/clang:9
+			sys-devel/llvm:9
+			clang? (
+				=sys-devel/lld-9*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-9*[profile] )
+			)
+		)
+	)
+	lto? (
+		!clang? ( sys-devel/binutils[gold] )
+	)
+	amd64? ( >=dev-lang/yasm-1.1 )
+	x86? ( >=dev-lang/yasm-1.1 )
+	!system-av1? (
+		amd64? ( >=dev-lang/nasm-2.13 )
+		x86? ( >=dev-lang/nasm-2.13 )
+	)"
+
+CDEPEND="
+	>=dev-libs/nss-3.53.1
+	>=dev-libs/nspr-4.25
+	dev-libs/atk
+	dev-libs/expat
+	>=x11-libs/cairo-1.10[X]
+	>=x11-libs/gtk+-2.18:2
+	>=x11-libs/gtk+-3.4.0:3[X]
+	x11-libs/gdk-pixbuf
+	>=x11-libs/pango-1.22.0
+	>=media-libs/libpng-1.6.35:0=[apng]
+	>=media-libs/mesa-10.2:*
+	media-libs/fontconfig
+	>=media-libs/freetype-2.4.10
+	kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) )
+	virtual/freedesktop-icon-theme
+	>=x11-libs/pixman-0.19.2
+	>=dev-libs/glib-2.26:2
+	>=sys-libs/zlib-1.2.3
+	>=dev-libs/libffi-3.0.10:=
+	media-video/ffmpeg
+	x11-libs/libX11
+	x11-libs/libXcomposite
+	x11-libs/libXdamage
+	x11-libs/libXext
+	x11-libs/libXfixes
+	x11-libs/libXrender
+	x11-libs/libXt
+	dbus? (
+		sys-apps/dbus
+		dev-libs/dbus-glib
+	)
+	screencast? ( media-video/pipewire:0/0.3 )
+	system-av1? (
+		>=media-libs/dav1d-0.3.0:=
+		>=media-libs/libaom-1.0.0:=
+	)
+	system-harfbuzz? (
+		>=media-libs/harfbuzz-2.6.8:0=
+		>=media-gfx/graphite2-1.3.13
+	)
+	system-icu? ( >=dev-libs/icu-67.1:= )
+	system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+	system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] )
+	system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+	system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+	wifi? (
+		kernel_linux? (
+			sys-apps/dbus
+			dev-libs/dbus-glib
+			net-misc/networkmanager
+		)
+	)
+	jack? ( virtual/jack )
+	selinux? ( sec-policy/selinux-mozilla )"
+
+RDEPEND="${CDEPEND}
+	jack? ( virtual/jack )
+	openh264? ( media-libs/openh264:*[plugin] )
+	pulseaudio? (
+		|| (
+			media-sound/pulseaudio
+			>=media-sound/apulse-0.1.12-r4
+		)
+	)
+	selinux? ( sec-policy/selinux-mozilla )"
+
+DEPEND="${CDEPEND}
+	pulseaudio? (
+		|| (
+			media-sound/pulseaudio
+			>=media-sound/apulse-0.1.12-r4[sdk]
+		)
+	)
+	wayland? ( >=x11-libs/gtk+-3.11:3[wayland] )
+	amd64? ( virtual/opengl )
+	x86? ( virtual/opengl )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+	MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+	if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then
+		ewarn "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+		return 1
+	fi
+
+	if use clang ; then
+		if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then
+			ewarn "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+			return 1
+		fi
+
+		if use pgo ; then
+			if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then
+				ewarn "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+				return 1
+			fi
+		fi
+	fi
+
+	einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+	ach af an ar ast az be bg bn br bs ca-valencia ca cak cs cy
+	da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu
+	fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM
+	ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my
+	nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru
+	si sk sl son sq sr sv-SE ta te th tl tr trs uk ur uz vi
+	xh zh-CN zh-TW
+)
+
+mozilla_set_globals() {
+	# https://bugs.gentoo.org/587334
+	local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+		fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+	)
+
+	local lang xflag
+	for lang in "${MOZ_LANGS[@]}" ; do
+		# en and en_US are handled internally
+		if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+			continue
+		fi
+
+		# strip region subtag if $lang is in the list
+		if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+			xflag=${lang%%-*}
+		else
+			xflag=${lang}
+		fi
+
+		SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+		SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi"
+		SRC_URI+=" )"
+		IUSE+=" l10n_${xflag/[_@]/-}"
+	done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -ne 1 ]] ; then
+		die "${FUNCNAME} requires exact one argument"
+	fi
+
+	einfo "Clearing cargo checksums for ${1} ..."
+
+	sed -i \
+		-e 's/\("files":{\)[^}]*/\1/' \
+		"${S}"/third_party/rust/${1}/.cargo-checksum.json \
+		|| die
+}
+
+moz_install_xpi() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local DESTDIR=${1}
+	shift
+
+	insinto "${DESTDIR}"
+
+	local emid xpi_file xpi_tmp_dir
+	for xpi_file in "${@}" ; do
+		emid=
+		xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+		# Unpack XPI
+		unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+		# Determine extension ID
+		if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+			emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+			[[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf"
+		elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+			emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json")
+			[[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json"
+		else
+			die "failed to determine extension id"
+		fi
+
+		einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+		newins "${xpi_file}" "${emid}.xpi"
+	done
+}
+
+mozconfig_add_options_ac() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local reason=${1}
+	shift
+
+	local option
+	for option in ${@} ; do
+		echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+	done
+}
+
+mozconfig_add_options_mk() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local reason=${1}
+	shift
+
+	local option
+	for option in ${@} ; do
+		echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+	done
+}
+
+mozconfig_use_enable() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 1 ]] ; then
+		die "${FUNCNAME} requires at least one arguments"
+	fi
+
+	local flag=$(use_enable "${@}")
+	mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+mozconfig_use_with() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 1 ]] ; then
+		die "${FUNCNAME} requires at least one arguments"
+	fi
+
+	local flag=$(use_with "${@}")
+	mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+pkg_pretend() {
+	if [[ ${MERGE_TYPE} != binary ]] ; then
+		if use pgo ; then
+			if ! has usersandbox $FEATURES ; then
+				die "You must enable usersandbox as X server can not run as root!"
+			fi
+		fi
+
+		# Ensure we have enough disk space to compile
+		if use pgo || use lto || use debug ; then
+			CHECKREQS_DISK_BUILD="13500M"
+		else
+			CHECKREQS_DISK_BUILD="6400M"
+		fi
+
+		check-reqs_pkg_pretend
+	fi
+}
+
+pkg_setup() {
+	if [[ ${MERGE_TYPE} != binary ]] ; then
+		if use pgo ; then
+			if ! has userpriv ${FEATURES} ; then
+				eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!"
+			fi
+		fi
+
+		# Ensure we have enough disk space to compile
+		if use pgo || use lto || use debug ; then
+			CHECKREQS_DISK_BUILD="13500M"
+		else
+			CHECKREQS_DISK_BUILD="6400M"
+		fi
+
+		check-reqs_pkg_setup
+
+		llvm_pkg_setup
+
+		if use clang && use lto ; then
+			local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }')
+			[[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}")
+			[[ -z ${version_lld} ]] && die "Failed to read ld.lld version!"
+
+			# temp fix for https://bugs.gentoo.org/768543
+			# we can assume that rust 1.49.0 always uses llvm 11
+			local version_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'release:' | awk '{ print $2 }')
+			[[ -n ${version_rust} ]] && version_rust=$(ver_cut 1-2 "${version_rust}")
+			[[ -z ${version_rust} ]] && die "Failed to read version from rustc!"
+
+			if ver_test "${version_rust}" -eq "1.49" ; then
+				local version_llvm_rust="11"
+			else
+				local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }')
+				[[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}")
+				[[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!"
+			fi
+
+			if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then
+				eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}."
+				eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:"
+				eerror "  - Manually switch rust version using 'eselect rust' to match used LLVM version"
+				eerror "  - Switch to dev-lang/rust[system-llvm] which will guarantee matching version"
+				eerror "  - Build ${CATEGORY}/${PN} without USE=lto"
+				die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!"
+			fi
+		fi
+
+		python-any-r1_pkg_setup
+
+		# Avoid PGO profiling problems due to enviroment leakage
+		# These should *always* be cleaned up anyway
+		unset \
+			DBUS_SESSION_BUS_ADDRESS \
+			DISPLAY \
+			ORBIT_SOCKETDIR \
+			SESSION_MANAGER \
+			XAUTHORITY \
+			XDG_CACHE_HOME \
+			XDG_SESSION_COOKIE
+
+		# Build system is using /proc/self/oom_score_adj, bug #604394
+		addpredict /proc/self/oom_score_adj
+
+		if ! mountpoint -q /dev/shm ; then
+			# If /dev/shm is not available, configure is known to fail with
+			# a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py
+			ewarn "/dev/shm is not mounted -- expect build failures!"
+		fi
+
+		# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+		# Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+		# get your own set of keys.
+		if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+			MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+		fi
+
+		if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+			MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+		fi
+
+		# Mozilla API keys (see https://location.services.mozilla.com/api)
+		# Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+		# get your own set of keys.
+		if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+			MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+		fi
+
+		# Ensure we use C locale when building, bug #746215
+		export LC_ALL=C
+	fi
+}
+
+src_unpack() {
+	local _lp_dir="${WORKDIR}/language_packs"
+	local _src_file
+
+	if [[ ! -d "${_lp_dir}" ]] ; then
+		mkdir "${_lp_dir}" || die
+	fi
+
+	for _src_file in ${A} ; do
+		if [[ ${_src_file} == *.xpi ]]; then
+			cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!"
+		else
+			unpack ${_src_file}
+		fi
+	done
+}
+
+src_prepare() {
+	use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch
+	eapply "${WORKDIR}/firefox-patches"
+
+	# Allow user to apply any additional patches without modifing ebuild
+	eapply_user
+
+	# Make LTO respect MAKEOPTS
+	sed -i \
+		-e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+		"${S}"/build/moz.configure/lto-pgo.configure \
+		|| die "sed failed to set num_cores"
+
+	# Make ICU respect MAKEOPTS
+	sed -i \
+		-e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+		"${S}"/intl/icu_sources_data.py \
+		|| die "sed failed to set num_cores"
+
+	# sed-in toolchain prefix
+	sed -i \
+		-e "s/objdump/${CHOST}-objdump/" \
+		"${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py \
+		|| die "sed failed to set toolchain prefix"
+
+	sed -i \
+		-e 's/ccache_stats = None/return None/' \
+		"${S}"/python/mozbuild/mozbuild/controller/building.py \
+		|| die "sed failed to disable ccache stats call"
+
+	einfo "Removing pre-built binaries ..."
+	find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
+
+	# Clearing checksums where we have applied patches
+	moz_clear_vendor_checksums target-lexicon-0.9.0
+
+	# Create build dir
+	BUILD_DIR="${WORKDIR}/${PN}_build"
+	mkdir -p "${BUILD_DIR}" || die
+
+	# Write API keys to disk
+	echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+	echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+	echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+	xdg_src_prepare
+}
+
+src_configure() {
+	# Show flags set at the beginning
+	einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+	einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+	einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+	einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+	einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+	local have_switched_compiler=
+	if use clang && ! tc-is-clang ; then
+		# Force clang
+		einfo "Enforcing the use of clang due to USE=clang ..."
+		have_switched_compiler=yes
+		AR=llvm-ar
+		CC=${CHOST}-clang
+		CXX=${CHOST}-clang++
+		NM=llvm-nm
+		RANLIB=llvm-ranlib
+	elif ! use clang && ! tc-is-gcc ; then
+		# Force gcc
+		have_switched_compiler=yes
+		einfo "Enforcing the use of gcc due to USE=-clang ..."
+		AR=gcc-ar
+		CC=${CHOST}-gcc
+		CXX=${CHOST}-g++
+		NM=gcc-nm
+		RANLIB=gcc-ranlib
+	fi
+
+	if [[ -n "${have_switched_compiler}" ]] ; then
+		# Because we switched active compiler we have to ensure
+		# that no unsupported flags are set
+		strip-unsupported-flags
+	fi
+
+	# Ensure we use correct toolchain
+	export HOST_CC="$(tc-getBUILD_CC)"
+	export HOST_CXX="$(tc-getBUILD_CXX)"
+	tc-export CC CXX LD AR NM OBJDUMP RANLIB PKG_CONFIG
+
+	# Pass the correct toolchain paths through cbindgen
+	if tc-is-cross-compiler ; then
+		export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}"
+	fi
+
+	# Set MOZILLA_FIVE_HOME
+	export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+	# python/mach/mach/mixin/process.py fails to detect SHELL
+	export SHELL="${EPREFIX}/bin/bash"
+
+	# Set MOZCONFIG
+	export MOZCONFIG="${S}/.mozconfig"
+
+	# Initialize MOZCONFIG
+	mozconfig_add_options_ac '' --enable-application=browser
+
+	# Set Gentoo defaults
+	export MOZILLA_OFFICIAL=1
+
+	mozconfig_add_options_ac 'Gentoo default' \
+		--allow-addon-sideload \
+		--disable-cargo-incremental \
+		--disable-crashreporter \
+		--disable-install-strip \
+		--disable-strip \
+		--disable-updater \
+		--enable-official-branding \
+		--enable-release \
+		--enable-system-ffi \
+		--enable-system-pixman \
+		--host="${CBUILD:-${CHOST}}" \
+		--libdir="${EPREFIX}/usr/$(get_libdir)" \
+		--prefix="${EPREFIX}/usr" \
+		--target="${CHOST}" \
+		--without-ccache \
+		--with-intl-api \
+		--with-libclang-path="$(llvm-config --libdir)" \
+		--with-system-nspr \
+		--with-system-nss \
+		--with-system-png \
+		--with-system-zlib \
+		--with-toolchain-prefix="${CHOST}-" \
+		--with-unsigned-addon-scopes=app,system \
+		--x-includes="${SYSROOT}${EPREFIX}/usr/include" \
+		--x-libraries="${SYSROOT}${EPREFIX}/usr/$(get_libdir)"
+
+	# Set update channel
+	local update_channel=release
+	[[ -n ${MOZ_ESR} ]] && update_channel=esr
+	mozconfig_add_options_ac '' --update-channel=${update_channel}
+
+	if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then
+		mozconfig_add_options_ac '' --enable-rust-simd
+	fi
+
+	if [[ -s "${S}/api-google.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+	else
+		einfo "Building without Google API key ..."
+	fi
+
+	if [[ -s "${S}/api-location.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-google-location-service-api-keyfile="${S}/api-location.key"
+	else
+		einfo "Building without Location API key ..."
+	fi
+
+	if [[ -s "${S}/api-mozilla.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-mozilla-api-keyfile="${S}/api-mozilla.key"
+	else
+		einfo "Building without Mozilla API key ..."
+	fi
+
+	mozconfig_use_with system-av1
+	mozconfig_use_with system-harfbuzz
+	mozconfig_use_with system-harfbuzz system-graphite2
+	mozconfig_use_with system-icu
+	mozconfig_use_with system-jpeg
+	mozconfig_use_with system-libevent system-libevent "${SYSROOT}${EPREFIX}/usr"
+	mozconfig_use_with system-libvpx
+	mozconfig_use_with system-webp
+
+	mozconfig_use_enable dbus
+
+	use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+	mozconfig_use_enable geckodriver
+
+	if use hardened ; then
+		mozconfig_add_options_ac "+hardened" --enable-hardening
+		append-ldflags "-Wl,-z,relro -Wl,-z,now"
+	fi
+
+	mozconfig_use_enable jack
+
+	mozconfig_use_enable pulseaudio
+	# force the deprecated alsa sound code if pulseaudio is disabled
+	if use kernel_linux && ! use pulseaudio ; then
+		mozconfig_add_options_ac '-pulseaudio' --enable-alsa
+	fi
+
+	mozconfig_use_enable screencast pipewire
+
+	mozconfig_use_enable wifi necko-wifi
+
+	if use wayland ; then
+		mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland
+	else
+		mozconfig_add_options_ac '' --enable-default-toolkit=cairo-gtk3
+	fi
+
+	if use lto ; then
+		if use clang ; then
+			# Upstream only supports lld when using clang
+			mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
+
+			mozconfig_add_options_ac '+lto' --enable-lto=cross
+		else
+			# Linking only works when using ld.gold when LTO is enabled
+			mozconfig_add_options_ac "forcing ld=gold due to USE=lto" --enable-linker=gold
+
+			# ThinLTO is currently broken, see bmo#1644409
+			mozconfig_add_options_ac '+lto' --enable-lto=full
+		fi
+
+		if use pgo ; then
+			mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+			if use clang ; then
+				# Used in build/pgo/profileserver.py
+				export LLVM_PROFDATA="llvm-profdata"
+			fi
+		fi
+	else
+		# Avoid auto-magic on linker
+		if use clang ; then
+			# This is upstream's default
+			mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
+		elif tc-ld-is-gold ; then
+			mozconfig_add_options_ac "linker is set to gold" --enable-linker=gold
+		else
+			mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
+		fi
+	fi
+
+	# LTO flag was handled via configure
+	filter-flags '-flto*'
+
+	mozconfig_use_enable debug
+	if use debug ; then
+		mozconfig_add_options_ac '+debug' --disable-optimize
+	else
+		if is-flag '-g*' ; then
+			if use clang ; then
+				mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+			else
+				mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+			fi
+		else
+			mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+		fi
+
+		if is-flag '-O0' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+		elif is-flag '-O4' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+		elif is-flag '-O3' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+		elif is-flag '-O1' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+		elif is-flag '-Os' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+		else
+			mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+		fi
+	fi
+
+	# Debug flag was handled via configure
+	filter-flags '-g*'
+
+	# Optimization flag was handled via configure
+	filter-flags '-O*'
+
+	# Modifications to better support ARM, bug #553364
+	if use cpu_flags_arm_neon ; then
+		mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon
+
+		if ! tc-is-clang ; then
+			# thumb options aren't supported when using clang, bug 666966
+			mozconfig_add_options_ac '+cpu_flags_arm_neon' \
+				--with-thumb=yes \
+				--with-thumb-interwork=no
+		fi
+	fi
+
+	if [[ ${CHOST} == armv*h* ]] ; then
+		mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard
+
+		if ! use system-libvpx ; then
+			sed -i \
+				-e "s|softfp|hard|" \
+				"${S}"/media/libvpx/moz.build \
+				|| die
+		fi
+	fi
+
+	if use clang ; then
+		# https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
+		# https://bugzilla.mozilla.org/show_bug.cgi?id=1483822
+		# toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64')
+		local disable_elf_hack=
+		if use amd64 ; then
+			disable_elf_hack=yes
+		elif use x86 ; then
+			disable_elf_hack=yes
+		elif use arm ; then
+			disable_elf_hack=yes
+		fi
+
+		if [[ -n ${disable_elf_hack} ]] ; then
+			mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack
+		fi
+	elif tc-is-gcc ; then
+		if ver_test $(gcc-fullversion) -ge 10 ; then
+			einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..."
+			append-cxxflags -fno-tree-loop-vectorize
+		fi
+	fi
+
+	# Additional ARCH support
+	case "${ARCH}" in
+		arm)
+			# Reduce the memory requirements for linking
+			if use clang ; then
+				# Nothing to do
+				:;
+			elif tc-ld-is-gold || use lto ; then
+				append-ldflags -Wl,--no-keep-memory
+			else
+				append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+			fi
+			;;
+	esac
+
+	if ! use elibc_glibc ; then
+		mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+	fi
+
+	# Allow elfhack to work in combination with unstripped binaries
+	# when they would normally be larger than 2GiB.
+	append-ldflags "-Wl,--compress-debug-sections=zlib"
+
+	# Make revdep-rebuild.sh happy; Also required for musl
+	append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+	# Pass $MAKEOPTS to build system
+	export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+	# Use system's Python environment
+	export MACH_USE_SYSTEM_PYTHON=1
+
+	# Disable notification when build system has finished
+	export MOZ_NOSPAM=1
+
+	# Build system requires xargs but is unable to find it
+	mozconfig_add_options_mk 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs"
+
+	# Set build dir
+	mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+	# Show flags we will use
+	einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+	einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+	einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+	einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+	einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+	# Handle EXTRA_CONF and show summary
+	local ac opt hash reason
+
+	# Apply EXTRA_ECONF entries to $MOZCONFIG
+	if [[ -n ${EXTRA_ECONF} ]] ; then
+		IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+		for opt in "${ac[@]}"; do
+			mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+		done
+	fi
+
+	echo
+	echo "=========================================================="
+	echo "Building ${PF} with the following configuration"
+	grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+		[[ -z ${hash} || ${hash} == \# ]] \
+			|| die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
+		printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org default}"
+	done
+	echo "=========================================================="
+	echo
+
+	./mach configure || die
+}
+
+src_compile() {
+	local virtx_cmd=
+
+	if use pgo ; then
+		virtx_cmd=virtx
+
+		# Reset and cleanup environment variables used by GNOME/XDG
+		gnome2_environment_reset
+
+		addpredict /root
+	fi
+
+	local -x GDK_BACKEND=x11
+
+	${virtx_cmd} ./mach build --verbose \
+		|| die
+}
+
+src_install() {
+	# xpcshell is getting called during install
+	pax-mark m \
+		"${BUILD_DIR}"/dist/bin/xpcshell \
+		"${BUILD_DIR}"/dist/bin/${PN} \
+		"${BUILD_DIR}"/dist/bin/plugin-container
+
+	DESTDIR="${D}" ./mach install || die
+
+	# Upstream cannot ship symlink but we can (bmo#658850)
+	rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+	dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+	# Don't install llvm-symbolizer from sys-devel/llvm package
+	if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then
+		rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die
+	fi
+
+	# Install policy (currently only used to disable application updates)
+	insinto "${MOZILLA_FIVE_HOME}/distribution"
+	newins "${FILESDIR}"/distribution.ini distribution.ini
+	newins "${FILESDIR}"/disable-auto-update.policy.json policies.json
+
+	# Install system-wide preferences
+	local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences"
+	insinto "${PREFS_DIR}"
+	newins "${FILESDIR}"/gentoo-default-prefs.js all-gentoo.js
+
+	local GENTOO_PREFS="${ED}${PREFS_DIR}/all-gentoo.js"
+
+	# Set dictionary path to use system hunspell
+	cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref"
+	pref("spellchecker.dictionary_path",       "${EPREFIX}/usr/share/myspell");
+	EOF
+
+	# Force hwaccel prefs if USE=hwaccel is enabled
+	if use hwaccel ; then
+		cat "${FILESDIR}"/gentoo-hwaccel-prefs.js \
+		>>"${GENTOO_PREFS}" \
+		|| die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js"
+	fi
+
+	if ! use gmp-autoupdate ; then
+		local plugin
+		for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+			einfo "Disabling auto-update for ${plugin} plugin ..."
+			cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin"
+			pref("media.${plugin}.autoupdate",   false);
+			EOF
+		done
+	fi
+
+	# Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it
+	if use system-harfbuzz ; then
+		cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref"
+		sticky_pref("gfx.font_rendering.graphite.enabled", true);
+		EOF
+	fi
+
+	# Install language packs
+	local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') )
+	if [[ -n "${langpacks}" ]] ; then
+		moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}"
+	fi
+
+	# Install geckodriver
+	if use geckodriver ; then
+		einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..."
+		pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver
+		exeinto "${MOZILLA_FIVE_HOME}"
+		doexe "${BUILD_DIR}"/dist/bin/geckodriver
+
+		dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver
+	fi
+
+	# Install icons
+	local icon_srcdir="${S}/browser/branding/official"
+	local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg"
+
+	insinto /usr/share/icons/hicolor/symbolic/apps
+	newins "${icon_symbolic_file}" ${PN}-symbolic.svg
+
+	local icon size
+	for icon in "${icon_srcdir}"/default*.png ; do
+		size=${icon%.png}
+		size=${size##*/default}
+
+		if [[ ${size} -eq 48 ]] ; then
+			newicon "${icon}" ${PN}.png
+		fi
+
+		newicon -s ${size} "${icon}" ${PN}.png
+	done
+
+	# Install menus
+	local wrapper_wayland="${PN}-wayland.sh"
+	local wrapper_x11="${PN}-x11.sh"
+	local desktop_file="${FILESDIR}/icon/${PN}-r2.desktop"
+	local display_protocols="auto X11"
+	local icon="${PN}"
+	local name="Mozilla ${MOZ_PN^}"
+	local use_wayland="false"
+
+	if use wayland ; then
+		display_protocols+=" Wayland"
+		use_wayland="true"
+	fi
+
+	local app_name desktop_filename display_protocol exec_command
+	for display_protocol in ${display_protocols} ; do
+		app_name="${name} on ${display_protocol}"
+		desktop_filename="${PN}-${display_protocol,,}.desktop"
+
+		case ${display_protocol} in
+			Wayland)
+				exec_command="${PN}-wayland --name ${PN}-wayland"
+				newbin "${FILESDIR}/${wrapper_wayland}" ${PN}-wayland
+				;;
+			X11)
+				if ! use wayland ; then
+					# Exit loop here because there's no choice so
+					# we don't need wrapper/.desktop file for X11.
+					continue
+				fi
+
+				exec_command="${PN}-x11 --name ${PN}-x11"
+				newbin "${FILESDIR}/${wrapper_x11}" ${PN}-x11
+				;;
+			*)
+				app_name="${name}"
+				desktop_filename="${PN}.desktop"
+				exec_command="${PN}"
+				;;
+		esac
+
+		cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+		sed -i \
+			-e "s:@NAME@:${app_name}:" \
+			-e "s:@EXEC@:${exec_command}:" \
+			-e "s:@ICON@:${icon}:" \
+			"${WORKDIR}/${PN}.desktop-template" \
+			|| die
+
+		newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+		rm "${WORKDIR}/${PN}.desktop-template" || die
+	done
+
+	# Install generic wrapper script
+	[[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+	newbin "${FILESDIR}/${PN}.sh" ${PN}
+
+	# Update wrapper
+	local wrapper
+	for wrapper in \
+		"${ED}/usr/bin/${PN}" \
+		"${ED}/usr/bin/${PN}-x11" \
+		"${ED}/usr/bin/${PN}-wayland" \
+	; do
+		[[ ! -f "${wrapper}" ]] && continue
+
+		sed -i \
+			-e "s:@PREFIX@:${EPREFIX}/usr:" \
+			-e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \
+			-e "s:@APULSELIB_DIR@:${apulselib}:" \
+			-e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+			"${wrapper}" \
+			|| die
+	done
+}
+
+pkg_preinst() {
+	xdg_pkg_preinst
+
+	# If the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+	# does not need to be forced into the LD_LIBRARY_PATH
+	if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+		einfo "APULSE found; Generating library symlinks for sound support ..."
+		local lib
+		pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die
+		for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+			# A quickpkg rolled by hand will grab symlinks as part of the package,
+			# so we need to avoid creating them if they already exist.
+			if [[ ! -L ${lib##*/} ]] ; then
+				ln -s "${lib}" ${lib##*/} || die
+			fi
+		done
+		popd &>/dev/null || die
+	fi
+}
+
+pkg_postinst() {
+	xdg_pkg_postinst
+
+	if ! use gmp-autoupdate ; then
+		elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or"
+		elog "installing into new profiles:"
+		local plugin
+		for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+			elog "\t ${plugin}"
+		done
+		elog
+	fi
+
+	if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+		elog "Apulse was detected at merge time on this system and so it will always be"
+		elog "used for sound.  If you wish to use pulseaudio instead please unmerge"
+		elog "media-sound/apulse."
+		elog
+	fi
+
+	local show_doh_information show_normandy_information
+
+	if [[ -z "${REPLACING_VERSIONS}" ]] ; then
+		# New install; Tell user that DoH is disabled by default
+		show_doh_information=yes
+		show_normandy_information=yes
+	else
+		local replacing_version
+		for replacing_version in ${REPLACING_VERSIONS} ; do
+			if ver_test "${replacing_version}" -lt 70 ; then
+				# Tell user only once about our DoH default
+				show_doh_information=yes
+			fi
+
+			if ver_test "${replacing_version}" -lt 74.0-r2 ; then
+				# Tell user only once about our Normandy default
+				show_normandy_information=yes
+			fi
+		done
+	fi
+
+	if [[ -n "${show_doh_information}" ]] ; then
+		elog
+		elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):"
+		elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all"
+		elog "DNS traffic to Cloudflare by default is not a good idea and applications"
+		elog "should respect OS configured settings), \"network.trr.mode\" was set to 5"
+		elog "(\"Off by choice\") by default."
+		elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences."
+	fi
+
+	# bug 713782
+	if [[ -n "${show_normandy_information}" ]] ; then
+		elog
+		elog "Upstream operates a service named Normandy which allows Mozilla to"
+		elog "push changes for default settings or even install new add-ons remotely."
+		elog "While this can be useful to address problems like 'Armagadd-on 2.0' or"
+		elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security"
+		elog "concerns prevail, which is why we have switched off the use of this"
+		elog "service by default."
+		elog
+		elog "To re-enable this service set"
+		elog
+		elog "    app.normandy.enabled=true"
+		elog
+		elog "in about:config."
+	fi
+}

diff --git a/www-client/firefox/firefox-85.0.2-r1.ebuild b/www-client/firefox/firefox-85.0.2-r1.ebuild
new file mode 100644
index 00000000000..acf090b9602
--- /dev/null
+++ b/www-client/firefox/firefox-85.0.2-r1.ebuild
@@ -0,0 +1,1173 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+FIREFOX_PATCHSET="firefox-85-patches-04.tar.xz"
+
+LLVM_MAX_SLOT=11
+
+PYTHON_COMPAT=( python3_{7..9} )
+PYTHON_REQ_USE="ncurses,sqlite,ssl"
+
+WANT_AUTOCONF="2.1"
+
+VIRTUALX_REQUIRED="pgo"
+
+MOZ_ESR=
+
+MOZ_PV=${PV}
+MOZ_PV_SUFFIX=
+if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
+	MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
+
+	# Convert the ebuild version to the upstream Mozilla version
+	MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
+	MOZ_PV="${MOZ_PV/_beta/b}"  # Handle beta for SRC_URI
+	MOZ_PV="${MOZ_PV%%_rc*}"    # Handle rc for SRC_URI
+fi
+
+if [[ -n ${MOZ_ESR} ]] ; then
+	# ESR releases have slightly different version numbers
+	MOZ_PV="${MOZ_PV}esr"
+fi
+
+MOZ_PN="${PN%-bin}"
+MOZ_P="${MOZ_PN}-${MOZ_PV}"
+MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
+MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
+
+inherit autotools check-reqs desktop flag-o-matic gnome2-utils llvm \
+	multiprocessing pax-utils python-any-r1 toolchain-funcs \
+	virtualx xdg
+
+MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
+
+if [[ ${PV} == *_rc* ]] ; then
+	MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}"
+fi
+
+PATCH_URIS=(
+	https://dev.gentoo.org/~{axs,polynomial-c,whissi}/mozilla/patchsets/${FIREFOX_PATCHSET}
+)
+
+SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
+	${PATCH_URIS[@]}"
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="https://www.mozilla.com/firefox"
+
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+SLOT="0/$(ver_cut 1)"
+LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
+IUSE="+clang cpu_flags_arm_neon dbus debug eme-free geckodriver +gmp-autoupdate
+	hardened hwaccel jack lto +openh264 pgo pulseaudio screencast selinux
+	+system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent
+	+system-libvpx +system-webp wayland wifi"
+
+REQUIRED_USE="debug? ( !system-av1 )
+	screencast? ( wayland )"
+
+BDEPEND="${PYTHON_DEPS}
+	app-arch/unzip
+	app-arch/zip
+	>=dev-util/cbindgen-0.15.0
+	>=net-libs/nodejs-10.22.1
+	virtual/pkgconfig
+	>=virtual/rust-1.47.0
+	|| (
+		(
+			sys-devel/clang:11
+			sys-devel/llvm:11
+			clang? (
+				=sys-devel/lld-11*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-11*[profile] )
+			)
+		)
+		(
+			sys-devel/clang:10
+			sys-devel/llvm:10
+			clang? (
+				=sys-devel/lld-10*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-10*[profile] )
+			)
+		)
+		(
+			sys-devel/clang:9
+			sys-devel/llvm:9
+			clang? (
+				=sys-devel/lld-9*
+				pgo? ( =sys-libs/compiler-rt-sanitizers-9*[profile] )
+			)
+		)
+	)
+	amd64? ( >=dev-lang/yasm-1.1 )
+	x86? ( >=dev-lang/yasm-1.1 )
+	!system-av1? (
+		amd64? ( >=dev-lang/nasm-2.13 )
+		x86? ( >=dev-lang/nasm-2.13 )
+	)"
+
+CDEPEND="
+	>=dev-libs/nss-3.60
+	>=dev-libs/nspr-4.29
+	dev-libs/atk
+	dev-libs/expat
+	>=x11-libs/cairo-1.10[X]
+	>=x11-libs/gtk+-2.18:2
+	>=x11-libs/gtk+-3.4.0:3[X]
+	x11-libs/gdk-pixbuf
+	>=x11-libs/pango-1.22.0
+	>=media-libs/libpng-1.6.35:0=[apng]
+	>=media-libs/mesa-10.2:*
+	media-libs/fontconfig
+	>=media-libs/freetype-2.4.10
+	kernel_linux? ( !pulseaudio? ( media-libs/alsa-lib ) )
+	virtual/freedesktop-icon-theme
+	>=x11-libs/pixman-0.19.2
+	>=dev-libs/glib-2.26:2
+	>=sys-libs/zlib-1.2.3
+	>=dev-libs/libffi-3.0.10:=
+	media-video/ffmpeg
+	x11-libs/libX11
+	x11-libs/libXcomposite
+	x11-libs/libXdamage
+	x11-libs/libXext
+	x11-libs/libXfixes
+	x11-libs/libXrender
+	x11-libs/libXt
+	dbus? (
+		sys-apps/dbus
+		dev-libs/dbus-glib
+	)
+	screencast? ( media-video/pipewire:0/0.3 )
+	system-av1? (
+		>=media-libs/dav1d-0.3.0:=
+		>=media-libs/libaom-1.0.0:=
+	)
+	system-harfbuzz? (
+		>=media-libs/harfbuzz-2.6.8:0=
+		>=media-gfx/graphite2-1.3.13
+	)
+	system-icu? ( >=dev-libs/icu-67.1:= )
+	system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
+	system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] )
+	system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
+	system-webp? ( >=media-libs/libwebp-1.1.0:0= )
+	wifi? (
+		kernel_linux? (
+			sys-apps/dbus
+			dev-libs/dbus-glib
+			net-misc/networkmanager
+		)
+	)
+	jack? ( virtual/jack )
+	selinux? ( sec-policy/selinux-mozilla )"
+
+RDEPEND="${CDEPEND}
+	jack? ( virtual/jack )
+	openh264? ( media-libs/openh264:*[plugin] )
+	pulseaudio? (
+		|| (
+			media-sound/pulseaudio
+			>=media-sound/apulse-0.1.12-r4
+		)
+	)
+	selinux? ( sec-policy/selinux-mozilla )"
+
+DEPEND="${CDEPEND}
+	pulseaudio? (
+		|| (
+			media-sound/pulseaudio
+			>=media-sound/apulse-0.1.12-r4[sdk]
+		)
+	)
+	wayland? ( >=x11-libs/gtk+-3.11:3[wayland] )
+	amd64? ( virtual/opengl )
+	x86? ( virtual/opengl )"
+
+S="${WORKDIR}/${PN}-${PV%_*}"
+
+# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or
+# overridden in the enviromnent (advanced hackers only)
+if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then
+	MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
+fi
+
+llvm_check_deps() {
+	if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then
+		ewarn "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+		return 1
+	fi
+
+	if use clang ; then
+		if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then
+			ewarn "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+			return 1
+		fi
+
+		if use pgo ; then
+			if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then
+				ewarn "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
+				return 1
+			fi
+		fi
+	fi
+
+	einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
+}
+
+MOZ_LANGS=(
+	ach af an ar ast az be bg bn br bs ca-valencia ca cak cs cy
+	da de dsb el en-CA en-GB en-US eo es-AR es-CL es-ES es-MX et eu
+	fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM
+	ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my
+	nb-NO ne-NP nl nn-NO oc pa-IN pl pt-BR pt-PT rm ro ru
+	si sk sl son sq sr sv-SE ta te th tl tr trs uk ur uz vi
+	xh zh-CN zh-TW
+)
+
+mozilla_set_globals() {
+	# https://bugs.gentoo.org/587334
+	local MOZ_TOO_REGIONALIZED_FOR_L10N=(
+		fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE
+	)
+
+	local lang xflag
+	for lang in "${MOZ_LANGS[@]}" ; do
+		# en and en_US are handled internally
+		if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then
+			continue
+		fi
+
+		# strip region subtag if $lang is in the list
+		if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then
+			xflag=${lang%%-*}
+		else
+			xflag=${lang}
+		fi
+
+		SRC_URI+=" l10n_${xflag/[_@]/-}? ("
+		SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi"
+		SRC_URI+=" )"
+		IUSE+=" l10n_${xflag/[_@]/-}"
+	done
+}
+mozilla_set_globals
+
+moz_clear_vendor_checksums() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -ne 1 ]] ; then
+		die "${FUNCNAME} requires exact one argument"
+	fi
+
+	einfo "Clearing cargo checksums for ${1} ..."
+
+	sed -i \
+		-e 's/\("files":{\)[^}]*/\1/' \
+		"${S}"/third_party/rust/${1}/.cargo-checksum.json \
+		|| die
+}
+
+moz_install_xpi() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local DESTDIR=${1}
+	shift
+
+	insinto "${DESTDIR}"
+
+	local emid xpi_file xpi_tmp_dir
+	for xpi_file in "${@}" ; do
+		emid=
+		xpi_tmp_dir=$(mktemp -d --tmpdir="${T}")
+
+		# Unpack XPI
+		unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die
+
+		# Determine extension ID
+		if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then
+			emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf")
+			[[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf"
+		elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then
+			emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json")
+			[[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json"
+		else
+			die "failed to determine extension id"
+		fi
+
+		einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..."
+		newins "${xpi_file}" "${emid}.xpi"
+	done
+}
+
+mozconfig_add_options_ac() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local reason=${1}
+	shift
+
+	local option
+	for option in ${@} ; do
+		echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
+	done
+}
+
+mozconfig_add_options_mk() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 2 ]] ; then
+		die "${FUNCNAME} requires at least two arguments"
+	fi
+
+	local reason=${1}
+	shift
+
+	local option
+	for option in ${@} ; do
+		echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
+	done
+}
+
+mozconfig_use_enable() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 1 ]] ; then
+		die "${FUNCNAME} requires at least one arguments"
+	fi
+
+	local flag=$(use_enable "${@}")
+	mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+mozconfig_use_with() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${#} -lt 1 ]] ; then
+		die "${FUNCNAME} requires at least one arguments"
+	fi
+
+	local flag=$(use_with "${@}")
+	mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
+}
+
+pkg_pretend() {
+	if [[ ${MERGE_TYPE} != binary ]] ; then
+		if use pgo ; then
+			if ! has usersandbox $FEATURES ; then
+				die "You must enable usersandbox as X server can not run as root!"
+			fi
+		fi
+
+		# Ensure we have enough disk space to compile
+		if use pgo || use lto || use debug ; then
+			CHECKREQS_DISK_BUILD="13500M"
+		else
+			CHECKREQS_DISK_BUILD="6400M"
+		fi
+
+		check-reqs_pkg_pretend
+	fi
+}
+
+pkg_setup() {
+	if [[ ${MERGE_TYPE} != binary ]] ; then
+		if use pgo ; then
+			if ! has userpriv ${FEATURES} ; then
+				eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!"
+			fi
+		fi
+
+		# Ensure we have enough disk space to compile
+		if use pgo || use lto || use debug ; then
+			CHECKREQS_DISK_BUILD="13500M"
+		else
+			CHECKREQS_DISK_BUILD="6400M"
+		fi
+
+		check-reqs_pkg_setup
+
+		llvm_pkg_setup
+
+		if use clang && use lto ; then
+			local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }')
+			[[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}")
+			[[ -z ${version_lld} ]] && die "Failed to read ld.lld version!"
+
+			# temp fix for https://bugs.gentoo.org/768543
+			# we can assume that rust 1.49.0 always uses llvm 11
+			local version_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'release:' | awk '{ print $2 }')
+			[[ -n ${version_rust} ]] && version_rust=$(ver_cut 1-2 "${version_rust}")
+			[[ -z ${version_rust} ]] && die "Failed to read version from rustc!"
+
+			if ver_test "${version_rust}" -eq "1.49" ; then
+				local version_llvm_rust="11"
+			else
+				local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }')
+				[[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}")
+				[[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!"
+			fi
+
+			if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then
+				eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}."
+				eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:"
+				eerror "  - Manually switch rust version using 'eselect rust' to match used LLVM version"
+				eerror "  - Switch to dev-lang/rust[system-llvm] which will guarantee matching version"
+				eerror "  - Build ${CATEGORY}/${PN} without USE=lto"
+				die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!"
+			fi
+		fi
+
+		python-any-r1_pkg_setup
+
+		# Avoid PGO profiling problems due to enviroment leakage
+		# These should *always* be cleaned up anyway
+		unset \
+			DBUS_SESSION_BUS_ADDRESS \
+			DISPLAY \
+			ORBIT_SOCKETDIR \
+			SESSION_MANAGER \
+			XAUTHORITY \
+			XDG_CACHE_HOME \
+			XDG_SESSION_COOKIE
+
+		# Build system is using /proc/self/oom_score_adj, bug #604394
+		addpredict /proc/self/oom_score_adj
+
+		if ! mountpoint -q /dev/shm ; then
+			# If /dev/shm is not available, configure is known to fail with
+			# a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py
+			ewarn "/dev/shm is not mounted -- expect build failures!"
+		fi
+
+		# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+		# Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+		# get your own set of keys.
+		if [[ -z "${MOZ_API_KEY_GOOGLE+set}" ]] ; then
+			MOZ_API_KEY_GOOGLE="AIzaSyDEAOvatFogGaPi0eTgsV_ZlEzx0ObmepsMzfAc"
+		fi
+
+		if [[ -z "${MOZ_API_KEY_LOCATION+set}" ]] ; then
+			MOZ_API_KEY_LOCATION="AIzaSyB2h2OuRgGaPicUgy5N-5hsZqiPW6sH3n_rptiQ"
+		fi
+
+		# Mozilla API keys (see https://location.services.mozilla.com/api)
+		# Note: These are for Gentoo Linux use ONLY. For your own distribution, please
+		# get your own set of keys.
+		if [[ -z "${MOZ_API_KEY_MOZILLA+set}" ]] ; then
+			MOZ_API_KEY_MOZILLA="edb3d487-3a84-46m0ap1e3-9dfd-92b5efaaa005"
+		fi
+
+		# Ensure we use C locale when building, bug #746215
+		export LC_ALL=C
+	fi
+}
+
+src_unpack() {
+	local _lp_dir="${WORKDIR}/language_packs"
+	local _src_file
+
+	if [[ ! -d "${_lp_dir}" ]] ; then
+		mkdir "${_lp_dir}" || die
+	fi
+
+	for _src_file in ${A} ; do
+		if [[ ${_src_file} == *.xpi ]]; then
+			cp "${DISTDIR}/${_src_file}" "${_lp_dir}" || die "Failed to copy '${_src_file}' to '${_lp_dir}'!"
+		else
+			unpack ${_src_file}
+		fi
+	done
+}
+
+src_prepare() {
+	use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch
+	eapply "${WORKDIR}/firefox-patches"
+
+	# Allow user to apply any additional patches without modifing ebuild
+	eapply_user
+
+	# Make LTO respect MAKEOPTS
+	sed -i \
+		-e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+		"${S}"/build/moz.configure/lto-pgo.configure \
+		|| die "sed failed to set num_cores"
+
+	# Make ICU respect MAKEOPTS
+	sed -i \
+		-e "s/multiprocessing.cpu_count()/$(makeopts_jobs)/" \
+		"${S}"/intl/icu_sources_data.py \
+		|| die "sed failed to set num_cores"
+
+	# sed-in toolchain prefix
+	sed -i \
+		-e "s/objdump/${CHOST}-objdump/" \
+		"${S}"/python/mozbuild/mozbuild/configure/check_debug_ranges.py \
+		|| die "sed failed to set toolchain prefix"
+
+	sed -i \
+		-e 's/ccache_stats = None/return None/' \
+		"${S}"/python/mozbuild/mozbuild/controller/building.py \
+		|| die "sed failed to disable ccache stats call"
+
+	einfo "Removing pre-built binaries ..."
+	find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
+
+	# Clearing checksums where we have applied patches
+	moz_clear_vendor_checksums target-lexicon-0.9.0
+
+	# Create build dir
+	BUILD_DIR="${WORKDIR}/${PN}_build"
+	mkdir -p "${BUILD_DIR}" || die
+
+	# Write API keys to disk
+	echo -n "${MOZ_API_KEY_GOOGLE//gGaPi/}" > "${S}"/api-google.key || die
+	echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die
+	echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die
+
+	xdg_src_prepare
+}
+
+src_configure() {
+	# Show flags set at the beginning
+	einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+	einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
+	einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+	einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
+	einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+	local have_switched_compiler=
+	if use clang && ! tc-is-clang ; then
+		# Force clang
+		einfo "Enforcing the use of clang due to USE=clang ..."
+		have_switched_compiler=yes
+		AR=llvm-ar
+		CC=${CHOST}-clang
+		CXX=${CHOST}-clang++
+		NM=llvm-nm
+		RANLIB=llvm-ranlib
+	elif ! use clang && ! tc-is-gcc ; then
+		# Force gcc
+		have_switched_compiler=yes
+		einfo "Enforcing the use of gcc due to USE=-clang ..."
+		AR=gcc-ar
+		CC=${CHOST}-gcc
+		CXX=${CHOST}-g++
+		NM=gcc-nm
+		RANLIB=gcc-ranlib
+	fi
+
+	if [[ -n "${have_switched_compiler}" ]] ; then
+		# Because we switched active compiler we have to ensure
+		# that no unsupported flags are set
+		strip-unsupported-flags
+	fi
+
+	# Ensure we use correct toolchain
+	export HOST_CC="$(tc-getBUILD_CC)"
+	export HOST_CXX="$(tc-getBUILD_CXX)"
+	tc-export CC CXX LD AR NM OBJDUMP RANLIB PKG_CONFIG
+
+	# Pass the correct toolchain paths through cbindgen
+	if tc-is-cross-compiler ; then
+		export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}"
+	fi
+
+	# Set MOZILLA_FIVE_HOME
+	export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}"
+
+	# python/mach/mach/mixin/process.py fails to detect SHELL
+	export SHELL="${EPREFIX}/bin/bash"
+
+	# Set MOZCONFIG
+	export MOZCONFIG="${S}/.mozconfig"
+
+	# Initialize MOZCONFIG
+	mozconfig_add_options_ac '' --enable-application=browser
+
+	# Set Gentoo defaults
+	export MOZILLA_OFFICIAL=1
+
+	mozconfig_add_options_ac 'Gentoo default' \
+		--allow-addon-sideload \
+		--disable-cargo-incremental \
+		--disable-crashreporter \
+		--disable-install-strip \
+		--disable-strip \
+		--disable-updater \
+		--enable-official-branding \
+		--enable-release \
+		--enable-system-ffi \
+		--enable-system-pixman \
+		--host="${CBUILD:-${CHOST}}" \
+		--libdir="${EPREFIX}/usr/$(get_libdir)" \
+		--prefix="${EPREFIX}/usr" \
+		--target="${CHOST}" \
+		--without-ccache \
+		--with-intl-api \
+		--with-libclang-path="$(llvm-config --libdir)" \
+		--with-system-nspr \
+		--with-system-nss \
+		--with-system-png \
+		--with-system-zlib \
+		--with-toolchain-prefix="${CHOST}-" \
+		--with-unsigned-addon-scopes=app,system \
+		--x-includes="${SYSROOT}${EPREFIX}/usr/include" \
+		--x-libraries="${SYSROOT}${EPREFIX}/usr/$(get_libdir)"
+
+	# Set update channel
+	local update_channel=release
+	[[ -n ${MOZ_ESR} ]] && update_channel=esr
+	mozconfig_add_options_ac '' --update-channel=${update_channel}
+
+	if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then
+		mozconfig_add_options_ac '' --enable-rust-simd
+	fi
+
+	if [[ -s "${S}/api-google.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-google-safebrowsing-api-keyfile="${S}/api-google.key"
+	else
+		einfo "Building without Google API key ..."
+	fi
+
+	if [[ -s "${S}/api-location.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-google-location-service-api-keyfile="${S}/api-location.key"
+	else
+		einfo "Building without Location API key ..."
+	fi
+
+	if [[ -s "${S}/api-mozilla.key" ]] ; then
+		local key_origin="Gentoo default"
+		if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then
+			key_origin="User value"
+		fi
+
+		mozconfig_add_options_ac "${key_origin}" \
+			--with-mozilla-api-keyfile="${S}/api-mozilla.key"
+	else
+		einfo "Building without Mozilla API key ..."
+	fi
+
+	mozconfig_use_with system-av1
+	mozconfig_use_with system-harfbuzz
+	mozconfig_use_with system-harfbuzz system-graphite2
+	mozconfig_use_with system-icu
+	mozconfig_use_with system-jpeg
+	mozconfig_use_with system-libevent system-libevent "${SYSROOT}${EPREFIX}/usr"
+	mozconfig_use_with system-libvpx
+	mozconfig_use_with system-webp
+
+	mozconfig_use_enable dbus
+
+	use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme
+
+	mozconfig_use_enable geckodriver
+
+	if use hardened ; then
+		mozconfig_add_options_ac "+hardened" --enable-hardening
+		append-ldflags "-Wl,-z,relro -Wl,-z,now"
+	fi
+
+	mozconfig_use_enable jack
+
+	mozconfig_use_enable pulseaudio
+	# force the deprecated alsa sound code if pulseaudio is disabled
+	if use kernel_linux && ! use pulseaudio ; then
+		mozconfig_add_options_ac '-pulseaudio' --enable-alsa
+	fi
+
+	mozconfig_use_enable wifi necko-wifi
+
+	if use wayland ; then
+		mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland
+	else
+		mozconfig_add_options_ac '' --enable-default-toolkit=cairo-gtk3
+	fi
+
+	if use lto ; then
+		if use clang ; then
+			# Upstream only supports lld when using clang
+			mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
+
+			mozconfig_add_options_ac '+lto' --enable-lto=cross
+		else
+			# ThinLTO is currently broken, see bmo#1644409
+			mozconfig_add_options_ac '+lto' --enable-lto=full
+		fi
+
+		if use pgo ; then
+			mozconfig_add_options_ac '+pgo' MOZ_PGO=1
+
+			if use clang ; then
+				# Used in build/pgo/profileserver.py
+				export LLVM_PROFDATA="llvm-profdata"
+			fi
+		fi
+	else
+		# Avoid auto-magic on linker
+		if use clang ; then
+			# This is upstream's default
+			mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
+		else
+			mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
+		fi
+	fi
+
+	# LTO flag was handled via configure
+	filter-flags '-flto*'
+
+	mozconfig_use_enable debug
+	if use debug ; then
+		mozconfig_add_options_ac '+debug' --disable-optimize
+	else
+		if is-flag '-g*' ; then
+			if use clang ; then
+				mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
+			else
+				mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols
+			fi
+		else
+			mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols
+		fi
+
+		if is-flag '-O0' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0
+		elif is-flag '-O4' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4
+		elif is-flag '-O3' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3
+		elif is-flag '-O1' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1
+		elif is-flag '-Os' ; then
+			mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os
+		else
+			mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2
+		fi
+	fi
+
+	# Debug flag was handled via configure
+	filter-flags '-g*'
+
+	# Optimization flag was handled via configure
+	filter-flags '-O*'
+
+	# Modifications to better support ARM, bug #553364
+	if use cpu_flags_arm_neon ; then
+		mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon
+
+		if ! tc-is-clang ; then
+			# thumb options aren't supported when using clang, bug 666966
+			mozconfig_add_options_ac '+cpu_flags_arm_neon' \
+				--with-thumb=yes \
+				--with-thumb-interwork=no
+		fi
+	fi
+
+	if [[ ${CHOST} == armv*h* ]] ; then
+		mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard
+
+		if ! use system-libvpx ; then
+			sed -i \
+				-e "s|softfp|hard|" \
+				"${S}"/media/libvpx/moz.build \
+				|| die
+		fi
+	fi
+
+	if use clang ; then
+		# https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
+		# https://bugzilla.mozilla.org/show_bug.cgi?id=1483822
+		# toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64')
+		local disable_elf_hack=
+		if use amd64 ; then
+			disable_elf_hack=yes
+		elif use x86 ; then
+			disable_elf_hack=yes
+		elif use arm ; then
+			disable_elf_hack=yes
+		fi
+
+		if [[ -n ${disable_elf_hack} ]] ; then
+			mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack
+		fi
+	elif tc-is-gcc ; then
+		if ver_test $(gcc-fullversion) -ge 10 ; then
+			einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..."
+			append-cxxflags -fno-tree-loop-vectorize
+		fi
+	fi
+
+	# Additional ARCH support
+	case "${ARCH}" in
+		arm)
+			# Reduce the memory requirements for linking
+			if use clang ; then
+				# Nothing to do
+				:;
+			elif tc-ld-is-gold || use lto ; then
+				append-ldflags -Wl,--no-keep-memory
+			else
+				append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+			fi
+			;;
+	esac
+
+	if ! use elibc_glibc ; then
+		mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
+	fi
+
+	# Allow elfhack to work in combination with unstripped binaries
+	# when they would normally be larger than 2GiB.
+	append-ldflags "-Wl,--compress-debug-sections=zlib"
+
+	# Make revdep-rebuild.sh happy; Also required for musl
+	append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags
+
+	# Pass $MAKEOPTS to build system
+	export MOZ_MAKE_FLAGS="${MAKEOPTS}"
+
+	# Use system's Python environment
+	export MACH_USE_SYSTEM_PYTHON=1
+
+	# Disable notification when build system has finished
+	export MOZ_NOSPAM=1
+
+	# Portage sets XARGS environment variable to "xargs -r" by default which
+	# breaks build system's check_prog() function which doesn't support arguments
+	mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs"
+
+	# Set build dir
+	mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
+
+	# Show flags we will use
+	einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
+	einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}"
+	einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
+	einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}"
+	einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
+
+	# Handle EXTRA_CONF and show summary
+	local ac opt hash reason
+
+	# Apply EXTRA_ECONF entries to $MOZCONFIG
+	if [[ -n ${EXTRA_ECONF} ]] ; then
+		IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!}
+		for opt in "${ac[@]}"; do
+			mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--}
+		done
+	fi
+
+	echo
+	echo "=========================================================="
+	echo "Building ${PF} with the following configuration"
+	grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do
+		[[ -z ${hash} || ${hash} == \# ]] \
+			|| die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}"
+		printf "    %-30s  %s\n" "${opt}" "${reason:-mozilla.org default}"
+	done
+	echo "=========================================================="
+	echo
+
+	./mach configure || die
+}
+
+src_compile() {
+	local virtx_cmd=
+
+	if use pgo ; then
+		virtx_cmd=virtx
+
+		# Reset and cleanup environment variables used by GNOME/XDG
+		gnome2_environment_reset
+
+		addpredict /root
+	fi
+
+	local -x GDK_BACKEND=x11
+
+	${virtx_cmd} ./mach build --verbose \
+		|| die
+}
+
+src_install() {
+	# xpcshell is getting called during install
+	pax-mark m \
+		"${BUILD_DIR}"/dist/bin/xpcshell \
+		"${BUILD_DIR}"/dist/bin/${PN} \
+		"${BUILD_DIR}"/dist/bin/plugin-container
+
+	DESTDIR="${D}" ./mach install || die
+
+	# Upstream cannot ship symlink but we can (bmo#658850)
+	rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die
+	dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin
+
+	# Don't install llvm-symbolizer from sys-devel/llvm package
+	if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then
+		rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die
+	fi
+
+	# Install policy (currently only used to disable application updates)
+	insinto "${MOZILLA_FIVE_HOME}/distribution"
+	newins "${FILESDIR}"/distribution.ini distribution.ini
+	newins "${FILESDIR}"/disable-auto-update.policy.json policies.json
+
+	# Install system-wide preferences
+	local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences"
+	insinto "${PREFS_DIR}"
+	newins "${FILESDIR}"/gentoo-default-prefs.js all-gentoo.js
+
+	local GENTOO_PREFS="${ED}${PREFS_DIR}/all-gentoo.js"
+
+	# Set dictionary path to use system hunspell
+	cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref"
+	pref("spellchecker.dictionary_path",       "${EPREFIX}/usr/share/myspell");
+	EOF
+
+	# Force hwaccel prefs if USE=hwaccel is enabled
+	if use hwaccel ; then
+		cat "${FILESDIR}"/gentoo-hwaccel-prefs.js \
+		>>"${GENTOO_PREFS}" \
+		|| die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js"
+	fi
+
+	if ! use gmp-autoupdate ; then
+		local plugin
+		for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+			einfo "Disabling auto-update for ${plugin} plugin ..."
+			cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin"
+			pref("media.${plugin}.autoupdate",   false);
+			EOF
+		done
+	fi
+
+	# Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it
+	if use system-harfbuzz ; then
+		cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref"
+		sticky_pref("gfx.font_rendering.graphite.enabled", true);
+		EOF
+	fi
+
+	# Install language packs
+	local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') )
+	if [[ -n "${langpacks}" ]] ; then
+		moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}"
+	fi
+
+	# Install geckodriver
+	if use geckodriver ; then
+		einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..."
+		pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver
+		exeinto "${MOZILLA_FIVE_HOME}"
+		doexe "${BUILD_DIR}"/dist/bin/geckodriver
+
+		dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver
+	fi
+
+	# Install icons
+	local icon_srcdir="${S}/browser/branding/official"
+	local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg"
+
+	insinto /usr/share/icons/hicolor/symbolic/apps
+	newins "${icon_symbolic_file}" ${PN}-symbolic.svg
+
+	local icon size
+	for icon in "${icon_srcdir}"/default*.png ; do
+		size=${icon%.png}
+		size=${size##*/default}
+
+		if [[ ${size} -eq 48 ]] ; then
+			newicon "${icon}" ${PN}.png
+		fi
+
+		newicon -s ${size} "${icon}" ${PN}.png
+	done
+
+	# Install menus
+	local wrapper_wayland="${PN}-wayland.sh"
+	local wrapper_x11="${PN}-x11.sh"
+	local desktop_file="${FILESDIR}/icon/${PN}-r2.desktop"
+	local display_protocols="auto X11"
+	local icon="${PN}"
+	local name="Mozilla ${MOZ_PN^}"
+	local use_wayland="false"
+
+	if use wayland ; then
+		display_protocols+=" Wayland"
+		use_wayland="true"
+	fi
+
+	local app_name desktop_filename display_protocol exec_command
+	for display_protocol in ${display_protocols} ; do
+		app_name="${name} on ${display_protocol}"
+		desktop_filename="${PN}-${display_protocol,,}.desktop"
+
+		case ${display_protocol} in
+			Wayland)
+				exec_command="${PN}-wayland --name ${PN}-wayland"
+				newbin "${FILESDIR}/${wrapper_wayland}" ${PN}-wayland
+				;;
+			X11)
+				if ! use wayland ; then
+					# Exit loop here because there's no choice so
+					# we don't need wrapper/.desktop file for X11.
+					continue
+				fi
+
+				exec_command="${PN}-x11 --name ${PN}-x11"
+				newbin "${FILESDIR}/${wrapper_x11}" ${PN}-x11
+				;;
+			*)
+				app_name="${name}"
+				desktop_filename="${PN}.desktop"
+				exec_command="${PN}"
+				;;
+		esac
+
+		cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die
+
+		sed -i \
+			-e "s:@NAME@:${app_name}:" \
+			-e "s:@EXEC@:${exec_command}:" \
+			-e "s:@ICON@:${icon}:" \
+			"${WORKDIR}/${PN}.desktop-template" \
+			|| die
+
+		newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}"
+
+		rm "${WORKDIR}/${PN}.desktop-template" || die
+	done
+
+	# Install generic wrapper script
+	[[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}"
+	newbin "${FILESDIR}/${PN}.sh" ${PN}
+
+	# Update wrapper
+	local wrapper
+	for wrapper in \
+		"${ED}/usr/bin/${PN}" \
+		"${ED}/usr/bin/${PN}-x11" \
+		"${ED}/usr/bin/${PN}-wayland" \
+	; do
+		[[ ! -f "${wrapper}" ]] && continue
+
+		sed -i \
+			-e "s:@PREFIX@:${EPREFIX}/usr:" \
+			-e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \
+			-e "s:@APULSELIB_DIR@:${apulselib}:" \
+			-e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \
+			"${wrapper}" \
+			|| die
+	done
+}
+
+pkg_preinst() {
+	xdg_pkg_preinst
+
+	# If the apulse libs are available in MOZILLA_FIVE_HOME then apulse
+	# does not need to be forced into the LD_LIBRARY_PATH
+	if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+		einfo "APULSE found; Generating library symlinks for sound support ..."
+		local lib
+		pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die
+		for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do
+			# A quickpkg rolled by hand will grab symlinks as part of the package,
+			# so we need to avoid creating them if they already exist.
+			if [[ ! -L ${lib##*/} ]] ; then
+				ln -s "${lib}" ${lib##*/} || die
+			fi
+		done
+		popd &>/dev/null || die
+	fi
+}
+
+pkg_postinst() {
+	xdg_pkg_postinst
+
+	if ! use gmp-autoupdate ; then
+		elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or"
+		elog "installing into new profiles:"
+		local plugin
+		for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do
+			elog "\t ${plugin}"
+		done
+		elog
+	fi
+
+	if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then
+		elog "Apulse was detected at merge time on this system and so it will always be"
+		elog "used for sound.  If you wish to use pulseaudio instead please unmerge"
+		elog "media-sound/apulse."
+		elog
+	fi
+
+	local show_doh_information show_normandy_information
+
+	if [[ -z "${REPLACING_VERSIONS}" ]] ; then
+		# New install; Tell user that DoH is disabled by default
+		show_doh_information=yes
+		show_normandy_information=yes
+	else
+		local replacing_version
+		for replacing_version in ${REPLACING_VERSIONS} ; do
+			if ver_test "${replacing_version}" -lt 70 ; then
+				# Tell user only once about our DoH default
+				show_doh_information=yes
+			fi
+
+			if ver_test "${replacing_version}" -lt 74.0-r2 ; then
+				# Tell user only once about our Normandy default
+				show_normandy_information=yes
+			fi
+		done
+	fi
+
+	if [[ -n "${show_doh_information}" ]] ; then
+		elog
+		elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):"
+		elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all"
+		elog "DNS traffic to Cloudflare by default is not a good idea and applications"
+		elog "should respect OS configured settings), \"network.trr.mode\" was set to 5"
+		elog "(\"Off by choice\") by default."
+		elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences."
+	fi
+
+	# bug 713782
+	if [[ -n "${show_normandy_information}" ]] ; then
+		elog
+		elog "Upstream operates a service named Normandy which allows Mozilla to"
+		elog "push changes for default settings or even install new add-ons remotely."
+		elog "While this can be useful to address problems like 'Armagadd-on 2.0' or"
+		elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security"
+		elog "concerns prevail, which is why we have switched off the use of this"
+		elog "service by default."
+		elog
+		elog "To re-enable this service set"
+		elog
+		elog "    app.normandy.enabled=true"
+		elog
+		elog "in about:config."
+	fi
+}


             reply	other threads:[~2021-02-10 21:53 UTC|newest]

Thread overview: 1230+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 21:53 Thomas Deutschmann [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-10-03 16:12 [gentoo-commits] repo/gentoo:master commit in: www-client/firefox/ Arthur Zamarin
2024-10-03 12:45 Joonas Niilola
2024-10-03 12:45 Joonas Niilola
2024-10-03 12:45 Joonas Niilola
2024-10-01 16:08 Joonas Niilola
2024-10-01 13:19 Joonas Niilola
2024-10-01 11:07 Joonas Niilola
2024-09-28 12:46 Joonas Niilola
2024-09-21 22:48 Sam James
2024-09-18 17:41 Joonas Niilola
2024-09-18 10:22 Joonas Niilola
2024-09-12  8:05 Joonas Niilola
2024-09-11  6:41 Joonas Niilola
2024-09-10 18:41 Arthur Zamarin
2024-09-10 11:45 Joonas Niilola
2024-09-10 11:45 Joonas Niilola
2024-09-09 12:58 Joonas Niilola
2024-09-09 11:28 Joonas Niilola
2024-09-09 11:28 Joonas Niilola
2024-09-08  6:06 Arthur Zamarin
2024-09-03 10:44 Joonas Niilola
2024-09-03  5:40 Joonas Niilola
2024-08-27  7:00 Joonas Niilola
2024-08-21 10:46 Joonas Niilola
2024-08-16 13:09 Joonas Niilola
2024-08-16 13:09 Joonas Niilola
2024-08-15  5:07 Joonas Niilola
2024-08-11 14:45 Joonas Niilola
2024-08-11 14:45 Joonas Niilola
2024-08-11 14:45 Joonas Niilola
2024-08-11 14:45 Joonas Niilola
2024-08-09 16:45 Joonas Niilola
2024-08-07 13:04 Sam James
2024-08-07 11:30 Joonas Niilola
2024-08-07 11:30 Joonas Niilola
2024-08-07  5:42 Joonas Niilola
2024-08-07  5:42 Joonas Niilola
2024-08-06 16:32 Joonas Niilola
2024-08-06 10:22 Joonas Niilola
2024-08-06  6:03 Joonas Niilola
2024-07-29  7:03 Joonas Niilola
2024-07-29  7:03 Joonas Niilola
2024-07-29  7:03 Joonas Niilola
2024-07-29  7:03 Joonas Niilola
2024-07-27 11:59 Joonas Niilola
2024-07-24 10:33 Joonas Niilola
2024-07-23  5:51 Joonas Niilola
2024-07-20  6:49 Joonas Niilola
2024-07-17  7:24 Joonas Niilola
2024-07-15 13:07 Joonas Niilola
2024-07-13  7:58 Joonas Niilola
2024-07-12 13:21 Joonas Niilola
2024-07-11 11:21 Joonas Niilola
2024-07-11 11:21 Joonas Niilola
2024-07-11 11:21 Joonas Niilola
2024-07-11 11:01 Sam James
2024-07-11 11:01 Sam James
2024-07-10 12:59 Joonas Niilola
2024-07-10 10:22 Joonas Niilola
2024-07-09  6:39 Joonas Niilola
2024-06-26 11:17 Joonas Niilola
2024-06-19 13:00 Joonas Niilola
2024-06-12 12:46 Joonas Niilola
2024-06-12 12:46 Joonas Niilola
2024-06-12  6:22 Arthur Zamarin
2024-06-11 11:17 Joonas Niilola
2024-06-11  5:56 Arthur Zamarin
2024-06-11  5:01 Joonas Niilola
2024-06-01  8:37 Joonas Niilola
2024-05-31 21:03 Sam James
2024-05-31 21:03 Sam James
2024-05-30  4:36 Ionen Wolkens
2024-05-28 11:58 Joonas Niilola
2024-05-28 11:58 Joonas Niilola
2024-05-15 10:58 Joonas Niilola
2024-05-15 10:58 Joonas Niilola
2024-05-15 10:31 Sam James
2024-05-14 15:05 Joonas Niilola
2024-05-14  5:13 Joonas Niilola
2024-05-13  6:49 Joonas Niilola
2024-05-13  6:49 Joonas Niilola
2024-05-06  1:51 Ionen Wolkens
2024-05-06  1:51 Ionen Wolkens
2024-04-30 13:36 Joonas Niilola
2024-04-29 19:20 Joonas Niilola
2024-04-29  8:18 Joonas Niilola
2024-04-25 11:37 Joonas Niilola
2024-04-25 11:37 Joonas Niilola
2024-04-22 18:39 Joonas Niilola
2024-04-18 10:54 Joonas Niilola
2024-04-18 10:28 Joonas Niilola
2024-04-18 10:25 Joonas Niilola
2024-04-17 12:47 Joonas Niilola
2024-04-16 13:48 Joonas Niilola
2024-04-16 13:32 Joonas Niilola
2024-04-16  7:18 Yixun Lan
2024-04-15 11:49 Yixun Lan
2024-04-15  6:03 Joonas Niilola
2024-04-06 16:15 Joonas Niilola
2024-04-05 14:18 Joonas Niilola
2024-04-05 10:55 Joonas Niilola
2024-04-01  6:47 Joonas Niilola
2024-03-24 17:39 Joonas Niilola
2024-03-24 14:25 Joonas Niilola
2024-03-24 14:25 Joonas Niilola
2024-03-24  9:20 Sam James
2024-03-23 20:49 Joonas Niilola
2024-03-23 17:02 Joonas Niilola
2024-03-22 12:48 Joonas Niilola
2024-03-22 12:48 Joonas Niilola
2024-03-22 11:29 Arthur Zamarin
2024-03-22  9:40 Sam James
2024-03-20 10:44 Joonas Niilola
2024-03-19  9:44 Joonas Niilola
2024-03-17  7:45 Joonas Niilola
2024-03-11  5:28 Joonas Niilola
2024-03-11  5:28 Joonas Niilola
2024-03-05 14:37 Joonas Niilola
2024-03-02 15:25 Arthur Zamarin
2024-02-24  7:30 Joonas Niilola
2024-02-23  4:46 Sam James
2024-02-22 11:05 Joonas Niilola
2024-02-22 11:05 Joonas Niilola
2024-02-21 13:48 Joonas Niilola
2024-02-20 13:20 Joonas Niilola
2024-02-16 10:22 Joonas Niilola
2024-02-06 11:25 Joonas Niilola
2024-02-02 18:06 Joonas Niilola
2024-01-31 17:41 Joonas Niilola
2024-01-31  8:30 Joonas Niilola
2024-01-25 13:44 Sam James
2024-01-25 13:14 Joonas Niilola
2024-01-25 13:14 Joonas Niilola
2024-01-24  8:03 Joonas Niilola
2024-01-23 12:36 Joonas Niilola
2024-01-23  5:07 Ionen Wolkens
2024-01-20 14:05 Joonas Niilola
2024-01-09 12:24 Joonas Niilola
2024-01-06  9:32 Joonas Niilola
2024-01-01 19:01 Joonas Niilola
2023-12-22 11:41 Joonas Niilola
2023-12-22 11:41 Joonas Niilola
2023-12-22  8:44 Arthur Zamarin
2023-12-19 17:18 Joonas Niilola
2023-12-19 17:18 Joonas Niilola
2023-12-19 12:14 Joonas Niilola
2023-11-30 12:00 Joonas Niilola
2023-11-23 13:27 Sam James
2023-11-23 12:26 Joonas Niilola
2023-11-23 12:26 Joonas Niilola
2023-11-22 14:22 Joonas Niilola
2023-11-22 14:22 Joonas Niilola
2023-11-22 12:52 Joonas Niilola
2023-11-22  6:18 Joonas Niilola
2023-11-21 16:22 Joonas Niilola
2023-11-21 12:34 Joonas Niilola
2023-11-09 11:04 Joonas Niilola
2023-11-01 13:17 Joonas Niilola
2023-10-27  9:12 Joonas Niilola
2023-10-27  9:12 Joonas Niilola
2023-10-27  9:12 Joonas Niilola
2023-10-26 17:17 Joonas Niilola
2023-10-25 10:27 Joonas Niilola
2023-10-24  9:10 Joonas Niilola
2023-10-16 13:21 Joonas Niilola
2023-10-12 10:40 Joonas Niilola
2023-10-07  6:20 Joonas Niilola
2023-10-06 12:34 Arthur Zamarin
2023-10-06 12:16 Joonas Niilola
2023-10-03 15:47 Joonas Niilola
2023-09-29 10:43 Joonas Niilola
2023-09-29  7:58 Joonas Niilola
2023-09-28 10:42 Joonas Niilola
2023-09-28 10:42 Joonas Niilola
2023-09-27 13:40 Joonas Niilola
2023-09-27 10:46 Joonas Niilola
2023-09-27  3:10 Sam James
2023-09-26 20:40 Sam James
2023-09-26 11:09 Joonas Niilola
2023-09-16  8:05 Joonas Niilola
2023-09-15 14:38 Joonas Niilola
2023-09-15  8:53 Sam James
2023-09-15  8:53 Sam James
2023-09-14 11:45 Joonas Niilola
2023-09-14 11:45 Joonas Niilola
2023-09-14 11:45 Joonas Niilola
2023-09-10  6:29 Joonas Niilola
2023-09-06  7:46 Joonas Niilola
2023-09-05  6:33 Joonas Niilola
2023-09-01 12:25 Joonas Niilola
2023-09-01 11:07 Joonas Niilola
2023-09-01  8:16 Arthur Zamarin
2023-08-31 10:34 Joonas Niilola
2023-08-30 17:25 Joonas Niilola
2023-08-30 14:26 Joonas Niilola
2023-08-30 14:26 Joonas Niilola
2023-08-30 14:26 Joonas Niilola
2023-08-29 10:39 Joonas Niilola
2023-08-24  5:43 Joonas Niilola
2023-08-23 11:37 Joonas Niilola
2023-08-22  5:45 Joonas Niilola
2023-08-17  9:57 Joonas Niilola
2023-08-17  9:18 Joonas Niilola
2023-08-17  2:55 Sam James
2023-08-10 16:10 Andreas K. Hüttel
2023-08-09  8:32 Joonas Niilola
2023-08-09  6:43 Joonas Niilola
2023-08-07 12:58 Joonas Niilola
2023-08-06  9:20 Joonas Niilola
2023-08-02 14:07 Joonas Niilola
2023-08-02 11:39 Joonas Niilola
2023-08-02  5:55 Joonas Niilola
2023-08-02  5:55 Joonas Niilola
2023-08-01 15:19 Joonas Niilola
2023-08-01 10:04 Joonas Niilola
2023-07-20 13:46 Joonas Niilola
2023-07-19  7:48 Joonas Niilola
2023-07-18  5:22 Joonas Niilola
2023-07-16  7:41 Joonas Niilola
2023-07-12  8:37 Joonas Niilola
2023-07-12  8:37 Joonas Niilola
2023-07-12  8:37 Joonas Niilola
2023-07-08  3:39 Sam James
2023-07-07 11:38 Joonas Niilola
2023-07-07 11:38 Joonas Niilola
2023-07-06  6:48 Joonas Niilola
2023-07-05  9:49 Joonas Niilola
2023-07-05  7:59 Joonas Niilola
2023-07-05  6:08 Joonas Niilola
2023-07-04 16:58 Joonas Niilola
2023-07-04 16:32 Joonas Niilola
2023-06-29  6:41 Joonas Niilola
2023-06-29  6:41 Joonas Niilola
2023-06-24  2:59 Sam James
2023-06-08 12:23 Arthur Zamarin
2023-06-08 11:04 Joonas Niilola
2023-06-08 11:04 Joonas Niilola
2023-06-07 10:51 Joonas Niilola
2023-06-07 10:46 Joonas Niilola
2023-06-07  6:41 Joonas Niilola
2023-06-06 19:21 Joonas Niilola
2023-06-03  6:09 Joonas Niilola
2023-06-03  6:09 Joonas Niilola
2023-06-02 18:59 Joonas Niilola
2023-06-02 16:15 Joonas Niilola
2023-05-25 11:46 Joonas Niilola
2023-05-16  5:58 Joonas Niilola
2023-05-13  9:01 Joonas Niilola
2023-05-12  6:01 Joonas Niilola
2023-05-12  6:01 Joonas Niilola
2023-05-11 18:43 Arthur Zamarin
2023-05-10  8:34 Joonas Niilola
2023-05-09  9:16 Joonas Niilola
2023-05-06  8:18 Joonas Niilola
2023-05-02  6:13 Joonas Niilola
2023-05-02  6:13 Joonas Niilola
2023-05-02  6:06 Joonas Niilola
2023-05-01 17:49 Joonas Niilola
2023-04-25 10:05 Joonas Niilola
2023-04-24  5:21 Joonas Niilola
2023-04-23 14:20 Joonas Niilola
2023-04-19  6:27 Joonas Niilola
2023-04-18  8:35 Joonas Niilola
2023-04-15  6:19 Joonas Niilola
2023-04-14 12:25 Joonas Niilola
2023-04-14  9:17 Joonas Niilola
2023-04-12 10:52 Joonas Niilola
2023-04-12  8:58 Joonas Niilola
2023-04-12  7:35 Sam James
2023-04-11  9:52 Joonas Niilola
2023-04-03  7:38 Joonas Niilola
2023-04-02 15:51 Jory Pratt
2023-03-31  5:40 Yixun Lan
2023-03-31  5:40 Yixun Lan
2023-03-31  5:40 Yixun Lan
2023-03-25  6:32 Joonas Niilola
2023-03-17 15:52 Arthur Zamarin
2023-03-17 12:39 Joonas Niilola
2023-03-17 12:39 Joonas Niilola
2023-03-15  8:24 Joonas Niilola
2023-03-14 11:20 Joonas Niilola
2023-03-08 16:25 Joonas Niilola
2023-03-01 14:58 Joonas Niilola
2023-03-01 14:58 Joonas Niilola
2023-02-28 10:01 Joonas Niilola
2023-02-24  8:49 Joonas Niilola
2023-02-22  7:14 Joonas Niilola
2023-02-21 12:10 Joonas Niilola
2023-02-21 12:10 Joonas Niilola
2023-02-21  7:47 Sam James
2023-02-20 16:36 Joonas Niilola
2023-02-20 12:02 Joonas Niilola
2023-02-14 15:51 Mike Gilbert
2023-02-14  0:30 Mike Gilbert
2023-02-03  7:26 Joonas Niilola
2023-01-31 10:08 Joonas Niilola
2023-01-30  6:16 Joonas Niilola
2023-01-29  8:50 Joonas Niilola
2023-01-24 10:01 Joonas Niilola
2023-01-21  9:15 Arthur Zamarin
2023-01-17 20:56 Arthur Zamarin
2023-01-17 20:04 Sam James
2023-01-17 14:25 Joonas Niilola
2023-01-17 10:01 Joonas Niilola
2023-01-17  9:51 Joonas Niilola
2023-01-17  9:00 Joonas Niilola
2023-01-05  9:31 Joonas Niilola
2023-01-05  9:23 Joonas Niilola
2023-01-05  9:23 Joonas Niilola
2022-12-18  9:06 Joonas Niilola
2022-12-16  6:31 Joonas Niilola
2022-12-15 11:40 Joonas Niilola
2022-12-15 11:40 Joonas Niilola
2022-12-15  6:16 Sam James
2022-12-14 13:16 Joonas Niilola
2022-12-14 12:34 Joonas Niilola
2022-12-03  8:37 Joonas Niilola
2022-11-29  8:24 Joonas Niilola
2022-11-21 11:21 Joonas Niilola
2022-11-21  8:36 Joonas Niilola
2022-11-18  7:20 Joonas Niilola
2022-11-17 19:16 Joonas Niilola
2022-11-17 16:40 Arthur Zamarin
2022-11-17 12:47 Joonas Niilola
2022-11-17 12:47 Joonas Niilola
2022-11-17  9:00 Joonas Niilola
2022-11-17  7:05 Joonas Niilola
2022-11-16 12:53 Joonas Niilola
2022-11-15 13:10 Joonas Niilola
2022-11-15  9:19 Joonas Niilola
2022-11-10  8:06 Joonas Niilola
2022-11-10  7:54 Joonas Niilola
2022-11-08 18:07 Joonas Niilola
2022-11-08 17:20 Joonas Niilola
2022-11-07 15:05 Joonas Niilola
2022-11-07  8:49 Joonas Niilola
2022-11-05 11:33 Joonas Niilola
2022-11-04 11:07 Joonas Niilola
2022-11-03 23:08 Sam James
2022-11-03 11:32 Joonas Niilola
2022-11-01  7:24 Joonas Niilola
2022-10-31 11:50 Joonas Niilola
2022-10-26  9:00 Joonas Niilola
2022-10-25 11:35 Joonas Niilola
2022-10-25 11:35 Joonas Niilola
2022-10-25  9:49 Joonas Niilola
2022-10-25  9:45 Arthur Zamarin
2022-10-20  8:37 Joonas Niilola
2022-10-19 15:57 Joonas Niilola
2022-10-18 12:54 Joonas Niilola
2022-10-10 12:20 Joonas Niilola
2022-10-06 11:13 Joonas Niilola
2022-10-04 15:00 Joonas Niilola
2022-10-04 14:58 Joonas Niilola
2022-10-03 17:08 Joonas Niilola
2022-10-03 13:27 Joonas Niilola
2022-09-26  6:27 Joonas Niilola
2022-09-25  6:42 Joonas Niilola
2022-09-24 13:57 Joonas Niilola
2022-09-23 12:53 Joonas Niilola
2022-09-22 14:16 Joonas Niilola
2022-09-22  4:09 Sam James
2022-09-21 12:30 Joonas Niilola
2022-09-21 12:30 Joonas Niilola
2022-09-21  8:40 Joonas Niilola
2022-09-20 13:37 Joonas Niilola
2022-09-20 11:16 Joonas Niilola
2022-09-18  7:22 Joonas Niilola
2022-09-16 16:20 Joonas Niilola
2022-09-16  9:34 Joonas Niilola
2022-09-15  6:44 Joonas Niilola
2022-09-09  8:37 Joonas Niilola
2022-09-09  8:37 Joonas Niilola
2022-09-09  5:26 Joonas Niilola
2022-09-06  9:23 Joonas Niilola
2022-09-04 16:11 Joonas Niilola
2022-08-30  8:42 Joonas Niilola
2022-08-28  6:42 Joonas Niilola
2022-08-25  4:25 Joonas Niilola
2022-08-24 18:08 Arthur Zamarin
2022-08-24 17:57 Joonas Niilola
2022-08-24 17:57 Joonas Niilola
2022-08-24 11:53 Joonas Niilola
2022-08-23 13:11 Joonas Niilola
2022-08-23 13:11 Joonas Niilola
2022-08-23 13:11 Joonas Niilola
2022-08-21 12:20 Joonas Niilola
2022-08-16  7:55 Joonas Niilola
2022-08-16  1:08 Sam James
2022-08-10 17:41 Joonas Niilola
2022-08-09  9:08 Joonas Niilola
2022-08-01 17:41 Joonas Niilola
2022-08-01 17:41 Joonas Niilola
2022-08-01 11:03 Joonas Niilola
2022-07-27  8:22 Joonas Niilola
2022-07-26 12:14 Joonas Niilola
2022-07-26 10:35 Joonas Niilola
2022-07-20  5:15 Sam James
2022-07-19 10:43 Joonas Niilola
2022-07-16  6:19 Joonas Niilola
2022-07-13 15:13 Joonas Niilola
2022-07-04  6:17 Joonas Niilola
2022-07-01  8:10 Arthur Zamarin
2022-06-29 15:53 Joonas Niilola
2022-06-29 15:15 Joonas Niilola
2022-06-28 19:41 Joonas Niilola
2022-06-27 19:22 Joonas Niilola
2022-06-26 12:46 Joonas Niilola
2022-06-25 12:37 Joonas Niilola
2022-06-20 19:32 Joonas Niilola
2022-06-19  8:34 Joonas Niilola
2022-06-15 11:30 Joonas Niilola
2022-06-15 11:30 Joonas Niilola
2022-06-15  5:47 Joonas Niilola
2022-06-09 18:15 Joonas Niilola
2022-06-09 17:00 Joonas Niilola
2022-06-09 16:31 Joonas Niilola
2022-06-09 13:48 Joonas Niilola
2022-06-05 13:36 Joonas Niilola
2022-06-03  7:28 Joonas Niilola
2022-06-02 14:17 Joonas Niilola
2022-06-02 11:49 Joonas Niilola
2022-06-01 20:11 Sam James
2022-06-01 10:40 Joonas Niilola
2022-05-31 18:15 Joonas Niilola
2022-05-30  6:05 Joonas Niilola
2022-05-22  9:31 Joonas Niilola
2022-05-22  9:31 Joonas Niilola
2022-05-21 12:25 Joonas Niilola
2022-05-21  9:19 Joonas Niilola
2022-05-16 12:55 Joonas Niilola
2022-05-16  6:25 Joonas Niilola
2022-05-14  0:51 Sam James
2022-05-14  0:47 Sam James
2022-05-08  9:15 Jakov Smolić
2022-05-06 10:35 Joonas Niilola
2022-05-05 14:26 Joonas Niilola
2022-05-05 14:26 Joonas Niilola
2022-05-04 14:15 Joonas Niilola
2022-05-04 11:51 Joonas Niilola
2022-05-04  5:44 Joonas Niilola
2022-05-04  5:44 Joonas Niilola
2022-05-03 17:31 Joonas Niilola
2022-04-14 11:51 Joonas Niilola
2022-04-13  8:31 Joonas Niilola
2022-04-11 12:24 Joonas Niilola
2022-04-10 17:38 Arthur Zamarin
2022-04-10 16:33 Joonas Niilola
2022-04-10 12:54 Joonas Niilola
2022-04-10  9:07 Joonas Niilola
2022-04-09 15:25 Joonas Niilola
2022-04-07 13:03 Joonas Niilola
2022-04-07 13:03 Joonas Niilola
2022-04-07  7:07 Joonas Niilola
2022-04-05 17:00 Joonas Niilola
2022-03-23 13:05 Joonas Niilola
2022-03-23 13:05 Joonas Niilola
2022-03-23  8:15 Joonas Niilola
2022-03-14 16:26 Joonas Niilola
2022-03-14 11:38 Joonas Niilola
2022-03-13 17:51 Joonas Niilola
2022-03-11 23:49 Sam James
2022-03-09 17:19 Joonas Niilola
2022-03-09 17:19 Joonas Niilola
2022-03-08  7:53 Joonas Niilola
2022-03-08  7:53 Joonas Niilola
2022-03-06 17:30 Joonas Niilola
2022-03-06 17:30 Joonas Niilola
2022-03-06  9:39 Sam James
2022-03-05  8:28 Joonas Niilola
2022-03-05  8:28 Joonas Niilola
2022-02-18 12:27 Joonas Niilola
2022-02-17  9:04 Joonas Niilola
2022-02-17  9:04 Joonas Niilola
2022-02-13  6:57 Joonas Niilola
2022-02-12 12:34 Arthur Zamarin
2022-02-12  8:08 Joonas Niilola
2022-02-10 12:43 Joonas Niilola
2022-02-10 12:43 Joonas Niilola
2022-02-08 18:25 Joonas Niilola
2022-02-08 17:28 Joonas Niilola
2022-02-08 17:28 Joonas Niilola
2022-01-30  8:06 Joonas Niilola
2022-01-28  7:45 Joonas Niilola
2022-01-27 13:40 Joonas Niilola
2022-01-27 13:40 Joonas Niilola
2022-01-24  8:11 Joonas Niilola
2022-01-21 18:14 Joonas Niilola
2022-01-20 10:30 Joonas Niilola
2022-01-15 11:46 Joonas Niilola
2022-01-14  9:11 Joonas Niilola
2022-01-13  8:31 Joonas Niilola
2022-01-13  8:24 Sam James
2022-01-12 14:29 Joonas Niilola
2022-01-12 14:29 Joonas Niilola
2022-01-12  7:21 Joonas Niilola
2022-01-11 23:19 Sam James
2022-01-11 20:46 Joonas Niilola
2022-01-11 20:32 Joonas Niilola
2022-01-11 20:32 Joonas Niilola
2021-12-19 11:57 Joonas Niilola
2021-12-18  6:36 Sam James
2021-12-17  9:06 Joonas Niilola
2021-12-14 13:14 Joonas Niilola
2021-12-14 10:37 Sam James
2021-12-13  6:30 Joonas Niilola
2021-12-13  6:30 Joonas Niilola
2021-12-13  1:16 Sam James
2021-12-12 21:31 Andreas K. Hüttel
2021-12-12  1:41 Thomas Deutschmann
2021-12-11 17:54 Thomas Deutschmann
2021-12-10  0:18 Thomas Deutschmann
2021-12-10  0:18 Thomas Deutschmann
2021-12-10  0:18 Thomas Deutschmann
2021-12-06 15:48 Thomas Deutschmann
2021-12-06 15:28 Thomas Deutschmann
2021-12-06 15:28 Thomas Deutschmann
2021-11-20  2:37 Thomas Deutschmann
2021-11-09 20:53 Thomas Deutschmann
2021-11-05  3:43 Sam James
2021-11-04 12:45 Thomas Deutschmann
2021-11-04  8:41 Joonas Niilola
2021-11-03 23:48 Thomas Deutschmann
2021-11-03 17:05 Thomas Deutschmann
2021-11-03 15:09 Thomas Deutschmann
2021-11-03  7:35 Joonas Niilola
2021-11-03  2:23 Thomas Deutschmann
2021-11-03  2:23 Thomas Deutschmann
2021-11-03  0:13 Thomas Deutschmann
2021-11-02 23:28 Thomas Deutschmann
2021-11-02 22:42 Thomas Deutschmann
2021-10-23  0:33 Thomas Deutschmann
2021-10-23  0:33 Thomas Deutschmann
2021-10-10 10:27 Joonas Niilola
2021-10-09  7:10 Joonas Niilola
2021-10-08 18:25 Sam James
2021-10-07 11:15 Joonas Niilola
2021-10-07 11:15 Joonas Niilola
2021-10-06  1:26 Thomas Deutschmann
2021-10-06  1:26 Thomas Deutschmann
2021-09-24 22:49 Sam James
2021-09-24 17:45 Sam James
2021-09-23 18:23 Thomas Deutschmann
2021-09-06 16:03 Thomas Deutschmann
2021-09-06 16:03 Thomas Deutschmann
2021-08-24 13:17 Thomas Deutschmann
2021-08-24 13:17 Thomas Deutschmann
2021-08-17 21:39 Sam James
2021-08-17 13:14 Thomas Deutschmann
2021-08-14 12:14 Joonas Niilola
2021-08-14 11:24 Joonas Niilola
2021-08-13  0:43 Thomas Deutschmann
2021-08-13  0:43 Thomas Deutschmann
2021-08-11 12:23 Thomas Deutschmann
2021-08-11  1:38 Thomas Deutschmann
2021-07-26  5:23 Joonas Niilola
2021-07-26  0:30 Sam James
2021-07-23 17:58 Sam James
2021-07-23 17:58 Sam James
2021-07-22 23:41 Thomas Deutschmann
2021-07-20  2:10 Thomas Deutschmann
2021-07-12 23:32 Thomas Deutschmann
2021-07-12 23:32 Thomas Deutschmann
2021-07-12 23:32 Thomas Deutschmann
2021-07-12 23:32 Thomas Deutschmann
2021-06-23 13:28 Thomas Deutschmann
2021-06-16  0:29 Thomas Deutschmann
2021-06-13 18:21 Thomas Deutschmann
2021-06-07 16:16 Sam James
2021-06-04 12:57 Thomas Deutschmann
2021-06-01 19:04 Thomas Deutschmann
2021-06-01  8:13 Thomas Deutschmann
2021-06-01  8:13 Thomas Deutschmann
2021-06-01  8:13 Thomas Deutschmann
2021-05-31  7:54 Thomas Deutschmann
2021-05-31  7:52 Thomas Deutschmann
2021-05-28 21:21 Thomas Deutschmann
2021-05-28 13:31 Thomas Deutschmann
2021-05-21 16:20 Thomas Deutschmann
2021-05-08 19:55 Thomas Deutschmann
2021-05-08 19:21 Thomas Deutschmann
2021-05-07 15:02 Thomas Deutschmann
2021-05-07 15:02 Thomas Deutschmann
2021-05-05 15:33 Thomas Deutschmann
2021-05-04 16:25 Thomas Deutschmann
2021-04-29 21:38 Thomas Deutschmann
2021-04-29 19:23 Thomas Deutschmann
2021-04-25 23:30 Thomas Deutschmann
2021-04-25 23:30 Thomas Deutschmann
2021-04-23 21:47 Thomas Deutschmann
2021-04-22  3:01 Sam James
2021-04-20 20:56 Thomas Deutschmann
2021-04-19 21:35 Thomas Deutschmann
2021-04-19  8:32 Thomas Deutschmann
2021-04-19  8:32 Thomas Deutschmann
2021-04-12 21:10 Thomas Deutschmann
2021-04-06 11:06 Joonas Niilola
2021-03-30 22:06 Sam James
2021-03-30 18:22 Thomas Deutschmann
2021-03-30  0:57 Thomas Deutschmann
2021-03-27 20:50 Thomas Deutschmann
2021-03-22 20:55 Thomas Deutschmann
2021-03-22 20:55 Thomas Deutschmann
2021-03-11 20:13 Thomas Deutschmann
2021-02-27 12:40 Joonas Niilola
2021-02-26 13:58 Sam James
2021-02-25 12:16 Joonas Niilola
2021-02-25 12:16 Joonas Niilola
2021-02-23 20:30 Thomas Deutschmann
2021-02-23 19:55 Thomas Deutschmann
2021-02-23 19:55 Thomas Deutschmann
2021-02-14 14:06 Thomas Deutschmann
2021-02-12 14:32 Joonas Niilola
2021-02-12 14:32 Joonas Niilola
2021-02-12  9:33 Joonas Niilola
2021-02-12  9:33 Joonas Niilola
2021-02-12  9:33 Joonas Niilola
2021-02-12  9:33 Joonas Niilola
2021-02-12  1:10 Thomas Deutschmann
2021-02-12  1:10 Thomas Deutschmann
2021-02-11 18:29 Joonas Niilola
2021-02-09 17:46 Thomas Deutschmann
2021-02-05 22:10 Thomas Deutschmann
2021-02-05 20:02 Thomas Deutschmann
2021-02-05 20:02 Thomas Deutschmann
2021-02-05 18:33 Thomas Deutschmann
2021-02-05 18:33 Thomas Deutschmann
2021-02-01 15:01 Thomas Deutschmann
2021-02-01 15:01 Thomas Deutschmann
2021-02-01  5:55 Joonas Niilola
2021-01-31 21:49 Sam James
2021-01-31 21:49 Sam James
2021-01-30 18:40 Sam James
2021-01-26  3:04 Thomas Deutschmann
2021-01-26  3:04 Thomas Deutschmann
2021-01-23  1:58 Thomas Deutschmann
2021-01-22 21:06 Thomas Deutschmann
2021-01-11 15:51 Joonas Niilola
2021-01-10  3:10 Joonas Niilola
2021-01-10  3:10 Joonas Niilola
2021-01-09 23:03 Sam James
2021-01-09 15:32 Joonas Niilola
2021-01-09 14:04 Joonas Niilola
2021-01-09 12:38 Joonas Niilola
2021-01-07 13:52 Joonas Niilola
2020-12-23 13:35 Thomas Deutschmann
2020-12-22 15:20 Thomas Deutschmann
2020-12-21 23:43 Thomas Deutschmann
2020-12-17 14:52 Thomas Deutschmann
2020-12-17  6:05 Joonas Niilola
2020-12-17  4:00 Sam James
2020-12-16 18:33 Thomas Deutschmann
2020-12-15 13:32 Thomas Deutschmann
2020-12-14 18:38 Thomas Deutschmann
2020-12-14 18:38 Thomas Deutschmann
2020-12-14  0:18 Thomas Deutschmann
2020-12-11 18:40 Thomas Deutschmann
2020-12-10  0:38 Thomas Deutschmann
2020-12-10  0:06 Thomas Deutschmann
2020-12-03  2:19 Thomas Deutschmann
2020-12-01 19:40 Thomas Deutschmann
2020-11-28 14:01 Thomas Deutschmann
2020-11-25 20:03 Thomas Deutschmann
2020-11-24 19:33 Thomas Deutschmann
2020-11-19  0:33 Thomas Deutschmann
2020-11-19  0:20 Sam James
2020-11-17 23:15 Thomas Deutschmann
2020-11-17 16:53 Thomas Deutschmann
2020-11-16 19:33 Thomas Deutschmann
2020-11-16 15:01 Thomas Deutschmann
2020-11-16 15:01 Thomas Deutschmann
2020-11-16  0:09 Thomas Deutschmann
2020-11-16  0:09 Thomas Deutschmann
2020-11-15 23:50 Thomas Deutschmann
2020-11-13  1:44 Thomas Deutschmann
2020-11-13  1:35 Thomas Deutschmann
2020-11-09 19:28 Thomas Deutschmann
2020-11-09 19:28 Thomas Deutschmann
2020-11-09 19:28 Thomas Deutschmann
2020-10-28 17:09 Thomas Deutschmann
2020-10-27 17:30 Thomas Deutschmann
2020-10-23  0:31 Sam James
2020-10-21 22:49 Thomas Deutschmann
2020-10-21 17:11 Thomas Deutschmann
2020-10-21 17:11 Thomas Deutschmann
2020-10-20 21:10 Thomas Deutschmann
2020-10-20 19:49 Thomas Deutschmann
2020-10-20 19:49 Thomas Deutschmann
2020-10-20 14:26 Thomas Deutschmann
2020-10-20 14:26 Thomas Deutschmann
2020-10-16 22:55 Thomas Deutschmann
2020-10-16 21:33 Thomas Deutschmann
2020-10-12 18:09 Thomas Deutschmann
2020-10-11 18:44 Thomas Deutschmann
2020-10-11 18:43 Thomas Deutschmann
2020-10-10 17:40 Thomas Deutschmann
2020-10-10 17:40 Thomas Deutschmann
2020-10-10 17:40 Thomas Deutschmann
2020-10-10 17:40 Thomas Deutschmann
2020-10-07  1:08 Thomas Deutschmann
2020-10-05 15:40 Thomas Deutschmann
2020-10-04 14:36 Thomas Deutschmann
2020-10-04 14:05 Thomas Deutschmann
2020-10-03 23:45 Sam James
2020-10-03 16:11 Sam James
2020-10-03 11:59 Thomas Deutschmann
2020-10-03  0:43 Sam James
2020-10-02 19:25 Thomas Deutschmann
2020-10-02 15:19 Thomas Deutschmann
2020-10-01 11:43 Thomas Deutschmann
2020-10-01 11:43 Thomas Deutschmann
2020-10-01 11:43 Thomas Deutschmann
2020-09-30 23:49 Thomas Deutschmann
2020-09-30 23:49 Thomas Deutschmann
2020-09-30 19:42 Thomas Deutschmann
2020-09-30 18:46 Thomas Deutschmann
2020-09-30 18:05 Thomas Deutschmann
2020-09-30 12:45 Thomas Deutschmann
2020-09-30 12:45 Thomas Deutschmann
2020-09-30 11:31 Thomas Deutschmann
2020-09-30  2:16 Thomas Deutschmann
2020-09-30  1:09 Thomas Deutschmann
2020-09-05 17:30 Thomas Deutschmann
2020-09-01 21:50 Thomas Deutschmann
2020-09-01 21:50 Thomas Deutschmann
2020-08-31 11:42 Thomas Deutschmann
2020-08-30  2:00 Thomas Deutschmann
2020-08-29 23:19 Thomas Deutschmann
2020-08-26 10:04 Sam James
2020-08-25 23:54 Sam James
2020-08-25 22:46 Sam James
2020-08-25 19:08 Thomas Deutschmann
2020-08-10  8:00 Thomas Deutschmann
2020-08-07 20:35 Thomas Deutschmann
2020-08-03 16:10 Thomas Deutschmann
2020-07-31  1:30 Thomas Deutschmann
2020-07-30 20:23 Sam James
2020-07-30  3:19 Sam James
2020-07-30  3:19 Sam James
2020-07-27 21:51 Thomas Deutschmann
2020-07-27 16:37 Thomas Deutschmann
2020-07-27 15:55 Thomas Deutschmann
2020-07-27 14:24 Thomas Deutschmann
2020-07-27 14:24 Thomas Deutschmann
2020-07-24  1:02 Thomas Deutschmann
2020-07-20 13:46 Thomas Deutschmann
2020-07-20 13:46 Thomas Deutschmann
2020-07-17 17:20 Thomas Deutschmann
2020-07-17 17:20 Thomas Deutschmann
2020-07-17 17:20 Thomas Deutschmann
2020-07-14 19:00 Thomas Deutschmann
2020-07-14 14:09 Thomas Deutschmann
2020-07-09 23:48 Thomas Deutschmann
2020-07-07 13:46 Thomas Deutschmann
2020-07-06 19:24 Thomas Deutschmann
2020-07-06 11:27 Mart Raudsepp
2020-07-05 19:12 Thomas Deutschmann
2020-07-03 18:00 Thomas Deutschmann
2020-07-03 11:46 Thomas Deutschmann
2020-07-03 11:11 Thomas Deutschmann
2020-07-02 22:48 Thomas Deutschmann
2020-07-01 17:36 Thomas Deutschmann
2020-06-30 20:29 Thomas Deutschmann
2020-06-30 20:29 Thomas Deutschmann
2020-06-17 14:22 Thomas Deutschmann
2020-06-17 14:22 Thomas Deutschmann
2020-06-05 10:40 Thomas Deutschmann
2020-06-05  7:21 Mart Raudsepp
2020-06-04 11:02 Thomas Deutschmann
2020-06-04  7:47 Thomas Deutschmann
2020-06-04  4:20 Georgy Yakovlev
2020-06-03 23:54 Thomas Deutschmann
2020-06-03 23:54 Thomas Deutschmann
2020-06-03  0:46 Thomas Deutschmann
2020-05-12 23:39 Thomas Deutschmann
2020-05-08 19:48 Thomas Deutschmann
2020-05-08 10:07 Thomas Deutschmann
2020-05-07 20:16 Thomas Deutschmann
2020-05-06 18:50 Mart Raudsepp
2020-05-06 12:38 Thomas Deutschmann
2020-05-04 16:01 Thomas Deutschmann
2020-05-04 16:01 Thomas Deutschmann
2020-04-28 20:08 Thomas Deutschmann
2020-04-27  0:28 Thomas Deutschmann
2020-04-27  0:15 Thomas Deutschmann
2020-04-26 11:23 David Seifert
2020-04-23 17:53 Thomas Deutschmann
2020-04-21 19:21 Thomas Deutschmann
2020-04-18 18:48 Thomas Deutschmann
2020-04-15 22:09 Thomas Deutschmann
2020-04-15 12:14 Thomas Deutschmann
2020-04-15 11:55 Thomas Deutschmann
2020-04-14 23:42 Thomas Deutschmann
2020-04-14 23:42 Thomas Deutschmann
2020-04-12 10:52 Mart Raudsepp
2020-04-11 21:11 Thomas Deutschmann
2020-04-06 22:45 Thomas Deutschmann
2020-04-06 22:13 Thomas Deutschmann
2020-04-05 15:12 Thomas Deutschmann
2020-04-05  9:35 Mart Raudsepp
2020-04-04 11:50 Thomas Deutschmann
2020-04-04 10:53 Thomas Deutschmann
2020-04-04 10:53 Thomas Deutschmann
2020-04-04 10:53 Thomas Deutschmann
2020-03-30 15:43 Thomas Deutschmann
2020-03-30 12:18 Thomas Deutschmann
2020-03-30 11:46 Thomas Deutschmann
2020-03-30 11:46 Thomas Deutschmann
2020-03-30 11:46 Thomas Deutschmann
2020-03-30 11:46 Thomas Deutschmann
2020-03-30 11:46 Thomas Deutschmann
2020-03-12 12:56 Mart Raudsepp
2020-03-11 21:47 Thomas Deutschmann
2020-03-11 21:47 Thomas Deutschmann
2020-03-11 19:21 Thomas Deutschmann
2020-03-10 16:45 Thomas Deutschmann
2020-03-10 16:45 Thomas Deutschmann
2020-03-10 16:05 Jory Pratt
2020-02-24 23:04 Thomas Deutschmann
2020-02-24 22:36 Thomas Deutschmann
2020-02-24 22:36 Thomas Deutschmann
2020-02-24 22:36 Thomas Deutschmann
2020-02-24 22:36 Thomas Deutschmann
2020-02-24 22:35 Thomas Deutschmann
2020-02-24 16:53 Thomas Deutschmann
2020-02-24 16:53 Thomas Deutschmann
2020-02-13 14:52 Thomas Deutschmann
2020-02-12 13:42 Jory Pratt
2020-02-10 19:18 Jory Pratt
2020-02-10 16:18 Jory Pratt
2020-02-08 16:53 David Seifert
2020-01-22 21:10 Thomas Deutschmann
2020-01-20 20:08 Thomas Deutschmann
2020-01-20 20:08 Thomas Deutschmann
2020-01-08 20:40 Thomas Deutschmann
2020-01-08 19:57 Thomas Deutschmann
2020-01-08 19:57 Thomas Deutschmann
2020-01-08  0:04 Thomas Deutschmann
2020-01-07 18:18 Jory Pratt
2020-01-06 16:25 Jory Pratt
2019-12-28  1:21 Aaron Bauman
2019-12-16 19:24 Thomas Deutschmann
2019-12-14 21:52 Thomas Deutschmann
2019-12-13 12:54 Agostino Sarubbo
2019-12-12 16:46 Michał Górny
2019-12-10  0:00 Thomas Deutschmann
2019-12-03 12:49 Thomas Deutschmann
2019-12-02 21:25 Thomas Deutschmann
2019-12-02 18:55 Thomas Deutschmann
2019-12-02 18:02 Thomas Deutschmann
2019-12-02 18:02 Thomas Deutschmann
2019-11-10 18:21 Thomas Deutschmann
2019-11-08  1:11 Thomas Deutschmann
2019-11-08  1:11 Thomas Deutschmann
2019-11-06 23:18 Aaron Bauman
2019-11-02 15:04 Thomas Deutschmann
2019-11-02 12:52 Thomas Deutschmann
2019-11-02 12:52 Thomas Deutschmann
2019-10-31 18:03 Thomas Deutschmann
2019-10-31 15:56 Thomas Deutschmann
2019-10-31 13:29 Thomas Deutschmann
2019-10-31 13:29 Thomas Deutschmann
2019-10-26 17:29 Thomas Deutschmann
2019-10-25 20:32 Thomas Deutschmann
2019-10-22 19:28 Thomas Deutschmann
2019-10-22 19:28 Thomas Deutschmann
2019-10-10 21:27 Thomas Deutschmann
2019-10-08 21:14 Thomas Deutschmann
2019-10-06 12:18 Thomas Deutschmann
2019-10-06 11:41 Thomas Deutschmann
2019-10-03 17:25 Thomas Deutschmann
2019-09-29  1:32 Jory Pratt
2019-09-28 14:29 Thomas Deutschmann
2019-09-22 23:18 Aaron Bauman
2019-09-21 13:05 Thomas Deutschmann
2019-09-13 17:54 Mikle Kolyada
2019-09-08 21:06 Thomas Deutschmann
2019-09-07 21:07 Thomas Deutschmann
2019-09-07 14:21 Thomas Deutschmann
2019-09-04 22:47 Thomas Deutschmann
2019-09-04 18:59 Thomas Deutschmann
2019-09-04 18:59 Thomas Deutschmann
2019-09-04 18:59 Thomas Deutschmann
2019-09-04 18:59 Thomas Deutschmann
2019-09-04 18:59 Thomas Deutschmann
2019-09-04 12:56 Jory Pratt
2019-09-03 21:40 Thomas Deutschmann
2019-09-03 20:23 Jory Pratt
2019-09-03 19:39 Thomas Deutschmann
2019-09-03 19:39 Thomas Deutschmann
2019-08-30 14:16 Jory Pratt
2019-08-28 17:41 Jory Pratt
2019-08-16 12:53 Thomas Deutschmann
2019-08-16 12:40 Thomas Deutschmann
2019-08-16 12:05 Thomas Deutschmann
2019-08-14 23:33 Thomas Deutschmann
2019-08-12 16:12 Jory Pratt
2019-08-10 21:59 Aaron Bauman
2019-08-08 17:43 Thomas Deutschmann
2019-08-03 18:43 Thomas Deutschmann
2019-08-02 10:15 Thomas Deutschmann
2019-08-02  3:05 Aaron Bauman
2019-07-26  8:01 Agostino Sarubbo
2019-07-25 21:00 Thomas Deutschmann
2019-07-24 20:49 Thomas Deutschmann
2019-07-24 20:49 Thomas Deutschmann
2019-07-19 12:29 Thomas Deutschmann
2019-07-10 22:16 Thomas Deutschmann
2019-07-10  1:07 Thomas Deutschmann
2019-07-10  1:07 Thomas Deutschmann
2019-06-20 18:11 Thomas Deutschmann
2019-06-20 18:11 Thomas Deutschmann
2019-06-20 18:11 Thomas Deutschmann
2019-06-20  9:19 Mikle Kolyada
2019-06-19  2:09 Aaron Bauman
2019-06-19  0:02 Thomas Deutschmann
2019-06-18 22:32 Thomas Deutschmann
2019-06-18 22:32 Thomas Deutschmann
2019-06-11 23:48 Thomas Deutschmann
2019-05-29  1:09 Aaron Bauman
2019-05-21  8:53 Thomas Deutschmann
2019-05-21  0:48 Jory Pratt
2019-05-07 22:27 Jory Pratt
2019-05-06 16:00 Jory Pratt
2019-04-24 15:30 Jory Pratt
2019-04-11 20:54 Aaron Bauman
2019-04-10 17:34 Jory Pratt
2019-04-05 19:33 Jory Pratt
2019-04-04 19:32 Aaron Bauman
2019-03-28 10:09 Thomas Deutschmann
2019-03-28  6:58 Mikle Kolyada
2019-03-27 23:44 Thomas Deutschmann
2019-03-27 23:19 Thomas Deutschmann
2019-03-27 23:19 Thomas Deutschmann
2019-03-27 23:19 Thomas Deutschmann
2019-03-23 10:40 Thomas Deutschmann
2019-03-23 10:40 Thomas Deutschmann
2019-03-20 19:02 Thomas Deutschmann
2019-03-20 15:52 Thomas Deutschmann
2019-03-20 15:52 Thomas Deutschmann
2019-03-20 15:52 Thomas Deutschmann
2019-03-20  3:11 Thomas Deutschmann
2019-03-18 19:25 Thomas Deutschmann
2019-03-18 19:15 Thomas Deutschmann
2019-03-16 22:49 James Le Cuirot
2019-03-15 18:38 Thomas Deutschmann
2019-03-15  0:07 Thomas Deutschmann
2019-03-13 18:21 Thomas Deutschmann
2019-03-13 16:26 Thomas Deutschmann
2019-03-13 16:26 Thomas Deutschmann
2019-03-13  1:57 Thomas Deutschmann
2019-03-08 22:50 Thomas Deutschmann
2019-03-08 22:50 Thomas Deutschmann
2019-03-08 22:50 Thomas Deutschmann
2019-02-28 23:14 Thomas Deutschmann
2019-02-22 18:19 Thomas Deutschmann
2019-02-19 18:40 Thomas Deutschmann
2019-02-15 18:21 Thomas Deutschmann
2019-02-15 18:21 Thomas Deutschmann
2019-02-14 18:02 Mikle Kolyada
2019-02-13  0:06 Thomas Deutschmann
2019-02-12 20:30 Thomas Deutschmann
2019-02-12  1:23 Thomas Deutschmann
2019-02-12  0:34 Thomas Deutschmann
2019-02-11 15:22 Thomas Deutschmann
2019-02-10 21:50 Thomas Deutschmann
2019-02-10 21:50 Thomas Deutschmann
2019-02-10 21:50 Thomas Deutschmann
2019-02-10 21:50 Thomas Deutschmann
2019-02-06 14:17 Thomas Deutschmann
2019-02-06 11:45 Mikle Kolyada
2019-01-30 15:05 Thomas Deutschmann
2019-01-29 14:37 Thomas Deutschmann
2019-01-29  8:17 Thomas Deutschmann
2019-01-29  8:14 Thomas Deutschmann
2019-01-29  0:42 Thomas Deutschmann
2019-01-28 18:56 Thomas Deutschmann
2019-01-09 20:05 Thomas Deutschmann
2018-12-13 14:11 Mikle Kolyada
2018-12-13 13:00 Thomas Deutschmann
2018-12-13 12:48 Thomas Deutschmann
2018-12-12 10:15 Thomas Deutschmann
2018-12-11 22:46 Thomas Deutschmann
2018-12-11 17:39 Thomas Deutschmann
2018-12-11  9:02 Thomas Deutschmann
2018-12-10 20:56 Thomas Deutschmann
2018-11-15 19:28 Thomas Deutschmann
2018-10-31 21:29 Thomas Deutschmann
2018-10-31 19:41 Thomas Deutschmann
2018-10-26 18:50 Thomas Deutschmann
2018-10-25 17:28 Thomas Deutschmann
2018-10-25 17:17 Mikle Kolyada
2018-10-23 16:52 Thomas Deutschmann
2018-10-23 15:05 Thomas Deutschmann
2018-10-23 12:02 Thomas Deutschmann
2018-10-23 11:21 Thomas Deutschmann
2018-10-23  0:43 Thomas Deutschmann
2018-10-22 10:43 Thomas Deutschmann
2018-10-07 17:09 Thomas Deutschmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1612994026.e316ee27432b44e5ce2f324e80c7ace9fd4db253.whissi@gentoo \
    --to=whissi@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox