LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File chromium.spec of Package chromium.257 (Project openSUSE:12.1:Update)

# spec file for package chromium
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/

%define v8_ver
%define svn_revision 119632

Name:           chromium
Version:        18.0.1022.0
Release:        0
Summary:        Google's opens source browser project
License:        BSD-3-Clause and LGPL-2.1+
Group:          Productivity/Networking/Web/Browsers
Url:            http://code.google.com/p/chromium/
Source0:        %{name}.%{version}.svn%{svn_revision}.tar.lzma
%if 0%{?suse_version} <= 1140
Source1:        %{name}.easy
Source2:        %{name}-rpmlintrc
Source8:        ffmpeg-0.6-headers.tar.bz2
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
Source104:      chromium-icons.tar.bz2
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
# PATCH-FIX-OPENSUSE Fix build with GCC 4.6
Patch1:         chromium-gcc46.patch
# PATCH-FIX-OPENSUSE patches in system zlib library
Patch8:         chromium-codechanges-zlib.patch
# PATCH-FIX-OPENSUSE removes build part for courgette
Patch13:        chromium-no-courgette.patch
# PATCH-FIX-OPENSUSE enables reading of the master preference
Patch14:        chromium-master-prefs-path.patch
# PATCH-FIX-OPENSUSE patches in system glew library
Patch17:        chromium-system-glew.patch
# PATCH-FIX-OPENSUSE patches in system expat library
Patch18:        chromium-system-expat.patch
# PATCH-FIX-OPENSUSE disables the requirement for ffmpeg
Patch20:        chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch
# PATCH-FIX-OPENSUSE disable the use of tcmallic function
Patch25:        tcmalloc-factory.patch
# PATCH-FIX-OPENSUSE make sure that Chrome remoting is linking against the system libvpx
Patch26:        chromium-remoting-build-fix.diff
# PATCH-FIX-OPENSUSE patches in system speex library
Patch28:        chromium-7.0.500.0-system-speex.patch
# PATCH-FIX-OPENSUSE patches in the system libvpx library
Patch32:        chromium-7.0.542.0-system-libvpx.patch
# PATCH-FIX-OPENSUSE remove the rpath in the libraries
Patch62:        chromium-norpath.patch
# PATCH-FIX-OPENSUSE patches in the system v8 library
Patch63:        chromium-6.0.406.0-system-gyp-v8.patch
# PATCH-FIX-UPSTREAM Add more charset aliases
Patch64:        chromium-more-codec-aliases.patch
%if 0%{?suse_version} > 1210
# PATCH-FIX-UPSTREAM Only include glib.h
Patch65:        chromium-new-glib.patch
# PATCH-FIX-OPENSUSE Compile the sandbox with -fPIE settings
Patch66:        chromium-sandbox-pie.patch

%if 0%{?suse_version} > 1210
BuildRequires:  libjpeg8-devel
BuildRequires:  Mesa-devel
BuildRequires:  alsa-devel
BuildRequires:  bison
BuildRequires:  cups-devel
BuildRequires:  desktop-file-utils
BuildRequires:  fdupes
BuildRequires:  flex
BuildRequires:  freetype2-devel
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  gperf
BuildRequires:  hunspell-devel
BuildRequires:  libbz2-devel
BuildRequires:  libevent
BuildRequires:  libexpat-devel
BuildRequires:  libgnutls-devel
BuildRequires:  libpng-devel
BuildRequires:  libstdc++-devel
BuildRequires:  libvpx-devel
BuildRequires:  libxslt-devel
BuildRequires:  libzip-devel
BuildRequires:  lzma
BuildRequires:  mozilla-nspr-devel
BuildRequires:  mozilla-nss-devel
BuildRequires:  krb5-devel
BuildRequires:  openssl-devel
BuildRequires:  pam-devel
BuildRequires:  pkg-config
%if 0%{?suse_version} > 1210
BuildRequires:  perl-Switch
BuildRequires:  perl(Switch)
BuildRequires:  pkgconfig(cairo) >= 1.6
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  dbus-1-glib-devel
BuildRequires:  pkgconfig(gconf-2.0)
BuildRequires:  pkgconfig(glib-2.0)
BuildRequires:  pkgconfig(gtk+-2.0)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  dbus-1-glib-devel
BuildRequires:  python
BuildRequires:  python-xml
BuildRequires:  sqlite3-devel
BuildRequires:  update-desktop-files
BuildRequires:  v8-devel = %{v8_ver}
BuildRequires:  wdiff
BuildRequires:  zlib-devel
BuildRequires:  libpulse-devel
BuildRequires:  libelf-devel
BuildRequires:  libgnome-keyring-devel
BuildRequires:  python-devel
BuildRequires:  libevent-devel
BuildRequires:  libicu-devel >= 4.0
BuildRequires:  speex-devel
BuildRequires:  hicolor-icon-theme
%if 0%{?suse_version} < 1210
BuildRequires:  libudev-devel
# For NaCl
%ifarch x86_64
BuildRequires:  glibc-32bit
BuildRequires:  gcc-c++-32bit
BuildRequires:  zlib-32bit

