summaryrefslogtreecommitdiff
path: root/src/mozclient.mk.in
diff options
context:
space:
mode:
authorFabien Tassin <fta@sofaraway.org>2007-12-13 18:18:54 +0100
committerFabien Tassin <fta@sofaraway.org>2007-12-13 18:18:54 +0100
commit892f8c8a7472d5aeb3302ebe0ae6169edea9ecc6 (patch)
treedbe73076eff4e9604f59db0a965ba9684afb5e90 /src/mozclient.mk.in
parent67ad59d8384cd47b034b6bb420ffa152e73912a3 (diff)
* First release after a full rewrite + packaging
Diffstat (limited to 'src/mozclient.mk.in')
-rw-r--r--src/mozclient.mk.in204
1 files changed, 204 insertions, 0 deletions
diff --git a/src/mozclient.mk.in b/src/mozclient.mk.in
new file mode 100644
index 0000000..f81fc1e
--- /dev/null
+++ b/src/mozclient.mk.in
@@ -0,0 +1,204 @@
+# -*- mode: makefile; coding: utf-8 -*-
+
+# Copyright (c) 2007 Fabien Tassin <fta@sofaraway.org>
+# Description: The core of mozclient
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+
+#####################################################################
+
+# 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
+
+# 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
+# - mozclient-status
+# 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_PROJECT (mandatory): CVS project name
+# - MOZCLIENT_BRANCH (optional): CVS branch name
+# - 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)
+
+# Example with firefox-3.0:
+#
+# - in debian/control, add mozclient to Build-Depends
+# - in debian/rules, add:
+# include /usr/share/mozclient/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_STAMP ?= stamped
+MOZCLIENT_TMP := mozclient-tmp
+
+MOZCLIENT_EXCLUDE_SCRIPT := remove.binonly.sh
+NOBINONLY := nobinonly
+
+TAR_EXCLUDE := --exclude=CVS --exclude=.cvsignore
+
+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)\"" | sed -e 's/[rt]/ /')
+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/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
+
+# Get the client
+ifneq (,$(MOZCLIENT_BRANCH))
+$(MOZ_CLIENT): MOZCLIENT_TBRANCH = -r $(MOZCLIENT_BRANCH)
+else
+$(MOZ_CLIENT): MOZCLIENT_TBRANCH = $(NULL)
+endif
+$(MOZ_CLIENT): mozclient-deps
+ rm -rf $(MOZCLIENT_TMP)
+ mkdir $(MOZCLIENT_TMP)
+ cd $(MOZCLIENT_TMP) && cvs -d $(MOZCLIENT_CVS_LOC) co $(MOZCLIENT_TBRANCH) $(DEBIAN_CO_DATE) $(DEBIAN_CO_TAG) $@
+
+mozclient-client: $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP)
+
+# List all tags
+mozclient-status: $(MOZ_CLIENT)
+ cd $(MOZCLIENT_TMP)/mozilla && cvs status -v client.mk
+
+# Patch
+# - don't patch when a branch name is specified
+mozclient-patch: $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP)
+
+$(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP): $(MOZ_CLIENT)
+ifeq (,$(MOZCLIENT_BRANCH))
+ if [ ! -L $(MOZCLIENT_TMP)/patches ] ; then ln -s ../../patches $(MOZCLIENT_TMP)/patches ; fi
+ cd $(MOZCLIENT_TMP) && quilt --quiltrc /dev/null push -a || test $$? = 2
+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)
+ifneq (,$(DEBIAN_TAG))
+mozclient-checkout: MOZCLIENT_DATE = $(NULL)
+else
+ifneq (,$(DEBIAN_DATE))
+mozclient-checkout: MOZCLIENT_DATE = MOZ_CO_DATE="$(DEBIAN_DATE)"
+else
+mozclient-checkout: DEBIAN_DATE = $(shell $(MOZCLIENT_GETDATE))
+mozclient-checkout: MOZCLIENT_DATE = MOZ_CO_DATE="$(shell echo $(DEBIAN_DATE) | sed -e 's/[rt]/ /')"
+endif
+endif
+mozclient-checkout:
+ @echo DEBIAN_DATE=$(DEBIAN_DATE)
+ cd $(MOZCLIENT_TMP) && make -f $(MOZ_CLIENT) checkout MOZ_CO_PROJECT=$(MOZCLIENT_PROJECT) $(MOZCLIENT_DATE) $(DEBIAN_MOZ_CO_TAG)
+ @echo DEBIAN_DATE=$(DEBIAN_DATE)
+ echo $(DEBIAN_DATE) > $(MOZCLIENT_TMP)/.date
+
+# 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))~cvs$(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)
+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
+$(MOZCLIENT_TARGET): $(MOZ_CLIENT) $(MOZCLIENT_TMP)/$(MOZCLIENT_STAMP) mozclient-checkout mozclient-remove-bin mozclient-pack
+
+get-orig-source: $(MOZCLIENT_TARGET)
+
+.PHONY: mozclient-patch mozclient-unpatch mozclient-checkout mozclient-remove-bin mozclient-pack $(MOZCLIENT_TARGET) get-orig-source