public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Ian Stakenvicius" <axs@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/mozilla:master commit in: eclass/
Date: Tue, 14 Jul 2015 22:16:09 +0000 (UTC)	[thread overview]
Message-ID: <1436910773.8b6ad0e25f1661415823cf856bfb3510d52ddc38.axs@gentoo> (raw)

commit:     8b6ad0e25f1661415823cf856bfb3510d52ddc38
Author:     Ian Stakenvicius <axs <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 13 15:34:13 2015 +0000
Commit:     Ian Stakenvicius <axs <AT> gentoo <DOT> org>
CommitDate: Tue Jul 14 21:52:53 2015 +0000
URL:        https://gitweb.gentoo.org/proj/mozilla.git/commit/?id=8b6ad0e2

Extended functionality of mozlinguas.eclass

Added eclass variables and supporting code to allow localizations to be built from
l10n sources.  Also added a function to make it easier to add localizations to
bundled or app-global extensions, such as lightning in thunderbird.

 eclass/mozlinguas.eclass | 203 ++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 184 insertions(+), 19 deletions(-)

diff --git a/eclass/mozlinguas.eclass b/eclass/mozlinguas.eclass
index 8ad0bbc..9ca35b1 100644
--- a/eclass/mozlinguas.eclass
+++ b/eclass/mozlinguas.eclass
@@ -1,6 +1,6 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/mozlinguas.eclass,v 1.6 2013/04/05 15:27:40 floppym Exp $
+# $Header: $
 
 # @ECLASS: mozlinguas.eclass
 # @MAINTAINER:
@@ -10,15 +10,16 @@
 # @BLURB: Handle language packs for mozilla products
 # @DESCRIPTION:
 # Sets IUSE according to MOZ_LANGS (language packs available). Also exports
-# src_unpack and src_install for use in ebuilds.
+# src_unpack, src_compile and src_install for use in ebuilds, and provides
+# supporting functions for langpack generation and installation.
 
-inherit mozextension
+inherit mozextension mozcoreconf-v3
 
 case "${EAPI:-0}" in
 	0|1)
 		die "EAPI ${EAPI:-0} does not support the '->' SRC_URI operator";;
 	2|3|4|5)
-		EXPORT_FUNCTIONS src_unpack src_install;;
+		EXPORT_FUNCTIONS src_unpack src_compile src_install;;
 	*)
 		die "EAPI ${EAPI} is not supported, contact eclass maintainers";;
 esac
@@ -53,6 +54,11 @@ esac
 # The ftp URI prefix for the release tarballs and language packs.
 : ${MOZ_FTP_URI:=""}
 
+# @ECLASS-VARIABLE: MOZ_HTTP_URI
+# @DESCRIPTION:
+# The http URI prefix for the release tarballs and language packs.
+: ${MOZ_HTTP_URI:=""}
+
 # @ECLASS-VARIABLE: MOZ_LANGPACK_PREFIX
 # @DESCRIPTION:
 # The relative path till the lang code in the langpack file URI.
@@ -65,21 +71,86 @@ esac
 # Defaults to '.xpi'
 : ${MOZ_LANGPACK_SUFFIX:=".xpi"}
 
+# @ECLASS-VARIABLE: MOZ_LANGPACK_UNOFFICIAL
+# @DESCRIPTION:
+# The status of the langpack, used to differentiate within
+# Manifests and on Gentoo mirrors as to when the langpacks are
+# generated officially by Mozilla or if they were generated
+# unofficially by others (ie the Gentoo mozilla team).  When
+# this var is set, the distfile will have a .unofficial.xpi
+# suffix.
+: ${MOZ_LANGPACK_UNOFFICIAL:=""}
+
+# @ECLASS-VARIABLE: MOZ_GENERATE_LANGPACKS
+# @DESCRIPTION:
+# This flag specifies whether or not the langpacks should be
+# generated directly during the build process, rather than
+# being downloaded and installed from upstream pre-built
+# extensions.  Primarily it supports pre-release builds.
+# Defaults to empty.
+: ${MOZ_GENERATE_LANGPACKS:=""}
+
+# @ECLASS-VARIABLE: MOZ_L10N_SOURCEDIR
+# @DESCRIPTION:
+# The path that l10n sources can be found at, once unpacked.
+# Defaults to ${WORKDIR}/l10n-sources
+: ${MOZ_L10N_SOURCEDIR:="${WORKDIR}/l10n-sources"}
+
+# @ECLASS-VARIABLE: MOZ_L10N_URI_PREFIX
+# @DESCRIPTION:
+# The full URI prefix of the distfile for each l10n locale.  The
+# AB_CD and MOZ_L10N_URI_SUFFIX will be appended to this to complete the
+# SRC_URI when MOZ_GENERATE_LANGPACKS is set.  If empty, nothing will
+# be added to SRC_URI.
+# Defaults to empty.
+: ${MOZ_L10N_URI_PREFIX:=""}
+
+# @ECLASS-VARIABLE: MOZ_L10N_URI_SUFFIX
+# @DESCRIPTION:
+# The suffix of l10n source distfiles.
+# Defaults to '.tar.xz'
+: ${MOZ_L10N_URI_SUFFIX:=".tar.xz"}
+
 # Add linguas_* to IUSE according to available language packs
 # No language packs for alphas and betas
