try: -b o -e -p linux,linux64,macosx64,win32 -u none -t none
authorPhilipp Kewisch <mozilla@kewis.ch>
Thu, 28 Mar 2013 10:01:09 +0100
changeset 16621 20766daedb7ba1ec006db3358b729f24f0df09c0
parent 16619 c216ea26964c71f1edd35802ee288000da1a55ff
push id666
push usermozilla@kewis.ch
push dateThu, 28 Mar 2013 09:06:44 +0000
treeherdertry-comm-central@20766daedb7b [default view] [failures only]
try: -b o -e -p linux,linux64,macosx64,win32 -u none -t none
build/mozconfig.common
calendar/lightning/Makefile.in
calendar/lightning/lightning-packager.mk
calendar/lightning/lightning-symbols.mk
calendar/lightning/locales/moz.build
calendar/lightning/moz.build
calendar/providers/gdata/Makefile.in
mail/locales/Makefile.in
--- a/build/mozconfig.common
+++ b/build/mozconfig.common
@@ -4,8 +4,10 @@
 
 # Common mozconfig for all users
 #
 # Add options to this file that will be inherited by all in-tree mozconfigs.
 # This is useful for eg try builds with nondefault options that apply to all
 # architectures, though note that if you want to override options set in
 # another mozconfig file, you'll need to use mozconfig.common.override instead
 # of this file.
+
+ac_add_options --enable-calendar
--- a/calendar/lightning/Makefile.in
+++ b/calendar/lightning/Makefile.in
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/package-name.mk
 
 # Calendar builders currently use STRIP_XPI to reduce the binary component in
 # Lightning.
 
 MODULE		= lightning
 
 export XPI_NAME = lightning
 export USE_EXTENSION_MANIFEST = 1
