forked from qTox/qTox
-
Notifications
You must be signed in to change notification settings - Fork 5
/
simple_make.sh
executable file
·194 lines (177 loc) · 4.71 KB
/
simple_make.sh
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
#!/usr/bin/env bash
# Copyright © 2019 by The qTox Project Contributors
#
# This file is part of qTox, a Qt-based graphical interface for Tox.
# qTox is libre software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# qTox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with qTox. If not, see <http://www.gnu.org/licenses/>
set -eu -o pipefail
apt_install() {
local apt_packages=(
automake
autotools-dev
build-essential
check
checkinstall
cmake
git
libavdevice-dev
libexif-dev
libgdk-pixbuf2.0-dev
libgtk2.0-dev
libopenal-dev
libopus-dev
libcurl4-gnutls-dev
libqrencode-dev
libqt5opengl5-dev
libqt5svg5-dev
libsodium-dev
libtool
libvpx-dev
libxss-dev
qrencode
qt5-default
qttools5-dev
qttools5-dev-tools
libsqlcipher-dev
)
sudo apt-get install "${apt_packages[@]}"
}
pacman_install() {
local pacman_packages=(
base-devel
git
libsodium
libvpx
libxss
openal
opus
curl
qrencode
qt5
sqlcipher
)
sudo pacman -S --needed "${pacman_packages[@]}"
}
dnf_install() {
local dnf_group_packages=(
'Development Tools'
'C Development Tools and Libraries'
)
sudo dnf group install "${dnf_group_packages[@]}"
# pure Fedora doesn't have what it takes to compile qTox (ffmpeg)
local fedora_version=$(rpm -E %fedora)
local dnf_rpmfusion_package=(
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$fedora_version.noarch.rpm
)
sudo dnf install "$dnf_rpmfusion_package"
local dnf_packages=(
ffmpeg-devel
gdk-pixbuf2-devel
git
glib2-devel
gtk2-devel
kf5-sonnet-devel
libconfig-devel
libexif-devel
libsodium-devel
libvpx-devel
libXScrnSaver-devel
openal-soft-devel
openssl-devel
opus-devel
libcurl-devel
qrencode-devel
qt5-devel
qt5-qtdoc
qt5-qtsvg
qt5-qtsvg-devel
qt5-qttools-devel
qtsingleapplication-qt5
readline-devel
sqlcipher-devel
sqlite-devel
)
sudo dnf install "${dnf_packages[@]}"
}
# Fedora by default doesn't include libs in /usr/local/lib so add it
fedora_locallib() {
local llib_file="/etc/ld.so.conf.d/locallib.conf"
local llib_lines=("/usr/local/lib/" "/usr/local/lib64/")
# check whether needed line already exists
is_locallib() {
grep -q "^$1\$" "$llib_file"
}
# add each line only if it doesn't exist
for llib_line in "${llib_lines[@]}"; do\
is_locallib "$llib_line" \
|| echo "$llib_line" \
| sudo tee -a "$llib_file";
done
}
zypper_install() {
local zypper_packages=(
+pattern:devel_basis
cmake
git
libavcodec-devel
libavdevice-devel
libopus-devel
libcurl-devel
libexif-devel
libQt5Concurrent-devel
libqt5-linguist
libqt5-linguist-devel
libQt5Network-devel
libQt5OpenGL-devel
libqt5-qtbase-common-devel
libqt5-qtsvg-devel
libQt5Test-devel
libQt5Xml-devel
libsodium-devel
libvpx-devel
libXScrnSaver-devel
openal-soft-devel
qrencode-devel
sqlcipher-devel
)
# if not sudo is installed, e.g. in docker image, install it
command -v sudo || zypper in sudo
sudo zypper in "${zypper_packages[@]}"
}
main() {
local BOOTSTRAP_ARGS=""
if command -v zypper && [ -f /etc/products.d/openSUSE.prod ]
then
zypper_install
elif command -v apt-get
then
apt_install
elif command -v pacman
then
pacman_install
elif command -v dnf
then
dnf_install
fedora_locallib
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH-}:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig"
BOOTSTRAP_ARGS="--without-sqlcipher"
else
echo "Unknown package manager, attempting to compile anyways"
fi
./bootstrap.sh ${BOOTSTRAP_ARGS}
mkdir -p _build
cd _build
cmake ../
make -j$(nproc)
}
main