forked from enzo1982/freac
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
303 lines (290 loc) · 10.9 KB
/
.travis.yml
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
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
language: cpp
branches:
except:
- i18n-master
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
packages:
- libcurl4-openssl-dev
- libgtk-3-dev
- libncurses-dev
- libpulse-dev
- libudev-dev
- os: linux
compiler: clang
addons:
apt:
packages:
- libcurl4-openssl-dev
- libgtk-3-dev
- libncurses-dev
- libpulse-dev
- libudev-dev
- os: osx
compiler: gcc
- os: osx
compiler: clang
- os: linux
dist: xenial
compiler: gcc
env:
- AppImageBuild=True
- AppImageArch=x86_64
addons:
apt:
packages:
- g++-multilib
- nasm
- wine1.6-dev
- yasm
- os: linux
dist: xenial
compiler: gcc
env:
- AppImageBuild=True
- AppImageArch=i686
addons:
apt:
packages:
- g++-multilib
- nasm
- wine1.6-dev:i386
- yasm
- os: linux
dist: xenial
compiler: gcc
env:
- AppImageBuild=True
- AppImageArch=armhf
addons:
apt:
packages:
- g++-arm-linux-gnueabihf
- nasm
- qemu
- qemu-user-static
- yasm
- os: linux
dist: xenial
compiler: gcc
env:
- AppImageBuild=True
- AppImageArch=aarch64
addons:
apt:
packages:
- g++-aarch64-linux-gnu
- nasm
- qemu
- qemu-user-static
- yasm
before_install:
- |
# Set environment variables
if [ "$AppImageBuild" = True ]; then
export OS=`uname`
if [ "$AppImageArch" = i686 ]; then
export ARCH=i386
export HOST=i386-linux-gnu
export BUILD_X86=True
elif [ "$AppImageArch" = x86_64 ]; then
export ARCH=amd64
export HOST=x86_64-linux-gnu
elif [ "$AppImageArch" = armhf ]; then
export ARCH=armhf
export HOST=arm-linux-gnueabihf
elif [ "$AppImageArch" = aarch64 ]; then
export ARCH=arm64
export HOST=aarch64-linux-gnu
fi
fi
- |
if [ "$AppImageBuild" = True ]; then
if [[ "$AppImageArch" != i686 && "$AppImageArch" != x86_64 ]]; then
sudo dpkg --add-architecture $ARCH
sudo rm -f /usr/bin/gcc /usr/bin/g++ /usr/bin/cpp /usr/bin/ld /usr/bin/strip
sudo ln -s $HOST-gcc /usr/bin/gcc
sudo ln -s $HOST-g++ /usr/bin/g++
sudo ln -s $HOST-cpp /usr/bin/cpp
sudo ln -s $HOST-ld /usr/bin/ld
sudo ln -s $HOST-strip /usr/bin/strip
sudo echo "deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports xenial main restricted" >> /etc/apt/sources.list
sudo echo "deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports xenial-updates main restricted" >> /etc/apt/sources.list
sudo echo "deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports xenial-security main restricted" >> /etc/apt/sources.list
sudo sed -i 's/deb http/deb \[arch=amd64,i386\] http/g' /etc/apt/sources.list
sudo apt update
fi
sudo rm /etc/gtk-3.0/settings.ini
sudo apt remove -y libcups2
sudo apt install -y adwaita-icon-theme:$ARCH gir1.2-gtk-3.0:$ARCH libasound2-dev:$ARCH libblkid1:$ARCH libcairo2-dev:$ARCH libcups2:$ARCH libegl1-mesa-dev:$ARCH libfuse2:$ARCH libgdk-pixbuf2.0-dev:$ARCH libgtk-3-dev:$ARCH libgtk-3-0:$ARCH libgtk-3-common:$ARCH libncurses-dev:$ARCH libpango1.0-dev:$ARCH libpulse-dev:$ARCH libpulse0:$ARCH libpulse-mainloop-glib0:$ARCH librest-0.7-0:$ARCH libsm-dev:$ARCH libsm6:$ARCH libsndfile1-dev:$ARCH libsndfile1:$ARCH libssl-dev:$ARCH libudev-dev:$ARCH libuuid1:$ARCH libxft-dev:$ARCH zlib1g-dev:$ARCH
fi
install:
- |
if [ $TRAVIS_OS_NAME = osx ]; then
brew install libcdio
wget https://ftp.gnu.org/gnu/libcdio/libcdio-paranoia-10.2+0.94+2.tar.gz
tar xfz libcdio-paranoia-10.2+0.94+2.tar.gz
cd libcdio-paranoia-10.2+0.94+2
./configure --prefix=/usr/local
make && sudo make install
cd ..
fi
script:
- |
# Build libcdio
if [ $TRAVIS_OS_NAME != osx ]; then
./tools/build-codecs libcdio libcdio-paranoia
fi
- |
# Build libcurl
if [ "$AppImageBuild" = True ]; then
wget -c https://curl.haxx.se/download/curl-7.64.1.tar.bz2
tar xfj curl-7.64.1.tar.bz2
cd curl-7.64.1
if [ $AppImageArch = i686 ]; then
CFLAGS="-m32" ./configure --with-ssl --without-librtmp --disable-ldap
else
./configure --host=$HOST --with-ssl --without-librtmp --disable-ldap
fi
make -j$(nproc) && sudo make install
sudo rm /usr/local/bin/curl
cd ..
fi
- |
# Build smooth
git clone https://github.com/enzo1982/smooth.git enzo1982/smooth
cd enzo1982/smooth
CONFIG="bundledlibbz2,bundledlibfribidi,bundledlibjpeg,bundledlibpng,bundledlibxml2,bundledzlib"
if [ "$AppImageBuild" = True ]; then
CONFIG+=",release"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/$HOST/pkgconfig
fi
make config=$CONFIG BUILD_V8=False -j$(nproc) && sudo make config=$CONFIG BUILD_V8=False install
if [ "$AppImageBuild" = True ]; then
unset PKG_CONFIG_PATH
fi
cd ../..
- |
# Build BoCA
git clone https://github.com/enzo1982/boca.git enzo1982/boca
cd enzo1982/boca
CONFIG="bundledlibexpat,bundledliburiparser,bundledzlib"
if [ "$AppImageBuild" = True ]; then
CONFIG+=",release"
fi
make config=$CONFIG -j$(nproc) && sudo make config=$CONFIG install
if [ "$AppImageBuild" = True ] && [ "$AppImageArch" = x86_64 ]; then
# Build 32 bit Core Audio connector
cd components/encoder/coreaudioconnect/connector
make BUILD_X86=True config=$CONFIG clean && make BUILD_X86=True config=$CONFIG -j$(nproc)
sudo install ../../../../bin/boca_encoder_coreaudioconnect.1.0 /usr/local/lib/boca
cd ../../../..
fi
cd ../..
- |
# Build fre:ac
if [ "$AppImageBuild" = True ]; then
CONFIG="release"
fi
make config=$CONFIG USE_V8=False -j$(nproc) && sudo make config=$CONFIG USE_V8=False install
- |
# Build codecs and DSP libraries
if [ "$AppImageBuild" = True ]; then
./tools/build-codecs faad2 fdk-aac mp4v2
./tools/build-codecs lame mpg123
./tools/build-codecs libogg opus speex vorbis
./tools/build-codecs flac mac musepack wavpack
./tools/build-codecs libav libsndfile
./tools/build-codecs libsamplerate rnnoise rubberband
fi
- |
# Install codecs
if [ "$AppImageBuild" = True ]; then
mkdir -p appdir/codecs
cp /usr/local/lib/libFLAC.so appdir/codecs/FLAC.so
cp /usr/local/lib/libMAC.so appdir/codecs/MAC.so
cp /usr/local/lib/libfaad.so appdir/codecs/faad.so
cp /usr/local/lib/libfdk-aac.so appdir/codecs/fdk-aac.so
cp /usr/local/lib/libmp3lame.so appdir/codecs/mp3lame.so
cp /usr/local/lib/libmp4v2.so appdir/codecs/mp4v2.so
cp /usr/local/lib/libmpg123.so appdir/codecs/mpg123.so
cp /usr/local/lib/libogg.so appdir/codecs/ogg.so
cp /usr/local/lib/libopus.so appdir/codecs/opus.so
cp /usr/local/lib/librnnoise.so appdir/codecs/rnnoise.so
cp /usr/local/lib/librubberband.so appdir/codecs/rubberband.so
cp /usr/local/lib/libsamplerate.so appdir/codecs/samplerate.so
cp /usr/local/lib/libsndfile.so appdir/codecs/sndfile.so
cp /usr/local/lib/libspeex.so appdir/codecs/speex.so
cp /usr/local/lib/libvorbis.so appdir/codecs/vorbis.so
cp /usr/local/lib/libvorbisenc.so appdir/codecs/vorbisenc.so
strip --strip-all appdir/codecs/*.so
install -Dm 0755 /usr/local/bin/avconv appdir/codecs/cmdline/avconv
install -Dm 0755 /usr/local/bin/mpcdec appdir/codecs/cmdline/mpcdec
install -Dm 0755 /usr/local/bin/mpcenc appdir/codecs/cmdline/mpcenc
install -Dm 0755 /usr/local/bin/wavpack appdir/codecs/cmdline/wavpack
install -Dm 0755 /usr/local/bin/wvunpack appdir/codecs/cmdline/wvunpack
strip --strip-all appdir/codecs/cmdline/*
fi
- |
# Copy smooth, BoCA and fre:ac to appdir
if [ "$AppImageBuild" = True ]; then
# Copy smooth
cp /usr/local/lib/libsmooth*.so.? appdir
# Copy BoCA
cp -r /usr/local/lib/boca appdir
ln -s boca/boca.1.0.so appdir/libboca-1.0.so.1
# Copy fre:ac
cp COPYING Readme* appdir
rm appdir/Readme.md
cp -r /usr/local/lib/freac/* appdir/boca
cp -r /usr/local/share/freac/lang appdir
cp -r /usr/local/share/freac/icons appdir
cp -r /usr/local/share/doc/freac/manual appdir
mv appdir/boca/freac.so appdir
install -Dm 0755 /usr/local/bin/freac appdir/freac
install -Dm 0755 /usr/local/bin/freaccmd appdir/freaccmd
install -Dm 0755 /usr/local/bin/smooth-translator appdir/translator
install -Dm 0755 packaging/appimage/AppRun appdir/AppRun
mkdir -p appdir/usr/share
cp -r /usr/local/share/applications appdir/usr/share
cp -r /usr/local/share/metainfo appdir/usr/share
ln -s usr/share/applications/org.freac.freac.desktop appdir/org.freac.freac.desktop
cp /usr/local/share/icons/hicolor/128x128/apps/org.freac.freac.png appdir
fi
- |
# Copy other dependencies
if [ "$AppImageBuild" = True ]; then
cp /usr/local/lib/libcdio.so.19 appdir
cp /usr/local/lib/libcdio_cdda.so.2 appdir
cp /usr/local/lib/libcdio_paranoia.so.2 appdir
cp /usr/local/lib/libcurl.so.4 appdir
cp -P /lib/$HOST/libcrypto.so.1* appdir
cp -P /lib/$HOST/libssl.so.1* appdir
strip --strip-all appdir/lib*.so*
fi
- |
# Create AppImage using appimagetool
if [ "$AppImageBuild" = True ]; then
wget -c -nv "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$AppImageArch.AppImage"
chmod a+x appimagetool-$AppImageArch.AppImage
if [ "$AppImageArch" = armhf ]; then
qemu-arm-static ./appimagetool-$AppImageArch.AppImage appdir freac-continuous-${OS,,}-$AppImageArch.AppImage
elif [ "$AppImageArch" = aarch64 ]; then
qemu-aarch64-static ./appimagetool-$AppImageArch.AppImage appdir freac-continuous-${OS,,}-$AppImageArch.AppImage
else
ARCH=$AppImageArch ./appimagetool-$AppImageArch.AppImage appdir freac-continuous-${OS,,}-$AppImageArch.AppImage
fi
fi
- |
# Upload AppImage to GitHub
if [ "$AppImageBuild" = True ]; then
bash packaging/appimage/upload-appimage freac*.AppImage
fi
branches:
except:
- # Do not build tags that we create when we upload to GitHub Releases
- /^(?i:continuous)/