@@ -24,16 +25,17 @@ XPI_EM_ID = {e2fda1a4-762b-4020-b5ad-a41
 DIST_FILES = install.rdf application.ini
 PREF_JS_EXPORTS = $(srcdir)/content/lightning.js
 
 # Lighting version number
 LIGHTNING_VERSION := $(shell cat $(srcdir)/../sunbird/config/version.txt)
 THUNDERBIRD_VERSION := $(shell cat $(topsrcdir)/mail/config/version.txt)
 SEAMONKEY_VERSION := $(shell cat $(topsrcdir)/suite/config/version.txt)
 GDATA_VERSION := $(shell $(PYTHON) $(topsrcdir)/calendar/providers/gdata/makeversion.py $(LIGHTNING_VERSION))
+PACKAGE_VERSION := $(LIGHTNING_VERSION)
 
 # For extensions we require a max version that is compatible across security releases.
 # THUNDERBIRD_MAXVERSION and SEAMONKEY_MAXVERSION is our method for doing that.
 # Alpha versions 10.0a1 and 10.0a2 aren't affected
 # For Seamonkey, 2.17 becomes 2.17.*, 2.17.1 becomes 2.17.*
 # For Thunderbird, 10.0 becomes 10.*, 10.0.1 becomes 10.*
 THUNDERBIRD_MAXVERSION := $(THUNDERBIRD_VERSION)
 ifneq (a,$(findstring a,$(THUNDERBIRD_VERSION)))
@@ -118,16 +120,22 @@ DEFINES += -DTHUNDERBIRD_VERSION=$(THUND
 
 GRE_BUILDID = $(shell $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
 DEFINES += -DGRE_BUILDID=$(GRE_BUILDID)
 
 # xxx todo: unless our packaging story is revised (bug 406579) we package up timezones.sqlite
 libs::
 	$(NSINSTALL) -m 0644 $(srcdir)/../timezones/timezones.sqlite $(FINAL_TARGET)
 
+
+# For Lightning, we also need to preprocess the l10n prefs
+repack-process-extrafiles: lightning-extrafiles
+lightning-extrafiles:
+	$(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $(LOCALE_BASEDIR)/lightning-l10n.js  > $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(L10N_XPI_NAME)/$(PREF_DIR)/lightning-l10n.js
+
 include $(topsrcdir)/config/rules.mk
 include $(srcdir)/lightning-packager.mk
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 # If the macbundle dist dir was already created, sync lightning here to avoid
 # the need to make -C objdir/mail/app each time
 libs::
 	[ -d $(DIST)/$(MOZ_MACBUNDLE_NAME) ] && rsync -a $(FINAL_TARGET) $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/extensions/$(XPI_EM_ID) || true
--- a/calendar/lightning/lightning-packager.mk
+++ b/calendar/lightning/lightning-packager.mk
@@ -1,80 +1,93 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+# NOTE: The packager is not only used in calendar/lightning but should be
+# general enough to be able to repackage other sub-extensions like
+# calendar/providers/gdata. This means no lightning-specific files, no version
+# numbers directly from lightning and be careful with relative paths.
+
 ifdef UNIVERSAL_BINARY
 UNIVERSAL_PATH=universal/
 else
 UNIVERSAL_PATH=
 endif
 
 _ABS_DIST := $(call core_abspath,$(DIST))
-ZIP_IN ?= $(_ABS_DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME).xpi
+ZIP_IN ?= $(_ABS_DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_PKGNAME).xpi
 
 # This variable is to allow the wget-en-US target to know which ftp server to download from
 ifndef EN_US_BINARY_URL
 EN_US_BINARY_URL = $(error You must set EN_US_BINARY_URL)
 endif
 
 # Target Directory used for the l10n files
 L10N_TARGET = $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)-$(AB_CD)
 
 $(DIST)/$(UNIVERSAL_PATH)xpi-stage:
 	mkdir -p $@
 
+# Lightning uses Thunderbird's build machinery, so we need to hack the binary
+# url to use Lightning's directories.
+wget-en-US: FINAL_BINARY_URL = $(subst thunderbird,calendar/lightning,$(EN_US_BINARY_URL))
 wget-en-US: $(DIST)/$(UNIVERSAL_PATH)xpi-stage
 ifndef WGET
 	$(error wget not installed)
 endif
-	(cd $(DIST)/xpi-stage && $(WGET) -nv -N $(EN_US_BINARY_URL)/$(XPI_NAME).xpi)
-	@echo "Downloaded $(EN_US_BINARY_URL)/$(PACKAGE) to	$(ZIP_IN)"
+	(cd $(DIST)/$(UNIVERSAL_PATH)xpi-stage && $(WGET) -nv -N $(FINAL_BINARY_URL)/$(XPI_PKGNAME).xpi)
+	@echo "Downloaded $(FINAL_BINARY_URL)/$(XPI_PKGNAME) to	$(ZIP_IN)"
 
 unpack: $(ZIP_IN)
 # We're unpacking directly into FINAL_TARGET, this keeps code to do manual
 # repacks cleaner.
 	if test -d $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME); then \
 	  $(RM) -r -v $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME); \
 	fi
 	$(NSINSTALL) -D $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)
-	cd $(DIST)/$(UNIVERSAL_PATH)/xpi-stage/$(XPI_NAME) && $(UNZIP) $(ZIP_IN)
+	cd $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME) && $(UNZIP) $(ZIP_IN)
 	@echo done unpacking
 
-# Call this target to upload the localized lightning package.
-l10n-upload-%: AB_CD=$*
-l10n-upload-%:
-	$(PYTHON) $(MOZILLA_SRCDIR)/build/upload.py --base-path $(DIST)/$(UNIVERSAL_PATH)xpi-stage/  "$(L10N_TARGET).xpi"
+
+# Nothing to package for en-US, its just the usual english xpi
+langpack-en-US: ;
+
+# Skip those locales in Thunderbird but not in Lightning
+ALL_LOCALES = $(shell awk '{ if ($$2 == "" || $$2 == "$(SHORTOS)") { print $$1 } }' $(topsrcdir)/calendar/locales/all-locales)
+TB_ALL_LOCALES = $(shell awk '{ if ($$2 == "" || $$2 == "$(SHORTOS)") { print $$1 } }' $(topsrcdir)/mail/locales/all-locales)
+TB_SKIP_LOCALES = $(filter-out $(ALL_LOCALES),$(TB_ALL_LOCALES))
+$(addprefix langpack-,$(TB_SKIP_LOCALES)) $(addprefix upload-,$(TB_SKIP_LOCALES)):
+	@echo "Skipping $@ as it is not in Lightning's all-locales"
 