-if ! [[ ${PV} =~ alpha|beta ]] || { [[ ${PN} == seamonkey ]] && ! [[ ${PV} =~ alpha ]] ; } ; then
+if ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] ; then
+	if ! [[ ${PV} =~ alpha|beta ]] || { [[ ${PN} == seamonkey ]] && ! [[ ${PV} =~ alpha ]] ; } ; then
+	[[ -z ${MOZ_FTP_URI} ]] && [[ -z ${MOZ_HTTP_URI} ]] && die "No URI set to download langpacks, please set one of MOZ_{FTP,HTTP}_URI"
 	for x in "${MOZ_LANGS[@]}" ; do
 		# en and en_US are handled internally
 		if [[ ${x} == en ]] || [[ ${x} == en-US ]]; then
 			continue
 		fi
-		SRC_URI+="
-			linguas_${x/-/_}?
-				( ${MOZ_FTP_URI}/${MOZ_LANGPACK_PREFIX}${x}${MOZ_LANGPACK_SUFFIX} -> ${MOZ_P}-${x}.xpi )"
+		SRC_URI+=" linguas_${x/-/_}? ("
+		[[ -n ${MOZ_FTP_URI} ]] && SRC_URI+="
+			${MOZ_FTP_URI}/${MOZ_LANGPACK_PREFIX}${x}${MOZ_LANGPACK_SUFFIX} -> ${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
+		[[ -n ${MOZ_HTTP_URI} ]] && SRC_URI+="
+			${MOZ_HTTP_URI}/${MOZ_LANGPACK_PREFIX}${x}${MOZ_LANGPACK_SUFFIX} -> ${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
+		SRC_URI+=" )"
 		IUSE+=" linguas_${x/-/_}"
 		# We used to do some magic if specific/generic locales were missing, but
 		# we stopped doing that due to bug 325195.
 	done
+	fi
+else
+	for x in "${MOZ_LANGS[@]}" ; do
+		# en and en_US are handled internally
+		if [[ ${x} == en ]] || [[ ${x} == en-US ]]; then
+			continue
+		fi
+# Do NOT grab l10n sources from hg tip at this time, since it is a moving target
+#		if [[ ${PV} =~ alpha ]]; then
+#			# Please note that this URI is not deterministic - digest breakage could occur
+#			SRC_URI+=" linguas_${x/-/_}? ( http://hg.mozilla.org/releases/l10n/mozilla-aurora/ach/archive/tip.tar.bz2 -> ${MOZ_P}-l10n-${x}.tar.bz2 )"
+#		elif [[ ${PV} =~ beta ]] && ! [[ ${PN} == seamonkey ]]; then
+#			# Please note that this URI is not deterministic - digest breakage could occur
+#			SRC_URI+=" linguas_${x/-/_}? ( http://hg.mozilla.org/releases/l10n/mozilla-beta/ach/archive/tip.tar.bz2 -> ${MOZ_P}-l10n-${x}.tar.bz2 )"
+#		elif [[ -n ${MOZ_L10N_URI_PREFIX} ]]; then
+		if [[ -n ${MOZ_L10N_URI_PREFIX} ]]; then
+			SRC_URI+=" linguas_${x/-/_}? ( ${MOZ_L10N_URI_PREFIX}${x}${MOZ_L10N_URI_SUFFIX} )"
+		fi
+		IUSE+=" linguas_${x/-/_}"
+	done
 fi
 unset x
 
@@ -90,9 +161,9 @@ unset x
 # This list is used to unpack and install the xpi language packs
 mozlinguas_export() {
 	if [[ ${PN} == seamonkey ]] ; then
-		[[ ${PV} =~ alpha ]] && return
+		[[ ${PV} =~ alpha ]] && ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] && return
 	else
-		[[ ${PV} =~ alpha|beta ]] && return
+		[[ ${PV} =~ alpha|beta ]] && ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]] && return
 	fi
 	local lingua
 	mozlinguas=()
