summaryrefslogtreecommitdiff
path: root/packaging/chromium.spec
blob: 37e35551821f0312dd452d1a8b4e0909960505cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
%bcond_with wayland

# the build process requires 32-bit base libraries to use the
# "*-nacl-gcc" binaries, but Tizen 64-bit images do not offer
# 32-bit packages at all. Check :
# https://bugs.tizen.org/jira/browse/PTREL-803 for details.
# So let's disable nacl for 64-bit now.
%define _disable_nacl 1

# speed up RPMs creation by using faster algorithms
%define _source_payload w3.gzdio
%define _binary_payload w3.gzdio

%if "%{NO_DEBUG}" == "1"
%define debug_package %{nil}
%define __debug_install_post %{nil}
%endif


Name:           chromium
Version:        38.0.2067.0
Release:        0
Summary:        Chromium is a very popular web browser
License:        (BSD-3-Clause and LGPL-2.1+)
Group:          Web Framework/Web Run Time
Url:            https://chromium.googlesource.com/chromium
Source:         %name-%version.tar
Source1:        %name.manifest
Source2:        chromium
Patch1:         0001-do-not-look-for-gtk2.patch
Patch2:         0002-do-not-look-for-webrtc-in-content.patch
Patch3:         0003-add_libyuv_dep_to_content_renderer.patch
%if "%{NO_DEBUG}" == "1"
NoSource:       0
%endif

BuildRequires:  chromium-icu
BuildRequires:  chromium-grit
BuildRequires:  chromium-v8
BuildRequires:  chromium-openssl
BuildRequires:  chromium-skia
BuildRequires:  chromium-blink
BuildRequires:  chromium-libsrtp
BuildRequires:  chromium-webrtc
BuildRequires:  chromium-angle
BuildRequires:  chromium-mesa
BuildRequires:  chromium-libjpeg_turbo
BuildRequires:  chromium-libyuv
BuildRequires:  chromium-libvpx
BuildRequires:  chromium-ffmpeg
BuildRequires:  chromium-ots
BuildRequires:  chromium-trace-viewer
BuildRequires:  chromium-flac
BuildRequires:  chromium-speex
BuildRequires:  chromium-html_office
BuildRequires:  chromium-hunspell
BuildRequires:  chromium-pdfium
BuildRequires:  chromium-freetype2
BuildRequires:  chromium-open-vcdiff
BuildRequires:  chromium-sfntly
BuildRequires:  chromium-libjingle
BuildRequires:  chromium-smhasher
BuildRequires:  chromium-opus
BuildRequires:  chromium-brotli
BuildRequires:  chromium-leveldatabase
BuildRequires:  chromium-snappy
BuildRequires:  chromium-gmock
BuildRequires:  chromium-gtest
BuildRequires:  chromium-breakpad
BuildRequires:  chromium-lss
BuildRequires:  depot_tools
BuildRequires:  gyp
 #ninja does use "-fuse-ld=gold"
BuildRequires:  binutils-gold
BuildRequires:  bison
BuildRequires:  gperf
BuildRequires:  python
BuildRequires:  yasm
BuildRequires:  krb5-devel
BuildRequires:  libelf-devel
BuildRequires:  libexpat-devel
BuildRequires:  pkgconfig(alsa)
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(fontconfig)
BuildRequires:  pkgconfig(libcap)
BuildRequires:  pkgconfig(libexif)
BuildRequires:  pkgconfig(libpci)
BuildRequires:  pkgconfig(libpulse)
BuildRequires:  pkgconfig(libssl)
BuildRequires:  pkgconfig(nss)
BuildRequires:  pkgconfig(pangocairo)
BuildRequires:  pkgconfig(pangoft2)
%if %{with wayland}
BuildRequires:  chromium-ozone-wayland
BuildRequires:  pkgconfig(wayland-client)
BuildRequires:  pkgconfig(wayland-cursor)
BuildRequires:  pkgconfig(wayland-egl)
BuildRequires:  pkgconfig(xkbcommon)
%endif

%if !%{with wayland}
ExclusiveArch:
%endif


