mozilla-devscripts makes packaging extensions for XUL based applications easy. It provides a bunch of scripts and the CDBS snippet /usr/share/mozilla-devscripts/xpi.mk, which can be included by debian/rules. You only have to build a .xpi file, everything else will be done by mozilla-devscripts. It will extract the xpi file, remove extra license files, install it and set the links. = debian/rules = == simplified dh 7 == You can use this simplified dh 7 rule if your source contains the extracted .xpi file. This requires mozilla-devscripts (>= 0.22~). {{{#!makefile #!/usr/bin/make -f %: dh $@ --with xul-ext --buildsystem=xul_ext }}} == extended dh 7 == The xul_ext build system does nothing else than the following rule file. This rule file required only mozilla-devscripts (>= 0.19~). You can use this snippet if your extension provides a build system (like ant or make) and you need to override the dh_auto_build rule. {{{#!makefile #!/usr/bin/make -f %: dh $@ --with xul-ext override_dh_auto_build: # put here the commands used for building the xpi file, for example: xpi-pack . xul-ext-fubar.xpi override_dh_auto_install: install-xpi xul-ext-fubar.xpi override_dh_auto_clean: rm -f xul-ext-fubar.xpi }}} == multiple xpi files == Installing multiple xpi file is supported too. {{{#!makefile #!/usr/bin/make -f %: dh $@ --with xul-ext override_dh_auto_build: # put here the commands used for building the xpi files, for example: make override_dh_auto_install: install-xpi -p xul-ext-bla bla.xpi install-xpi -p xul-ext-keks keks.xpi override_dh_auto_clean: rm -f *.xpi }}} == CDBS == CDBS is support by mozilla-devscripts. === building from source === You have to run one command if you build the xpi file from source. Some extensions will provide a makefile to create the xpi file and you have to run "make", some will use ant and you have to run "ant", some will provide a shell script and you have to run "sh build.sh". Your debian/rules file will look like this with CDBS: {{{#!makefile #!/usr/bin/make -f MOZ_XPI_BUILD_COMMAND = sh build.sh include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/mozilla-devscripts/xpi.mk }}} An example for this design is [[http://git.debian.org/?p=pkg-mozext/notify-extension.git|notify-extension]]. === using xpi file === You should use med-xpi-unpack to create the source file if you use the xpi file from upstream. Please do not drop the xpi file into your sources. Your debian/rules file will be very simple if you use med-xpi-unpack to create the source. mozilla-devscripts will pack the files for you. You do not have to set MOZ_XPI_BUILD_COMMAND. {{{#!makefile #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/mozilla-devscripts/xpi.mk }}} An example for this design is [[http://git.debian.org/?p=pkg-mozext/flashgot.git;a=summary|flashgot]]. = debian/control = The debian/control file will normally look like: {{{ Source: EXTENSIONNAME Section: web Priority: optional Maintainer: Debian Mozilla Extension Maintainers Uploaders: Your Fullname Build-Depends: debhelper (>= 9), mozilla-devscripts (>= 0.34~) Standards-Version: 3.9.4 Homepage: http://example-extension.com/ Vcs-Git: git://git.debian.org/pkg-mozext/EXTENSIONNAME.git Vcs-Browser: http://git.debian.org/?p=pkg-mozext/EXTENSIONNAME.git;a=summary Package: xul-ext-EXTENSIONNAME Architecture: all Depends: ${misc:Depends}, ${xpi:Depends} Recommends: ${xpi:Recommends} Breaks: ${xpi:Breaks} Provides: ${xpi:Provides} Enhances: ${xpi:Enhances} Description: one line for short description Long descriptions can span multiple lines . and as above empty lines }}} * We maintain the extensions in git in the pkg-mozext group. * EXTENSIONNAME is the name of the extension. EXTENSIONNAME should not contain mozilla, iceape, icedove, iceape, firefox, thunderbird, seamonkey in its name. Append -extension to the source package name if EXTENSIONNAME is too generic without these name (The source package name for firefoxnotify is notify-extension and the binary package name is xul-ext-notify). * You need at least version 0.34~ of mozilla-devscripts for all features mentioned here. = debian/watch = This is an example watch file for an extension that is available on [[https://addons.mozilla.org/]]: {{{ version=3 ftp://ftp.mozilla.org/pub/mozilla.org/addons/9622/firefoxnotify-([\d\.]+)-.*\.xpi }}} * ''9622'' needs to be replaces with the correct addon number. * ''firefoxnotify'' needs to be replaces with the name of the extension. * ''([\d\.]+)'' needs to be replaces by ''([^-]+)'' (or similar) if the version of the extension contains alphabetical characters. * You might want to add xpi-repack to your debian/watch file (more details in the man page of xpi-repack). This is an alternative example for the watch file which is supposed to be more up-to-date and more able to work since it uses the public website: {{{ version=3 https://addons.mozilla.org/en-US/thunderbird/addon/stationery/ .*/stationery-([\d\.]+)-tb\.xpi.* debian xpi-repack }}}