-# Call this target to trigger repackaging lightning for a specific language
-# Usage: make AB_CD=<language> repack-l10n
-repack-l10n: L10N_XPI_NAME=$(subst -en-US,,$(XPI_NAME)-$(AB_CD))
-repack-l10n: recreate-platformini repack-clobber libs-$(AB_CD) repack-process-extrafiles
-	@echo "Finished repackaging $(XPI_NAME) locale for Language $(AB_CD)"
+# Calling these targets with prerequisites causes the libs and subsequent
+# targets to be switched in order due to some make voodoo. Therefore we call
+# the targets explicitly, which seems to work better.
+langpack-%: L10N_XPI_NAME=$(XPI_NAME)-$*
+langpack-%: L10N_XPI_PKGNAME=$(XPI_NAME)-$(PACKAGE_VERSION).$*.$(MOZ_PKG_PLATFORM)
+langpack-%: AB_CD=$*
+langpack-%:
+	$(MAKE) L10N_XPI_NAME=$(L10N_XPI_NAME) L10N_XPI_PKGNAME=$(L10N_XPI_PKGNAME) AB_CD=$(AB_CD) \
+	  recreate-platformini repack-clobber repack-process-extrafiles libs-$(AB_CD)
+	@echo "Done packaging $(L10N_XPI_PKGNAME).xpi"
 
-# This target should not be called directly
-repack-clobber-all:
-	@echo "Repackaging $(XPI_NAME) locale for Language $(AB_CD)"
+clobber-%: AB_CD=$*
+clobber-%:
+	$(RM) -r $(L10N_TARGET)
+
+repackage-zip-%:
+	@echo "Already repackaged zip for $* in langpack step"
+
+repack-clobber:
+	@echo "Repackaging $(XPI_PKGNAME) locale for Language $(AB_CD)"
 	$(RM) -rf $(L10N_TARGET)
 	cp -R $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME) $(L10N_TARGET)
-
-# This target should not be called directly
-repack-clobber: repack-clobber-all
 	grep -v 'locale \w\+ en-US' $(L10N_TARGET)/chrome.manifest > $(L10N_TARGET)/chrome.manifest~ && \
 	  mv $(L10N_TARGET)/chrome.manifest~ $(L10N_TARGET)/chrome.manifest
-ifeq ($(MOZ_CHROME_FILE_FORMAT),flat)
-	$(RM) -rf $(L10N_TARGET)/chrome/lightning-en-US/
-	$(RM) -rf $(L10N_TARGET)/chrome/calendar-en-US/
-else ifeq ($(MOZ_CHROME_FILE_FORMAT),jar)
-	$(RM) -rf $(L10N_TARGET)/chrome/lightning-en-US.jar
-	$(RM) -rf $(L10N_TARGET)/chrome/calendar-en-US.jar
-else
-	@echo "ERROR: Unhandled chrome file format: $(MOZ_CHROME_FILE_FORMAT)"
-	@exit 1
-endif
+	find $(call core_abspath,$(L10N_TARGET)) -name '*en-US*' -print0 | xargs -0 rm -rf
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 SHORTOS = osx
 else
 # For now, osx is the only special case. Therefore, we can just fallback to
 # detecting linux which should be the second argument.
 SHORTOS = linux
 endif