Requires:       alsa
Requires:       xdg-utils
Requires:       libv8-3 = %{v8_ver}
Requires:       hicolor-icon-theme
Requires:       update-alternatives

Requires(pre):  permissions

Recommends:     Chromium-password = %{version}
Requires:       %{name}-suid-helper = %{version}

# Recommends the chromium-ffmpeg library (available from packman)
Recommends:     chromium-ffmpeg = %{version}

%if 0%{?suse_version} < 1120
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

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 desktop-kde

Summary:        Update to chromium to use KDE's kwallet to store passwords
Group:          Productivity/Networking/Web/Browsers
Supplements:    packageand(chromium:kdebase4-session)
Conflicts:      chromium-desktop-gnome
Provides:       Chromium-password = %{version}
Requires:       chromium = %{version}

%description desktop-kde
By using the openSUSE update-alternatives the password store for Chromium is changed to utilize
KDE's kwallet. Please be aware that by this change the old password are no longer accessible and
are also not converted to kwallet.

%package desktop-gnome

Summary:        Update to chromium to use Gnome keyring to store passwords
Group:          Productivity/Networking/Web/Browsers
Supplements:    packageand(chromium:gnome-session)
Conflicts:      chromium-desktop-kde
Provides:       Chromium-password = %{version}
Requires:       chromium = %{version}

%description desktop-gnome
By using the openSUSE update-alternatives the password store for Chromium is changed to utilize
Gnome's Keyring. Please be aware that by this change the old password are no longer accessible and
are also not converted to Gnome's Keyring.

%package suid-helper

Summary:        A suid helper to let a process willingly drop privileges on Linux
Group:          Productivity/Networking/Web/Browsers
Url:            http://code.google.com/p/setuid-sandbox/
Requires(pre):  permissions

%description suid-helper
t will allow a process to execute a target executable that will be able to drop privileges:

 * The suid sandbox will create a new PID namespace or will switch uid/gid to isolate the process
 * a helper process, sharing the filesystem view of the existing process, will be created.  It
   will accept a request to chroot() the process to an empty directory

This is convenient because an executable can be launched, load libraries and open files and get
chroot()-ed to an empty directory when it wants to drop filesystem access.

lzma -cd %{SOURCE0} | tar xf -
%setup -D -T -n %{name}-suse

%patch1 -p1
%patch62 -p1
%patch63 -p1
%if 0%{?suse_version} > 1210
%patch65 -p1
%patch8 -p1
%patch13 -p1
%patch14 -p1
%patch17 -p1
%patch18 -p1
%patch20 -p1
%if 0%{?suse_version} < 1210
%patch25 -p1
%patch26 -p1
%patch28 -p1
%patch32 -p1
%patch66 -p1

echo "%{svn_revision}" > src/build/LASTCHANGE.in

pushd src/third_party/ffmpeg/
tar xf %{SOURCE8}

# apply vendor patch after substitution
sed "s:RPM_VERSION:%{version}:" %{SOURCE20} | patch -p0

# Make sure that the requires legal files can be found
cp -a src/AUTHORS src/LICENSE .


## create make files

