File chromium.spec of Package chromium
# Thanks to malcolmlewis for help with this script
# Thanks to Tom "spot" Callaway for much of the patchwork
# Thanks to jhaygood for most of the icu patch
# norootforbuild
%define svn_rev 70841
%define v8_ver 3.0.6.0
Name: chromium
Summary: Google's opens source browser project
Version: 10.0.633.0
Release: 1
License: BSD
Group: Productivity/Networking/Web/Browsers
Source0: %{name}.%{version}.svn%{svn_rev}.tar.lzma
## The following are included for source reasons only
# Custom build tools for chromium, hammer is a fancy front-end for scons
Source1: http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz
# Script used to create the tar.lzma archive from the daily tarball downloadable at http://build.chromium.org/buildbot/archives/
Source2: repack_chromium_archive.sh
# Script used to create the tar.lzma archive from a checked out source
Source3: pack_chromium_source.sh
Source8: ffmpeg-0.6-headers.tar.bz2
#Source10: chromium.desktop
# Patch template which adds vendor to user agent
Source20: chromium-vendor.patch.in
Source30: master_preferences
Source31: default_bookmarks.html
Source99: chrome-wrapper
Source100: chromium-browser.sh
Source101: chromium-browser.desktop
Source102: chromium-browser.xml
Source103: chromium-browser-rpmlintrc
Provides: chromium-browser = %{version}
Provides: chromium-based-browser = %{version}
Obsoletes: chromium-browser < %{version}
## Start Patches
# Many changes to the gyp systems so we can use system libraries
# My first ever patch set. I hope I did well.
Patch3: chromium-gyp-system-icu.patch
Patch4: chromium-no-sqlite-debug.patch
Patch5: chromium-gyp-system-04-nss-nspr.patch
Patch7: chromium-codechanges-nss-nspr.patch
Patch8: chromium-codechanges-zlib.patch
Patch12: chromium-no-test-sources.patch
Patch13: chromium-no-courgette.patch
Patch14: chromium-master-prefs-path.patch
Patch17: chromium-system-glew.patch
Patch18: chromium-system-expat.patch
Patch19: chromium-system-zlib.patch
Patch20: chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch
Patch21: chromium-7.0.542.0-media-probe.patch
%ifarch %{ix86}
Patch23: chromium-disable-mmx.patch
%endif
Patch25: tcmalloc-factory.patch
Patch26: chromium-remoting-build-fix.diff
Patch28: chromium-7.0.500.0-system-speex.patch
Patch29: chromium-7.0.510.0-system-ffmpeg.patch
Patch30: chromium-7.0.510.0-fstat.patch
Patch32: chromium-7.0.542.0-system-libvpx.patch
Patch34: chromium-7.0.542.0-codechanges-system-minizip-v8.patch
# Shared Library patches
Patch60: chromium-sharedlibfixes.patch
#Patch61: chromium-shared-chromiumthreading.patch
Patch62: chromium-norpath.patch
Patch63: chromium-6.0.406.0-system-gyp-v8.patch
# Patches for MeeGo Netbook
Patch80: chromium-browser-window-focus.patch
Patch81: chromium-20100319-default-browser-setting.patch
Patch82: chromium-20100506-expose-chromium-browser-api.patch
Patch83: chromium-fix-toolbar-icon-size.patch
%if %suse_version > 1130
BuildRequires: libstdc++45
%endif
BuildRequires: gcc gcc-c++ libstdc++-devel libevent openssl-devel
BuildRequires: pkg-config python python-xml perl bison flex gperf wdiff update-desktop-files lzma
BuildRequires: mozilla-nss-devel alsa-devel gtk2-devel glib2-devel cairo-devel >= 1.6
BuildRequires: mozilla-nspr-devel gconf2-devel freetype2-devel dbus-1-devel libxslt-devel libxml2-devel
BuildRequires: libjpeg-devel zlib-devel libbz2-devel cups-devel libzip-devel
BuildRequires: fdupes libexpat-devel
BuildRequires: Mesa-devel hunspell-devel
BuildRequires: libpng-devel sqlite3-devel libgnutls-devel
BuildRequires: desktop-file-utils
BuildRequires: v8-devel = %{v8_ver}
BuildRequires: libvpx-devel
%if 0%{?suse_version} > 1120
BuildRequires: libgnome-keyring-devel
%else
BuildRequires: gnome-keyring-devel
%endif
%if 0%{?suse_version} > 1130
BuildRequires: python-devel
%endif
%if 0%{?suse_version} >= 1110
BuildRequires: libicu-devel >= 4.0
BuildRequires: libevent-devel
%endif
BuildRequires: speex-devel
Requires: alsa xdg-utils
Requires: chromium-libs = %{version}-%{release}
# shouldn't be required to name all dependencies
# Requires: mozilla-nss mozilla-nspr gtk2 glib2 cairo >= 1.6 freetype2 dbus-1 alsa v8 >= 1.3.15
# Recommends the ffmpeg libraries (available from packman)
Recommends: chromium-ffmpeg = %{version}
%if 0%{?suse_version} < 1120
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%endif
%description
Chromium is the open-source project behind Google Chrome. We invite you to join us in our effort to help build a safer, faster, and more stable way for all Internet users to experience the web, and to create a powerful platform for developing a new generation of web applications.
%package libs
Summary: Shared libraries for chromium
Group: System/Libraries
Requires: v8 = %{v8_ver}
%description libs
This package contains the shared libraries that chromium depends on. Some of
these libraries are unique to chromium, others are forked versions of system
libraries.
%package devel
Summary: Header file for chromium browser
Group: Development/Libraries
Requires: chromium-libs = %{version}-%{release}
%description devel
This package contains the header files and pc file of chromium browser for
applications which will use chromium browser APIs.
%prep
lzma -cd %{SOURCE0} | tar xf -
%setup -D -T -n %{name}-suse
#%patch60 -p1
#%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch80 -p1
#%patch81 -p1
%patch82 -p1
%patch83 -p1
# use system libicu only if >= 4.0
%if 0%{?suse_version} >= 1110
%patch3 -p1
%endif
%patch4 -p1
%patch5 -p1
%patch7 -p1
%patch8 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%if 0%{?suse_version} > 1120
%patch25 -p1
%endif
%ifarch %{ix86}
%patch23 -p1
%endif
%patch26 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch32 -p1
%patch34 -p1
pushd src/third_party/ffmpeg/
tar xf %{SOURCE8}
popd
rm -rf src/third_party/libvpx/ src/third_party/speex/
# apply vendor patch after substitution
sed "s:RPM_VERSION:%{version}:" %{SOURCE20} | patch -p0
%build
## create make files
PARSED_OPT_FLAGS=`echo \'$RPM_OPT_FLAGS -DUSE_SYSTEM_LIBEVENT -fPIC -fno-ipa-cp -fno-strict-aliasing \' | sed "s/ /',/g" | sed "s/',/', '/g"`
for i in src/build/common.gypi; do
sed -i "s|'-march=pentium4',||g" $i
sed -i "s|'-msse2',||g" $i
sed -i "s|'-mfpmath=sse',||g" $i
sed -i "s|'-O<(debug_optimize)',||g" $i
sed -i "s|'-m32',||g" $i
sed -i "s|'-fno-exceptions',|$PARSED_OPT_FLAGS|g" $i
sed -i "s|'-Werror'|'-Wno-error'|g" $i
done
# '
pushd src
./build/gyp_chromium -f make build/all.gyp \
-Dlinux_sandbox_path=%{_libdir}/chromium/chrome-sandbox \
-Dlinux_sandbox_chrome_path=%{_libdir}/chromium/chromium-browser \
-Duse_system_ffmpeg=1 \
-Duse_system_zlib=1 \
-Duse_system_libpng=1 \
-Duse_system_bzip2=1 \
-Duse_system_libbz2=1 \
-Duse_system_libjpeg=1 \
-Duse_system_libxml=1 \
-Duse_system_libxslt=1 \
-Duse_system_libevent=1 \
-Duse_system_vpx=1 \
-Dproprietary_codecs=1 \
-Djavascript_engine=v8 \
-Dlibrary=shared_library \
-Dlinux_fpic=1 \
%ifarch %{ix86}
-Ddisable_sse2=1 \
%endif
-Duse_system_icu=1 \
%ifarch x86_64
-Dtarget_arch=x64 \
%endif
-Dno_strict_aliasing=1 -Dgcc_version=44 \
-Drelease_extra_cflags=-fPIC
make -r %{?_smp_mflags} chrome BUILDTYPE=Release
popd
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_bindir}
install -m 755 %{SOURCE100} %{buildroot}%{_bindir}/chromium
# x86_64 capable systems need this
sed -i "s|/usr/lib/chromium|%{_libdir}/chromium|g" %{buildroot}%{_bindir}/chromium
mkdir -p %{buildroot}%{_libdir}/chromium/
mkdir -p %{buildroot}%{_mandir}/man1/
pushd src/out/Release
cp -a chrome.pak locales resources xdg-settings %{buildroot}%{_libdir}/chromium/
cp -a resources.pak %{buildroot}%{_libdir}/chromium/
cp -a chrome %{buildroot}%{_libdir}/chromium/chromium
cp -a lib.target/lib*.so %{buildroot}%{_libdir}/chromium/
cp -a lib.host/lib*.so %{buildroot}%{_libdir}/chromium/
cp -a chrome.1 %{buildroot}%{_mandir}/man1/chrome.1
cp -a chrome.1 %{buildroot}%{_mandir}/man1/chromium.1
%fdupes %{buildroot}%{_mandir}/man1/
popd
# devel package install
mkdir -p %{buildroot}%{_libdir}/chromium/include
pushd src
find base -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find app -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find chrome -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find skia -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find build -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find googleurl -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find ipc -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find testing -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find net -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find third_party/skia -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find third_party/WebKit -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find webkit -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
find gfx -name "*.h" -exec cp --parents {} %{buildroot}%{_libdir}/chromium/include \;
popd
find %{buildroot}%{_libdir}/chromium/include -name "*.h" -exec chmod 644 {} \;
%fdupes %{buildroot}%{_libdir}/chromium/include
mkdir -p %{buildroot}%{_libdir}/pkgconfig
cat <<EOF > %{buildroot}/%{_libdir}/pkgconfig/chromium-browser.pc
Name: Chromium browser
Description: Chromium browser development package
Version: 1.0.1
Libs: -L%{_libdir}/chromium -lapp_base -lappcache -lbase_i18n -lbase -lblob -lbrowser -lcacheinvalidation -lchrome_gpu -lchromoting_base -lchromoting_client -lchromoting_host -lchromoting_jingle_glue -lchromoting_protocol -lchromotocol_proto_lib -lcld -lcommon_constants -lcommon_net -lcommon -ldatabase -ldebugger -ldefault_plugin -ldynamic_annotations -lffmpeg -lfileapi -lgfx -lglue -lgoogleurl -lgtest -lharfbuzz_interface -lharfbuzz -lhttp_listen_socket -lhunspell -liccjpeg -lil -linstaller_util -lipc -ljingle_p2p -ljingle -lmedia -lmodp_b64 -lnet_base -lnet -lnotifier -lomx_wrapper -lots -lpcre -lppapi_plugin -lplugin -lprinting -lprofile_import -lprotobuf_lite -lrenderer -lsandbox -lsdch -lservice -lskia_opts -lskia -lsqlite3 -lsrtp -lssl_host_info -lssl -lsymbolize -lsyncapi -lsync_notifier -lsync -ltrace_proto_lib -lundoview -lutility -lwebcore_bindings -lwebcore_html -lwebcore_platform -lwebcore_remaining -lwebcore_svg -lwebkit -lwebkit_user_agent -lwebp -lworker -lwtf -lxdg_mime -lzlib
Cflags: -I%{_libdir}/chromium/include -I%{_libdir}/chromium/include/skia/config
EOF
mkdir -p %{buildroot}%{_datadir}/pixmaps/
cp -a src/chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/pixmaps/chromium-browser.png
mkdir -p %{buildroot}%{_datadir}/applications/
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE101}
mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
cp -a %{SOURCE102} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
# link to browser plugin path. Plugin patch doesn't work. Why?
%{__mkdir_p} %{buildroot}%{_libdir}/browser-plugins
pushd %{buildroot}%{_libdir}/%{name}
%{__ln_s} %{_libdir}/browser-plugins plugins
# Install the master_preferences file
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/%{name}
install -m 0644 %{SOURCE31} %{buildroot}%{_sysconfdir}/%{name}
%clean
%{__rm} -rf %{buildroot}
# Files!
%files
%defattr(-,root,root,-)
%config %{_sysconfdir}/%{name}
%dir %{_datadir}/gnome-control-center
%dir %{_datadir}/gnome-control-center/default-apps
%{_bindir}/chromium
%{_libdir}/chromium/chromium
%{_libdir}/chromium/plugins/
%{_libdir}/chromium/resources/
%{_libdir}/chromium/xdg-settings
%{_mandir}/man1/chrom*
%{_datadir}/pixmaps/chromium-browser.png
%{_datadir}/applications/*.desktop
%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
%files libs
%defattr(-,root,root,-)
%dir %{_libdir}/chromium/
%{_libdir}/chromium/chrome.pak
%{_libdir}/chromium/resources.pak
%{_libdir}/chromium/locales/
%{_libdir}/chromium/lib*.so
%files devel
%defattr(-,root,root,-)
%{_libdir}/chromium/include/
%{_libdir}/pkgconfig/chromium-browser.pc
%changelog