diff options
-rw-r--r-- | README | 15 | ||||
-rw-r--r-- | debian/changelog | 9 | ||||
-rw-r--r-- | src/Makefile | 18 | ||||
-rw-r--r-- | src/minefield-packager.mk.in | 114 | ||||
-rw-r--r-- | src/minefield-packager/debian/changelog.in | 5 | ||||
-rw-r--r-- | src/minefield-packager/debian/compat | 1 | ||||
-rw-r--r-- | src/minefield-packager/debian/control.in | 12 | ||||
-rw-r--r-- | src/minefield-packager/debian/pkgname.desktop.in | 15 |
8 files changed, 184 insertions, 5 deletions
@@ -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 |