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
openSUSE Build Service is sponsored by