summaryrefslogtreecommitdiff
path: root/src/xpi.mk
blob: e1324aa72a582f2c17c80fe99153c00ae4b91bae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# -*- mode: makefile; coding: utf-8 -*-

# Copyright (c) 2008-2009 Canonical Ltd.
# Author(s): Alexander Sack <asac@ubuntu.com>
#            Fabien Tassin <fta@sofaraway.org>
#            Benjamin Drung <bdrung@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 (OPTIONAL):
#                if defined the given binary package name is used to ship
#                this xpi; otherwise the first binary package listed in
#                debian/control is used
#
#        MOZ_XPI_FILE (OPTIONAL):
#                if defined the given .xpi file is used; otherwise we try to
#                guess one using wildcard (*.xpi)
#
#        MOZ_XPI_BUILD_COMMAND (OPTIONAL):
#                if defined the given command will be run _before_ the extension
#                gets packaged up the standard .xpi way. Thus, the build command
#                should produce an .xpi in top level directory. Note: If this
#                command is specified, MOZ_XPI_CLEAN_COMMAND (see below) will be
#                run during |clean|. If the .xpi file will not be build from
#                source, you have to set this variable to nothing.
#
#        MOZ_XPI_CLEAN_COMMAND (OPTIONAL):
#                only has an effect if MOZ_XPI_BUILD_COMMAND (see above) is set.
#                It defaults to `rm -f *.xpi`.
#
#        MOZ_XPI_MOZILLA_EXTRA_DIRS (OPTIONAL):
#                defines extra directories to link the extension in. Usually
#                xpi.mk creates the right links based on targetApplication
#                parsed in install.rdf; if you need more directories, use this.
#
#        MOZ_XPI_DOCUMENTED_LICENSE_FILES (OPTIONAL):
#                defines extra license files which need to be excluded during
#                the installation of the XPI file to the packaging tree. When
#                using parameter, be sure that you documented _all_ excluded
#                license files in debian/copyright appropriately. If not defined
#                the common license file names are guessed.
#
#        MOZ_XPI_EXT_NAME (OPTIONAL):
#                defines the name of the extension (without any prefixes like
#                mozilla- or xul-ext-). If not defined MOZ_EXTENSION_PKG with
#                stripped prefixes is used. This value is used to determine
#                xpi:Provides.
#
#        MOZ_XPI_PRESERVE_PERMISSIONS (OPTIONAL):
#                if defined (set to 1), the permission of the installed files
#                will not be changed. If not defined or set to $(null), the
#                permission of the files will be set to 644 and the permissions
#                of scripts (files containing a shebang) will be set to 755.
#
#        MOZ_XPI_INSTALL_DIRECTORY (OPTIONAL):
#                The xpi file will be installed in the specified directory.
#                This directory must be an absolute path. Use this parameter
#                with care.
#
#        MOZ_XPI_DISABLE_SYSTEM_PREFS (OPTIONAL):
#                if defined (set to 1), no system preference file will be
#                created in /etc.
#
#        Unused variables (can be removed):
#
#        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
#                '''Note''': this variable is not used any more

MOZ_EXTENSION_PKG ?= $(strip $(shell grep ^Package: debian/control | head -n 1 | sed "s/^Package://"))

MOZ_XPI_BUILD_COMMAND ?= xpi-pack $(CURDIR) $(MOZ_EXTENSION_PKG).xpi
MOZ_XPI_CLEAN_COMMAND ?= rm -f *.xpi

ifneq (,$(MOZ_XPI_FILE))
xpi_file = $(wildcard $(MOZ_XPI_FILE))
else
xpi_file = $(wildcard *.xpi)
endif

ifneq (,$(MOZ_XPI_PRESERVE_PERMISSIONS))
install_xpi_extra_parameter += --preserve-permissions
endif

ifneq (,$(MOZ_XPI_DISABLE_SYSTEM_PREFS))
install_xpi_extra_parameter += --disable-system-prefs
endif

ifneq (,$(MOZ_XPI_INSTALL_DIRECTORY))
install_xpi_extra_parameter += -i $(MOZ_XPI_INSTALL_DIRECTORY)
endif

ifeq ($(origin MOZ_XPI_DOCUMENTED_LICENSE_FILES),undefined)
install_xpi_extra_parameter += --remove-license-files
else
install_xpi_extra_parameter += $(foreach exclude,$(MOZ_XPI_DOCUMENTED_LICENSE_FILES),-x $(exclude))
endif

install_xpi_extra_parameter += $(foreach dir,$(MOZ_XPI_MOZILLA_EXTRA_DIRS),-l $(dir))

# ### cdbs hooks
# build xpi using MOZ_XPI_BUILD_COMMAND if defined
build/$(MOZ_EXTENSION_PKG)::
ifneq (,$(MOZ_XPI_BUILD_COMMAND))
	$(MOZ_XPI_BUILD_COMMAND)
endif

install/$(MOZ_EXTENSION_PKG):: xpi-install

xpi-install:
	install-xpi -p$(MOZ_EXTENSION_PKG) $(xpi_file) $(install_xpi_extra_parameter)
	dh_xul-ext -p$(MOZ_EXTENSION_PKG)

# clean build and remove all .xpi in top-level if a MOZ_XPI_BUILD_COMMAND is defined
ifneq (,$(MOZ_XPI_BUILD_COMMAND))
clean::
	dh_testdir
	dh_clean
	$(MOZ_XPI_CLEAN_COMMAND)
endif

.PHONY: clean xpi-install