1 |
# |
2 |
# WARNING, READ FIRST: |
3 |
# |
4 |
# This is a special package that needs special treatment. Due to the amount of |
5 |
# security updates it needs, it's common to ship new upstream versions instead of patching. |
6 |
# That means this package MUST be BUILDABLE for stable official releases. |
7 |
# This also means only STABLE upstream releases, NO betas. |
8 |
# This is a discussed topic. Please, do not flame it again. |
9 |
|
10 |
# Stay on ESR for stable releases and for cauldron before mageia2 . |
11 |
%define major 15.0 |
12 |
%define ff_epoch 0 |
13 |
# (tpg) set version HERE !!! |
14 |
%define realver %{major} |
15 |
%define firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} |
16 |
|
17 |
# (tpg) MOZILLA_FIVE_HOME |
18 |
%define mozillalibdir %{_libdir}/%{name}-%{major} |
19 |
%define pluginsdir %{_libdir}/mozilla/plugins |
20 |
|
21 |
# libxul.so is provided by libxulrunnner2.0. |
22 |
%define _requires_exceptions libxul.so |
23 |
|
24 |
# this seems fragile, so require the exact version or later (#58754) |
25 |
%define sqlite3_version %(pkg-config --modversion sqlite3 &>/dev/null && pkg-config --modversion sqlite3 2>/dev/null || echo 0) |
26 |
%define nss_version %(pkg-config --modversion nss &>/dev/null && pkg-config --modversion nss 2>/dev/null || echo 0) |
27 |
%define nspr_version %(pkg-config --modversion nspr &>/dev/null && pkg-config --modversion nspr 2>/dev/null |sed -e 's!\.0!!' || echo 0) |
28 |
|
29 |
%define _use_syshunspell 1 |
30 |
|
31 |
%define release %mkrel 1 |
32 |
|
33 |
%define update_channel release |
34 |
|
35 |
Summary: Next generation web browser |
36 |
Name: firefox |
37 |
Version: %{major} |
38 |
Epoch: %{ff_epoch} |
39 |
Release: %{release} |
40 |
License: MPLv1+ |
41 |
Group: Networking/WWW |
42 |
Url: http://www.mozilla.com/firefox/ |
43 |
%if 0%{?prel} |
44 |
Source0: ftp://ftp.mozilla.org/pub/mozilla.org/%{name}/releases/%{realver}/source/%{name}-%{realver}%prel.source.tar.bz2 |
45 |
%else |
46 |
Source0: ftp://ftp.mozilla.org/pub/mozilla.org/%{name}/releases/%{realver}/source/%{name}-%{realver}.source.tar.bz2 |
47 |
%endif |
48 |
Source4: %{name}.desktop |
49 |
Source9: kde.js |
50 |
Patch1: firefox-6.0-lang.patch |
51 |
Patch2: firefox-vendor.patch |
52 |
Patch3: mozilla-firefox-1.5.0.6-systemproxy.patch |
53 |
Patch4: firefox-10.0-nss-binary.patch |
54 |
# (OpenSuse) add patch to make firefox always use /usr/bin/firefox when "make firefox |
55 |
# the default web browser" is used fix mdv bug#58784 |
56 |
Patch5: firefox-6.0-appname.patch |
57 |
Patch6: firefox-7.0-fix-str-fmt.patch |
58 |
Patch7: mozilla-firefox-run-mozilla.patch |
59 |
Patch8: firefox-disable-check-default-browser.patch |
60 |
Patch9: firefox-5.0-asciidel.patch |
61 |
Patch10: firefox-3.5.3-default-mail-handler.patch |
62 |
# Patches for kde integration of FF |
63 |
Patch11: firefox-kde.patch |
64 |
Patch12: mozilla-kde.patch |
65 |
Patch13: firefox-13-fix-nspr-include.patch |
66 |
Patch14: firefox-13-fix-cairo-build.patch |
67 |
Patch34: xulrunner_nojit.patch |
68 |
# (cjw) make youtube show a green light for html5 h.264 support (?) |
69 |
Patch35: iceape-2.11-gstreamer-h264-avc1.42001E.patch |
70 |
# (cjw) use system virtualenv |
71 |
Patch36: iceape-2.12-system-virtualenv.patch |
72 |
# (cjw) from hg: fix segfault in gstreamer video playback code, see https://bugzilla.mozilla.org/show_bug.cgi?id=761030 |
73 |
Patch37: iceape-2.12-b8c6c7c773c3-gstreamer-video-segfault.patch |
74 |
# (cjw) make system-nss and system-nspr options work again (...) |
75 |
Patch38: firefox-15b2-native-nss-nspr.patch |
76 |
BuildRequires: gtk+2-devel |
77 |
BuildRequires: unzip |
78 |
BuildRequires: zip |
79 |
BuildRequires: libxinerama-devel |
80 |
BuildRequires: libxscrnsaver-devel |
81 |
BuildRequires: libjpeg-devel |
82 |
BuildRequires: libpng-devel >= 2:1.4 |
83 |
BuildRequires: zlib-devel |
84 |
BuildRequires: glib2-devel |
85 |
BuildRequires: libIDL2-devel |
86 |
BuildRequires: makedepend |
87 |
BuildRequires: nss-devel >= 2:3.12.10 |
88 |
BuildRequires: nss-static-devel |
89 |
BuildRequires: nspr-devel >= 2:4.8.9 |
90 |
BuildRequires: startup-notification-devel |
91 |
BuildRequires: dbus-glib-devel |
92 |
BuildRequires: python |
93 |
BuildRequires: sqlite3-devel >= 3.7.7.1 |
94 |
%ifnarch %arm %mips |
95 |
BuildRequires: valgrind |
96 |
BuildRequires: java-rpmbuild |
97 |
BuildRequires: yasm >= 1.0.1 |
98 |
%endif |
99 |
%ifarch %arm |
100 |
BuildRequires: libffi-devel |
101 |
%endif |
102 |
BuildRequires: rootcerts >= 1:20110830.00 |
103 |
BuildRequires: libxt-devel |
104 |
%if %_use_syshunspell |
105 |
BuildRequires: hunspell-devel |
106 |
%endif |
107 |
BuildRequires: doxygen |
108 |
# BuildRequires: xulrunner-devel >= %xulrunner_version%{?prel:-0.%prel} |
109 |
BuildRequires: pkgconfig(libproxy-1.0) |
110 |
BuildRequires: pkgconfig(alsa) |
111 |
BuildRequires: wget |
112 |
BuildRequires: libnotify-devel |
113 |
BuildRequires: cairo-devel >= 1.10 |
114 |
BuildRequires: mesagl-devel |
115 |
BuildRequires: libvpx-devel |
116 |
BuildRequires: autoconf2.1 |
117 |
BuildRequires: libiw-devel |
118 |
BuildRequires: python-virtualenv |
119 |
BuildRequires: gstreamer0.10-devel |
120 |
BuildRequires: libgstreamer0.10-plugins-base-devel |
121 |
BuildRequires: pkgconfig(opus) |
122 |
|
123 |
%if 0%{?prel} |
124 |
Provides: %{name} = %{epoch}:%{realver}-0.%{prel} |
125 |
%else |
126 |
Provides: %{name} = %{epoch}:%{realver} |
127 |
%endif |
128 |
Provides: mozilla-firefox = %{epoch}:%{version}-%{release} |
129 |
Provides: webclient |
130 |
|
131 |
Requires: %{mklibname sqlite3_ 0} >= %{sqlite3_version} |
132 |
Requires: %{mklibname nss 3} >= 2:%{nss_version} |
133 |
Requires: %{mklibname nspr 4} >= 2:%{nspr_version} |
134 |
Requires: indexhtml |
135 |
Requires: xdg-utils |
136 |
# fixes bug #42096 |
137 |
Requires: mailcap |
138 |
Suggests: hunspell-en |
139 |
Suggests: %{_lib}canberra0 |
140 |
Suggests: %{_lib}cups2 |
141 |
Obsoletes: firefox-ext-weave-sync |
142 |
Obsoletes: firefox-beta < 11 |
143 |
|
144 |
%description |
145 |
The award-winning Web browser is now faster, more secure, and fully customizable |
146 |
to your online life. With Firefox(R), we've added powerful new features that |
147 |
make your online experience even better. It is an 'open source' product which is |
148 |
freely available, and is acquiring a growing proportion of international web |
149 |
browser usage. |
150 |
|
151 |
Firefox claims to offer a more secure web browsing experience than other products, |
152 |
with better protection against spyware and other Internet-based security threats. |
153 |
It includes all the standard features of a modern web browser, like Internet |
154 |
searching, tracking recently visited sites, setting up shortcuts to favourite |
155 |
sites, customising the software behaviour and so on. Firefox also includes |
156 |
features like 'tabbed browsing' (opening several web sites as sections within the |
157 |
same window) and methods for controlling pop-up windows, cookies and downloaded |
158 |
files. |
159 |
|
160 |
%package devel |
161 |
Summary: Development files for %{name} |
162 |
Group: Development/Other |
163 |
Obsoletes: firefox-beta-devel < 11 |
164 |
|
165 |
%description devel |
166 |
Files and macros mainly for building Firefox extensions. |
167 |
|
168 |
%prep |
169 |
%setup -qn mozilla-%update_channel |
170 |
%patch1 -p1 -b .lang |
171 |
%patch2 -p1 -b .vendor |
172 |
#patch3 -p1 -b .systemproxy |
173 |
%patch4 -p0 -b .nss |
174 |
%patch5 -p1 -b .appname |
175 |
# It was disabled because firefox3 hangs when using soundwrapper |
176 |
#patch7 -p1 |
177 |
%patch8 -p1 -b .disable-software-update |
178 |
%patch9 -p1 -b .ascii |
179 |
%patch10 -p1 -b .default-mail-handler |
180 |
%patch14 -p1 |
181 |
|
182 |
## KDE INTEGRATION |
183 |
# Disable kde integration , need refactoring |
184 |
#patch11 -p1 -b .kde |
185 |
#patch12 -p1 -b .kdemoz |
186 |
# install kde.js |
187 |
#install -m 644 %{SOURCE9} browser/app/profile/kde.js |
188 |
%patch36 -p1 -b .system-nss-nspr |
189 |
|
190 |
%ifarch %arm |
191 |
%if "%{_target_cpu}" != "armv7l" |
192 |
%patch34 -p1 |
193 |
%endif |
194 |
%endif |
195 |
%patch35 -p2 -b .h264-youtube-ok |
196 |
%patch36 -p2 -b .system-virtualenv |
197 |
%patch37 -p1 -b .gstreamer-crash |
198 |
%patch38 -p1 -b .system-nss-nspr |
199 |
|
200 |
pushd js/src |
201 |
autoconf-2.13 |
202 |
popd |
203 |
autoconf-2.13 |
204 |
|
205 |
# needed to regenerate certdata.c |
206 |
pushd security/nss/lib/ckfw/builtins |
207 |
perl ./certdata.perl < /etc/pki/tls/mozilla/certdata.txt |
208 |
popd |
209 |
|
210 |
%build |
211 |
export MOZCONFIG=`pwd`/mozconfig |
212 |
cat << EOF > $MOZCONFIG |
213 |
mk_add_options MOZILLA_OFFICIAL=1 |
214 |
mk_add_options BUILD_OFFICIAL=1 |
215 |
mk_add_options MOZ_MAKE_FLAGS="%{_smp_mflags}" |
216 |
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj |
217 |
ac_add_options --host=%{_host} |
218 |
ac_add_options --target=%{_target_platform} |
219 |
ac_add_options --enable-optimize="%{optflags}" |
220 |
ac_add_options --prefix="%{_prefix}" |
221 |
ac_add_options --libdir="%{_libdir}" |
222 |
ac_add_options --sysconfdir="%{_sysconfdir}" |
223 |
ac_add_options --mandir="%{_mandir}" |
224 |
ac_add_options --includedir="%{_includedir}" |
225 |
ac_add_options --datadir="%{_datadir}" |
226 |
ac_add_options --with-system-nspr |
227 |
ac_add_options --with-system-nss |
228 |
ac_add_options --with-system-zlib |
229 |
ac_add_options --with-system-libvpx |
230 |
ac_add_options --enable-webm |
231 |
ac_add_options --enable-gio |
232 |
ac_add_options --disable-gnomevfs |
233 |
ac_add_options --disable-updater |
234 |
ac_add_options --disable-tests |
235 |
ac_add_options --disable-debug |
236 |
#ac_add_options --enable-chrome-format=jar |
237 |
#ac_add_options --enable-update-channel=beta |
238 |
ac_add_options --enable-official-branding |
239 |
ac_add_options --enable-libproxy |
240 |
ac_add_options --with-system-png |
241 |
ac_add_options --with-system-jpeg |
242 |
ac_add_options --enable-system-cairo |
243 |
ac_add_options --enable-system-sqlite |
244 |
ac_add_options --enable-startup-notification |
245 |
ac_add_options --enable-xinerama |
246 |
ac_add_options --with-distribution-id=org.mageia |
247 |
ac_add_options --disable-crashreporter |
248 |
ac_add_options --enable-update-channel=%{update_channel} |
249 |
ac_add_options --enable-gstreamer |
250 |
%ifarch %arm |
251 |
%if "%{_target_cpu}" != "armv7l" |
252 |
ac_add_options --disable-methodjit |
253 |
ac_add_options --disable-tracejit |
254 |
%endif |
255 |
ac_add_options --enable-system-ffi |
256 |
%endif |
257 |
%ifnarch %arm %mips |
258 |
ac_add_options --with-valgrind |
259 |
ac_add_options --with-java-include-path=%{java_home}/include |
260 |
ac_add_options --with-java-bin-path=%{java_home}/bin |
261 |
ac_add_options --enable-opus |
262 |
%endif |
263 |
|
264 |
EOF |
265 |
|
266 |
%__perl -p -i -e 's|\-0|\-9|g' config/make-jars.pl |
267 |
|
268 |
export LDFLAGS="%ldflags" |
269 |
make -f client.mk build |
270 |
|
271 |
%install |
272 |
rm -rf %{buildroot} |
273 |
|
274 |
make -C %{_builddir}/obj/browser/installer STRIP=/bin/true |
275 |
|
276 |
# Copy files to buildroot |
277 |
%{__mkdir_p} %{buildroot}%{mozillalibdir} |
278 |
cp -rf %{_builddir}/obj/dist/firefox/* %{buildroot}%{mozillalibdir} |
279 |
|
280 |
%{__mkdir_p} %{buildroot}%{_bindir} |
281 |
ln -sf %{mozillalibdir}/firefox %{buildroot}%{_bindir}/firefox |
282 |
pushd %{buildroot}%{_bindir} |
283 |
ln -sf firefox mozilla-firefox |
284 |
popd |
285 |
|
286 |
# Create and own %_libdir/mozilla/plugins & firefox extensions directories |
287 |
%{__mkdir_p} %{buildroot}%{pluginsdir} |
288 |
%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_appid} |
289 |
%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_appid} |
290 |
|
291 |
# (tpg) desktop entry |
292 |
%{__mkdir_p} %{buildroot}%{_datadir}/applications |
293 |
install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/applications/%{name}.desktop |
294 |
|
295 |
# (tpg) icons |
296 |
%{__cp} %{buildroot}%{mozillalibdir}/chrome/icons/default/default16.png %{buildroot}/%{mozillalibdir}/icons/ |
297 |
for i in 16 22 24 32 48 256; do |
298 |
# (cg) Not all icon sizes are installed with make install, so just redo it here. |
299 |
%{__install} -m 644 browser/branding/official/default$i.png %{buildroot}%{mozillalibdir}/chrome/icons/default/default$i.png |
300 |
%{__mkdir_p} %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps |
301 |
ln -sf %{mozillalibdir}/chrome/icons/default/default$i.png %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps/%{name}.png ; |
302 |
done |
303 |
%{__mkdir_p} %{buildroot}{%{_liconsdir},%{_iconsdir},%{_miconsdir}} |
304 |
ln -sf %{mozillalibdir}/chrome/icons/default/default48.png %{buildroot}%{_liconsdir}/%{name}.png |
305 |
ln -sf %{mozillalibdir}/chrome/icons/default/default32.png %{buildroot}%{_iconsdir}/%{name}.png |
306 |
ln -sf %{mozillalibdir}/chrome/icons/default/default16.png %{buildroot}%{_miconsdir}/%{name}.png |
307 |
|
308 |
# exclusions |
309 |
rm -f %{buildroot}%{mozillalibdir}/README.txt |
310 |
rm -f %{buildroot}%{mozillalibdir}/removed-files |
311 |
rm -f %{buildroot}%{mozillalibdir}/precomplete |
312 |
|
313 |
# this file is only used when creating a new user profile |
314 |
install -D -m644 browser/app/profile/prefs.js %{buildroot}%{mozillalibdir}/defaults/profile/prefs.js |
315 |
cat << EOF >> %{buildroot}%{mozillalibdir}/defaults/profile/prefs.js |
316 |
user_pref("browser.EULA.override", true); |
317 |
user_pref("browser.shell.checkDefaultBrowser", false); |
318 |
user_pref("browser.startup.homepage", "file:///usr/share/indexhtml/index.html"); |
319 |
user_pref("app.update.auto", false); |
320 |
user_pref("app.update.enabled", false); |
321 |
user_pref("app.update.autoInstallEnabled", false); |
322 |
user_pref("browser.showQuitWarning", true); |
323 |
EOF |
324 |
|
325 |
# display icon for Firefox button |
326 |
%{__mkdir_p} %{buildroot}%{mozillalibdir}/defaults/profile/chrome |
327 |
cat << EOF > %{buildroot}%{mozillalibdir}/defaults/profile/chrome/userChrome.css |
328 |
#appmenu-toolbar-button { |
329 |
list-style-image: url("chrome://branding/content/icon16.png"); |
330 |
} |
331 |
EOF |
332 |
|
333 |
# files in this directory are read on every startup, and can change/add |
334 |
# preferences for existing profiles |
335 |
# extensions.autoDisableScopes is a new preference added in firefox 8 |
336 |
# it defines "scopes" where newly installed addons are disabled by default |
337 |
# this is an additive bit field, and the value defaults to 15 (1+2+4+8) |
338 |
# we need to remove system scope (8) from it so language packs and other addons |
339 |
# which are installed systemwide won't get marked as 3rd party and disabled |
340 |
# documentation: http://kb.mozillazine.org/About:config_entries#Extensions. |
341 |
# or in toolkit/mozapps/extensions/AddonManager.jsm |
342 |
# we also need to disable the "disable addon selection dialog" |
343 |
cat << EOF > %{buildroot}%{mozillalibdir}/defaults/pref/mga.js |
344 |
pref("extensions.autoDisableScopes", 0); |
345 |
pref("extensions.shownSelectionUI", true); |
346 |
EOF |
347 |
|
348 |
# use the system myspell dictionaries |
349 |
rm -fr %{buildroot}%{mozillalibdir}/dictionaries |
350 |
ln -s %{_datadir}/hunspell %{buildroot}%{mozillalibdir}/dictionaries |
351 |
|
352 |
# (lm) touch and %ghost bookmarks.html to a proper uninstall |
353 |
touch %{buildroot}%{mozillalibdir}/defaults/profile/bookmarks.html |
354 |
|
355 |
%find_lang %{name} |
356 |
|
357 |
mkdir -p %{buildroot}%{_sys_macros_dir} |
358 |
cat <<FIN >%{buildroot}%{_sys_macros_dir}/%{name}.macros |
359 |
# Macros from %{name} package |
360 |
%%firefox_major %{major} |
361 |
%%firefox_epoch %{ff_epoch} |
362 |
%%firefox_version %{major}%{?prel:-0.%prel} |
363 |
%%firefox_mozillapath %{mozillalibdir} |
364 |
%%firefox_pluginsdir %{pluginsdir} |
365 |
%%firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\} |
366 |
%%firefox_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{firefox_appid}; else echo %%{_libdir}/mozilla/extensions/%%{firefox_appid}; fi) |
367 |
FIN |
368 |
|
369 |
%pre |
370 |
if [ -d %{mozillalibdir}/dictionaries ]; then |
371 |
rm -fr %{mozillalibdir}/dictionaries |
372 |
fi |
373 |
|
374 |
%post |
375 |
if [ ! -r /etc/sysconfig/oem ]; then |
376 |
case `grep META_CLASS /etc/sysconfig/system` in |
377 |
*powerpack) bookmark="mozilla-powerpack.html" ;; |
378 |
*desktop) bookmark="mozilla-one.html";; |
379 |
*) bookmark="mozilla-download.html";; |
380 |
esac |
381 |
ln -s -f ../../../../share/mga/bookmarks/mozilla/$bookmark %{mozillalibdir}/defaults/profile/bookmarks.html |
382 |
fi |
383 |
|
384 |
%files -f %{name}.lang |
385 |
%{_bindir}/%{name} |
386 |
%{_bindir}/mozilla-firefox |
387 |
%{_iconsdir}/hicolor/*/apps/*.png |
388 |
%{_miconsdir}/%{name}.png |
389 |
%{_iconsdir}/%{name}.png |
390 |
%{_liconsdir}/%{name}.png |
391 |
%{_datadir}/applications/*.desktop |
392 |
%{_libdir}/%{name}-%{major}* |
393 |
%ghost %{mozillalibdir}/defaults/profile/bookmarks.html |
394 |
%dir %{_libdir}/mozilla |
395 |
%dir %{pluginsdir} |
396 |
%dir %{_libdir}/mozilla/extensions/%{firefox_appid} |
397 |
%dir %{_datadir}/mozilla/extensions/%{firefox_appid} |
398 |
|
399 |
%files devel |
400 |
%{_sys_macros_dir}/%{name}.macros |