# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 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" HOMEPAGE="https://www.firefox.com https://www.firefox.com/enterprise/" else HOMEPAGE="https://www.firefox.com" fi MOZ_PN="${PN%-l10n}" MOZ_P="${MOZ_PN}-${MOZ_PV}" MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" DESCRIPTION="Firefox Web Browser's translation files" LICENSE="MPL-2.0" SLOT="0" KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" RDEPEND="~www-client/firefox-${PV}" BDEPEND="app-arch/unzip" S="${WORKDIR}" MOZ_LANGS=( af ar ast be bg br ca cak cs cy da de dsb el en-CA en-GB en-US es-AR es-ES et eu fi fr fy-NL ga-IE gd gl he hr hsb hu 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 ) # Firefox-only LANGS MOZ_LANGS+=( ach ) MOZ_LANGS+=( an ) MOZ_LANGS+=( az ) MOZ_LANGS+=( bn ) MOZ_LANGS+=( bs ) MOZ_LANGS+=( ca-valencia ) MOZ_LANGS+=( eo ) MOZ_LANGS+=( es-CL ) MOZ_LANGS+=( es-MX ) MOZ_LANGS+=( fa ) MOZ_LANGS+=( ff ) MOZ_LANGS+=( fur ) MOZ_LANGS+=( gn ) MOZ_LANGS+=( gu-IN ) MOZ_LANGS+=( hi-IN ) MOZ_LANGS+=( hy-AM ) MOZ_LANGS+=( ia ) MOZ_LANGS+=( km ) MOZ_LANGS+=( kn ) MOZ_LANGS+=( lij ) MOZ_LANGS+=( mk ) MOZ_LANGS+=( mr ) MOZ_LANGS+=( my ) MOZ_LANGS+=( ne-NP ) MOZ_LANGS+=( oc ) MOZ_LANGS+=( sc ) MOZ_LANGS+=( sco ) MOZ_LANGS+=( si ) MOZ_LANGS+=( skr ) MOZ_LANGS+=( son ) MOZ_LANGS+=( szl ) MOZ_LANGS+=( ta ) MOZ_LANGS+=( te ) MOZ_LANGS+=( tl ) MOZ_LANGS+=( trs ) MOZ_LANGS+=( ur ) MOZ_LANGS+=( xh ) 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_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 } 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_install() { export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${MOZ_PN}" # 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 }