diff options
Diffstat (limited to 'src/mozclient.mk.in')
-rw-r--r-- | src/mozclient.mk.in | 283 |
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 |