%description
Chromium is a cross-platform Web browser based on the Blink engine. It is an open source project started by Google (https://chromium.googlesource.com/chromium).

%if "%{TOOLKIT}" == "1"
%package devel
Summary:        Development headers for the %{name} package
Group:          Development/Libraries
Requires:       %{name} = %{version}

%description devel
Development files for %{name}, useful only with shared component libraries
%endif


%prep
%setup -q
cp %{SOURCE1} .
cp %{SOURCE2} .

%patch1
%patch2
%patch3


%build
# experimental : restore the previous build tree
%if "%{INCREMENTAL}" == "1"
if [ -d /var/tmp/out ]; then
  mv /var/tmp/out/ out/
fi
if [ -d /var/tmp/usr ]; then
  mv /var/tmp/usr/ ../../usr/
fi
%endif

# link to external "third_party" repos
mkdir -p third_party/sfntly/cpp
mkdir -p third_party/libjingle/source
ln -s %{_datadir}/chromium/third_party/icu third_party/icu
ln -s %{_datadir}/chromium/tools/grit tools/grit
ln -s %{_datadir}/chromium/v8 v8
ln -s %{_datadir}/chromium/third_party/openssl third_party/openssl
ln -s %{_datadir}/chromium/third_party/skia third_party/skia
ln -s %{_datadir}/chromium/third_party/WebKit third_party/WebKit
ln -s %{_datadir}/chromium/third_party/libsrtp third_party/libsrtp
ln -s %{_datadir}/chromium/third_party/webrtc third_party/webrtc
ln -s %{_datadir}/chromium/third_party/angle third_party/angle
ln -s %{_datadir}/chromium/third_party/mesa third_party/mesa/src
ln -s %{_datadir}/chromium/third_party/libjpeg_turbo third_party/libjpeg_turbo
ln -s %{_datadir}/chromium/third_party/libyuv third_party/libyuv
ln -s %{_datadir}/chromium/third_party/libvpx third_party/libvpx
ln -s %{_datadir}/chromium/third_party/ffmpeg third_party/ffmpeg
ln -s %{_datadir}/chromium/third_party/ots third_party/ots
ln -s %{_datadir}/chromium/third_party/trace-viewer third_party/trace-viewer
ln -s %{_datadir}/chromium/third_party/flac third_party/flac
ln -s %{_datadir}/chromium/third_party/speex third_party/speex
ln -s %{_datadir}/chromium/chrome/browser/resources/pdf/html_office chrome/browser/resources/pdf/html_office
ln -s %{_datadir}/chromium/third_party/hunspell third_party/hunspell
ln -s %{_datadir}/chromium/third_party/pdfium third_party/pdfium
ln -s %{_datadir}/chromium/third_party/freetype2 third_party/freetype2/src
ln -s %{_datadir}/chromium/sdch/open-vcdiff sdch/open-vcdiff
ln -s %{_datadir}/chromium/third_party/sfntly/cpp/src third_party/sfntly/cpp/src
ln -s %{_datadir}/chromium/third_party/libjingle/source/talk third_party/libjingle/source/talk
ln -s %{_datadir}/chromium/third_party/smhasher/src third_party/smhasher/src
ln -s %{_datadir}/chromium/third_party/opus/src third_party/opus/src
ln -s %{_datadir}/chromium/third_party/brotli/src third_party/brotli/src
ln -s %{_datadir}/chromium/third_party/leveldatabase/src third_party/leveldatabase/src
ln -s %{_datadir}/chromium/third_party/snappy/src third_party/snappy/src
ln -s %{_datadir}/chromium/testing/gmock testing/gmock
ln -s %{_datadir}/chromium/testing/gtest testing/gtest
ln -s %{_datadir}/chromium/breakpad/src breakpad/src
ln -s %{_datadir}/chromium/third_party/lss third_party/lss
%if %{with wayland}
ln -s %{_datadir}/chromium/ozone ozone
%endif

# alsa uses "snd_seq_*" objects which are not compiled in in Tizen
GYP_DEFINES="use_ash=1 use_aura=1 chromeos=0 use_cups=0 use_gconf=0 use_gnome_keyring=0 disable_nacl=%{_disable_nacl} enable_webrtc=0 use_system_yasm=1 use_alsa=0"

%if "%{TOOLKIT}" == "1"
GYP_DEFINES="${GYP_DEFINES} component=shared_library"
%endif

%if %{with wayland}
GYP_DEFINES="${GYP_DEFINES} use_ozone=1 enable_ozone_wayland_vkb=1 enable_xdg_shell=1"
patch -p1 < ozone/patches/0001-browser-Support-Desktop-Aura-creation-on-Ozone.patch
patch -p1 < ozone/patches/0002-Temporary-patch-to-fix-linking-issue.patch
patch -p1 < ozone/patches/0003-Add-support-to-provide-external-ozone-files-in-views.patch
patch -p1 < ozone/patches/0005-Add-support-for-checking-DesktopWindow-with-Ozone-an.patch
patch -p1 < ozone/patches/0006-Temporarily-remove-ozone-dependency-for-gl.patch
%endif

export GYP_DEFINES
# to import "jinja2" and the "idl_*" modules
export PYTHONPATH="$PYTHONPATH:$PWD/third_party:$PWD/tools"

%if "%{NO_DEBUG}" == "1"
export CFLAGS="${CFLAGS} -g0"
export CXXFLAGS="${CXXFLAGS} -g0"
export LDFLAGS="${LDFLAGS} -g0"
%endif

# --depth       is to set the current folder as "root"
# --no-parallel is because the gbs chroot does not have the required multiprocessing caps (Python OSError: [Errno 38])
./build/gyp_chromium --depth=. --no-parallel
./build/util/lastchange.py -o build/util/LASTCHANGE.blink

# fix some build-time issues
mkdir -p out/Debug/gen/content/public/interfaces/service_provider
ln -f -s $PWD/out/Debug/gen/content out/Debug/gen/content/public/interfaces/service_provider/mojo
ln -f -s $PWD/out/Debug/gen/content mojo/service_manager/mojo
ln -f -s $PWD/out/Debug/gen/content out/Debug/gen/mojo
ln -f -s $PWD/../../usr/share/chromium/third_party/libvpx out/Debug/obj/third_party/libvpx
sed -i 's,../../../../../../../ozone,../../ozone,g' out/Debug/obj/ui/views/views.ninja

# experimental : force to consider the previously built binaries "clean"
%if "%{INCREMENTAL}" == "1"
sed -i '/  deps = gcc/d' out/Debug/build.ninja
find out/ -exec touch -a -m {} \;
find ../../usr/ -exec touch -a -m {} \;
%endif

ninja %{?_smp_mflags} -C out/Debug content_shell


%install
install -D -m 755 chromium %{buildroot}%{_bindir}/chromium
mkdir -p %{buildroot}%{_libdir}/chromium
install -D -m 755 out/Debug/content_shell %{buildroot}%{_libdir}/chromium/content_shell
install -D -m 755 out/Debug/content_shell.pak %{buildroot}%{_libdir}/chromium/content_shell.pak
install -D -m 755 out/Debug/icudtl.dat %{buildroot}%{_libdir}/chromium/icudtl.dat
%if "%{TOOLKIT}" == "1"
mkdir -p  %{buildroot}%{_libdir}/chromium/lib
install -D -m 755 out/Debug/lib/*.so %{buildroot}%{_libdir}/chromium/lib/
mkdir -p  %{buildroot}%{_includedir}/chromium
find . -name "*.h" -exec cp -f --parents {} %{buildroot}%{_includedir}/chromium/ \;
pushd /usr/share/chromium
find . -name "*.h" -exec cp -f --parents {} %{buildroot}%{_includedir}/chromium/ \;
popd
%endif

# experimental : save the build tree, so we can re-use the binaries next time
%if "%{INCREMENTAL}" == "1"
mv out/ /var/tmp/out/
mv ../../usr/ /var/tmp/usr
%endif


%files
%manifest %{name}.manifest
%defattr(-,root,root)
%license LICENSE
%{_bindir}/chromium
%{_libdir}/chromium/content_shell
%{_libdir}/chromium/content_shell.pak
%{_libdir}/chromium/icudtl.dat
%if "%{TOOLKIT}" == "1"
%{_libdir}/chromium/lib/*.so
%endif

%if "%{TOOLKIT}" == "1"
%files devel
%manifest %{name}.manifest
%{_includedir}/chromium/*
%defattr(-,root,root)
%endif