@@ -89,54 +102,47 @@ repack-l10n-all: repack-clobber-all $(ad
 # Helper target to align names better to targets from other locale Makefiles
 repack-l10n-%:
 	$(MAKE) AB_CD=$* repack-l10n
 
 # Actual locale packaging targets. If L10N_XPI_NAME is set, then use it.
 # Otherwise keep the original XPI_NAME
 # Overriding the final target is a bit of a hack for universal builds
 # so that we can ensure we get the right xpi that gets repacked.
-# The ../ is added to dist because calendar/lightning/locales is at a different level
-# to this makefile.
 libs-%: FINAL_XPI_NAME=$(if $(L10N_XPI_NAME),$(L10N_XPI_NAME),$(XPI_NAME))
+libs-%: FINAL_XPI_PKGNAME=$(if $(L10N_XPI_PKGNAME),$(L10N_XPI_PKGNAME),$(XPI_PKGNAME))
 libs-%:
-	$(MAKE) -C locales libs AB_CD=$* FINAL_TARGET=$(_ABS_DIST)/$(UNIVERSAL_PATH)xpi-stage/$(FINAL_XPI_NAME) XPI_NAME=$(FINAL_XPI_NAME) XPI_PKGNAME=$(FINAL_XPI_NAME) USE_EXTENSION_MANIFEST=1
-	$(MAKE) -C ../locales libs AB_CD=$* FINAL_TARGET=$(_ABS_DIST)/$(UNIVERSAL_PATH)xpi-stage/$(FINAL_XPI_NAME) XPI_NAME=$(FINAL_XPI_NAME) XPI_PKGNAME=$(FINAL_XPI_NAME) USE_EXTENSION_MANIFEST=1
+	$(MAKE) -C locales libs AB_CD=$* FINAL_TARGET=$(_ABS_DIST)/$(UNIVERSAL_PATH)xpi-stage/$(FINAL_XPI_NAME) \
+	  XPI_NAME=$(FINAL_XPI_NAME) XPI_PKGNAME=$(FINAL_XPI_PKGNAME) USE_EXTENSION_MANIFEST=1
 
-# For localized xpis, the install.rdf and lightning-l10n.js need to be
-# reprocessed with some defines from the locale.
+# For localized xpis, the install.rdf need to be reprocessed with some defines
+# from the locale.
 repack-process-extrafiles: LOCALE_BASEDIR=$(call EXPAND_LOCALE_SRCDIR,calendar/locales)
 repack-process-extrafiles:
 	$(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) -I $(LOCALE_BASEDIR)/defines.inc $(srcdir)/install.rdf > $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(L10N_XPI_NAME)/install.rdf
-	$(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $(LOCALE_BASEDIR)/lightning-l10n.js  > $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(L10N_XPI_NAME)/$(PREF_DIR)/lightning-l10n.js
 
-# When repackaging lightning from the builder, platform.ini is not yet created.i
+# When repackaging Lightning from the builder, platform.ini is not yet created.
 # Recreate it from the application.ini bundled with the downloaded xpi.
+print_ltnconfig = $(shell $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)/application.ini $1 $2)
+
 $(LIBXUL_DIST)/bin/platform.ini:
 	 echo "[Build]" >> $(LIBXUL_DIST)/bin/platform.ini
-	 
-	 echo -n "Milestone=" >> $(LIBXUL_DIST)/bin/platform.ini
-	 $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)/application.ini Gecko MaxVersion >> $(LIBXUL_DIST)/bin/platform.ini
-	 
-	 echo -n "SourceStamp=" >> $(LIBXUL_DIST)/bin/platform.ini
-	 $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)/application.ini Build SourceStamp >> $(LIBXUL_DIST)/bin/platform.ini
-	 
-	 echo -n "SourceRepository=" >> $(LIBXUL_DIST)/bin/platform.ini
-	 $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)/application.ini Build SourceRepository >> $(LIBXUL_DIST)/bin/platform.ini
-	 
-	 echo -n "BuildID=" >> $(LIBXUL_DIST)/bin/platform.ini
-	 $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_NAME)/application.ini App BuildID >> $(LIBXUL_DIST)/bin/platform.ini
+	 echo "Milestone=$(call print_ltnconfig,Gecko,MaxVersion)" >> $(LIBXUL_DIST)/bin/platform.ini
+	 echo "SourceStamp=$(call print_ltnconfig,Build,SourceStamp)" >> $(LIBXUL_DIST)/bin/platform.ini
+	 echo "SourceRepository=$(call print_ltnconfig,Build,SourceRepository)" >> $(LIBXUL_DIST)/bin/platform.ini
+	 echo "BuildID=$(call print_ltnconfig,App,BuildID)" >> $(LIBXUL_DIST)/bin/platform.ini
 
 recreate-platformini: $(LIBXUL_DIST)/bin/platform.ini
 
 stage_upload:
 	$(NSINSTALL) -D $(DIST)/$(MOZ_PKG_PLATFORM)