PARSED_OPT_FLAGS=`echo \'%{optflags} -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
%ifnarch x86_64
        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
# '
%if 0%{?suse_version} <= 1120
for i in src/build/common.gypi; do
        sed -i "s|'-Wno-unused-result',||g" $i

pushd src

./build/gyp_chromium -f make build/all.gyp \
-Dlinux_sandbox_path=%{_prefix}/lib/chrome_sandbox \
-Dlinux_sandbox_chrome_path=%{_libdir}/chromium/chromium \
-Duse_openssl=0 \
-Duse_system_ffmpeg=1 \
-Duse_system_zlib=1 \
-Duse_system_libpng=1 \
-Duse_system_bzip2=1 \
-Duse_system_libbz2=1 \
%if 0%{?suse_version} > 1210
-Duse_system_libjpeg=0 \
-Duse_system_libjpeg=0 \
-Duse_system_libxml=1 \
-Duse_system_libxslt=1 \
-Duse_system_libevent=1 \
-Duse_system_vpx=1 \
-Dremove_webcore_debug_symbols=1 \
-Duse_system_v8=1 \
-Dproprietary_codecs=1 \
-Dlinux_fpic=1 \
%ifnarch x86_64
-Ddisable_sse2=1 \
%ifarch x86_64
-Dtarget_arch=x64 \

make -r %{?_smp_mflags} chrome V=1 BUILDTYPE=Release

# Build the required SUID_SANDBOX helper
make -r %{?_smp_mflags} chrome_sandbox V=1 BUILDTYPE=Release


mkdir -p %{buildroot}%{_libdir}/chromium/
%ifarch x86_64
mkdir -p %{buildroot}%{_prefix}/lib/
install -m 755 %{SOURCE100} %{buildroot}%{_libdir}/chromium/chromium-generic
# x86_64 capable systems need this
sed -i "s|/usr/lib/chromium|%{_libdir}/chromium|g" %{buildroot}%{_libdir}/chromium/chromium-generic

%if 0%{?suse_version} <= 1140
# Set the permissions file for distro version equal or lower than 11.4. (bnc#718016)
mkdir -p %{buildroot}%{_sysconfdir}/permissions.d
install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/permissions.d/chromium

#update the password-store settings for each alternative
sed "s|password-store=detect|password-store=kwallet|g" %{buildroot}%{_libdir}/chromium/chromium-generic > %{buildroot}%{_libdir}/chromium/chromium-kde
sed "s|password-store=detect|password-store=gnome|g" %{buildroot}%{_libdir}/chromium/chromium-generic > %{buildroot}%{_libdir}/chromium/chromium-gnome
mkdir -p %{buildroot}%{_mandir}/man1/
pushd src/out/Release

cp -a chrome_sandbox %{buildroot}%{_prefix}/lib/
cp -a chrome.pak locales xdg-mime %{buildroot}%{_libdir}/chromium/

# Patch xdg-settings to use the chromium version of xdg-mime as that the system one is not KDE4 compatible
sed "s|xdg-mime|%{_libdir}/chromium/xdg-mime|g" xdg-settings > %{buildroot}%{_libdir}/chromium/xdg-settings

cp -a resources.pak %{buildroot}%{_libdir}/chromium/
cp -a chrome %{buildroot}%{_libdir}/chromium/chromium
cp -a chrome.1 %{buildroot}%{_mandir}/man1/chrome.1
cp -a chrome.1 %{buildroot}%{_mandir}/man1/chromium.1
%fdupes %{buildroot}%{_mandir}/man1/

# NaCl
cp -a nacl_helper %{buildroot}%{_libdir}/chromium/
cp -a nacl_helper_bootstrap %{buildroot}%{_libdir}/chromium/
cp -a nacl_irt_*.nexe %{buildroot}%{_libdir}/chromium/
cp -a libppGoogleNaClPluginChrome.so %{buildroot}%{_libdir}/chromium/

mkdir -p %{buildroot}%{_datadir}/icons/
pushd %{buildroot}%{_datadir}/icons/
tar -xjf %{SOURCE104}
mv oxygen hicolor

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}

rm -rf %{buildroot}

if [ -f %{_bindir}/chromium -a ! -L %{_bindir}/chromium ] ; then rm -f %{_bindir}/chromium

# Add snipplets to update the GTK cache on package install.

%verifyscript suid-helper
%verify_permissions -e %{_prefix}/lib/chrome_sandbox 

%post suid-helper
%if 0%{?suse_version} > 1130
%set_permissions %{_prefix}/lib/chrome_sandbox

%if 0%{?suse_version} >= 1140

update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-generic 10

update-alternatives --remove all chromium

update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-generic 10

update-alternatives --remove all chromium

%post desktop-kde
update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-kde 15
update-alternatives --auto chromium

%postun desktop-kde
update-alternatives --remove %{_bindir}/chromium %{_libdir}/chromium/chromium-kde
update-alternatives --auto chromium

%post desktop-gnome
update-alternatives --install %{_bindir}/chromium chromium %{_libdir}/chromium/chromium-gnome 15
update-alternatives --auto chromium

%postun desktop-gnome
update-alternatives --remove %{_bindir}/chromium %{_libdir}/chromium/chromium-gnome
update-alternatives --auto chromium

# Files!

%config %{_sysconfdir}/%{name}
%dir %{_datadir}/gnome-control-center
%dir %{_datadir}/gnome-control-center/default-apps
%dir %{_libdir}/chromium/
%attr(755,root,root) %{_libdir}/chromium/xdg-settings
%attr(755,root,root) %{_libdir}/chromium/xdg-mime

%files desktop-kde
%attr(755, root, root) %{_libdir}/chromium/chromium-kde

%files desktop-gnome
%attr(755, root, root) %{_libdir}/chromium/chromium-gnome

%files suid-helper
%if 0%{?suse_version} <= 1140
%config %{_sysconfdir}/permissions.d/chromium
%verify(not mode) %{_prefix}/lib/chrome_sandbox