# HG changeset patch # User Wolfgang Rosenauer # Date 1296234414 -3600 # Node ID 5a7504b93699361ca3b79a47e4b05162ffb9b749 # Parent f6a61d48d483262964982472c4b466cb137cdfed Provide devel package with helper script and rpm macros for easier addon packaging. (patch submitted from Ludwig Nussel) diff -r f6a61d48d483 -r 5a7504b93699 MozillaFirefox/MozillaFirefox.changes --- a/MozillaFirefox/MozillaFirefox.changes Fri Jan 28 09:06:16 2011 +0100 +++ b/MozillaFirefox/MozillaFirefox.changes Fri Jan 28 18:06:54 2011 +0100 @@ -1,7 +1,8 @@ ------------------------------------------------------------------- -Wed Jan 26 15:41:56 UTC 2011 - wr@rosenauer.org +Fri Jan 28 08:56 UTC 2011 - wr@rosenauer.org - set correct desktop file name within KDE for 11.4 and up +- add devel package with macros for extensions (from lnussel@suse.de) ------------------------------------------------------------------- Sat Jan 22 22:21:52 UTC 2011 - wr@rosenauer.org diff -r f6a61d48d483 -r 5a7504b93699 MozillaFirefox/MozillaFirefox.spec --- a/MozillaFirefox/MozillaFirefox.spec Fri Jan 28 09:06:16 2011 +0100 +++ b/MozillaFirefox/MozillaFirefox.spec Fri Jan 28 18:06:54 2011 +0100 @@ -18,6 +18,8 @@ # norootforbuild +%define major 4 +%define mainver %major.0 Name: MozillaFirefox %define use_xulrunner 1 @@ -32,10 +34,11 @@ BuildRequires: %{xulrunner}-devel = 2.0b10 %endif License: GPLv2+ ; LGPLv2.1+ ; MPLv1.1+ -Version: 4.0b10 +Version: %{mainver}b10 +Release: 1 Provides: web_browser -Provides: firefox = %{version} -Release: 1 +Provides: firefox = %{version}-%{release} +Provides: firefox = %{mainver} %define releasedate 2011012100 Summary: Mozilla Firefox Web Browser Url: http://www.mozilla.org/ @@ -52,6 +55,7 @@ Source9: firefox-lockdown.js Source10: compare-locales.tar.bz2 Source11: firefox.1 +Source12: mozilla-get-app-id Patch1: toolkit-download-folder.patch Patch2: firefox-linkorder.patch Patch3: firefox-browser-css.patch @@ -61,7 +65,7 @@ Patch7: firefox-ui-lockdown.patch Patch8: firefox-no-sync-l10n.patch Patch9: firefox-libxulsdk-locales.patch -Patch10: firefox-no-default-ualocale.patch +Patch10: firefox-no-default-ualocale.patch Patch11: firefox-multilocale-chrome.patch Patch12: firefox-shellservice.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -76,6 +80,7 @@ %endif %endif Requires: %{name}-branding >= 4.0 +%define firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} %define _use_internal_dependency_generator 0 %define __find_requires sh %{SOURCE4} %global provfind sh -c "grep -v '.so' | %__find_provides" @@ -103,6 +108,17 @@ compliance and performance. Its functionality can be enhanced via a plethora of extensions. +%package devel +License: GPLv2+ ; LGPLv2.1+ ; MPLv1.1+ +Summary: Devel package for Firefox +Group: Development/Tools/Other +Provides: firefox-devel = %{version}-%{release} +Requires: %{name} = %{version} +Requires: perl(XML::Simple) +Requires: perl(Archive::Zip) + +%description devel +Development files for Firefox to make packaging of addons easier. %if %localize %package translations-common @@ -128,7 +144,6 @@ %description translations-other This package contains rarely used languages for the user interface of MozillaFirefox. - %endif %package branding-upstream @@ -291,6 +306,8 @@ ########## # ADDONS # +mkdir -p $RPM_BUILD_ROOT%{_datadir}/mozilla/extensions/%{firefox_appid} +mkdir -p $RPM_BUILD_ROOT%{_libdir}/mozilla/extensions/%{firefox_appid} mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps/ ln -sf %{progdir}/icons/mozicon128.png $RPM_BUILD_ROOT/usr/share/pixmaps/%{progname}.png ln -sf %{progdir}/icons/mozicon128.png $RPM_BUILD_ROOT/usr/share/pixmaps/%{progname}-gnome.png @@ -309,6 +326,35 @@ rm -f $RPM_BUILD_ROOT%{progdir}/old-homepage-default.properties rm -f $RPM_BUILD_ROOT%{progdir}/run-mozilla.sh rm -f $RPM_BUILD_ROOT%{progdir}/LICENSE +# devel +mkdir -p %{buildroot}%{_bindir} +install -m 755 %SOURCE12 %{buildroot}%{_bindir} +# inspired by mandriva +mkdir -p %{buildroot}/etc/rpm +cat <<'FIN' >%{buildroot}/etc/rpm/macros.%{progname} +# Macros from %{name} package +%%firefox_major %{major} +%%firefox_version %{version} +%%firefox_mainver %{mainver} +%%firefox_mozillapath %{progdir} +%%firefox_xulrunner %{xulrunner} +%%firefox_xulrunner_version %(rpm -q --queryformat '%{VERSION}' %{xulrunner}) +%%firefox_pluginsdir %{_libdir}/browser-plugins +%%firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} +%%firefox_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{firefox_appid}; else echo %%{_libdir}/mozilla/extensions/%%{firefox_appid}; fi) + +%%firefox_ext_install() \ + extdir="%%{buildroot}%%{firefox_extdir}/`mozilla-get-app-id '%%1'`" \ + mkdir -p "$extdir" \ + %%{__unzip} -q -d "$extdir" "%%1" \ + %%{nil} +FIN +# just dumping an xpi file there doesn't work... +#%%firefox_ext_install() \ +# extdir="%%{buildroot}%%{firefox_extdir}" \ +# mkdir -p "$extdir" \ +# cp "%%1" "$extdir" \ +# %%{nil} # fdupes %fdupes $RPM_BUILD_ROOT%{progdir} %fdupes $RPM_BUILD_ROOT%{_datadir} @@ -380,12 +426,23 @@ %{_datadir}/applications/%{desktop_file_name}.desktop %{_datadir}/mime/packages/%{progname}.xml %{_datadir}/pixmaps/firefox* +%dir %{_datadir}/mozilla +%dir %{_datadir}/mozilla/extensions +%dir %{_datadir}/mozilla/extensions/%{firefox_appid} +%dir %{_libdir}/mozilla +%dir %{_libdir}/mozilla/extensions +%dir %{_libdir}/mozilla/extensions/%{firefox_appid} %if %branding %{gnome_dir}/share/icons/hicolor/ %endif %{_bindir}/%{progname} %doc %{_mandir}/man1/%{progname}.1.gz +%files devel +%defattr(-,root,root) +%{_bindir}/mozilla-get-app-id +%config /etc/rpm/macros.%{progname} + %if %localize %files translations-common -f %{_tmppath}/translations.common %defattr(-,root,root) diff -r f6a61d48d483 -r 5a7504b93699 MozillaFirefox/mozilla-get-app-id --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MozillaFirefox/mozilla-get-app-id Fri Jan 28 18:06:54 2011 +0100 @@ -0,0 +1,51 @@ +#!/usr/bin/perl -w +use XML::Simple; + +my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n"; +my $xml; + +if ($file =~ /\.xpi$/) { + use Archive::Zip qw/:ERROR_CODES :CONSTANTS/; + my $zip = Archive::Zip->new(); + if ( $zip->read($file) != AZ_OK ) { + die "zip file read error\n"; + } + my $data = $zip->contents("install.rdf"); + die "missing install.rdf in $file\n" unless $data; + $xml = XMLin($data) || die "$!\n"; +} elsif ($file =~ /install.rdf/) { + $xml = XMLin($file) || die "$!\n"; +} else { + die "unsupported file format\n"; +} + +my $desc; +for my $tag (qw/RDF:Description Description/) { + if (exists $xml->{$tag}) { + if (ref $xml->{$tag} eq 'ARRAY') { + $desc = $xml->{$tag}; + } else { + $desc = [ $xml->{$tag} ]; + } + } +} + +my $uuid; +my $id; +for my $x (@$desc) { + if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) { + print STDERR "Warning: multiple uuids!\n" if defined $uuid; + $uuid = $x->{"em:id"}; + } elsif ($x->{"em:id"} =~ /@/) { + print STDERR "Warning: multiple ids!\n" if defined $id; + $id = $x->{"em:id"}; + } +} + +if (defined $id) { + print "$id\n"; +} elsif (defined $uuid) { + print "$uuid\n"; +} else { + exit 1; +}