/[packages]/cauldron/firefox/current/SPECS/firefox.spec
ViewVC logotype

Contents of /cauldron/firefox/current/SPECS/firefox.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 708218 - (show annotations) (download)
Sun Sep 21 12:55:22 2014 UTC (6 years ago) by doktor5000
File size: 16401 byte(s)
- disable cpp exceptions (from Fedora) when building with gcc
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 mageia 4.
11 # /!\ Do not update more than FF 24 for mga4. /!\
12
13 %define use_clang 0
14
15 #temporary measure to test build against gcc
16 %if "%use_clang" == "0"
17 %define _disable_ld_no_undefined 1
18 %endif
19
20 %define major 31
21 %define ff_epoch 0
22 # (tpg) set version HERE !!!
23 %define extra esr
24 #define extra %nil
25 %define realver %{version}%extra
26 %define firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
27
28 # (tpg) MOZILLA_FIVE_HOME
29 %define mozillalibdir %{_libdir}/%{name}-%{version}
30 %define pluginsdir %{_libdir}/mozilla/plugins
31
32 # libxul.so is provided by libxulrunnner2.0.
33 %global __requires_exclude libxul.so
34
35 # this seems fragile, so require the exact version or later (#58754)
36 %define sqlite3_version %(pkg-config --modversion sqlite3 &>/dev/null && pkg-config --modversion sqlite3 2>/dev/null || echo 0)
37 %define nss_version %(pkg-config --modversion nss &>/dev/null && pkg-config --modversion nss 2>/dev/null || echo 0)
38 %define nspr_version %(pkg-config --modversion nspr &>/dev/null && pkg-config --modversion nspr 2>/dev/null || echo 0)
39
40 %define _use_syshunspell 1
41
42
43 %define update_channel %{extra}%major
44
45 Summary: Next generation web browser
46 Name: firefox
47 Version: %{major}.1.0
48 Epoch: %{ff_epoch}
49 Release: %mkrel 4
50 License: MPLv1+
51 Group: Networking/WWW
52 Url: http://www.mozilla.org/firefox/organizations/
53 Source0: ftp://ftp.mozilla.org/pub/mozilla.org/%{name}/releases/%{realver}/source/%{name}-%{realver}.source.tar.bz2
54 Source4: %{name}.desktop
55 Source8: %{name}-searchengines-duckduckgo.xml
56 Source9: kde.js
57 Patch1: firefox-6.0-lang.patch
58 Patch2: firefox-vendor.patch
59 Patch4: firefox-28.0-nss-binary.patch
60 # (OpenSuse) add patch to make firefox always use /usr/bin/firefox when "make firefox
61 # the default web browser" is used fix mdv bug#58784
62 Patch5: firefox-31.0-appname.patch
63 Patch6: firefox-7.0-fix-str-fmt.patch
64 Patch8: firefox-disable-check-default-browser.patch
65 Patch10: firefox-3.5.3-default-mail-handler.patch
66 # Patches for kde integration of FF
67 Patch11: https://build.opensuse.org/package/rawsourcefile/mozilla:Factory/MozillaFirefox/mozilla-kde.patch
68 # (fwang) please modify patch12 with `sed -e 's/MozillaFirefox/firefox/'` to fit our desktop filename
69 Patch12: https://build.opensuse.org/package/rawsourcefile/mozilla:Factory/MozillaFirefox/firefox-kde.patch
70 Patch13: firefox-13-fix-nspr-include.patch
71 Patch37: firefox-17.0-nss-version.patch
72 # taken from http://hg.mozilla.org/mozilla-central/rev/b0599f36be18
73 # try to fix "GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed" msgs
74 # also see https://bugzilla.mozilla.org/show_bug.cgi?id=672671
75 # also see https://bugzilla.mozilla.org/show_bug.cgi?id=833117
76 # also see https://bugzilla.gnome.org/show_bug.cgi?id=674885
77 Patch38: firefox_glib.patch
78 Patch39: firefox-build.patch
79 BuildRequires: gtk+2-devel
80 BuildRequires: unzip
81 BuildRequires: zip
82 BuildRequires: pkgconfig(xinerama)
83 BuildRequires: pkgconfig(xscrnsaver)
84 BuildRequires: libjpeg-devel
85 BuildRequires: pkgconfig(libpng) >= 1.4
86 BuildRequires: pkgconfig(zlib)
87 BuildRequires: pkgconfig(gio-2.0)
88 BuildRequires: pkgconfig(libIDL-2.0)
89 BuildRequires: makedepend
90 BuildRequires: pkgconfig(nss) >= 3.15.2
91 BuildRequires: nss-static-devel
92 BuildRequires: pkgconfig(nspr) >= 4.10.6
93 BuildRequires: pkgconfig(libstartup-notification-1.0)
94 BuildRequires: pkgconfig(dbus-glib-1)
95 BuildRequires: python
96 BuildRequires: pkgconfig(sqlite3) >= 3.7.17
97 %ifnarch %arm %mips
98 BuildRequires: valgrind
99 %if %{mgaversion} >= 4
100 BuildRequires: java-devel
101 BuildRequires: jpackage-utils
102 %else
103 BuildRequires: java-rpmbuild
104 %endif
105 BuildRequires: yasm >= 1.0.1
106 %endif
107 %ifarch %arm
108 BuildRequires: pkgconfig(libffi)
109 %endif
110 BuildRequires: rootcerts >= 1:20130411.00
111 BuildRequires: pkgconfig(xt)
112 %if %_use_syshunspell
113 BuildRequires: pkgconfig(hunspell)
114 %endif
115 BuildRequires: doxygen
116 BuildRequires: wget
117 BuildRequires: pkgconfig(libnotify)
118 BuildRequires: pkgconfig(cairo) >= 1.10
119 BuildRequires: pkgconfig(dri)
120 BuildRequires: pkgconfig(libvpx)
121 BuildRequires: autoconf2.1
122 BuildRequires: libiw-devel
123 BuildRequires: python-virtualenv
124 BuildRequires: icu-devel
125 BuildRequires: pkgconfig(gstreamer-1.0)
126 BuildRequires: pkgconfig(gstreamer-allocators-1.0)
127 BuildRequires: pkgconfig(alsa)
128 BuildRequires: pkgconfig(libevent)
129 BuildRequires: pkgconfig(libproxy-1.0)
130 BuildRequires: pkgconfig(libpulse)
131 BuildRequires: pkgconfig(ogg)
132 BuildRequires: pkgconfig(opus)
133 BuildRequires: pkgconfig(theoradec)
134 BuildRequires: pkgconfig(vorbis)
135 %if "%use_clang" == "1"
136 BuildRequires: clang
137 %endif
138
139 Provides: %{name} = %{epoch}:%{version}
140 Provides: mozilla-firefox = %{epoch}:%{version}-%{release}
141 Provides: webclient
142
143 Requires: %{mklibname sqlite3_ 0} >= %{sqlite3_version}
144 Requires: %{mklibname nss 3} >= 2:%{nss_version}
145 Requires: %{mklibname nspr 4} >= 2:%{nspr_version}
146 Requires: indexhtml
147 Requires: xdg-utils
148 # fixes bug #42096
149 Requires: mailcap
150 Recommends: hunspell-en
151 %if %{mgaversion} >= 4
152 Requires: %{_lib}notify4
153 Requires: gstreamer1.0-libav
154 %endif
155 # make sure our default bookmarks are present
156 Requires: desktop-common-data
157 # try to fix mga#1344 (automatic installation of proper -l10n package)
158 # packages requiring locales-XX will be automatically preferred when locales-XX
159 # is already installed
160 Recommends: firefox-l10n
161
162 Recommends: %{_lib}canberra0
163 Recommends: %{_lib}cups2
164 Obsoletes: firefox-ext-weave-sync
165 Obsoletes: firefox-beta < 25
166
167 %description
168 The award-winning Web browser is now faster, more secure, and fully customizable
169 to your online life. With Firefox(R), we've added powerful new features that
170 make your online experience even better. It is an 'open source' product which is
171 freely available, and is acquiring a growing proportion of international web
172 browser usage.
173
174 Firefox claims to offer a more secure web browsing experience than other products,
175 with better protection against spyware and other Internet-based security threats.
176 It includes all the standard features of a modern web browser, like Internet
177 searching, tracking recently visited sites, setting up shortcuts to favourite
178 sites, customising the software behaviour and so on. Firefox also includes
179 features like 'tabbed browsing' (opening several web sites as sections within the
180 same window) and methods for controlling pop-up windows, cookies and downloaded
181 files.
182
183 %package devel
184 Summary: Development files for %{name}
185 Group: Development/Other
186 Obsoletes: firefox-beta-devel < 25
187
188 %description devel
189 Files and macros mainly for building Firefox extensions.
190
191 %prep
192 %if %{?extra}
193 %setup -q -n mozilla-%update_channel
194 %else
195 %setup -q -n mozilla-release
196 %endif
197 %patch1 -p1 -b .lang
198 %patch2 -p1 -b .vendor
199 %patch4 -p0 -b .nss
200 %patch5 -p1 -b .appname
201 %patch8 -p1 -b .disable-software-update
202 %patch10 -p1 -b .default-mail-handler
203 #patch11 -p1 -b .mozkde
204 #patch12 -p1 -b .ffkde
205
206 %patch37 -p0
207 #%patch38 -p1 -b .glib
208
209 pushd js/src
210 autoconf-2.13
211 popd
212 autoconf-2.13
213
214 # needed to regenerate certdata.c
215 pushd security/nss/lib/ckfw/builtins
216 perl ./certdata.perl < /etc/pki/tls/mozilla/certdata.txt
217 popd
218
219 %build
220 export MOZCONFIG=$PWD/mozconfig
221 cat << EOF > $MOZCONFIG
222 mk_add_options MOZILLA_OFFICIAL=1
223 mk_add_options BUILD_OFFICIAL=1
224 mk_add_options MOZ_MAKE_FLAGS="%{_smp_mflags}"
225 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
226 # -Werror=format-security causes build failures when -Wno-format is explicitly given
227 # for some sources
228 mk_add_options MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat"
229 ac_add_options --host=%{_host}
230 ac_add_options --target=%{_target_platform}
231 ac_add_options --enable-optimize="%{optflags}"
232 ac_add_options --prefix="%{_prefix}"
233 ac_add_options --libdir="%{_libdir}"
234 ac_add_options --sysconfdir="%{_sysconfdir}"
235 ac_add_options --mandir="%{_mandir}"
236 ac_add_options --includedir="%{_includedir}"
237 ac_add_options --datadir="%{_datadir}"
238 ac_add_options --with-system-nspr
239 ac_add_options --with-system-nss
240 ac_add_options --with-system-zlib
241 ac_add_options --with-system-libvpx
242 ac_add_options --with-system-libevent
243 #ac_add_options --with-system-harfbuzz
244 %if "%use_clang" == "0"
245 ac_add_options --disable-cpp-exceptions
246 %endif
247 ac_add_options --with-system-icu
248 ac_add_options --enable-webm
249 ac_add_options --enable-gio
250 ac_add_options --disable-gnomevfs
251 ac_add_options --disable-updater
252 ac_add_options --disable-tests
253 ac_add_options --disable-debug
254 ac_add_options --enable-official-branding
255 ac_add_options --enable-libproxy
256 %if %{mgaversion} >= 3
257 ac_add_options --with-system-png
258 %endif
259 ac_add_options --with-system-jpeg
260 ac_add_options --enable-system-cairo
261 ac_add_options --enable-system-sqlite
262 ac_add_options --enable-startup-notification
263 ac_add_options --enable-xinerama
264 ac_add_options --with-distribution-id=org.mageia
265 ac_add_options --disable-crashreporter
266 ac_add_options --enable-update-channel=%{update_channel}
267 ac_add_options --enable-gstreamer=1.0
268 %ifarch %arm
269 %if "%{_target_cpu}" != "armv7l"
270 ac_add_options --disable-methodjit
271 %endif
272 ac_add_options --enable-system-ffi
273 %endif
274 %ifnarch %arm %mips
275 ac_add_options --with-valgrind
276 ac_add_options --with-java-include-path=%{java_home}/include
277 ac_add_options --with-java-bin-path=%{java_home}/bin
278 %endif
279 ac_add_options --with-system-ogg
280 ac_add_options --enable-opus
281 ac_add_options --disable-webrtc
282 # use clang as gcc-4.9 fails to compile ff-31:
283 %if "%use_clang" == "1"
284 export CC="clang"
285 export CXX="clang++"
286 %endif
287
288 EOF
289
290 %ifarch %arm
291 export CFLAGS="-D__ARM_PCS $(echo %{optflags})"
292 export CXXFLAGS="$CFLAGS"
293 %endif
294
295 # use clang as gcc-4.9 fails to compile ff-31:
296 %if "%use_clang" == "1"
297 export CC="clang"
298 export CXX="clang++"
299 %endif
300
301 export LDFLAGS="%ldflags"
302 make -f client.mk build
303
304 %install
305 make -C %{_builddir}/obj/browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
306
307 # Copy files to buildroot
308 %{__mkdir_p} %{buildroot}%{mozillalibdir}
309 cp -rf %{_builddir}/obj/dist/firefox/* %{buildroot}%{mozillalibdir}
310
311 %{__mkdir_p} %{buildroot}%{_bindir}
312 ln -sf %{mozillalibdir}/firefox %{buildroot}%{_bindir}/firefox
313 pushd %{buildroot}%{_bindir}
314 ln -sf firefox mozilla-firefox
315 popd
316 mkdir -p %{buildroot}%{mozillalibdir}/browser/defaults/preferences/
317 install -m 644 %{SOURCE9} %{buildroot}%{mozillalibdir}/browser/defaults/preferences/kde.js
318
319 # Create and own %_libdir/mozilla/plugins & firefox extensions directories
320 %{__mkdir_p} %{buildroot}%{pluginsdir}
321 %{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_appid}
322 %{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_appid}
323
324 # (tpg) desktop entry
325 %{__mkdir_p} %{buildroot}%{_datadir}/applications
326 install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/applications/%{name}.desktop
327
328 # (tpg) icons
329 %{__cp} %{buildroot}%{mozillalibdir}/browser/chrome/icons/default/default16.png %{buildroot}/%{mozillalibdir}/browser/icons/
330 for i in 16 22 24 32 48 256; do
331 %{__mkdir_p} %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps
332 %{__install} -m 644 browser/branding/official/default$i.png %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps/%{name}.png ;
333 done
334 %{__mkdir_p} %{buildroot}{%{_liconsdir},%{_iconsdir},%{_miconsdir}}
335 ln -sf %{mozillalibdir}/browser/chrome/icons/default/default48.png %{buildroot}%{_liconsdir}/%{name}.png
336 ln -sf %{mozillalibdir}/browser/chrome/icons/default/default32.png %{buildroot}%{_iconsdir}/%{name}.png
337 ln -sf %{mozillalibdir}/browser/chrome/icons/default/default16.png %{buildroot}%{_miconsdir}/%{name}.png
338
339 # exclusions
340 rm -f %{buildroot}%{mozillalibdir}/README.txt
341 rm -f %{buildroot}%{mozillalibdir}/removed-files
342 rm -f %{buildroot}%{mozillalibdir}/precomplete
343
344 # this file is only used when creating a new user profile
345 install -D -m644 browser/app/profile/prefs.js %{buildroot}%{mozillalibdir}/browser/defaults/profile/prefs.js
346 cat << EOF >> %{buildroot}%{mozillalibdir}/browser/defaults/profile/prefs.js
347 user_pref("browser.EULA.override", true);
348 user_pref("browser.shell.checkDefaultBrowser", false);
349 user_pref("browser.startup.homepage", "file:///usr/share/indexhtml/index.html");
350 user_pref("app.update.auto", false);
351 user_pref("app.update.enabled", false);
352 user_pref("app.update.autoInstallEnabled", false);
353 user_pref("browser.showQuitWarning", true);
354 EOF
355
356 # display icon for Firefox button
357 %{__mkdir_p} %{buildroot}%{mozillalibdir}/browser/defaults/profile/chrome
358 cat << EOF > %{buildroot}%{mozillalibdir}/browser/defaults/profile/chrome/userChrome.css
359 #appmenu-toolbar-button {
360 list-style-image: url("chrome://branding/content/icon16.png");
361 }
362 EOF
363
364 # files in this directory are read on every startup, and can change/add
365 # preferences for existing profiles
366 # extensions.autoDisableScopes is a new preference added in firefox 8
367 # it defines "scopes" where newly installed addons are disabled by default
368 # this is an additive bit field, and the value defaults to 15 (1+2+4+8)
369 # we need to remove system scope (8) from it so language packs and other addons
370 # which are installed systemwide won't get marked as 3rd party and disabled
371 # documentation: http://kb.mozillazine.org/About:config_entries#Extensions.
372 # or in toolkit/mozapps/extensions/AddonManager.jsm
373 # we also need to disable the "disable addon selection dialog"
374 # (doktor5000) - path has changed since FF 21
375 # http://mike.kaply.com/2013/04/24/major-changes-coming-in-firefox-21/
376 cat << EOF > %{buildroot}%{mozillalibdir}/browser/defaults/preferences/mga.js
377 pref("general.useragent.locale", "chrome://global/locale/intl.properties");
378 pref("extensions.autoDisableScopes", 0);
379 pref("extensions.shownSelectionUI", true);
380 EOF
381 # FIXME: Add it back in mga.js when this search engine will be used by default.
382 # user_pref("browser.search.selectedEngine","duckduckgo.com");
383
384 # use the system myspell dictionaries
385 rm -fr %{buildroot}%{mozillalibdir}/dictionaries
386 ln -s %{_datadir}/hunspell %{buildroot}%{mozillalibdir}/dictionaries
387
388 # (lm) touch and %ghost bookmarks.html to a proper uninstall
389 touch %{buildroot}%{mozillalibdir}/browser/defaults/profile/bookmarks.html
390
391 %find_lang %{name}
392
393 # Add stuff to build a plugin to -devel
394 mkdir -p %{buildroot}%{_includedir}
395 cp -a dom/plugins/base/np*.h %{buildroot}%{_includedir}
396 mkdir -p %{buildroot}/%{_datadir}/pkgconfig
397 cat <<EOF >%{buildroot}/%{_datadir}/pkgconfig/mozilla-plugin.pc
398 Name: Mozilla Plug-In API
399 Description: Mozilla Plug-In API
400 Version: %{version}
401 Cflags: -I%{_includedir} -DXP_UNIX
402 EOF
403
404 mkdir -p %{buildroot}%{_sys_macros_dir}
405 cat <<FIN >%{buildroot}%{_sys_macros_dir}/%{name}.macros
406 # Macros from %{name} package
407 %%firefox_major %{version}
408 %%firefox_epoch %{ff_epoch}
409 %%firefox_version %{version}
410 %%firefox_mozillapath %{mozillalibdir}
411 %%firefox_pluginsdir %{pluginsdir}
412 %%firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
413 %%firefox_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{firefox_appid}; else echo %%{_libdir}/mozilla/extensions/%%{firefox_appid}; fi)
414 FIN
415 cp -f %{SOURCE8} %{buildroot}%{mozillalibdir}/browser/searchplugins/duckduckgo.xml
416
417 %pre
418 if [ -d %{mozillalibdir}/dictionaries ]; then
419 rm -fr %{mozillalibdir}/dictionaries
420 fi
421
422 %post
423 if [ ! -r /etc/sysconfig/oem ]; then
424 case `grep META_CLASS /etc/sysconfig/system` in
425 *powerpack) bookmark="mozilla-powerpack.html" ;;
426 *desktop) bookmark="mozilla-one.html";;
427 *) bookmark="mozilla-download.html";;
428 esac
429 ln -s -f %_prefix/share/mga/bookmarks/mozilla/$bookmark %{mozillalibdir}/browser/defaults/profile/bookmarks.html
430 fi
431
432 %files -f %{name}.lang
433 %{_bindir}/%{name}
434 %{_bindir}/mozilla-firefox
435 %{_iconsdir}/hicolor/*/apps/*.png
436 %{_miconsdir}/%{name}.png
437 %{_iconsdir}/%{name}.png
438 %{_liconsdir}/%{name}.png
439 %{_datadir}/applications/*.desktop
440 %{_libdir}/%{name}-%{version}*
441 %ghost %{mozillalibdir}/browser/defaults/profile/bookmarks.html
442 %dir %{_libdir}/mozilla
443 %dir %{pluginsdir}
444 %dir %{_libdir}/mozilla/extensions/%{firefox_appid}
445 %dir %{_datadir}/mozilla/extensions/%{firefox_appid}
446
447 %files devel
448 %{_sys_macros_dir}/%{name}.macros
449 %{_includedir}/np*.h
450 %{_datadir}/pkgconfig/mozilla-plugin.pc

  ViewVC Help
Powered by ViewVC 1.1.28