From 62baa07994869c752127323dab3e842837f53d34 Mon Sep 17 00:00:00 2001 From: "bsmedberg%covad.net" Date: Wed, 20 Apr 2005 23:10:56 +0000 Subject: [PATCH] Bug 287262 - Build locale packages by unpacking final en-US packages and repacking them with localized content r+a=Chase --- browser/locales/Makefile.in | 156 +++++++++++++++------- config/config.mk | 6 +- config/rules.mk | 2 +- toolkit/locales/Makefile.in | 26 +--- toolkit/mozapps/installer/package-name.mk | 6 +- toolkit/mozapps/installer/packager.mk | 10 ++ 6 files changed, 125 insertions(+), 81 deletions(-) diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in index 76bbac3e4149..4c23da026ddc 100644 --- a/browser/locales/Makefile.in +++ b/browser/locales/Makefile.in @@ -42,6 +42,8 @@ relativesrcdir = browser/locales include $(DEPTH)/config/autoconf.mk +_ABS_DIST := $(shell cd $(DIST) && pwd) + # This makefile uses target-specific variable assignments to override # the AB_CD variable when making non-default language JARs and XPIs # below. If you don't understand what this means, talk to bsmedberg @@ -88,13 +90,13 @@ endif PROFILE_CHROME = userChrome-example.css userContent-example.css libs:: $(addprefix $(LOCALE_SRCDIR)/,$(README_FILES)) - $(INSTALL) $^ $(DIST)/bin + $(INSTALL) $^ $(FINAL_TARGET) -libs realchrome:: $(addprefix $(LOCALE_SRCDIR)/profile/,$(PROFILE_FILES)) - $(INSTALL) $^ $(DIST)/bin/defaults/profile +libs:: $(addprefix $(LOCALE_SRCDIR)/profile/,$(PROFILE_FILES)) + $(INSTALL) $^ $(FINAL_TARGET)/defaults/profile -libs realchrome:: $(addprefix $(LOCALE_SRCDIR)/profile/chrome/,$(PROFILE_CHROME)) - $(INSTALL) $^ $(DIST)/bin/defaults/profile/chrome +libs:: $(addprefix $(LOCALE_SRCDIR)/profile/chrome/,$(PROFILE_CHROME)) + $(INSTALL) $^ $(FINAL_TARGET)/defaults/profile/chrome install:: $(addprefix $(LOCALE_SRCDIR)/profile/,$(PROFILE_FILES)) $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile @@ -105,57 +107,111 @@ install:: $(addprefix $(LOCALE_SRCDIR)/profile/chrome/,$(PROFILE_CHROME)) SEARCH_PLUGINS = $(shell cat $(LOCALE_SRCDIR)/searchplugins/list.txt) SEARCH_PLUGIN_PREFIX = $(addprefix $(LOCALE_SRCDIR)/searchplugins/,$(SEARCH_PLUGINS)) -libs realchrome:: $(addsuffix .src,$(SEARCH_PLUGIN_PREFIX)) $(foreach base,$(SEARCH_PLUGIN_PREFIX),$(wildcard $(base).gif)$(wildcard $(base).png)) - $(INSTALL) $^ $(DIST)/bin/searchplugins +libs:: $(addsuffix .src,$(SEARCH_PLUGIN_PREFIX)) $(foreach base,$(SEARCH_PLUGIN_PREFIX),$(wildcard $(base).gif)$(wildcard $(base).png)) + $(INSTALL) $^ $(FINAL_TARGET)/searchplugins install:: $(addsuffix .src,$(SEARCH_PLUGIN_PREFIX)) $(foreach base,$(SEARCH_PLUGIN_PREFIX),$(wildcard $(base).gif)$(wildcard $(base).png)) $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/searchplugins -# Let's imagine we wanted to create a language JARfile without registering it -# the following targets only work with JARed chrome: flat chrome is not supported - -jar-%: AB_CD = $* -xpi-%: AB_CD = $* - -jar-%: % - @$(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) \ - -I$(LOCALE_SRCDIR)/defines.inc $(srcdir)/jar.mn | \ - $(PERL) -I$(topsrcdir)/config $(topsrcdir)/config/make-jars.pl \ - $(if $(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)),-x) \ - $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(_NO_FLOCK) \ - -f jar -d $(DIST)/bin/chrome -s $(srcdir) -t $(topsrcdir) -z $(ZIP) \ - -c $(LOCALE_SRCDIR) \ - -p $(topsrcdir)/config/preprocessor.pl -- \ - "$(DEFINES) $(ACDEFINES)" - -xpi-%: % - @$(MAKE) -C ../../toolkit/locales jar-$* - @$(MAKE) jar-$* - @$(RM) -rf $(DIST)/install/xpi-$* - @$(INSTALL) $(DIST)/bin/chrome/$*.jar $(DIST)/install/xpi-$*/chrome - @$(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) -I$(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/defines.inc -I$(LOCALE_SRCDIR)/defines.inc $(srcdir)/generic/install.rdf > $(DIST)/install/xpi-$*/install.rdf - @cd $(DIST)/install/xpi-$*; $(ZIP) -r9D ../firefox-$(MOZ_APP_VERSION).$*.langpack.xpi install.rdf chrome - -clean-l10n: - @$(RM) $(DIST)/bin/defaults/pref/firefox-l10n.js - @$(RM) -r $(DIST)/bin/searchplugins - @find $(DIST)/bin/chrome -name "??-??.jar" -o -name "???-??.jar" -o -name "??-???.jar" -o -name "??-??" -o -name "???-??" -o -name "??-???" | xargs $(RM) -r dummy - @$(PERL) -pi -e '$$_ = "" if m~^locale,install,url,jar:resource:/chrome/[a-z]{2,3}-[A-Z]{2,3}\.jar~' $(DIST)/bin/chrome/installed-chrome.txt - -installers-%: % clean-l10n - @$(MAKE) -C ../../toolkit/locales AB_CD=$* - @$(MAKE) AB_CD=$* # build/register the chrome -ifdef MOZ_USE_OFFICIAL_BRANDING - @$(MAKE) -C ../../other-licenses/branding/firefox/content locale AB_CD=$* -else - @$(MAKE) -C ../base locale AB_CD=$* +libs-%: + @$(MAKE) -C ../../toolkit/locales libs-$* + @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* +ifneq (,$(filter reporter,$(MOZ_EXTENSIONS))) + @$(MAKE) -C ../../extensions/reporter/locales libs AB_CD=$* XPI_NAME=locale-$* endif - @$(MAKE) xpi-$* # build the langpack +ifdef MOZ_USE_OFFICIAL_BRANDING + @$(MAKE) -C ../../other-licenses/branding/firefox/locales libs-$* +endif + +PACKAGER_NO_LIBS = 1 +include $(topsrcdir)/toolkit/mozapps/installer/packager.mk +include $(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/installer/windows/charset.mk + +repackage-win32-installer: WIN32_INSTALLER_OUT=$(_ABS_DIST)/install/sea/$(PKG_BASENAME).installer.exe +repackage-win32-installer: $(WIN32_INSTALLER_IN) + @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)." + $(RM) -rf $(DIST)/l10n-stage + mkdir $(DIST)/l10n-stage + cd $(DIST)/l10n-stage && \ + $(CYGWIN_WRAPPER) 7z e $(WIN32_INSTALLER_IN) + $(RM) $(DIST)/l10n-stage/en-US.xpi + $(RM) -rf $(DIST)/xpi-stage/locale-$(AB_CD) + $(MAKE) libs-$(AB_CD) + $(RM) -rf $(DIST)/l10n-temp-stage + mkdir $(DIST)/l10n-temp-stage + mv $(DIST)/xpi-stage/locale-$(AB_CD) $(DIST)/l10n-temp-stage/bin + $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) \ + -I$(topsrcdir)/xpinstall/packager/common/share.t $(topsrcdir)/browser/installer/windows/ab-CD.jst | \ + sed -e 's/\$SpaceRequired\$:bin/50/' > $(DIST)/l10n-temp-stage/install.js + cd $(DIST)/l10n-temp-stage && \ + $(ZIP) -D -0 -r ../l10n-stage/$(AB_CD).xpi . + iconv -f UTF-8 -t $(WIN_INSTALLER_CHARSET) $(call EXPAND_LOCALE_SRCDIR,browser/locales)/installer/installer.inc > \ + $(DIST)/l10n-temp-stage/installer.inc + $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) \ + -I$(DIST)/l10n-temp-stage/installer.inc \ + -I$(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/installer/windows/install.it \ + $(topsrcdir)/browser/installer/windows/install.it > $(DIST)/l10n-stage/install.ini + cd $(DIST)/l10n-stage && \ + $(CYGWIN_WRAPPER) 7z a -t7z ../l10n-temp-stage/app.7z *.* -mx -m0=BCJ2 -m1=LZMA:d24 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 + $(CYGWIN_WRAPPER) upx -9 -o $(DIST)/l10n-temp-stage/7zSD.sfxc $(topsrcdir)/other-licenses/7zstub/firefox/7zSD.sfx + $(INSTALL) $(topsrcdir)/browser/installer/windows/app.tag $(DIST)/l10n-temp-stage + cd $(DIST)/l10n-temp-stage && \ + $(CYGWIN_WRAPPER) cmd /C copy /b 7zSD.sfxc+app.tag+app.7z firefox-installer.exe + mv -f $(DIST)/l10n-temp-stage/firefox-installer.exe $(WIN32_INSTALLER_OUT) + +repackage-win32-installer-%: WIN32_INSTALLER_IN=$(_ABS_DIST)/install/sea/$(PKG_BASENAME).installer.exe + +repackage-win32-installer-%: $(WIN32_INSTALLER_IN) + @$(MAKE) repackage-win32-installer AB_CD=$* WIN32_INSTALLER_IN=$(WIN32_INSTALLER_IN) ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) - @$(MAKE) -C ../app repackage AB_CD=$* +STAGEDIST = $(_ABS_DIST)/l10n-stage/$(MOZ_PKG_APPNAME)/Contents/MacOS +else +STAGEDIST = $(_ABS_DIST)/l10n-stage/$(MOZ_PKG_APPNAME) endif - @$(MAKE) -C ../installer AB_CD=$* # build the tarball/ZIP - @$(MAKE) -C ../installer installer AB_CD=$* # build the installer -.PHONY: clean-l10n +repackage-zip: ZIP_OUT=$(_ABS_DIST)/$(PACKAGE) +repackage-zip: UNPACKAGE=$(ZIP_IN) +repackage-zip: $(ZIP_IN) + $(RM) -r $(DIST)/l10n-stage + mkdir $(DIST)/l10n-stage + cd $(DIST)/l10n-stage && \ + $(UNMAKE_PACKAGE) + $(RM) $(STAGEDIST)/chrome/en-US.jar \ + $(STAGEDIST)/chrome/en-US.manifest \ + $(STAGEDIST)/chrome/defaults/pref/firefox-l10n.js + $(RM) -r $(STAGEDIST)/searchplugins \ + $(STAGEDIST)/defaults/profile + $(RM) -rf $(DIST)/xpi-stage/locale-$(AB_CD) + $(MAKE) libs-$(AB_CD) + cd $(DIST)/xpi-stage/locale-$(AB_CD) && \ + tar $(TAR_CREATE_FLAGS) - * | ( cd $(STAGEDIST) && tar -xf - ) + cd $(DIST)/l10n-stage; \ + $(MAKE_PACKAGE) + mv -f $(DIST)/l10n-stage/$(PACKAGE) $(DIST) + +repackage-zip-%: ZIP_IN=$(_ABS_DIST)/$(PACKAGE) +repackage-zip-%: $(ZIP_IN) + @$(MAKE) repackage-zip AB_CD=$* ZIP_IN=$(ZIP_IN) + +langpack-%: LANGPACK_FILE=$(DIST)/firefox-$(MOZ_APP_VERSION).$(AB_CD).langpack.xpi +langpack-%: AB_CD=$* +langpack-%: XPI_NAME=locale-$* +langpack-%: + @echo "Making langpack $(LANGPACK_FILE)" + @$(RM) -rf $(DIST)/xpi-stage/locale-$(AB_CD) + @$(MAKE) libs-$(AB_CD) + $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) -I$(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/defines.inc -I$(LOCALE_SRCDIR)/defines.inc $(srcdir)/generic/install.rdf > $(FINAL_TARGET)/install.rdf + cd $(DIST)/xpi-stage/locale-$(AB_CD) && \ + $(ZIP) -r9D $(shell cygpath -a $(LANGPACK_FILE)) install.rdf chrome + +# This is a generic target that will make a langpack, repack ZIP (+tarball) +# builds, and repack an installer if applicable. It is called from the +# tinderbox scripts. Alter it with caution. + +installers-%: + @$(MAKE) langpack-$* + @$(MAKE) repackage-$* +ifeq (WINNT,$(OS_ARCH)) + @$(MAKE) win32-installer-$* +endif diff --git a/config/config.mk b/config/config.mk index 56ca80734da5..8b4c13d90e43 100644 --- a/config/config.mk +++ b/config/config.mk @@ -66,11 +66,7 @@ GRE_DIST = $(DIST)/gre # # It will usually be the well-loved $(DIST)/bin, today, but can also be an # XPI-contents staging directory for ambitious and right-thinking extensions. -ifdef XPI_NAME -FINAL_TARGET = $(DIST)/xpi-stage/$(XPI_NAME) -else -FINAL_TARGET = $(DIST)/bin -endif +FINAL_TARGET = $(if $(XPI_NAME),$(DIST)/xpi-stage/$(XPI_NAME),$(DIST)/bin) # # The VERSION_NUMBER is suffixed onto the end of the DLLs we ship. diff --git a/config/rules.mk b/config/rules.mk index 7ce9b22277bb..04719f6fe7c4 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -1629,7 +1629,7 @@ libs realchrome:: $(CHROME_DEPS) ifndef NO_DIST_INSTALL @$(EXIT_ON_ERROR) \ if test -f $(JAR_MANIFEST); then \ - if test ! -d $(FINAL_TARGET)/chrome; then mkdir $(FINAL_TARGET)/chrome; fi; \ + if test ! -d $(FINAL_TARGET)/chrome; then $(NSINSTALL) -D $(FINAL_TARGET)/chrome; fi; \ $(PERL) $(MOZILLA_DIR)/config/preprocessor.pl $(XULPPFLAGS) $(DEFINES) $(ACDEFINES) \ $(JAR_MANIFEST) | \ $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/make-jars.pl \ diff --git a/toolkit/locales/Makefile.in b/toolkit/locales/Makefile.in index 7a29356fa4ce..e044ad8ef14f 100644 --- a/toolkit/locales/Makefile.in +++ b/toolkit/locales/Makefile.in @@ -42,13 +42,6 @@ relativesrcdir = toolkit/locales include $(DEPTH)/config/autoconf.mk -# This makefile uses target-specific variable assignments to override -# the AB_CD variable when making non-default language JARs below. If -# you don't understand what this means, talk to bsmedberg before -# altering this makefile. - -AB_CD = en-US - DEFINES += -DAB_CD=$(AB_CD) ifeq (,$(filter-out pref,$(MOZ_EXTENSIONS))) @@ -57,17 +50,10 @@ endif XULPPFLAGS += -I$(LOCALE_SRCDIR)/defines.inc -# Let's imagine we wanted to create a language JARfile without registering it - -jar-%: AB_CD = $* - -jar-%: % - $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $(srcdir)/jar.mn | \ - $(PERL) -I$(topsrcdir)/config $(topsrcdir)/config/make-jars.pl \ - $(if $(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)),-x) \ - $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(_NO_FLOCK) \ - -f jar -d $(DIST)/bin/chrome -s $(srcdir) -t $(topsrcdir) -z $(ZIP) \ - -p $(topsrcdir)/config/preprocessor.pl -- \ - "-I$(srcdir)/$*/defines.inc $(DEFINES) $(ACDEFINES)" - include $(topsrcdir)/config/rules.mk + +libs-%: + @$(MAKE) -C ../../netwerk/locales/ libs AB_CD=$* XPI_NAME=locale-$* + @$(MAKE) -C ../../dom/locales/ libs AB_CD=$* XPI_NAME=locale-$* + @$(MAKE) -C ../../security/manager/locales/ libs AB_CD=$* XPI_NAME=locale-$* + @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk index 6793d55566e3..ceb8d21fa314 100644 --- a/toolkit/mozapps/installer/package-name.mk +++ b/toolkit/mozapps/installer/package-name.mk @@ -35,10 +35,6 @@ # # ***** END LICENSE BLOCK ***** -ifndef AB_CD -AB_CD = $(MOZ_UI_LOCALE) -endif - ifndef MOZ_PKG_APPNAME MOZ_PKG_APPNAME = $(MOZ_APP_NAME) endif @@ -80,4 +76,4 @@ endif endif #MOZ_SVG endif #MOZ_PKG_PLATFORM -PKG_BASENAME := $(MOZ_PKG_APPNAME)-$(MOZ_PKG_VERSION).$(AB_CD).$(MOZ_PKG_PLATFORM) +PKG_BASENAME = $(MOZ_PKG_APPNAME)-$(MOZ_PKG_VERSION).$(AB_CD).$(MOZ_PKG_PLATFORM) diff --git a/toolkit/mozapps/installer/packager.mk b/toolkit/mozapps/installer/packager.mk index 03347d2859d4..a7f497f5aec4 100644 --- a/toolkit/mozapps/installer/packager.mk +++ b/toolkit/mozapps/installer/packager.mk @@ -72,22 +72,27 @@ TAR_CREATE_FLAGS = -cvLf endif CREATE_FINAL_TAR = tar -c --owner=0 --group=0 --numeric-owner --mode="go-w" -f +UNPACK_TAR = tar -x ifeq ($(MOZ_PKG_FORMAT),TAR) PKG_SUFFIX = .tar MAKE_PACKAGE = $(CREATE_FINAL_TAR) - $(MOZ_PKG_APPNAME) > $(PACKAGE) +UNMAKE_PACKAGE = $(UNPACK_TAR) < $(UNPACKAGE) endif ifeq ($(MOZ_PKG_FORMAT),TGZ) PKG_SUFFIX = .tar.gz MAKE_PACKAGE = $(CREATE_FINAL_TAR) - $(MOZ_PKG_APPNAME) | gzip -vf9 > $(PACKAGE) +UNMAKE_PACKAGE = gunzip -c $(UNPACKAGE) | $(UNPACK_TAR) endif ifeq ($(MOZ_PKG_FORMAT),BZ2) PKG_SUFFIX = .tar.bz2 MAKE_PACKAGE = $(CREATE_FINAL_TAR) - $(MOZ_PKG_APPNAME) | bzip2 -vf > $(PACKAGE) +UNMAKE_PACKAGE = bunzip2 -c $(UNPACKAGE) | $(UNPACK_TAR) endif ifeq ($(MOZ_PKG_FORMAT),ZIP) PKG_SUFFIX = .zip MAKE_PACKAGE = $(ZIP) -r9D $(PACKAGE) $(MOZ_PKG_APPNAME) +UNMAKE_PACKAGE = $(UNZIP) $(UNPACKAGE) endif ifeq ($(MOZ_PKG_FORMAT),DMG) ifdef MOZ_DEBUG @@ -98,6 +103,7 @@ endif PKG_SUFFIX = .dmg _ABS_TOPSRCDIR = $(shell cd $(topsrcdir) && pwd) MAKE_PACKAGE = $(_ABS_TOPSRCDIR)/build/package/mac_osx/make-diskimage $(PKG_BASENAME).dmg $(MOZ_PKG_APPNAME) $(MOZ_APP_DISPLAYNAME) +UNMAKE_PACKAGE = $(error XXX Need to implement this!) endif # dummy macro if we don't have PSM built @@ -152,7 +158,11 @@ NO_PKG_FILES += \ chrome/app-chrome.manifest \ $(NULL) +# browser/locales/Makefile uses this makefile for it's variable defs, but +# doesn't want the libs:: rule. +ifndef PACKAGER_NO_LIBS libs:: $(PACKAGE) +endif GARBAGE += $(DIST)/$(PACKAGE) $(PACKAGE)