-	$(INSTALL) $(IFLAGS1) $(DIST)/$(UNIVERSAL_PATH)/xpi-stage/$(XPI_PKGNAME).xpi $(DIST)/$(MOZ_PKG_PLATFORM)
-	$(INSTALL) $(IFLAGS1) $(DIST)/xpi-stage/$(GDATA_XPI_PKGNAME).xpi $(DIST)/$(MOZ_PKG_PLATFORM)
+	$(INSTALL) $(IFLAGS1) $(DIST)/$(UNIVERSAL_PATH)xpi-stage/$(XPI_PKGNAME).xpi $(DIST)/$(MOZ_PKG_PLATFORM)
 
 # Lightning uses Thunderbird's build machinery, so we need to hack the post
-# upload command to use Lightning's directories.
-upload: POST_UPLOAD_CMD := $(subst thunderbird,calendar/lightning,$(POST_UPLOAD_CMD))
-upload: stage_upload
+# upload command to use Lightning's directories. We also need some hackery to
+# be able to ignore locales that are in Thunderbird's all-locales but not in
+# ours.
+upload: upload-$(AB_CD)
+upload-%: POST_UPLOAD_CMD := $(subst thunderbird,calendar/lightning,$(POST_UPLOAD_CMD))
+upload-%: stage_upload
 	POST_UPLOAD_CMD="$(POST_UPLOAD_CMD)" \
 	  $(PYTHON) $(MOZILLA_DIR)/build/upload.py --base-path $(DIST) \
-	  $(DIST)/$(MOZ_PKG_PLATFORM)/$(XPI_PKGNAME).xpi \
-	  $(DIST)/$(MOZ_PKG_PLATFORM)/$(GDATA_XPI_PKGNAME).xpi
+	  "$(DIST)/$(MOZ_PKG_PLATFORM)/$(XPI_PKGNAME).xpi"
--- a/calendar/lightning/lightning-symbols.mk
+++ b/calendar/lightning/lightning-symbols.mk
@@ -5,18 +5,16 @@
 ###################################
 # Warning this code is copied
 # from mozilla-central/Makefile.in
 # and needs to be kept in sync.
 ###################################
 SYMBOL_INDEX_NAME = \
    $(MOZ_APP_NAME)-$(MOZ_APP_VERSION)-$(OS_TARGET)-$(BUILDID)$(EXTRA_BUILDID)-symbols.txt
 
-include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/package-name.mk
-
 ifeq ($(OS_ARCH),WINNT)
 # we want to copy PDB files on Windows
 MAKE_SYM_STORE_ARGS := -c --vcs-info
 ifdef PDBSTR_PATH
 MAKE_SYM_STORE_ARGS += -i
 endif
 DUMP_SYMS_BIN ?= $(MOZILLA_SRCDIR)/toolkit/crashreporter/tools/win32/dump_syms_vc$(_MSC_VER).exe
 # PDB files don't get moved to dist, so we need to scan the whole objdir
--- a/calendar/lightning/locales/moz.build
+++ b/calendar/lightning/locales/moz.build
@@ -1,4 +1,8 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += [
+    '../../locales',
+]
--- a/calendar/lightning/moz.build
+++ b/calendar/lightning/moz.build
@@ -1,16 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += [
     '../libical',
-    '../locales',
     '../base',
     '../providers',
     '../import-export',
     '../itip',
     'components',
     'locales',
 ]
 
--- a/calendar/providers/gdata/Makefile.in
+++ b/calendar/providers/gdata/Makefile.in
@@ -16,23 +16,23 @@ export USE_EXTENSION_MANIFEST = 1
 export XPI_NAME = gdata-provider
 DIST_FILES = install.rdf
 XPI_PKGNAME = gdata-provider-$(GDATA_VERSION).$(AB_CD).$(MOZ_PKG_PLATFORM)
 
 CALENDAR_VERSION := $(shell cat $(topsrcdir)/calendar/sunbird/config/version.txt)
 THUNDERBIRD_VERSION := $(shell cat $(topsrcdir)/mail/config/version.txt)
 SEAMONKEY_VERSION := $(shell cat $(topsrcdir)/suite/config/version.txt)
 GDATA_VERSION = $(shell $(PYTHON) $(srcdir)/makeversion.py $(CALENDAR_VERSION))
