summaryrefslogtreecommitdiff
path: root/src/mozclient.mk.in
diff options
context:
space:
mode:
authorFabien Tassin <fta@sofaraway.org>2008-06-02 14:02:07 +0200
committerFabien Tassin <fta@sofaraway.org>2008-06-02 14:02:07 +0200
commit68c81fa9645d3cde57e775dae4ee28c99476ea1f (patch)
tree3d5a72c74271439f5c5a2097910cacb8c2585b2a /src/mozclient.mk.in
parent3df66ad3d14674a57c881e1c7b696388276676e8 (diff)
* [mozclient] Full refactoring of mozclient. It is now written in object-oriented Perl.
The makefile version was getting difficult to extend and to maintain. We now have a base class and a set of VCS classes inheriting for it. - add src/mozclient.pl.in - add src/mozclient/${projects}.conf - move src/patches to src/mozclient/patches - update src/${projects}.mk.in - update src/Makefile - update README * [mozclient] nspr and nss are now using a dynamic tag. They used to fetch HEAD which made them tricky to distribute. Now, we take NSPR_CO_TAG and NSS_CO_TAG from mozilla/client.mk (from HEAD or from a tag) and we assign a version like nss-3.12.0.3+1.9~cvs without trailling cvs date (as it's a taggued nss), or nss-3.12.0.3+1.9 when using a taggued mozilla/client.mk - update src/mozclient.pl.in - update src/mozclient/{nspr,nss}.conf
Diffstat (limited to 'src/mozclient.mk.in')
-rw-r--r--src/mozclient.mk.in283
1 files changed, 17 insertions, 266 deletions
diff --git a/src/mozclient.mk.in b/src/mozclient.mk.in
index b8686f1..2e7eef0 100644
--- a/src/mozclient.mk.in
+++ b/src/mozclient.mk.in
@@ -22,284 +22,35 @@
# Don't include this file directly, include one of the project.mk
# file instead, which will include this file for you.
-# The caller could specify the following parameters:
-# DEBIAN_DATE in the form YYYYMMDDtHHMM
-# ex: DEBIAN_DATE=20070911t1711
-# or
-# DEBIAN_TAG in the form CVS_TAG=debian_version
-# ex: DEBIAN_TAG=FIREFOX_3_0b2_RC1=3.0~b2~rc1
-# Optionally:
-# DEBIAN_KEEP_VCS to preserve the VCS files (*/CVS, .hg, ...)
-# ex: DEBIAN_KEEP_VCS=1
+MOZDEVSCRIPT_DIR = .
-# The following targets are available to the caller:
-# - get-orig-source
-# Build a tarball according to parameters from project.mk
-# and optionally using either DEBIAN_DATE or DEBIAN_TAG
-# - list-tags
-# List all the registered CVS tags from upstream server
-
-# project.mk contains the following parameters
-# - MOZCLIENT_TARGET (mandatory): a label, usually 'project-orig'
-# - MOZCLIENT_APPNAME (mandatory): package name
-# - MOZCLIENT_MODULES (optional): list of modules/directories for direct checkout
-# - MOZCLIENT_VCS (optional): VCS (hg, git, cvs, svn..). (default: cvs)
-# - MOZCLIENT_PROJECT (mandatory): VCS project name. If $(NULL), then
-#  $(MOZCLIENT_MODULES) becomes mandatory
-# - MOZCLIENT_BRANCH (optional): VCS branch name
-# - MOZCLIENT_POSTCOCMD (optional): a shell command that is executed after checkout
-# - MOZCLIENT_FILE (mandatory): source file containing the version
-# - MOZCLIENT_GETVERSION (mandatory): how to transform the version
-# - MOZCLIENT_URL (mandatory): an URL (usually on Bonsai) listing commits
-# - MOZCLIENT_GETDATE (mandatory): get the last commit date for the project
-# - MOZCLIENT_EMBEDDED (optional): create an embedded tarball (default: 0)
-# - MOZCLIENT_WANTMOZDIR (optional): should the root dir be 'mozilla'?
-# (default: 0 unless MOZCLIENT_EMBEDDED=1)
-# - MOZCLIENT_WANTPATCH (optional): should we use the patch system? (default: 0)
-
-# Example with firefox-3.0:
-#
-# - in debian/control, add mozilla-devscripts to Build-Depends
-# - in debian/rules, add:
-# include /usr/share/mozilla-devscripts/firefox-3.0.mk
-#
-# That's it. You've gained get-orig-source.
-#
-# You can now call it:
-# - debian/rules get-orig-source
-# => firefox-3.0_3.0~b2~cvs20071120t1456+nobinonly.orig.tar.gz
-#
-# - debian/rules get-orig-source DEBIAN_DATE=20070914t1713
-# => firefox-3.0_3.0~a8~cvs20070914t1713+nobinonly.orig.tar.gz
-#
-# - debian/rules get-orig-source DEBIAN_TAG=FIREFOX_3_0b2_RC1=3.0~b2~rc1
-# => firefox-3.0_3.0~b2~rc1+nobinonly.orig.tar.gz
-
-# Notes:
-# - the script 'remove.binonly.sh' is applied to all projects, in order
-# to remove binary-only files before packing. Traces of the cleaning
-# are preserved inside that resulting tarball in REMOVED+nobinonly.txt.
-# If nothing has been removed, the log and the "+nobinonly" signature
-# are both dropped.
-
-MOZ_CLIENT = mozilla/client.mk
-MOZCLIENT_CVS_LOC = :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
-MOZCLIENT_HG_LOC = http://hg.mozilla.org/
-
-MOZCLIENT_STAMP ?= stamped
-MOZCLIENT_TMP := mozclient-tmp
-
-MOZCLIENT_VCS ?= cvs
-
-MOZCLIENT_PATCHES := ../patches
-MOZCLIENT_EXCLUDE_SCRIPT := ../../remove.binonly.sh
-NOBINONLY := nobinonly
-
-TAR_EXCLUDE := $(NULL)
-ifeq (,$(DEBIAN_KEEP_VCS))
-ifeq ($(MOZCLIENT_VCS),cvs)
-TAR_EXCLUDE := --exclude=CVS --exclude=.cvsignore
-else
-ifeq ($(MOZCLIENT_VCS),hg)
-TAR_EXCLUDE := --exclude=.hg
-endif
+ifeq (.,$(MOZDEVSCRIPT_DIR))
+ EXT=.in
endif
-endif
-
-DATE_FILTER := sed -e 's,\(....\)\(..\)\(..\)[rt]\(..\)\(..\),\1/\2/\3 \4:\5 PST,'
-REVISION_FILTER := sed -e 's,^\([0-9]*\).*,\1,'
ifdef DEBIAN_TAG
-DEBIAN_DATE = $(NULL)
-DEBIAN_LTAG = $(shell echo $(DEBIAN_TAG) | sed -e 's/=.*//')
-DEBIAN_DTAG = $(shell echo $(DEBIAN_TAG) | sed -e 's/.*=//')
-DEBIAN_CO_TAG = -r $(DEBIAN_LTAG)
-DEBIAN_MOZ_CO_TAG = MOZ_CO_TAG=$(DEBIAN_LTAG)
-else
-DEBIAN_MOZ_CO_TAG = $(NULL)
-ifdef DEBIAN_DATE
-DEBIAN_CO_DATE = $(shell echo "-D \"$(DEBIAN_DATE)\"" | $(DATE_FILTER))
-endif
-ifdef DEBIAN_BRANCH
-DEBIAN_CO_TAG = -r $(DEBIAN_BRANCH)
-endif
-endif
-
-############################################################################
-
-mozclient-deps:
- @if [ ! -f /usr/bin/cvs ] ; then echo "**ERROR** Depends on missing cvs. Abort"; exit 1; fi
- @if [ ! -f /usr/bin/hg ] ; then echo "**ERROR** Depends on missing mercurial. Abort"; exit 1; fi
- @if [ ! -f /usr/bin/quilt ] ; then echo "**ERROR** Depends on missing quilt. Abort"; exit 1; fi
- @if [ ! -f /usr/bin/wget ] ; then echo "**ERROR** Depends on missing wget. Abort"; exit 1; fi
-
-mozclient-dir:
- rm -rf $(MOZCLIENT_TMP)
- mkdir $(MOZCLIENT_TMP)
-
-# Get the client
-ifneq (,$(MOZCLIENT_BRANCH))
-$(MOZ_CLIENT): MOZCLIENT_TBRANCH = -r $(MOZCLIENT_BRANCH)
-else
-$(MOZ_CLIENT): MOZCLIENT_TBRANCH = $(NULL)
+ ARGS += -t $(DEBIAN_TAG)
endif
-$(MOZ_CLIENT): mozclient-deps mozclient-dir
-ifeq ($(MOZCLIENT_VCS),cvs)
- cd $(MOZCLIENT_TMP) && cvs -d $(MOZCLIENT_CVS_LOC) co $(MOZCLIENT_TBRANCH) $(DEBIAN_CO_DATE) $(DEBIAN_CO_TAG) $@
-endif
-
-mozclient-client: $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP)
-# List all tags
-mozclient-status: list-tags
-list-tags: mozclient-deps mozclient-dir
-ifeq ($(MOZCLIENT_VCS),cvs)
- cd $(MOZCLIENT_TMP) && cvs -d $(MOZCLIENT_CVS_LOC) co $(MOZCLIENT_FILE)
- cd $(MOZCLIENT_TMP)/mozilla && cvs status -v $(firstword $(subst mozilla/,,$(MOZCLIENT_FILE)))
-else
- $(error '$@' not supported for '$(MOZCLIENT_VCS)' yet)
-endif
- rm -rf $(MOZCLIENT_TMP)
-
-# Get version, and just that
-mozclient-version: mozclient-deps mozclient-dir
- @cd $(MOZCLIENT_TMP) && cvs -d $(MOZCLIENT_CVS_LOC) co $(MOZCLIENT_FILE)
- @cd $(MOZCLIENT_TMP) && echo -n VERSION= && $(MOZCLIENT_GETVERSION)
- @rm -rf $(MOZCLIENT_TMP)
-
-# Patch
-# - don't patch when a branch name is specified
-mozclient-patch: $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP)
-
-$(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP): $(MOZ_CLIENT)
-ifneq (,$(MOZCLIENT_WANTPATCH))
-ifeq (,$(MOZCLIENT_BRANCH))
- if [ ! -L $(MOZCLIENT_TMP)/patches ] ; then ln -s $(MOZCLIENT_PATCHES) $(MOZCLIENT_TMP)/patches ; fi
- cd $(MOZCLIENT_TMP) && quilt --quiltrc /dev/null push -a || test $$? = 2
-endif
-endif
- touch $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP)
-
-# Unpatch
-mozclient-unpatch:
-ifeq (,$(MOZCLIENT_BRANCH))
- cd $(MOZCLIENT_TMP) && quilt --quiltrc /dev/null pop -a -R || test $$? = 2
-endif
- rm -rf $(MOZCLIENT_TMP)/.pc $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP) $(MOZCLIENT_TMP)/patches
-
-# Clean
-mozclient-clean:
- rm -rf $(MOZCLIENT_TMP)
-
-# Checkout using either a TAG, a date or nothing (last commit date)
-# Use mozclient.mk if $(MOZCLIENT_PROJECT) is specified, otherwise, do a direct cvs checkout
-# using $(MOZCLIENT_MODULES)
-ifneq (,$(MOZCLIENT_PROJECT))
-ifneq (,$(DEBIAN_TAG))
-mozclient-checkout: MOZCLIENT_DATE = $(NULL)
-else
-ifeq (,$(DEBIAN_DATE))
-mozclient-checkout: DEBIAN_DATE = $(shell $(MOZCLIENT_GETDATE))
-endif
-ifeq ($(MOZCLIENT_VCS),cvs)
-mozclient-checkout: MOZCLIENT_DATE = MOZ_CO_DATE="$(shell echo $(DEBIAN_DATE) | $(DATE_FILTER))"
-else
-ifeq ($(MOZCLIENT_VCS),hg)
-mozclient-checkout: MOZCLIENT_DATE = -r $(shell echo $(DEBIAN_DATE) | $(REVISION_FILTER))
-else
-mozclient-checkout:
- $(error '$@' not supported for '$(MOZCLIENT_VCS)' yet)
-endif
-endif
-endif
-mozclient-checkout:
- @if [ "Z$(DEBIAN_TAG)" = "Z" ] && [ "Z$(DEBIAN_DATE)" = "Z" ] ; then echo "*Error* DEBIAN_DATE is empty, MOZCLIENT_GETDATE failed ?" ; exit 1 ; fi
-ifeq ($(MOZCLIENT_VCS),cvs)
- cd $(MOZCLIENT_TMP) && make -f $(MOZ_CLIENT) checkout MOZ_CO_PROJECT=$(MOZCLIENT_PROJECT) $(MOZCLIENT_DATE) $(DEBIAN_MOZ_CO_TAG)
-else
-ifeq ($(MOZCLIENT_VCS),hg)
- cd $(MOZCLIENT_TMP) && hg clone $(MOZCLIENT_DATE) $(MOZCLIENT_HG_LOC)$(MOZCLIENT_PROJECT)/ mozilla
-else
- $(error '$@' not supported for '$(MOZCLIENT_VCS)' yet)
-endif
-endif
- echo $(DEBIAN_DATE) > $(MOZCLIENT_TMP)/.date
-else
-ifneq (,$(DEBIAN_TAG))
-mozclient-checkout: MOZCLIENT_DATE = $(NULL)
-else
-ifeq (,$(DEBIAN_DATE))
-mozclient-checkout: DEBIAN_DATE = $(shell $(MOZCLIENT_GETDATE))
-endif
-ifeq ($(MOZCLIENT_VCS),cvs)
-mozclient-checkout: MOZCLIENT_DATE = -D "$(shell echo $(DEBIAN_DATE) | $(DATE_FILTER))"
-else
-ifeq ($(MOZCLIENT_VCS),hg)
-mozclient-checkout: MOZCLIENT_DATE = -r $(shell echo $(DEBIAN_DATE) | $(REVISION_FILTER))
-else
-mozclient-checkout:
- $(error '$@' not supported for '$(MOZCLIENT_VCS)' yet)
-endif
-endif
-endif
-mozclient-checkout:
- @if [ "Z$(DEBIAN_TAG)" = "Z" ] && [ "Z$(DEBIAN_DATE)" = "Z" ] ; then echo "*Error* DEBIAN_DATE is empty, MOZCLIENT_GETDATE failed ?" ; exit 1 ; fi
-ifeq ($(MOZCLIENT_VCS),cvs)
- cd $(MOZCLIENT_TMP) && cvs -d $(MOZCLIENT_CVS_LOC) -q -z 3 co -P -A $(MOZCLIENT_DATE) $(DEBIAN_CO_TAG) $(MOZCLIENT_MODULES)
-else
-ifeq ($(MOZCLIENT_VCS),hg)
- cd $(MOZCLIENT_TMP) && hg clone $(MOZCLIENT_DATE) $(foreach module,$(MOZCLIENT_MODULES),$(MOZCLIENT_HG_LOC)$(MOZCLIENT_PROJECT)/$(module)/) mozilla
-else
- $(error '$@' not supported for '$(MOZCLIENT_VCS)' yet)
-endif
-endif
- echo $(DEBIAN_DATE) > $(MOZCLIENT_TMP)/.date
-endif
-ifneq (,$(MOZCLIENT_POSTCOCMD))
- cd $(MOZCLIENT_TMP) && $(MOZCLIENT_POSTCOCMD)
+ifdef DEBIAN_DATE
+ ARGS += -d $(DEBIAN_DATE)
endif
-# Remove bin-only files using the remove.binonly.sh script.
-# Keep a log in REMOVED+nobinonly.txt
-mozclient-remove-bin:
- cd $(MOZCLIENT_TMP)/mozilla && sh $(MOZCLIENT_EXCLUDE_SCRIPT) > REMOVED+$(NOBINONLY).txt 2>&1
- if [ ! -s $(MOZCLIENT_TMP)/mozilla/REMOVED+$(NOBINONLY).txt ] ; then rm $(MOZCLIENT_TMP)/mozilla/REMOVED+$(NOBINONLY).txt ; fi
-
-# Pack
-# - only use the +nobinonly suffix is something has been deleted
-# - for embedded tarballs (bzipped), use MOZCLIENT_EMBEDDED=1
-# - to preserve the mozilla root dir, use MOZCLIENT_WANTMOZDIR=1
-ifneq (,$(DEBIAN_TAG))
-mozclient-pack: MOZCLIENT_TVERSION = $(DEBIAN_DTAG)
-else
-mozclient-pack: MOZCLIENT_TVERSION = $(shell cd $(MOZCLIENT_TMP) && $(MOZCLIENT_GETVERSION))~$(MOZCLIENT_VCS)$(shell cat $(MOZCLIENT_TMP)/.date)
-endif
-mozclient-pack: MOZCLIENT_VERSION = $(MOZCLIENT_TVERSION)$(shell test -f $(MOZCLIENT_TMP)/mozilla/REMOVED+$(NOBINONLY).txt && echo "+$(NOBINONLY)")
-mozclient-pack:
- rm -rf $(MOZCLIENT_TMP)/$(MOZCLIENT_APPNAME)-$(MOZCLIENT_VERSION)
-ifneq (,$(findstring 1,$(MOZCLIENT_WANTMOZDIR)$(MOZCLIENT_EMBEDDED)))
- mkdir $(MOZCLIENT_TMP)/$(MOZCLIENT_APPNAME)-$(MOZCLIENT_VERSION)
-endif
-ifeq (1,$(MOZCLIENT_EMBEDDED))
- cd $(MOZCLIENT_TMP) && tar jcf $(MOZCLIENT_APPNAME)-$(MOZCLIENT_VERSION)/$(MOZCLIENT_PROJECT)-$(MOZCLIENT_TVERSION)-source.tar.bz2 $(TAR_EXCLUDE) mozilla
-else
- mv $(MOZCLIENT_TMP)/mozilla $(MOZCLIENT_TMP)/$(MOZCLIENT_APPNAME)-$(MOZCLIENT_VERSION)
+ifdef DEBIAN_BRANCH
+ ARGS += -b $(DEBIAN_BRANCH)
endif
- rm -f $(MOZCLIENT_APPNAME)_$(MOZCLIENT_VERSION).orig.tar.gz
- cd $(MOZCLIENT_TMP) && tar zcf ../$(MOZCLIENT_APPNAME)_$(MOZCLIENT_VERSION).orig.tar.gz $(TAR_EXCLUDE) $(MOZCLIENT_APPNAME)-$(MOZCLIENT_VERSION)
- rm -rf $(MOZCLIENT_TMP)
- -ls -l $(MOZCLIENT_APPNAME)_$(MOZCLIENT_VERSION).orig.tar.gz
-# The real target
-ifneq (,$(MOZCLIENT_PROJECT))
-$(MOZCLIENT_TARGET): $(MOZ_CLIENT) $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP) mozclient-checkout mozclient-remove-bin mozclient-pack
-else
-$(MOZCLIENT_TARGET): mozclient-deps mozclient-dir mozclient-checkout mozclient-remove-bin mozclient-pack
+ifdef DEBIAN_KEEP_VCS
+ ARGS += -p
endif
-get-orig-source: $(MOZCLIENT_TARGET)
+list-tags:
+ perl $(MOZDEVSCRIPT_DIR)/mozclient.pl$(EXT) -l $(MOZCLIENT_PROJECTNAME)
-.PHONY: mozclient-deps mozclient-dir mozclient-patch mozclient-unpatch mozclient-checkout mozclient-remove-bin mozclient-pack $(MOZCLIENT_TARGET) get-orig-source
+get-orig-source:
+ perl $(MOZDEVSCRIPT_DIR)/mozclient.pl$(EXT) $(ARGS) $(MOZCLIENT_PROJECTNAME)
-.NOTPARALLEL:
+mozclient-version:
+ perl $(MOZDEVSCRIPT_DIR)/mozclient.pl$(EXT) -V $(MOZCLIENT_PROJECTNAME)
+.PHONY: get-orig-source list-tags mozclient-version