From 892f8c8a7472d5aeb3302ebe0ae6169edea9ecc6 Mon Sep 17 00:00:00 2001 From: Fabien Tassin Date: Thu, 13 Dec 2007 18:18:54 +0100 Subject: * First release after a full rewrite + packaging --- src/mozclient.mk.in | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 src/mozclient.mk.in (limited to 'src/mozclient.mk.in') 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 +# 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 -- cgit v1.2.3