+PACKAGE_VERSION := $(GDATA_VERSION)
 
 DEFINES += -DAB_CD=$(AB_CD) \
            -DCALENDAR_VERSION=$(CALENDAR_VERSION) \
            -DSEAMONKEY_VERSION=$(SEAMONKEY_VERSION) \
            -DTHUNDERBIRD_VERSION=$(THUNDERBIRD_VERSION) \
            -DCOMM_BUILD=$(COMM_BUILD) \
            -DGDATA_VERSION=$(GDATA_VERSION) \
            $(NULL)
 
 PREF_JS_EXPORTS = $(srcdir)/defaults/preferences.js
 
-libs-%:
-	$(MAKE) -C locales libs AB_CD=$* XPI_NAME=$(XPI_NAME) USE_EXTENSION_MANIFEST=1
 
 include $(topsrcdir)/config/rules.mk
+include $(srcdir)/../../lightning/lightning-packager.mk
--- a/mail/locales/Makefile.in
+++ b/mail/locales/Makefile.in
@@ -123,23 +123,16 @@ clobber-zip:
 	$(RM) -rf $(STAGEDIST)/searchplugins \
 	  $(STAGEDIST)/dictionaries \
 	  $(STAGEDIST)/hyphenation/$(AB_CD) \
 	  $(STAGEDIST)/isp/$(AB_CD) \
 	  $(STAGEDIST)/chrome/$(AB_CD)
 
 langpack: langpack-$(AB_CD)
 
-# This is a generic target that will make a langpack, repack ZIP (+tarball)
-# builds, and repack and installer if applicable. It is called from the
-# tinderbox scripts. Alter it with caution.
-
-installers-%: clobber-% langpack-% repackage-win32-installer-% repackage-zip-%
-	@echo "repackaging done"
-
 ifdef MOZ_UPDATER
 libs:: $(call MERGE_FILE,updater/updater.ini) $(call mkdir_deps,$(DIST)/bin)
 ifeq ($(OS_ARCH),WINNT)
 	cat $< $(srcdir)/../installer/windows/nsis/updater_append.ini | \
 	  sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \
 	  sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \
 	  $(FINAL_TARGET)/updater.ini
 else
@@ -196,8 +189,38 @@ endif
 	chmod -vR 775 $(UPLOAD_DIR)
 
 merge-%:
 ifdef LOCALE_MERGEDIR
 	$(RM) -rf $(LOCALE_MERGEDIR)
 	MACOSX_DEPLOYMENT_TARGET= compare-locales -m $(LOCALE_MERGEDIR) $(srcdir)/l10n.ini $(L10NBASEDIR) $*
 endif
 	@echo
+
+ifdef MOZ_CALENDAR
+LIGHTNING_PATH=$(DEPTH)/calendar/lightning
+GDATA_PATH=$(DEPTH)/calendar/providers/gdata
+
+# Define hooks for forwarding targets
+INSTALLERS_TARGETS += calendar-clobber-% calendar-langpack-% calendar-repackage-zip-%
+FORWARD_TARGETS=wget-en-US unpack clobber-% langpack-% repackage-zip-%
+
+# Add calendar targets to the non-pattern rules
+wget-en-US: calendar-wget-en-US
+unpack: calendar-unpack
+upload: calendar-upload
+
+# And finally, define the calendar targets
+$(addprefix calendar-,$(FORWARD_TARGETS)):
+	$(MAKE) -C $(LIGHTNING_PATH) $(subst calendar-,,$@)
+	$(MAKE) -C $(GDATA_PATH) $(subst calendar-,,$@)
+
+calendar-upload:
+	$(MAKE) -C $(LIGHTNING_PATH) upload AB_CD=$(AB_CD)
+	$(MAKE) -C $(GDATA_PATH) upload AB_CD=$(AB_CD)
+endif
+
+# This is a generic target that will make a langpack, repack ZIP (+tarball)
+# builds, and repack and installer if applicable. It is called from the
+# tinderbox scripts. Alter it with caution.
+INSTALLERS_TARGETS += clobber-% langpack-% repackage-win32-installer-% repackage-zip-%
+installers-%: $(INSTALLERS_TARGETS)
+	@echo "repackaging done"