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
+}
next 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