Bug 381611 - Client pull script to checkout Tamarin/NSPR/NSS into the right dirs, and keep everything updated, r=luser
--- a/client.mk
+++ b/client.mk
@@ -35,529 +35,104 @@
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# Build a mozilla application.
#
-# To checkout and build a tree,
-# 1. cvs co mozilla/client.mk
+# To build a tree,
+# 1. hg clone ssh://hg.mozilla.org/mozilla-central mozilla
# 2. cd mozilla
-# 3. create your .mozconfig file with
+# 3. python client.py checkout
+# 4. create your .mozconfig file with
# mk_add_options MOZ_CO_PROJECT=
# suite,browser
-# 4. gmake -f client.mk
-#
-# This script will pick up the CVSROOT from the CVS/Root file. If you wish
-# to use a different CVSROOT, you must set CVSROOT in your environment:
-#
-# export CVSROOT=:pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot
-# export CVSROOT=:pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot
-#
-# You must specify which products/modules you wish to checkout, with
-# MOZ_CO_PROJECT and MOZ_CO_MODULE variables.
-#
-# MOZ_CO_PROJECT possibilities include the following:
-# suite (Seamonkey suite)
-# browser (aka Firefox)
-# mail (aka Thunderbird)
-# minimo (small browser for devices)
-# composer (standalone composer, aka NVU)
-# calendar (aka Sunbird, use this to build the calendar extensions also)
-# xulrunner
-# camino
-# tamarin
-#
-# Other common MOZ_CO_MODULE options include the following:
-# mozilla/other-licenses/libart_lgpl
-# mozilla/other-licenses/bsdiff
-# mozilla/tools/codesighs
+# 5. gmake -f client.mk
#
# Other targets (gmake -f client.mk [targets...]),
-# checkout
# build
# clean (realclean is now the same as clean)
# distclean
#
# See http://www.mozilla.org/build/ for more information.
#
# Options:
# MOZ_BUILD_PROJECTS - Build multiple projects in subdirectories
# of MOZ_OBJDIR
# MOZ_OBJDIR - Destination object directory
-# MOZ_CO_DATE - Date tag to use for checkout (default: none)
-# MOZ_CO_LOCALES_DATE - Date tag to use for locale checkout
-# (default: MOZ_CO_DATE)
-# MOZ_CO_MODULE - Module to checkout
-# MOZ_CVS_FLAGS - Flags to pass cvs (default: -q -z3)
-# MOZ_CO_FLAGS - Flags to pass after 'cvs co' (default: -P)
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
-# MOZ_CO_LOCALES - localizations to pull (MOZ_CO_LOCALES="de-DE,pt-BR")
-# MOZ_LOCALE_DIRS - directories which contain localizations
-# LOCALES_CVSROOT - CVSROOT to use to pull localizations
# MOZ_PREFLIGHT_ALL } - Makefiles to run before any project in
# MOZ_PREFLIGHT } MOZ_BUILD_PROJECTS, before each project, after
# MOZ_POSTFLIGHT } each project, and after all projects; these
# MOZ_POSTFLIGHT_ALL } variables contain space-separated lists
# MOZ_UNIFY_BDATE - Set to use the same bdate for each project in
# MOZ_BUILD_PROJECTS
#
-AVAILABLE_PROJECTS = \
- all \
- suite \
- toolkit \
- browser \
- mail \
- minimo \
- composer \
- calendar \
- xulrunner \
- camino \
- necko \
- tamarin \
- $(NULL)
-
-# Trailing / on top-level mozilla dir required to stop fast-update thinking
-# it is a module name.
-MODULES_NS_necko := \
- mozilla/ \
- $(NULL)
-
-MODULES_necko := \
- mozilla/README \
- mozilla/config \
- mozilla/build \
- mozilla/intl \
- mozilla/modules/libpref \
- mozilla/modules/zlib \
- mozilla/netwerk \
- mozilla/xpcom \
- mozilla/tools/test-harness \
- $(NULL)
-
-MODULES_NS_core := \
- $(MODULES_NS_necko) \
- mozilla/js \
- mozilla/js/src \
- mozilla/js/jsd \
- mozilla/db \
- $(NULL)
-
-MODULES_core := \
- $(MODULES_necko) \
- mozilla/caps \
- mozilla/content \
- mozilla/db/mdb \
- mozilla/db/mork \
- mozilla/docshell \
- mozilla/dom \
- mozilla/editor \
- mozilla/embedding \
- mozilla/extensions \
- mozilla/gfx \
- mozilla/parser \
- mozilla/layout \
- mozilla/jpeg \
- mozilla/js/src/fdlibm \
- mozilla/js/src/liveconnect \
- mozilla/js/src/xpconnect \
- mozilla/js/jsd/idl \
- mozilla/modules/libimg \
- mozilla/modules/libjar \
- mozilla/modules/libpr0n \
- mozilla/modules/libreg \
- mozilla/modules/libutil \
- mozilla/modules/oji \
- mozilla/modules/plugin \
- mozilla/modules/staticmod \
- mozilla/plugin/oji \
- mozilla/profile \
- mozilla/rdf \
- mozilla/security/manager \
- mozilla/sun-java \
- mozilla/ipc/ipcd \
- mozilla/modules/libpr0n \
- mozilla/modules/libmar \
- mozilla/modules/libbz2 \
- mozilla/accessible \
- mozilla/other-licenses/atk-1.0 \
- mozilla/other-licenses/ia2 \
- mozilla/security/manager \
- mozilla/tools/elf-dynstr-gc \
- mozilla/uriloader \
- mozilla/view \
- mozilla/webshell \
- mozilla/widget \
- mozilla/xpfe \
- mozilla/xpinstall \
- mozilla/toolkit \
- mozilla/storage \
- mozilla/db/sqlite3 \
- mozilla/db/morkreader \
- mozilla/testing/mochitest \
- $(NULL)
-
-LOCALES_necko := \
- netwerk \
- $(NULL)
-
-LOCALES_core := \
- $(LOCALES_necko) \
- dom \
- $(NULL)
-
-BOOTSTRAP_necko := \
- mozilla/browser/config/version.txt \
- mozilla/mail/config/version.txt \
- mozilla/calendar/sunbird/config/version.txt \
- mozilla/suite/config/version.txt \
- $(NULL)
-
-BOOTSTRAP_core := \
- $(BOOTSTRAP_necko) \
- $(NULL)
-
-MODULES_NS_toolkit := \
- $(MODULES_NS_core) \
- $(NULL)
-
-MODULES_toolkit := \
- $(MODULES_core) \
- mozilla/chrome \
- $(NULL)
-
-LOCALES_toolkit := \
- $(LOCALES_core) \
- toolkit \
- security/manager \
- $(NULL)
-
-BOOTSTRAP_toolkit := \
- $(BOOTSTRAP_core) \
- $(NULL)
-
-MODULES_NS_suite := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_suite := \
- $(MODULES_toolkit) \
- mozilla/directory/xpcom \
- mozilla/mailnews \
- mozilla/themes \
- mozilla/suite \
- $(NULL)
-
-LOCALES_suite := \
- $(LOCALES_toolkit) \
- suite \
- editor/ui \
- extensions/reporter \
- $(NULL)
-
-BOOTSTRAP_suite := \
- $(BOOTSTRAP_toolkit) \
- $(NULL)
-
-MODULES_NS_browser := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_browser := \
- $(MODULES_toolkit) \
- mozilla/browser \
- mozilla/other-licenses/branding/firefox \
- mozilla/other-licenses/7zstub/firefox \
- $(NULL)
-
-LOCALES_browser := \
- $(LOCALES_toolkit) \
- browser \
- extensions/reporter \
- extensions/spellcheck \
- other-licenses/branding/firefox \
- $(NULL)
-
-BOOTSTRAP_browser := \
- $(BOOTSTRAP_toolkit) \
- mozilla/browser/config/mozconfig \
- $(NULL)
-
-MODULES_NS_minimo := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_minimo := \
- $(MODULES_toolkit) \
- mozilla/minimo \
- $(NULL)
-
-BOOTSTRAP_minimo := \
- $(BOOTSTRAP_toolkit) \
- $(NULL)
-
-MODULES_NS_mail := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_mail := \
- $(MODULES_toolkit) \
- mozilla/directory/xpcom \
- mozilla/mailnews \
- mozilla/mail \
- mozilla/other-licenses/branding/thunderbird \
- mozilla/other-licenses/7zstub/thunderbird \
- $(NULL)
-
-LOCALES_mail := \
- $(LOCALES_toolkit) \
- mail \
- other-licenses/branding/thunderbird \
- editor/ui \
- extensions/spellcheck \
- $(NULL)
-
-BOOTSTRAP_mail := \
- $(BOOTSTRAP_toolkit) \
- mozilla/mail/config/mozconfig \
- $(NULL)
-
-MODULES_composer := \
- $(MODULES_toolkit) \
- mozilla/composer \
- $(NULL)
-
-MODULES_NS_calendar := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_calendar := \
- $(MODULES_toolkit) \
- mozilla/storage \
- mozilla/db/sqlite3 \
- mozilla/calendar \
- mozilla/other-licenses/branding/sunbird \
- mozilla/other-licenses/7zstub/sunbird \
- $(NULL)
-
-LOCALES_calendar := \
- $(LOCALES_toolkit) \
- calendar \
- other-licenses/branding/sunbird \
- $(NULL)
-
-BOOTSTRAP_calendar := \
- $(BOOTSTRAP_toolkit) \
- mozilla/calendar/sunbird/config/mozconfig \
- $(NULL)
-
-MODULES_NS_xulrunner := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_xulrunner := \
- $(MODULES_toolkit) \
- mozilla/xulrunner \
- $(NULL)
-
-LOCALES_xulrunner := \
- $(LOCALES_toolkit) \
- $(NULL)
-
-BOOTSTRAP_xulrunner := \
- $(BOOTSTRAP_toolkit) \
- mozilla/xulrunner/config/mozconfig \
- $(NULL)
-
-MODULES_NS_camino := \
- $(MODULES_NS_toolkit) \
- $(NULL)
-
-MODULES_camino := \
- $(MODULES_core) \
- mozilla/camino \
- mozilla/themes \
- $(NULL)
-
-BOOTSTRAP_camino := \
- $(BOOTSTRAP_toolkit) \
- mozilla/camino/config/mozconfig \
- $(NULL)
-
-MODULES_tamarin := \
- mozilla/js/tamarin \
- mozilla/modules/zlib \
- $(NULL)
-
-MODULES_all := \
- mozilla/other-licenses/bsdiff \
- mozilla/other-licenses/libart_lgpl \
- mozilla/tools/trace-malloc \
- mozilla/tools/jprof \
- mozilla/tools/codesighs \
- mozilla/tools/update-packaging \
- $(NULL)
-
-#######################################################################
-# Checkout Tags
-#
-# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
-# and commit this file on that tag.
-#MOZ_CO_TAG = <tag>
-NSPR_CO_TAG = NSPRPUB_PRE_4_2_CLIENT_BRANCH
-NSS_CO_TAG = NSS_3_11_5_RTM
-LDAPCSDK_CO_TAG = LDAPCSDK_6_0_3_CLIENT_BRANCH
-LOCALES_CO_TAG =
-
#######################################################################
# Defines
#
CVS = cvs
comma := ,
CWD := $(shell pwd)
ifneq (1,$(words $(CWD)))
$(error The mozilla directory cannot be located in a path with spaces.)
endif
ifeq "$(CWD)" "/"
CWD := /.
endif
-ifneq (, $(wildcard client.mk))
-# Ran from mozilla directory
-ROOTDIR := $(shell dirname $(CWD))
-TOPSRCDIR := $(CWD)
-else
-# Ran from mozilla/.. directory (?)
-ROOTDIR := $(CWD)
-TOPSRCDIR := $(CWD)/mozilla
+ifndef TOPSRCDIR
+ifeq (,$(wildcard client.mk))
+$(error Must run from the client.mk directory, or specify TOPSRCDIR)
+endif
+TOPSRCDIR = $(CWD)
endif
-# on os2, TOPSRCDIR may have two forward slashes in a row, which doesn't
-# work; replace first instance with one forward slash
-TOPSRCDIR := $(shell echo "$(TOPSRCDIR)" | sed -e 's%//%/%')
-
-ifndef TOPSRCDIR_MOZ
-TOPSRCDIR_MOZ=$(TOPSRCDIR)
-endif
-
-# if ROOTDIR equals only drive letter (i.e. "C:"), set to "/"
-DIRNAME := $(shell echo "$(ROOTDIR)" | sed -e 's/^.://')
-ifeq ($(DIRNAME),)
-ROOTDIR := /.
-endif
-
-AUTOCONF := autoconf
+AUTOCONF := autoconf-2.13
MKDIR := mkdir
SH := /bin/sh
ifndef MAKE
MAKE := gmake
endif
PERL ?= perl
-CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
-ifdef CONFIG_GUESS_SCRIPT
- CONFIG_GUESS = $(shell $(CONFIG_GUESS_SCRIPT))
-else
- _IS_FIRST_CHECKOUT := 1
-endif
+RUN_AUTOCONF_LOCALLY = 1
####################################
# Sanity checks
ifneq (,$(filter MINGW%,$(shell uname -s)))
# check for CRLF line endings
ifneq (0,$(shell $(PERL) -e 'binmode(STDIN); while (<STDIN>) { if (/\r/) { print "1"; exit } } print "0"' < $(TOPSRCDIR)/client.mk))
$(error This source tree appears to have Windows-style line endings. To \
convert it to Unix-style line endings, run \
"python mozilla/build/win32/mozilla-dos2unix.py")
endif
endif
####################################
-# CVS
-
-# Add the CVS root to CVS_FLAGS if needed
-CVS_ROOT_IN_TREE := $(shell cat $(TOPSRCDIR)/CVS/Root 2>/dev/null)
-ifneq ($(CVS_ROOT_IN_TREE),)
-ifneq ($(CVS_ROOT_IN_TREE),$(CVSROOT))
- CVS_FLAGS := -d $(CVS_ROOT_IN_TREE)
-endif
-endif
-
-CVS_CO_DATE_FLAGS = $(if $(MOZ_CO_DATE),-D "$(MOZ_CO_DATE)")
-CVS_CO_LOCALES_DATE_FLAGS = $(if $(MOZ_CO_LOCALES_DATE),-D "$(MOZ_CO_LOCALES_DATE)")
-CVSCO = $(CVS) $(CVS_FLAGS) co $(MOZ_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG)) $(CVS_CO_DATE_FLAGS)
-
-MOZ_CO_LOCALES_DATE ?= $(MOZ_CO_DATE)
-
-CVSCO_LOGFILE := $(ROOTDIR)/cvsco.log
-CVSCO_LOGFILE := $(shell echo $(CVSCO_LOGFILE) | sed s%//%/%)
-
-# if LOCALES_CVSROOT is not specified, set it here
-# (and let mozconfig override it)
-LOCALES_CVSROOT ?= :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/l10n
-
-####################################
# Load mozconfig Options
# See build pages, http://www.mozilla.org/build/ for how to set up mozconfig.
-MOZCONFIG_LOADER := mozilla/build/autoconf/mozconfig2client-mk
-MOZCONFIG_FINDER := mozilla/build/autoconf/mozconfig-find
-MOZCONFIG_MODULES := mozilla/build/unix/uniq.pl
-run_for_side_effects := \
- $(shell cd $(ROOTDIR); \
- if test "$(_IS_FIRST_CHECKOUT)"; then \
- $(CVSCO) $(MOZCONFIG_FINDER) $(MOZCONFIG_LOADER) $(MOZCONFIG_MODULES); \
- else true; \
- fi; \
- $(MOZCONFIG_LOADER) $(TOPSRCDIR) mozilla/.mozconfig.mk > mozilla/.mozconfig.out)
-include $(TOPSRCDIR)/.mozconfig.mk
+MOZCONFIG_LOADER := build/autoconf/mozconfig2client-mk
+MOZCONFIG_FINDER := build/autoconf/mozconfig-find
+MOZCONFIG_MODULES := build/unix/uniq.pl
-####################################
-# Options that may come from mozconfig
-
-MOZ_PROJECT_LIST := $(subst $(comma), ,$(MOZ_CO_PROJECT))
-MOZ_PROJECT_LIST := $(subst macbrowser,camino,$(MOZ_PROJECT_LIST))
-
-ifneq (,$(filter-out $(AVAILABLE_PROJECTS),$(MOZ_PROJECT_LIST)))
-$(error MOZ_CO_PROJECT contains an unrecognized project.)
-endif
-ifeq (all,$(filter all,$(MOZ_PROJECT_LIST)))
- MOZ_PROJECT_LIST := $(AVAILABLE_PROJECTS)
-endif
-
-MOZ_MODULE_LIST := $(subst $(comma), ,$(MOZ_CO_MODULE)) $(foreach project,$(MOZ_PROJECT_LIST),$(MODULES_$(project)))
-MOZ_MODULE_LIST_NS := $(foreach project,$(MOZ_PROJECT_LIST),$(MODULES_NS_$(project)))
-LOCALE_DIRS := $(MOZ_LOCALE_DIRS) $(foreach project,$(MOZ_PROJECT_LIST),$(LOCALES_$(project)))
-
-MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),$(BOOTSTRAP_$(project)))
-# Using $(sort) here because it also removes duplicate entries.
-MOZ_MODULE_LIST := $(sort $(MOZ_MODULE_LIST))
-LOCALE_DIRS := $(sort $(LOCALE_DIRS))
-MOZCONFIG_MODULES := $(sort $(MOZCONFIG_MODULES))
+run_for_side_effects := \
+ $(shell $(TOPSRCDIR)/$(MOZCONFIG_LOADER) $(TOPSRCDIR) $(TOPSRCDIR)/.mozconfig.mk > $(TOPSRCDIR)/.mozconfig.out)
-# Change CVS flags if anonymous root is requested
-ifdef MOZ_CO_USE_MIRROR
- CVS_FLAGS := -d :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot
-endif
-
-# MOZ_CVS_FLAGS - Basic CVS flags
-ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
- CVS_FLAGS := $(CVS_FLAGS) -q -z 3
-else
- CVS_FLAGS := $(MOZ_CVS_FLAGS)
-endif
+include $(TOPSRCDIR)/.mozconfig.mk
ifdef MOZ_BUILD_PROJECTS
ifndef MOZ_OBJDIR
$(error When MOZ_BUILD_PROJECTS is set, you must set MOZ_OBJDIR)
endif
ifdef MOZ_CURRENT_PROJECT
OBJDIR = $(MOZ_OBJDIR)/$(MOZ_CURRENT_PROJECT)
@@ -575,368 +150,42 @@ ifdef MOZ_OBJDIR
MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
else
OBJDIR := $(TOPSRCDIR)
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS)
endif
endif # MOZ_BUILD_PROJECTS
-####################################
-# CVS defines for NSS
-#
-NSS_CO_MODULE = \
- mozilla/dbm \
- mozilla/security/nss \
- mozilla/security/coreconf \
- mozilla/security/dbm \
- $(NULL)
-
-NSS_CO_FLAGS := -P
-ifdef MOZ_CO_FLAGS
- NSS_CO_FLAGS := $(MOZ_CO_FLAGS)
-endif
-NSS_CO_FLAGS := $(NSS_CO_FLAGS) $(if $(NSS_CO_TAG),-r $(NSS_CO_TAG),-A)
-
-# Can only pull the tip or branch tags by date
-ifeq (,$(filter-out HEAD %BRANCH,$(NSS_CO_TAG)))
-CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSS_CO_MODULE)
-else
-CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
-endif
-
-####################################
-# CVS defines for NSPR
-#
-NSPR_CO_MODULE = mozilla/nsprpub
-NSPR_CO_FLAGS := -P
-ifdef MOZ_CO_FLAGS
- NSPR_CO_FLAGS := $(MOZ_CO_FLAGS)
-endif
-NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) $(if $(NSPR_CO_TAG),-r $(NSPR_CO_TAG),-A)
-
-# Can only pull the tip or branch tags by date
-ifeq (,$(filter-out HEAD %BRANCH,$(NSPR_CO_TAG)))
-CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSPR_CO_MODULE)
-else
-CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
-endif
-
-####################################
-# CVS defines for the C LDAP SDK
-#
-LDAPCSDK_CO_MODULE = mozilla/directory/c-sdk
-LDAPCSDK_CO_FLAGS := -P
-ifdef MOZ_CO_FLAGS
- LDAPCSDK_CO_FLAGS := $(MOZ_CO_FLAGS)
-endif
-LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) $(if $(LDAPCSDK_CO_TAG),-r $(LDAPCSDK_CO_TAG),-A)
-
-# Can only pull the tip or branch tags by date
-ifeq (,$(filter-out HEAD %BRANCH,$(LDAPCSDK_CO_TAG)))
-CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)
-else
-CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(LDAPCSDK_CO_MODULE)
-endif
-
-####################################
-# Error on obsolete variables.
-#
-
-ifdef MOZ_MAPINFO
-$(warning MOZ_MAPINFO is obsolete, use MOZ_CO_MODULE=mozilla/tools/codesighs instead.)
-MOZ_MODULE_LIST += mozilla/tools/codesighs
-endif
-ifdef MOZ_INTERNAL_LIBART_LGPL
-$(error MOZ_INTERNAL_LIBART_LGPL is obsolete, use MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl instead.)
-endif
-ifdef MOZ_PHOENIX
-$(warning MOZ_PHOENIX is obsolete.)
-MOZ_MODULE_LIST += $(MODULES_browser)
-# $(error MOZ_PHOENIX is obsolete, use MOZ_CO_PROJECT=browser and --enable-application=browser)
-endif
-ifdef MOZ_THUNDERBIRD
-$(warning MOZ_THUNDERBIRD is obsolete.)
-MOZ_MODULE_LIST += $(MODULES_mail)
-# $(error MOZ_THUNDERBIRD is obsolete, use MOZ_CO_PROJECT=mail and --enable-application=mail)
-endif
-
-###################################
-# Checkout main modules
-#
-
-# sort is used to remove duplicates.
-MOZ_MODULE_LIST := $(sort $(MOZ_MODULE_LIST))
-MOZ_MODULE_LIST_NS := $(sort $(MOZ_MODULE_LIST_NS))
-
-####################################
-# Suppress standalone modules if they're not needed.
-#
CONFIGURES := $(TOPSRCDIR)/configure
-ifeq (,$(filter mozilla/xpcom,$(MOZ_MODULE_LIST)))
- CVSCO_NSPR :=
-else
- CONFIGURES += $(TOPSRCDIR)/nsprpub/configure
-endif
-
-ifeq (,$(filter mozilla/security/manager,$(MOZ_MODULE_LIST)))
- CVSCO_NSS :=
-endif
-ifeq (,$(filter mozilla/directory/xpcom,$(MOZ_MODULE_LIST)))
- CVSCO_LDAPCSDK :=
-else
- CONFIGURES += $(TOPSRCDIR)/directory/c-sdk/configure
-endif
-
-MODULES_CO_FLAGS := -P
-ifdef MOZ_CO_FLAGS
- MODULES_CO_FLAGS := $(MOZ_CO_FLAGS)
-endif
-MODULES_CO_FLAGS := $(MODULES_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG),-A)
-
-CVSCO_MODULES_NS = $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) -l $(MOZ_MODULE_LIST_NS)
-
-ifeq (,$(strip $(MOZ_MODULE_LIST)))
-FASTUPDATE_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
-CHECKOUT_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
-else
-FASTUPDATE_MODULES := fast_update $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MOZ_MODULE_LIST)
-CHECKOUT_MODULES := cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MOZ_MODULE_LIST);
-endif
-ifeq (,$(MOZ_MODULE_LIST_NS))
-FASTUPDATE_MODULES_NS := true
-CHECKOUT_MODULES_NS := true
-else
-FASTUPDATE_MODULES_NS := fast_update $(CVSCO_MODULES_NS)
-CHECKOUT_MODULES_NS := cvs_co $(CVSCO_MODULES_NS)
-endif
-
-###################################
-# CVS defines for locales
-#
-
-LOCALES_CO_FLAGS := -P
-ifdef MOZ_CO_FLAGS
- LOCALES_CO_FLAGS := $(MOZ_CO_FLAGS)
-endif
-LOCALES_CO_FLAGS := $(LOCALES_CO_FLAGS) $(if $(LOCALES_CO_TAG),-r $(LOCALES_CO_TAG),-A)
-
-ifndef MOZ_CO_LOCALES
-FASTUPDATE_LOCALES := true
-CHECKOUT_LOCALES := true
-else
-
-override MOZ_CO_LOCALES := $(subst $(comma), ,$(MOZ_CO_LOCALES))
-
-ifeq (all,$(MOZ_CO_LOCALES))
-MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),mozilla/$(project)/locales/all-locales)
-
-LOCALE_CO_DIRS := $(sort $(foreach project,$(MOZ_PROJECT_LIST),$(foreach locale,$(shell cat mozilla/$(project)/locales/all-locales),$(foreach dir,$(LOCALES_$(project)),l10n/$(locale)/$(dir)))))
-else # MOZ_CO_LOCALES != all
-LOCALE_CO_DIRS = $(sort $(foreach locale,$(MOZ_CO_LOCALES),$(foreach dir,$(LOCALE_DIRS),l10n/$(locale)/$(dir))))
-endif
-
-CVSCO_LOCALES := $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $(LOCALES_CO_FLAGS) $(CVS_CO_LOCALES_DATE_FLAGS) $(LOCALE_CO_DIRS)
-
-FASTUPDATE_LOCALES := fast_update $(CVSCO_LOCALES)
-CHECKOUT_LOCALES := cvs_co $(CVSCO_LOCALES)
-endif #MOZ_CO_LOCALES
+CONFIGURES += $(TOPSRCDIR)/nsprpub/configure
#######################################################################
# Rules
#
+# The default rule is build
+build::
+
# Print out any options loaded from mozconfig.
-all build checkout clean depend distclean export libs install realclean::
+all build clean depend distclean export libs install realclean::
@if test -f .mozconfig.out; then \
cat .mozconfig.out; \
rm -f .mozconfig.out; \
else true; \
fi
-ifdef _IS_FIRST_CHECKOUT
-all:: checkout build
-else
-all:: checkout alldep
-endif
-
# Windows equivalents
-pull_all: checkout
build_all: build
build_all_dep: alldep
build_all_depend: alldep
clobber clobber_all: clean
-pull_and_build_all: checkout alldep
# Do everything from scratch
-everything: checkout clean build
-
-####################################
-# CVS checkout
-#
-checkout::
-# @: Backup the last checkout log.
- @if test -f $(CVSCO_LOGFILE) ; then \
- mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
- else true; \
- fi
-ifdef RUN_AUTOCONF_LOCALLY
- @echo "Removing local configures" ; \
- cd $(ROOTDIR) && \
- $(RM) -f $(CONFIGURES)
-endif
- @echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
- @echo '$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
- cd $(ROOTDIR) && \
- $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)
- @cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_checkout
-
-# Start the checkout. Split the output to the tty and a log file.
-
-real_checkout:
- @set -e; \
- cvs_co() { set -e; echo "$$@" ; \
- "$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
- cvs_co $(CVSCO_NSPR); \
- cvs_co $(CVSCO_NSS); \
- cvs_co $(CVSCO_LDAPCSDK); \
- $(CHECKOUT_MODULES_NS); \
- $(CHECKOUT_MODULES) \
- $(CHECKOUT_LOCALES);
- @echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE)
-# update the NSS checkout timestamp, if we checked PSM out
- @if test -d $(TOPSRCDIR)/security/manager -a \
- `egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \
- touch $(TOPSRCDIR)/security/manager/.nss.checkout; \
- fi
-ifdef RUN_AUTOCONF_LOCALLY
- cd $(ROOTDIR) && \
- $(RM) -f $(CONFIGURES)
-endif
-# @: Check the log for conflicts. ;
- @conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
- if test "$$conflicts" ; then \
- echo "$(MAKE): *** Conflicts during checkout." ;\
- echo "$$conflicts" ;\
- echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
- false; \
- else true; \
- fi
-
-fast-update:
-# @: Backup the last checkout log.
- @if test -f $(CVSCO_LOGFILE) ; then \
- mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
- else true; \
- fi
-ifdef RUN_AUTOCONF_LOCALLY
- @echo "Removing local configures" ; \
- cd $(ROOTDIR) && \
- $(RM) -f $(CONFIGURES)
-endif
- @echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
- @echo '$(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
- cd $(ROOTDIR) && \
- $(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)
- @cd $(TOPSRCDIR) && \
- $(MAKE) -f client.mk real_fast-update
-
-# Start the update. Split the output to the tty and a log file.
-real_fast-update:
- @set -e; \
- fast_update() { set -e; config/cvsco-fast-update.pl $$@ 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
- cvs_co() { set -e; echo "$$@" ; \
- "$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
- fast_update $(CVSCO_NSPR); \
- cd $(ROOTDIR); \
- cvs_co $(CVSCO_NSS); \
- cd mozilla; \
- fast_update $(CVSCO_LDAPCSDK); \
- $(FASTUPDATE_MODULES); \
- $(FASTUPDATE_MODULES_NS); \
- $(FASTUPDATE_LOCALES);
- @echo "fast_update finish: "`date` | tee -a $(CVSCO_LOGFILE)
-# update the NSS checkout timestamp
- @if test `egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \
- touch $(TOPSRCDIR)/security/manager/.nss.checkout; \
- fi
-ifdef RUN_AUTOCONF_LOCALLY
- cd $(ROOTDIR) && \
- $(RM) -f $(CONFIGURES)
-endif
-# @: Check the log for conflicts. ;
- @conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
- if test "$$conflicts" ; then \
- echo "$(MAKE): *** Conflicts during fast-update." ;\
- echo "$$conflicts" ;\
- echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
- false; \
- else true; \
- fi
-
-CVSCO_LOGFILE_L10N := $(ROOTDIR)/cvsco-l10n.log
-CVSCO_LOGFILE_L10N := $(shell echo $(CVSCO_LOGFILE_L10N) | sed s%//%/%)
-
-l10n-checkout:
-# @: Backup the last checkout log.
- @if test -f $(CVSCO_LOGFILE_L10N) ; then \
- mv $(CVSCO_LOGFILE_L10N) $(CVSCO_LOGFILE_L10N).old; \
- else true; \
- fi
- @echo "checkout start: "`date` | tee $(CVSCO_LOGFILE_L10N)
- @echo '$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
- cd $(ROOTDIR) && \
- $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)
- @cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_l10n-checkout
-
-EN_US_CO_DIRS := $(sort $(foreach dir,$(LOCALE_DIRS),mozilla/$(dir)/locales)) \
- $(foreach mod,$(MOZ_PROJECT_LIST),mozilla/$(mod)/config) \
- mozilla/client.mk \
- $(MOZCONFIG_MODULES) \
- mozilla/configure \
- mozilla/configure.in \
- mozilla/allmakefiles.sh \
- mozilla/build \
- mozilla/config \
- $(NULL)
-
-EN_US_CO_FILES_NS := \
- mozilla/toolkit/mozapps/installer \
- $(NULL)
-
-# Start the checkout. Split the output to the tty and a log file.
-real_l10n-checkout:
- @set -e; \
- cvs_co() { set -e; echo "$$@" ; \
- "$$@" 2>&1 | tee -a $(CVSCO_LOGFILE_L10N); }; \
- cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(EN_US_CO_DIRS); \
- cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) -l $(EN_US_CO_FILES_NS); \
- cvs_co $(CVSCO_LOCALES)
- @echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE_L10N)
-# @: Check the log for conflicts. ;
- @conflicts=`egrep "^C " $(CVSCO_LOGFILE_L10N)` ;\
- if test "$$conflicts" ; then \
- echo "$(MAKE): *** Conflicts during checkout." ;\
- echo "$$conflicts" ;\
- echo "$(MAKE): Refer to $(CVSCO_LOGFILE_L10N) for full log." ;\
- false; \
- else true; \
- fi
-
-#####################################################
-# First Checkout
-
-ifdef _IS_FIRST_CHECKOUT
-# First time, do build target in a new process to pick up new files.
-build::
- $(MAKE) -f $(TOPSRCDIR)/client.mk build
-else
-
-#####################################################
-# After First Checkout
+everything: clean build
#####################################################
# Build date unification
ifdef MOZ_UNIFY_BDATE
ifndef MOZ_BUILD_DATE
ifdef MOZ_BUILD_PROJECTS
MOZ_BUILD_DATE = $(shell $(PERL) -I$(TOPSRCDIR)/config $(TOPSRCDIR)/config/bdate.pl)
@@ -997,20 +246,16 @@ EXTRA_CONFIG_DEPS := \
$(TOPSRCDIR)/configure: $(TOPSRCDIR)/configure.in $(EXTRA_CONFIG_DEPS)
@echo Generating $@ using autoconf
cd $(TOPSRCDIR); $(AUTOCONF)
$(TOPSRCDIR)/nsprpub/configure: $(TOPSRCDIR)/nsprpub/configure.in $(EXTRA_CONFIG_DEPS)
@echo Generating $@ using autoconf
cd $(TOPSRCDIR)/nsprpub; $(AUTOCONF)
-
-$(TOPSRCDIR)/directory/c-sdk/configure: $(TOPSRCDIR)/directory/c-sdk/configure.in $(EXTRA_CONFIG_DEPS)
- @echo Generating $@ using autoconf
- cd $(TOPSRCDIR)/directory/c-sdk; $(AUTOCONF)
endif
CONFIG_STATUS_DEPS := \
$(TOPSRCDIR)/configure \
$(TOPSRCDIR)/allmakefiles.sh \
$(TOPSRCDIR)/.mozconfig.mk \
$(wildcard $(TOPSRCDIR)/nsprpub/configure) \
$(wildcard $(TOPSRCDIR)/directory/c-sdk/configure) \
@@ -1143,15 +388,12 @@ cleansrcdir:
else \
echo "Removing object files from srcdir..."; \
rm -fr `find . -type d \( -name .deps -print -o -name CVS \
-o -exec test ! -d {}/CVS \; \) -prune \
-o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
build/autoconf/clean-config.sh; \
fi;
-# (! IS_FIRST_CHECKOUT)
-endif
-
echo_objdir:
@echo $(OBJDIR)
.PHONY: checkout real_checkout depend build export libs alldep install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything configure preflight_all preflight postflight postflight_all
new file mode 100644
--- /dev/null
+++ b/client.py
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+
+NSPR_CO_TAG = 'NSPRPUB_PRE_4_2_CLIENT_BRANCH'
+NSS_CO_TAG = 'NSS_3_11_7_BETA1'
+
+NSPR_DIRS = ('nsprpub',)
+NSS_DIRS = ('dbm',
+ 'security/nss',
+ 'security/coreconf',
+ 'security/dbm')
+
+import os
+import sys
+from optparse import OptionParser
+
+topsrcdir = os.path.dirname(__file__)
+if topsrcdir == '':
+ topsrcdir = '.'
+
+try:
+ from subprocess import check_call
+except ImportError:
+ import subprocess
+ def check_call(*popenargs, **kwargs):
+ retcode = subprocess.call(*popenargs, **kwargs)
+ if retcode:
+ cmd = kwargs.get("args")
+ if cmd is None:
+ cmd = popenargs[0]
+ raise Exception("Command '%s' returned non-zero exit status %i" % (cmd, retcode))
+
+def do_hg_checkout(dir, remote, hgroot, hg):
+ fulldir = os.path.join(topsrcdir, dir)
+ repository = '%s/%s' % (hgroot, remote)
+ check_call([hg, 'clone', repository, fulldir])
+
+def do_hg_pull(dir, remote, hgroot, hg):
+ fulldir = os.path.join(topsrcdir, dir)
+ repository = '%s/%s' % (hgroot, remote)
+ cmd = [hg, 'pull', '-R', fulldir, repository]
+ check_call(cmd)
+
+def do_cvs_checkout(modules, tag, cvsroot, cvs):
+ """Check out a CVS directory.
+ modules is a list of directories to check out, e.g. ['nsprpub']
+ """
+ for module in modules:
+ (parent, leaf) = os.path.split(module)
+ check_call([cvs, '-d', cvsroot,
+ 'checkout', '-P', '-r', tag, '-d', leaf,
+ 'mozilla/%s' % module],
+ cwd=os.path.join(topsrcdir, parent))
+
+o = OptionParser(usage="client.py [options] {checkout|update}")
+o.add_option("-m", "--mozilla-repo", dest="mozilla_repo",
+ default="mozilla-central",
+ help="Specify the Mozilla repository to pull from, default 'mozilla-central'")
+o.add_option("-t", "--tamarin-repo", dest="tamarin_repo",
+ default="tamarin-central",
+ help="Specify the Tamarin repository to pull from, default 'tamarin-central'")
+o.add_option("--hg", dest="hg", default=os.environ.get('HG', 'hg'),
+ help="The location of the hg binary")
+o.add_option("--cvs", dest="cvs", default=os.environ.get('CVS', 'cvs'),
+ help="The location of the cvs binary")
+o.add_option("--hgroot", dest="hgroot", default="ssh://hg.mozilla.org",
+ help="The hg root (default: ssh://hg.mozilla.org)")
+o.add_option("--cvsroot", dest="cvsroot",
+ default=os.environ.get('CVSROOT', ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot'),
+ help="The CVSROOT (default: :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot")
+
+try:
+ (options, (action,)) = o.parse_args()
+except ValueError:
+ o.print_help()
+ sys.exit(2)
+
+if action in ('checkout', 'co'):
+ do_cvs_checkout(NSPR_DIRS, NSPR_CO_TAG, options.cvsroot, options.cvs)
+ do_cvs_checkout(NSS_DIRS, NSS_CO_TAG, options.cvsroot, options.cvs)
+ do_hg_checkout('js/tamarin', options.tamarin_repo, options.hgroot, options.hg)
+elif action in ('update', 'up', 'pull'):
+ do_cvs_checkout(NSPR_DIRS, NSPR_CO_TAG, options.cvsroot, options.cvs)
+ do_cvs_checkout(NSS_DIRS, NSS_CO_TAG, options.cvsroot, options.cvs)
+ do_hg_pull('js/tamarin', options.tamarin_repo, options.hgroot, options.hg)
+ do_hg_pull('.', options.mozilla_repo, options.hgroot, options.hg)
+else:
+ o.print_help()
+ sys.exit(2)