@@ -120,23 +191,117 @@ mozlinguas_export() {
 # Unpack xpi language packs according to the user's LINGUAS settings
 mozlinguas_src_unpack() {
 	local x
-	mozlinguas_export
-	for x in "${mozlinguas[@]}"; do
-		# FIXME: Add support for unpacking xpis to portage
-		xpi_unpack "${MOZ_P}-${x}.xpi"
-	done
-	if [[ "${mozlinguas[*]}" != "" && "${mozlinguas[*]}" != "en" ]]; then
-		einfo "Selected language packs (first will be default): ${mozlinguas[*]}"
+	if ! [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
+		mozlinguas_export
+		for x in "${mozlinguas[@]}"; do
+			# FIXME: Add support for unpacking xpis to portage
+			xpi_unpack "${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
+		done
+		if [[ "${mozlinguas[*]}" != "" && "${mozlinguas[*]}" != "en" ]]; then
+			einfo "Selected language packs (first will be default): ${mozlinguas[*]}"
+		fi
 	fi
 }
 
+# @FUNCTION: mozlinguas_mozconfig
+# @DESCRIPTION:
+# if applicable, add the necessary flag to .mozconfig to support
+# the generation of locales
+mozlinguas_mozconfig() {
+	if [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
+		mozconfig_annotate 'for building locales' --with-l10n-base=${MOZ_L10N_SOURCEDIR}
+	fi
+}
+
+# @FUNCTION: mozlinguas_src_compile
+# @DESCRIPTION:
+# if applicable, build the selected locales.
+mozlinguas_src_compile() {
+	if [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
+		# leverage BUILD_OBJ_DIR if set otherwise assume PWD.
+		local x y targets=( "langpack" ) localedir="${BUILD_OBJ_DIR:-.}"
+		case ${PN} in
+			*firefox)
+				localedir+="/browser/locales"
+				;;
+			seamonkey)
+				localedir+="/suite/locales"
+				;;
+			*thunderbird)
+				localedir+="/mail/locales"
+				targets+=( "calendar-langpack" )
+				;;
+			*) die "Building locales for ${PN} is not supported."
+		esac
+		pushd "${localedir}" > /dev/null || die
+		mozlinguas_export
+		for x in "${mozlinguas[@]}"; do for y in "${targets[@]}"; do
+			emake ${y}-${x} LOCALE_MERGEDIR="./${y}-${x}"
+		done; done
+		popd > /dev/null || die
+	fi
+}
+
+# @FUNCTION: mozlinguas_xpistage_langpacks
+# @DESCRIPTION:
+# Add extra langpacks to the xpi-stage dir for prebuilt plugins
+#
+# First argument is the path to the extension
+# Second argument is the prefix of the source (same as first if unspecified)
+# Remaining arguments are the modules in the extension that are localized
+#  (basename of first if unspecified)
+#
+# Example - installing extra langpacks for lightning:
+# src_install() {
+# 	... # general installation steps
+# 	mozlinguas_xpistage_langpacks \
+#		"${BUILD_OBJ_DIR}"/dist/xpi-stage/lightning \
+#		"${WORKDIR}"/lightning \
+#		lightning calendar
+#	... # proceed with installation from the xpi-stage dir
+# }
+
+mozlinguas_xpistage_langpacks() {
+	local l c modpath="${1}" srcprefix="${1}" modules=( "${1##*/}" )
+	shift
+	if [[ -n ${1} ]] ; then srcprefix="${1}" ; shift ; fi
+	if [[ -n ${1} ]] ; then modules=( $@ ) ; fi
+
+	mozlinguas_export
+	for l in "${mozlinguas[@]}"; do	for c in "${modules[@]}" ; do
+		if [[ -e "${srcprefix}-${l}/chrome/${c}-${l}" ]]; then
+			cp -RLp -t "${modpath}/chrome" "${srcprefix}-${l}/chrome/${c}-${l}" || die
+			grep "locale ${c} ${l} chrome/" "${srcprefix}-${l}/chrome.manifest" \
+				>>"${modpath}/chrome.manifest" || die
+		elif [[ -e "${srcprefix}/chrome/${c}-${l}" ]]; then
+			cp -RLp -t "${modpath}/chrome" "${srcprefix}/chrome/${c}-${l}" || die
+			grep "locale ${c} ${l} chrome/" "${srcprefix}/chrome.manifest" \
+				>>"${modpath}/chrome.manifest" || die
+		else
+			ewarn "Locale ${l} was not found for ${c}, skipping."
+		fi
+	done; done
+}
+
 # @FUNCTION: mozlinguas_src_install
 # @DESCRIPTION:
 # Install xpi language packs according to the user's LINGUAS settings
