Install this version:
emerge -a =gui-office/thunderbird-esr-bin-153.3.1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =gui-office/thunderbird-esr-bin-153.3.1
Or alternatively:
emerge --autounmask-write -a =gui-office/thunderbird-esr-bin-153.3.1
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 153.3.1 | 8 | ~amd64 | 0 |
# Copyright 2026 Nadeŭka <me+oss@nadevko.cc>
# Distributed under the terms of the GNU General Public License v2
# Based on gui-office/thunderbird-bin-156.0.1::nadevko
EAPI=8
: ${WMCLASS:='thunderbird-esr'}
: ${MOZ_APP_ARGS:='--name=thunderbird-esr-bin'}
[[ -v MOZ_GMP_PLUGIN_LIST ]] || MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm )
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/mozilla.asc
inherit desktop linux-info optfeature pax-utils verify-sig xdg
DESCRIPTION='Thunderbird Mail and Calendar Client (Extended Support Release)'
HOMEPAGE=https://www.thunderbird.net
MY_PV="${PV}esr"
BASE_URI="https://archive.mozilla.org/pub/thunderbird/releases/${MY_PV}"
SRC_URI="
amd64? (
${BASE_URI}/linux-x86_64/en-US/thunderbird-${MY_PV}.tar.xz -> ${P}-amd64.tar.xz
verify-sig? ( ${BASE_URI}/linux-x86_64/en-US/thunderbird-${MY_PV}.tar.xz.asc -> ${P}-amd64.tar.xz.asc )
)
"
S="${WORKDIR}"/thunderbird
LICENSE='MPL-2.0 GPL-2 LGPL-2.1'
SLOT=0
KEYWORDS=~amd64
IUSE='+gmp-autoupdate verify-sig wayland'
RESTRICT='!verify-sig? ( test ) strip'
QA_PREBUILT="opt/${PN}/*"
RDEPEND='
|| (
media-libs/libpulse
media-sound/apulse
)
>=app-accessibility/at-spi2-core-2.46.0:2
>=dev-libs/glib-2.26:2
>=media-libs/freetype-2.4.10
>=x11-libs/cairo-1.10[X]
>=x11-libs/gtk+-3.11:3[X,wayland?]
media-libs/alsa-lib
media-libs/fontconfig
media-video/ffmpeg
sys-apps/dbus
virtual/freedesktop-icon-theme
x11-libs/gdk-pixbuf:2
x11-libs/libX11
x11-libs/libxcb
x11-libs/libXcomposite
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
'
BDEPEND='
app-arch/unzip
app-misc/jq
verify-sig? ( >=res-openpgp/mozilla-20260806 )
'
MOZ_LANGS=(
af ar ast be bg br ca cak cs cy da de dsb el en-CA en-GB es-AR es-ES
es-MX et eu fi fr fy-NL ga-IE gd gl he hr hsb hu hy-AM id is it ja ka
kab kk ko lt lv ms nb-NO nl nn-NO pa-IN pl pt-BR pt-PT rm ro ru sk sl
sq sr sv-SE th tr uk uz vi zh-CN zh-TW
)
MOZ_TOO_REGIONALIZED_FOR_L10N=(
fy-NL ga-IE hy-AM nb-NO nn-NO pa-IN sv-SE
)
for _lang in "${MOZ_LANGS[@]}"; do
if has ${_lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}"; then
_xflag=${_lang%%-*}
else
_xflag=${_lang}
fi
SRC_URI+="
l10n_${_xflag}? (
${BASE_URI}/linux-x86_64/xpi/${_lang}.xpi -> ${P}-${_lang}.xpi
)
"
IUSE+=" l10n_${_xflag}"
done
unset _lang _xflag
pkg_setup() {
CONFIG_CHECK='~SECCOMP'
WARNING_SECCOMP='CONFIG_SECCOMP not set! DRM-protected content will not work'
linux-info_pkg_setup
}
src_unpack() {
if use verify-sig; then
local tarball
use amd64 && tarball="${P}-amd64.tar.xz"
verify-sig_verify_detached "${DISTDIR}/${tarball}" "${DISTDIR}/${tarball}.asc"
fi
default
}
src_install() {
local dest=/opt/${PN}
# /opt
dodir "${dest}"
cp -a . "${ED}${dest}" || die
touch "${ED}${dest}"/is-packaged-app || die
# bins & wrappers
cp "${FILESDIR}"/${PN} "${T}" || die
local exports=MOZ_APP_LAUNCHER
if has_version -r media-sound/apulse[-sdk]; then
echo -n "LD_LIBRARY_PATH=\"${EPREFIX}/usr/$(get_libdir)" >> "${T}"/${PN} || die
echo '/apulse${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"' >> "${T}"/${PN} || die
exports+=' LD_LIBRARY_PATH'
fi
cat >> "${T}"/${PN} <<-EOF || die
MOZ_APP_LAUNCHER='${EPREFIX}/usr/bin/${PN}'
export ${exports}
exec '${dest}/thunderbird' ${MOZ_APP_ARGS} "\$@"
EOF
dobin "${T}"/${PN}
# configs
local policies="${ED}${dest}/distribution/policies.json"
if [[ -f ${policies} ]]; then
jq -s '.[0] * .[1]' "${policies}" "${FILESDIR}"/policies.json > "${T}"/policies.json || die
else
cp "${FILESDIR}"/policies.json "${T}" || die
fi
insinto "${dest}"/distribution
doins "${T}"/policies.json
cp "${FILESDIR}"/maintainer-prefs.js "${T}" || die
if ! use gmp-autoupdate; then
local plugin
for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}"; do
echo "pref(\"media.${plugin}.autoupdate\", false);" >> "${T}"/maintainer-prefs.js || die
done
fi
insinto "${dest}"/defaults/pref
doins "${T}"/maintainer-prefs.js
# desktop
sed \
-e "s|@MOZ_APP_EXEC@|${EPREFIX}/usr/bin/${PN}|g" \
-e "s|@WMCLASS@|${WMCLASS}|g" \
"${FILESDIR}"/${PN}.desktop > "${T}"/${PN}.desktop || die
domenu "${T}"/${PN}.desktop
# icons
local icon size icon_installed=0
for icon in chrome/icons/default/default*.png browser/chrome/icons/default/default*.png; do
[[ -f "${icon}" ]] || continue
size=${icon##*/default}
newicon -s "${size%.png}" "${icon}" ${PN}.png
icon_installed=1
done
[[ ${icon_installed} -eq 1 ]] || die 'No program icons could be installed'
if [[ -f chrome/icons/default/TB-symbolic.svg ]]; then
insinto /usr/share/icons/hicolor/symbolic/apps
newins chrome/icons/default/TB-symbolic.svg ${PN}-symbolic.svg
fi
# language packs
local lang xflag emid
for lang in "${MOZ_LANGS[@]}"; do
if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}"; then
xflag=${lang%%-*}
else
xflag=${lang}
fi
use l10n_${xflag} || continue
emid=$(unzip -p "${DISTDIR}/${P}-${lang}.xpi" manifest.json |
jq -r '.browser_specific_settings.gecko.id // .applications.gecko.id')
[[ -n ${emid} && ${emid} != null ]] || emid="langpack-${lang}@thunderbird.mozilla.org"
insinto "${dest}"/distribution/extensions
newins "${DISTDIR}"/${P}-${lang}.xpi ${emid}.xpi
done
# dictionaries
rm -rf "${ED}${dest}"/dictionaries || die
dosym "${EPREFIX}"/usr/share/hunspell "${dest}"/dictionaries
# docs
einstalldocs
# permissions & security
pax-mark m "${ED}${dest}"/{thunderbird,thunderbird-bin,crashhelper,crashreporter,gfxtest,pingsender,updater,rnpkeys,rnp-cli}
}
pkg_postinst() {
xdg_pkg_postinst
use gmp-autoupdate ||
elog "USE='-gmp-autoupdate' disabled auto-updates for: ${MOZ_GMP_PLUGIN_LIST[*]}"
optfeature 'desktop integration' sys-apps/xdg-desktop-portal
optfeature 'fallback mouse cursor theme e.g. on WMs' gnome-base/gsettings-desktop-schemas
optfeature 'location detection via Wi-Fi' net-misc/networkmanager
optfeature 'pdf and web pages printing' net-print/cups
optfeature 'speech synthesis (text-to-speech) support' app-accessibility/speech-dispatcher
optfeature 'system spell checking dictionaries' app-text/hunspell
use wayland && optfeature 'wayland screen sharing' media-video/pipewire
}
Manage flags for this package:
euse -i <flag> -p gui-office/thunderbird-esr-bin |
euse -E <flag> -p gui-office/thunderbird-esr-bin |
euse -D <flag> -p gui-office/thunderbird-esr-bin
|| ( media-libs/libpulse media-sound/apulse ) >=app-accessibility/at-spi2-core-2.46.0:2 >=dev-libs/glib-2.26:2 >=media-libs/freetype-2.4.10 >=x11-libs/cairo-1.10[X] >=x11-libs/gtk+-3.11:3[X,wayland?] media-libs/alsa-lib media-libs/fontconfig media-video/ffmpeg sys-apps/dbus virtual/freedesktop-icon-theme x11-libs/gdk-pixbuf:2 x11-libs/libX11 x11-libs/libxcb x11-libs/libXcomposite x11-libs/libXcursor x11-libs/libXdamage x11-libs/libXext x11-libs/libXfixes x11-libs/libXi x11-libs/libXrandr x11-libs/libXrender
app-arch/unzip app-misc/jq verify-sig? ( >=res-openpgp/mozilla-20260806 )