summaryrefslogtreecommitdiff
path: root/src/xpi.mk
diff options
context:
space:
mode:
Diffstat (limited to 'src/xpi.mk')
-rw-r--r--src/xpi.mk92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/xpi.mk b/src/xpi.mk
new file mode 100644
index 0000000..227c8f5
--- /dev/null
+++ b/src/xpi.mk
@@ -0,0 +1,92 @@
+# -*- mode: makefile; coding: utf-8 -*-
+
+# Copyright (c) 2008 Canonical Ltd.
+# Author(s): Alexander Sack <asac@ubuntu.com>
+#
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+#
+# Usage: include this file in your cdbs debian/rules file and define the
+# following variables:
+#
+# MOZ_EXTENSION_PKG (MANDATORY):
+# define the binary package name used to ship this xpi
+#
+# MOZ_XPI_FILE (OPTIONAL):
+# if defined the given .xpi file is used; otherwise we try to
+# guess one using wildcard (*.xpi)
+#
+# MOZ_XPI_EMID (OPTIONAL):
+# if defined the given id is used to determine the link name
+# in the firefox extensions directory. if not defined we try
+# our best to extract the em:id from the install.rdf file shipped
+# by any xpi
+#
+
+TEMPDIR := $(shell rm -rf temp-xpi-*; mktemp -d temp-xpi-XXXXXXXX)
+
+ifneq (,$(MOZ_XPI_FILE))
+XPI_FILE = $(MOZ_XPI_FILE)
+else
+XPI_FILE = $(wildcard *.xpi)
+endif
+
+ifneq (,$(MOZ_XPI_EMID))
+XPI_EMID = $(MOZ_XPI_EMID)
+else
+XPI_EMID = $(shell xpath -e '/node()/Description/em:id/text()' $(1)/install.rdf 2>/dev/null)
+endif
+
+# cdbs hooks (TODO implement these)
+
+# general helper targets
+unzip-%:
+ unzip -d $(TEMPDIR) $*
+ touch $@
+
+install-%:
+ dh_installdirs -p$(MOZ_EXTENSION_PKG) /usr/lib/firefox-addons/extensions
+ dh_install -p$(MOZ_EXTENSION_PKG) $(wildcard $(TEMPDIR)/*) /usr/share/$(MOZ_EXTENSION_PKG)
+ dh_link -p$(MOZ_EXTENSION_PKG) /usr/share/$(MOZ_EXTENSION_PKG) /usr/lib/firefox-addons/extensions/$(call XPI_EMID,$(TEMPDIR))
+ touch $@
+
+stamp-extension-install: $(XPI_FILE) unzip-$(XPI_FILE) install-$(XPI_FILE)
+ touch stamp-extension-install
+
+
+# only attempt to do things if a pkg was provided; otherwise error out
+ifneq (,$(MOZ_EXTENSION_PKG))
+xpi-install: stamp-extension-install
+
+xpi-clean:
+ dh_clean -p$(MOZ_EXTENSION_PKG)
+ -rm -f stamp-extension-install \
+ unzip-* \
+ install-* \
+ $(NULL)
+ -rm -rf $(TEMPDIR)
+
+
+else
+xpi-install:
+ echo "*** need to define MOZ_EXTENSION_PKG"
+ exit 2
+
+xpi-clean:
+ echo "*** need to define MOZ_EXTENSION_PKG"
+ exit 2
+endif
+