+# NOTE - uses ${BUILD_OBJ_DIR} or PWD if unset, for source-generated langpacks
 mozlinguas_src_install() {
 	local x
 	mozlinguas_export
+	if [[ -n ${MOZ_GENERATE_LANGPACKS} ]]; then
+		local repopath="${WORKDIR}/${PN}-generated-langpacks"
+		mkdir -p "${repopath}"
+		pushd "${BUILD_OBJ_DIR:-.}"/dist/*/xpi > /dev/null || die
+		for x in "${mozlinguas[@]}"; do
+			cp "${MOZ_P}.${x}.langpack.xpi" \
+			"${repopath}/${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi" || die
+			xpi_unpack "${repopath}/${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}.xpi"
+		done
+		popd > /dev/null || die
+	fi
 	for x in "${mozlinguas[@]}"; do
-		xpi_install "${WORKDIR}/${MOZ_P}-${x}"
+		xpi_install "${WORKDIR}/${MOZ_P}-${x}${MOZ_LANGPACK_UNOFFICIAL:+.unofficial}"
 	done
 }


             reply	other threads:[~2015-07-14 22:16 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-14 22:16 Ian Stakenvicius [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-03-20 17:26 [gentoo-commits] proj/mozilla:master commit in: eclass/ Jory Pratt
2018-08-16 16:48 Ian Stakenvicius
2018-08-15 21:11 Ian Stakenvicius
2018-08-15 19:30 Ian Stakenvicius
2018-08-15 17:18 Ian Stakenvicius
2018-06-18  4:41 Jory Pratt
2018-05-22 13:44 Jory Pratt
2018-05-22  1:19 Jory Pratt
2018-05-13  9:09 Lars Wendler
2018-02-19 12:25 Jory Pratt
2018-01-31 15:35 Ian Stakenvicius
2018-01-29  5:12 Ian Stakenvicius
2018-01-26  4:28 Ian Stakenvicius
2018-01-26  4:28 Ian Stakenvicius
2017-12-21 14:16 Jory Pratt
2017-11-14 16:18 Ian Stakenvicius
2017-10-26  8:52 Lars Wendler
2017-09-28 17:07 Ian Stakenvicius
2017-09-10 21:56 Jory Pratt
2017-08-29  0:11 Jory Pratt
2017-08-22 14:57 Lars Wendler
2017-08-17  9:31 Lars Wendler
2017-07-25  1:58 Ian Stakenvicius
2017-06-06 18:01 Jory Pratt
2017-05-31 20:38 Jory Pratt
2017-05-31 20:37 Jory Pratt
2017-05-31 20:37 Jory Pratt
2017-05-31 20:19 Jory Pratt
2017-05-04 17:46 Ian Stakenvicius
2017-04-28 13:58 Ian Stakenvicius
2017-04-19 21:00 Ian Stakenvicius
2017-04-19 21:00 Ian Stakenvicius
2017-04-19 21:00 Ian Stakenvicius
2017-04-13 17:34 Ian Stakenvicius
2017-04-04 19:42 Ian Stakenvicius
2017-04-04 15:02 Ian Stakenvicius
2017-03-20 21:46 Andrew Savchenko
2017-03-20 19:22 Andrew Savchenko
2017-03-20 17:31 Andrew Savchenko
2017-02-06  2:30 Jory Pratt
2017-02-04 18:30 Jory Pratt
2017-02-03  3:41 Jory Pratt
2017-02-02  3:02 Jory Pratt
2016-12-01  8:55 Lars Wendler
2016-11-29 17:17 Lars Wendler
2016-10-16 21:49 Jory Pratt
2016-10-09 17:59 Jory Pratt
2016-10-09 14:35 Ian Stakenvicius
2016-09-08 22:18 Ian Stakenvicius
2016-09-04 23:31 Jory Pratt
2016-09-04 23:31 Jory Pratt
2016-08-04 16:09 Ian Stakenvicius
2016-07-25 21:27 Ian Stakenvicius
2016-07-25 20:14 Ian Stakenvicius
2016-07-25 20:12 Ian Stakenvicius
2016-07-12 19:45 Ian Stakenvicius
2016-07-11 18:05 Ian Stakenvicius
2016-07-09  3:25 Ian Stakenvicius
2016-07-09  0:57 Ian Stakenvicius
2016-07-05  1:15 Ian Stakenvicius
2016-04-28  5:50 Lars Wendler
2016-04-27 21:27 Ian Stakenvicius
2016-03-28 14:57 Ian Stakenvicius
2016-03-28 14:57 Ian Stakenvicius
2016-02-04 16:39 Ian Stakenvicius
2016-01-11  1:25 Jory Pratt
2016-01-11  1:19 Jory Pratt
2016-01-11  1:19 Jory Pratt
2016-01-04 21:09 Ian Stakenvicius
2016-01-01 22:29 Jory Pratt
2015-12-31 22:05 Jory Pratt
2015-11-27 19:24 [gentoo-commits] proj/mozilla:crossdev " Ian Stakenvicius
2015-11-27 19:25 ` [gentoo-commits] proj/mozilla:master " Ian Stakenvicius
2015-11-10  8:33 Lars Wendler
2015-11-09 21:55 Jory Pratt
2015-11-09 21:53 Jory Pratt
2015-11-09 19:12 Jory Pratt
2015-10-30 18:41 Jory Pratt
2015-08-14 16:24 Ian Stakenvicius
2015-07-17 18:27 Ian Stakenvicius
2015-07-17 17:34 Ian Stakenvicius
2015-07-16 17:48 Ian Stakenvicius
2015-07-16 16:56 Ian Stakenvicius
2015-07-16 16:22 Ian Stakenvicius
2015-07-16 16:15 Ian Stakenvicius
2015-07-16 15:41 Ian Stakenvicius
2015-07-14 22:16 Ian Stakenvicius
2015-06-02 19:48 Ian Stakenvicius
2015-03-10 14:07 Ian Stakenvicius
2014-11-06 14:46 Ian Stakenvicius
2014-10-27 19:12 Ian Stakenvicius
2014-10-16 21:18 Ian Stakenvicius
2014-08-25 19:25 Ian Stakenvicius
2013-10-29 13:39 Jory Pratt
2013-10-26  2:30 Jory Pratt
2013-08-28 15:24 Ian Stakenvicius
2013-08-26 14:40 Jory Pratt
2013-05-27 21:52 Jory Pratt
2013-05-22 23:37 Jory Pratt
2013-05-22 13:32 Lars Wendler
2013-04-10  2:01 Jory Pratt
2013-03-25 13:10 Jory Pratt
2013-03-24 19:09 Jory Pratt
2013-03-10  0:14 Jory Pratt
2012-12-03 15:45 Lars Wendler
2012-09-09 16:23 Jory Pratt
2012-08-02  1:59 Jory Pratt
2012-07-18  0:17 Jory Pratt
2012-03-26  3:40 Jory Pratt
2012-03-04 14:17 Jory Pratt
2012-02-28  5:03 Jory Pratt
2012-02-04  6:10 Nirbheek Chauhan
2012-02-01 20:54 Nirbheek Chauhan
2012-01-26 14:58 Nirbheek Chauhan
2011-11-21 16:34 Jory Pratt
2011-11-21 16:33 Jory Pratt
2011-11-21 15:49 Jory Pratt
2011-11-16 14:53 Jory Pratt
2011-03-17 13:33 Jory Pratt
2011-03-16 13:41 Jory Pratt
2011-03-16  4:27 Jory Pratt
2011-03-14  6:58 Nirbheek Chauhan
2011-03-09  2:30 Mounir Lamouri

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=1436910773.8b6ad0e25f1661415823cf856bfb3510d52ddc38.axs@gentoo \
    --to=axs@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