f9df2711ee71ee068bc8d6e3626dc470eed0d315
[WebKit-https.git] / Tools / gtk / install-dependencies
1 #!/bin/bash
2
3 # This script needs to be run with root rights.
4 if [ $UID -ne 0 ]; then
5     sudo $0
6     exit 0
7 fi
8
9 function printNotSupportedMessageAndExit() {
10     echo
11     echo "Currently this script only works for distributions supporting apt-get and yum."
12     echo "Please add support for your distribution: http://webkit.org/b/110693"
13     echo
14     exit 1
15 }
16
17 function checkInstaller {
18     # apt-get - Debian based distributions
19     apt-get --version &> /dev/null
20     if [ $? -eq 0 ]; then
21         installDependenciesWithApt
22         exit 0
23     fi
24
25     # yum - Fedora 21 and below
26     yum --version &> /dev/null
27     if [ $? -eq 0 ]; then
28         installFedoraDependencies yum
29         exit 0
30     fi
31
32     # dnf - Fedora 22 and above
33     dnf --version &> /dev/null
34     if [ $? -eq 0 ]; then
35         installFedoraDependencies dnf
36         exit 0
37     fi
38
39     # pacman - Arch Linux
40     # pacman --version and pacman --help both return non-0
41     pacman -Ss &> /dev/null
42     if [ $? -eq 0 ]; then
43         installDependenciesWithPacman
44         exit 0
45     fi
46
47     printNotSupportedMessageAndExit
48 }
49
50 function installDependenciesWithApt {
51     # These are dependencies necessary for building WebKitGTK+.
52     apt-get install \
53         autoconf \
54         automake \
55         autopoint \
56         autotools-dev \
57         bison \
58         cmake \
59         flex \
60         gawk \
61         gnome-common \
62         gperf \
63         gtk-doc-tools \
64         intltool \
65         itstool \
66         libatk1.0-dev \
67         libenchant-dev \
68         libfaad-dev \
69         libgeoclue-dev \
70         libgirepository1.0-dev \
71         libgl1-mesa-dev \
72         libgl1-mesa-glx \
73         libgnutls28-dev \
74         libgtk2.0-dev \
75         libgtk-3-dev \
76         libgudev-1.0-dev \
77         libharfbuzz-dev \
78         libicu-dev \
79         libjpeg-dev \
80         libmpg123-dev \
81         libopus-dev \
82         libpango1.0-dev \
83         libpng12-dev \
84         libpulse-dev \
85         librsvg2-dev \
86         libsecret-1-dev \
87         libsoup2.4-dev \
88         libsqlite3-dev \
89         libtheora-dev \
90         libtool \
91         libvorbis-dev \
92         libwebp-dev \
93         libxcomposite-dev \
94         libxslt1-dev \
95         libxt-dev \
96         libxtst-dev \
97         ruby \
98         xfonts-utils
99
100     # These are dependencies necessary for running tests.
101     apt-get install \
102         apache2 \
103         curl \
104         dbus-x11 \
105         libapache2-mod-bw \
106         libapache2-mod-php5 \
107         libgpg-error-dev \
108         pulseaudio-utils \
109         python-gi \
110         ruby \
111         ruby-json \
112         ruby-highline \
113         xvfb
114
115     # These are dependencies necessary for building the jhbuild.
116     apt-get install \
117         git \
118         gobject-introspection \
119         icon-naming-utils \
120         libcroco3-dev \
121         libegl1-mesa-dev \
122         libgcrypt11-dev \
123         libgpg-error-dev \
124         libp11-kit-dev \
125         libpciaccess-dev \
126         libtiff5-dev \
127         libxcb-xfixes0-dev \
128         libxfont-dev \
129         libxkbfile-dev \
130         llvm \
131         llvm-dev \
132         python-dev \
133         ragel \
134         x11proto-bigreqs-dev \
135         x11proto-composite-dev \
136         x11proto-gl-dev \
137         x11proto-input-dev \
138         x11proto-randr-dev \
139         x11proto-resource-dev \
140         x11proto-scrnsaver-dev \
141         x11proto-video-dev \
142         x11proto-xcmisc-dev \
143         x11proto-xf86dri-dev \
144         xfonts-utils \
145         xtrans-dev \
146         xutils-dev
147
148     # These are dependencies necessary for using webkit-patch
149     apt-get install \
150         git-svn \
151         subversion
152
153     # ninja is a faster build system than GNU make, but it doesn't
154     # exist on Ubuntu 12.04
155     apt-get install ninja-build || true
156 }
157
158 function installDependenciesWithPacman {
159     # These are dependencies necessary for building WebKitGTK+.
160     packages=" \
161         autoconf \
162         automake \
163         bison \
164         cmake \
165         file \
166         findutils \
167         flex \
168         gawk \
169         gcc \
170         gettext \
171         gnome-common \
172         gperf \
173         grep \
174         groff \
175         gzip \
176         libtool \
177         m4 \
178         make \
179         patch \
180         pkg-config \
181         sed \
182         texinfo \
183         util-linux \
184         which \
185         gtk-doc \
186         intltool \
187         itstool \
188         atk \
189         enchant \
190         faad2 \
191         geoclue \
192         gobject-introspection \
193         mesa \
194         mesa-libgl \
195         gnutls \
196         gtk2 \
197         gtk3 \
198         libsystemd \
199         harfbuzz \
200         harfbuzz-icu \
201         icu \
202         libjpeg-turbo \
203         mpg123 \
204         opus \
205         pango \
206         libpng \
207         libpulse \
208         librsvg \
209         libsecret \
210         libsoup \
211         sqlite \
212         libtheora \
213         libtool \
214         libvorbis \
215         libwebp \
216         libxcomposite \
217         libxslt \
218         libxt \
219         libxtst \
220         ninja \
221         ruby \
222         xorg-font-utils"
223
224     # These are dependencies necessary for running tests.
225     # Note: apache-mod_bw is available in the AUR, but the main repos
226     #       could not find ruby-json
227     packages="$packages \
228         apache \
229         curl \
230         hunspell \
231         hunspell-en \
232         php-apache \
233         libgpg-error \
234         pulseaudio \
235         python-gobject \
236         ruby \
237         ruby-highline \
238         xorg-server-xvfb"
239
240     # These are dependencies necessary for building the jhbuild.
241     # Note: Could not find libegl-mesa
242     packages="$packages \
243         git \
244         gobject-introspection \
245         icon-naming-utils \
246         libcroco \
247         libgcrypt \
248         libgpg-error \
249         p11-kit \
250         libpciaccess \
251         libtiff \
252         libxfixes \
253         libxfont \
254         libxkbfile \
255         llvm \
256         python2 \
257         python2-lxml \
258         ragel \
259         bigreqsproto \
260         compositeproto \
261         glproto \
262         inputproto \
263         randrproto \
264         resourceproto \
265         scrnsaverproto \
266         videoproto \
267         xcmiscproto \
268         xf86driproto \
269         xorg-font-utils \
270         xorg-util-macros \
271         xtrans \
272         xorg-utils"
273
274     # These are dependencies necessary for using webkit-patch
275     packages="$packages \
276         svn"
277     pacman -S --needed $packages
278
279     echo "You will also need to follow the instructions on the Arch Wiki to make"
280     echo "'python' call python2 in the webkit folder"
281     echo "https://wiki.archlinux.org/index.php/Python#Dealing_with_version_problem_in_build_scripts"
282 }
283
284 function installFedoraDependencies {
285     # These are dependencies necessary for building WebKitGTK+.
286     $1 install \
287         atk-devel \
288         autoconf \
289         automake \
290         bison \
291         cairo-devel \
292         cmake \
293         enchant-devel \
294         flex \
295         fontconfig-devel \
296         freetype-devel \
297         gcc-c++ \
298         geoclue-devel \
299         gettext-devel \
300         gobject-introspection-devel \
301         gperf \
302         gstreamer1-devel \
303         gstreamer1-plugins-base-devel \
304         gtk-doc \
305         gtk2-devel \
306         gtk3-devel \
307         harfbuzz-devel \
308         libXt-devel \
309         libXtst-devel \
310         libgudev1-devel \
311         libicu-devel \
312         libjpeg-turbo-devel \
313         libpng-devel \
314         libsecret-devel \
315         libsoup-devel \
316         libwebp-devel \
317         libxslt-devel \
318         mesa-libGL-devel \
319         ninja-build \
320         pcre-devel \
321         perl-Switch \
322         perl-version \
323         python-devel \
324         ruby \
325         sqlite-devel
326
327     # These are dependencies necessary for running tests.
328     $1 install \
329         curl \
330         dbus-x11 \
331         hunspell-en \
332         httpd \
333         libgpg-error-devel \
334         mod_bw \
335         mod_ssl \
336         perl-CGI \
337         php \
338         pulseaudio-utils \
339         pygobject3-base \
340         ruby \
341         rubygem-json \
342         rubygem-highline \
343         xorg-x11-server-Xvfb
344
345     # These are dependencies necessary for building the jhbuild.
346     $1 install \
347         docbook-utils \
348         docbook-utils-pdf \
349         git \
350         gobject-introspection \
351         icon-naming-utils \
352         itstool \
353         libXfont-devel \
354         libcroco-devel \
355         libgcrypt-devel \
356         libgpg-error-devel \
357         libp11-devel \
358         libpciaccess-devel \
359         libtiff-devel \
360         libxkbfile-devel \
361         llvm \
362         llvm-devel \
363         mesa-libEGL-devel \
364         ragel \
365         xorg-x11-font-utils \
366         xorg-x11-proto-devel \
367         xorg-x11-util-macros \
368         xorg-x11-xtrans-devel
369
370     # These are dependencies necessary for using webkit-patch
371     $1 install \
372         git-svn \
373         subversion
374 }
375
376 checkInstaller
377