summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README15
-rw-r--r--debian/changelog9
-rw-r--r--src/Makefile18
-rw-r--r--src/minefield-packager.mk.in114
-rw-r--r--src/minefield-packager/debian/changelog.in5
-rw-r--r--src/minefield-packager/debian/compat1
-rw-r--r--src/minefield-packager/debian/control.in12
-rw-r--r--src/minefield-packager/debian/pkgname.desktop.in15
8 files changed, 184 insertions, 5 deletions
diff --git a/README b/README
index 5f60244..aa68f6b 100644
--- a/README
+++ b/README
@@ -3,6 +3,7 @@ usable by Mozilla packages in Ubuntu.
- mozclient is an abstract tarball creator which provides a get-new-orig target
- compare is an install checker
+- minefield-packager creates debs from Firefox nightly built tarballs
The package contains rules for the following projects:
- firefox-3.0
@@ -110,6 +111,20 @@ COMPARE_FILTER_IN += \
$(NULL)
+=== minefield-packager ===
+
+minefield-packager creates debs from Firefox nightly built tarballs available
+on mozilla web/ftp site. Those builds are often useful to check a regression
+and to determine if a bug is Ubuntu specific or if it is also affecting
+upstream builds. The deb produced are for testing purpose only, please don't
+report bugs in Launchpad about those.
+
+Example:
+
+(from a writable directory)
+make -f /usr/share/mozilla-devscripts/minefield-packager.mk
+sudo dpkg -i firefox-minefield_3.0~b5~build2008032304-1_i386.deb
+
=== xpi.mk ===
targets:
diff --git a/debian/changelog b/debian/changelog
index 6f923fe..17ff38f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -31,6 +31,15 @@ mozilla-devscripts (0.06) UNRELEASED; urgency=low
i.e. regular browser and not the ubuntu specific xulbrowser
- add src/firefox-3.0-full.mk.in
- update src/Makefile
+ * [ minefield-packager ]
+ + New module creating debs from Firefox nightly built tarballs
+ - add src/minefield-packager.mk.in
+ - add src/minefield-packager/debian/*
+ - update src/Makefile
+ - update README
+ * Add $(extra_mk_dirs) to install a full directory and use it for
+ minefield-packager/debian and (mozclient/)patches
+ - update src/Makefile
-- Fabien Tassin <fta@sofaraway.org> Fri, 29 Feb 2008 17:03:20 +0100
diff --git a/src/Makefile b/src/Makefile
index 7d32611..4aa247e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -32,6 +32,7 @@ mk_files = \
xulrunner-1.9.mk \
mozclient.mk \
compare.mk \
+ minefield-packager.mk \
$(NULL)
extra_mk_files = \
@@ -40,22 +41,29 @@ extra_mk_files = \
lp-locale-export.mk \
$(NULL)
+extra_mk_dirs = \
+ patches \
+ minefield-packager/debian \
+ $(NULL)
+
%.mk: %.mk.in
cat $< | sed \
-e "s|^\(include\) \(.*\)\.in|\1 $(DATADIR)/\2|" \
-e "s|^\(MOZCLIENT_EXCLUDE_SCRIPT.*=[ ][ ]*\)\(.*/\)\(.*\)|\1$(DATADIR)/\3|" \
-e "s|^\(MOZCLIENT_PATCHES.*=[ ][ ]*\)\(.*/\)\(.*\)|\1$(DATADIR)/\3|" \
+ -e "s|^\(MOZDEVSCRIPT_DIR.*=[ ]*\)\(.*\)|\1$(DATADIR)/\2|" \
> $@
chmod 644 $@
build: $(mk_files)
-install: $(mk_files) $(extra_mk_files)
- install -m 755 -d $(DESTDIR)$(DATADIR)
- install -m 644 $^ $(DESTDIR)$(DATADIR)
+install: $(mk_files) $(extra_mk_files) $(foreach dir,$(extra_mk_dirs),$(wildcard $(dir)/*))
+ install -m 755 -d $(DESTDIR)$(DATADIR) $(foreach dir,$(extra_mk_dirs),$(DESTDIR)$(DATADIR)/$(dir))
+ install -m 644 $(mk_files) $(extra_mk_files) $(DESTDIR)$(DATADIR)
chmod 755 $(DESTDIR)$(DATADIR)/*.sh
- install -m 755 -d $(DESTDIR)$(DATADIR)/patches
- install -m 644 $(wildcard ./patches/*) $(DESTDIR)$(DATADIR)/patches
+ for dir in $(extra_mk_dirs) ; do \
+ install -m 644 `echo $$dir/*` $(DESTDIR)$(DATADIR)/$$dir ; \
+ done
clean:
rm -f $(mk_files)
diff --git a/src/minefield-packager.mk.in b/src/minefield-packager.mk.in
new file mode 100644
index 0000000..9b46d01
--- /dev/null
+++ b/src/minefield-packager.mk.in
@@ -0,0 +1,114 @@
+#!/usr/bin/make -f
+
+URLBASE := http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/
+MACHINE := $(shell uname -m)
+WORKDIR := temp-$(shell echo $$$$)
+BUILDSTAMP := $(WORKDIR)/build-stamp
+PKGNAME := firefox-minefield
+
+MOZDEVSCRIPT_DIR := minefield-packager
+LIBDIR := $(MOZDEVSCRIPT_DIR)/
+
+ifeq (,$(filter i686 x86_64,$(MACHINE)))
+$(error $(MACHINE) is not a supported platform)
+endif
+
+LINE := $(shell wget -qO - $(URLBASE) | grep linux-$(MACHINE).tar.bz2)
+
+ifeq (,$(LINE))
+$(error Could not find a valid archive for $(MACHINE))
+endif
+
+FILE := $(shell echo '$(LINE)' | cut -d'"' -f8)
+
+#############################
+
+GARBAGE += $(WORKDIR)
+
+.PHONY: build
+build: $(BUILDSTAMP) make_deb clean
+
+$(BUILDSTAMP):
+ rm -rf $(WORKDIR)
+ mkdir -p $(WORKDIR)/debian/tmp/DEBIAN $(WORKDIR)/debian/tmp/usr/lib
+ wget -P $(WORKDIR) $(URLBASE)$(FILE)
+ tar -C $(WORKDIR)/debian/tmp -jxf $(WORKDIR)/$(FILE)
+ mv $(WORKDIR)/debian/tmp/firefox $(WORKDIR)/debian/tmp/usr/lib/$(PKGNAME)
+ touch $(BUILDSTAMP)
+
+#############################
+
+make_deb_targets = \
+ $(WORKDIR)/debian/tmp/usr/bin/$(PKGNAME) \
+ $(WORKDIR)/debian/tmp/usr/share/applications/$(PKGNAME).desktop \
+ $(WORKDIR)/debian/tmp/usr/share/pixmaps/$(PKGNAME).png \
+ $(WORKDIR)/debian/tmp/DEBIAN/changelog \
+ $(WORKDIR)/debian/tmp/DEBIAN/control \
+ $(WORKDIR)/debian/tmp/DEBIAN/md5sums \
+ $(NULL)
+
+make_deb: BUILDID = $(shell grep ^BuildID $(WORKDIR)/debian/tmp/usr/lib/$(PKGNAME)/platform.ini | cut -d= -f2)
+make_deb: VERSION = $(shell echo $(FILE) | sed -e 's/^[^-]*-//' | cut -d. -f1,2 | sed -e 's/pre/~/' -e 's/\([ab]\)/~\1/')
+make_deb: PACKDATE := $(shell date -R)
+make_deb: $(BUILDSTAMP) $(WORKDIR)/shlibs.local $(make_deb_targets)
+ fakeroot dpkg-deb -b $(WORKDIR)/debian/tmp .
+
+#############################
+
+$(WORKDIR)/debian/tmp/usr/bin/$(PKGNAME): $(BUILDSTAMP)
+ mkdir -p $(WORKDIR)/debian/tmp/usr/bin
+ cd $(WORKDIR)/debian/tmp/usr/bin ; ln -s ../lib/$(PKGNAME)/firefox $(PKGNAME)
+
+#############################
+
+$(WORKDIR)/debian/tmp/usr/share/applications/$(PKGNAME).desktop: $(LIBDIR)debian/pkgname.desktop.in $(BUILDSTAMP)
+ mkdir -p $(WORKDIR)/debian/tmp/usr/share/applications
+ cat $< | sed \
+ -e 's/@PKGNAME@/$(PKGNAME)/g' \
+ > $@
+
+#############################
+
+$(WORKDIR)/debian/tmp/usr/share/pixmaps/$(PKGNAME).png: $(BUILDSTAMP)
+ mkdir -p $(WORKDIR)/debian/tmp/usr/share/pixmaps
+ cp $(WORKDIR)/debian/tmp/usr/lib/$(PKGNAME)/icons/mozicon128.png $(WORKDIR)/debian/tmp/usr/share/pixmaps/$(PKGNAME).png
+
+#############################
+
+$(WORKDIR)/debian/tmp/DEBIAN/changelog: $(LIBDIR)debian/changelog.in $(BUILDSTAMP)
+ cat $< | sed \
+ -e 's/@PKGNAME@/$(PKGNAME)/g' \
+ -e 's/@VERSION@/$(VERSION)build$(BUILDID)/g' \
+ -e 's/@DATE@/$(PACKDATE)/g' \
+ > $@
+
+#############################
+
+$(WORKDIR)/debian/tmp/DEBIAN/control: DEPENDS = $(shell sed -e 's/, $$//' $(WORKDIR)/deps)
+$(WORKDIR)/debian/tmp/DEBIAN/control: ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+$(WORKDIR)/debian/tmp/DEBIAN/control: $(LIBDIR)debian/control.in $(BUILDSTAMP)
+ cat $< | sed \
+ -e 's/@PKGNAME@/$(PKGNAME)/g' \
+ -e 's/@ARCH@/$(ARCH)/g' \
+ -e 's/@VERSION@/$(VERSION)build$(BUILDID)/g' \
+ -e 's/@DEPENDS@/$(DEPENDS)/g' \
+ > $@
+
+#############################
+
+$(WORKDIR)/shlibs.local: SOFILES = $(shell cd $(WORKDIR)/debian/tmp ; find usr -type f -print0 | xargs -0 file | awk '$$2 ~ /^ELF/ {print $$1}' | sed 's/:$$//')
+$(WORKDIR)/shlibs.local: SONAMES = $(foreach sofile,$(SOFILES),$(shell objdump -p $(WORKDIR)/debian/tmp/$(sofile) | awk '$$1 == "SONAME" && $$2 !~ /^\.\// {print $$2}'))
+$(WORKDIR)/shlibs.local:
+ (echo "Source: $(PKGNAME)"; echo ; echo "Package: $(PKGNAME)" ; echo "Depends:") > $(WORKDIR)/debian/control
+ (for soname in $(SONAMES) ; do echo $$soname | sed -e 's/\(.*\)\.so\.\(.*\)/\1 \2 \1-\2/' -e 's/.*\.so$$//' ; done) | sort -u | grep -vE '^$$' > $(WORKDIR)/shlibs.local || test $$? = 1
+ cd $(WORKDIR); (for file in $(SOFILES); do LD_LIBRARY_PATH=debian/tmp/usr/lib/$(PKGNAME) dpkg-shlibdeps -O -Lshlibs.local "debian/tmp/$$file" | sed -e 's/^shlibs:Depends=//' -e 's/, /\n/g'; done) | sort -u | tr '\n' ',' | sed -e 's/ *,/, /g' > deps
+ rm -f $(WORKDIR)/shlibs.local $(WORKDIR)/debian/control
+
+#############################
+
+$(WORKDIR)/debian/tmp/DEBIAN/md5sums:
+ (cd $(WORKDIR)/debian/tmp && find usr -type f -print0 | xargs -0 md5sum) > $@
+
+.PHONY: clean
+clean:
+ @rm -rf $(GARBAGE)
diff --git a/src/minefield-packager/debian/changelog.in b/src/minefield-packager/debian/changelog.in
new file mode 100644
index 0000000..e4f4bf3
--- /dev/null
+++ b/src/minefield-packager/debian/changelog.in
@@ -0,0 +1,5 @@
+@PKGNAME@ (@VERSION@-1) testing; urgency=low
+
+ * New upstream build: @VERSION@
+
+ -- Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com> @DATE@
diff --git a/src/minefield-packager/debian/compat b/src/minefield-packager/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/src/minefield-packager/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/src/minefield-packager/debian/control.in b/src/minefield-packager/debian/control.in
new file mode 100644
index 0000000..c6d2419
--- /dev/null
+++ b/src/minefield-packager/debian/control.in
@@ -0,0 +1,12 @@
+Package: @PKGNAME@
+Version: @VERSION@-1
+Section: net
+Priority: optional
+Maintainer: Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com>
+Architecture: @ARCH@
+Depends: @DEPENDS@
+Description: Minefield web browser nightly build
+ Minefield is the code name of the nighly build of the developpement branch
+ of Mozilla Firefox. It is often useful to try those builds in order
+ to check if a bug in the ubuntu firefox package is Ubuntu specific or
+ also present in the upstream build.
diff --git a/src/minefield-packager/debian/pkgname.desktop.in b/src/minefield-packager/debian/pkgname.desktop.in
new file mode 100644
index 0000000..76bbf18
--- /dev/null
+++ b/src/minefield-packager/debian/pkgname.desktop.in
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=Minefield Web Browser
+Comment=Minefield
+GenericName=Web Browser
+Exec=@PKGNAME@ %u
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=@PKGNAME@
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;
+StartupWMClass=Minefield
+StartupNotify=true