3 %bcond_without faad # FAAD AAC audio decoder
4 %bcond_without ffmpeg # FFmpeg support
5 %bcond_without hidapi # HID controller support
6 %bcond_with ipod # iPod support via libgpod [NOT-WORKING, src/wipodtracksmodel.cpp is missing]
7 %bcond_without lv2 # LV2 support
8 %bcond_with qt4 # Qt 4 instead of Qt 5
9 %bcond_without qtkeychain # secure credentials storage for Live Broadcasting profiles (qt5 only, see below)
10 %bcond_without upower # UPower battery state support
11 %bcond_without wavpack # WavPack audio decoder
17 # as of 2.2.1, qt5keychain is always checked, see build/depends.py
18 %undefine with_qtkeychain
20 Summary: Mixxx - DJ tool
21 Summary(hu.UTF-8): Mixxx - DJ program
22 Summary(pl.UTF-8): Mixxx - narzędzie dla DJ-ów
26 License: GPL v2+ (code), Apache v2.0 (OpenSans font), Ubuntu Font License v1.0 (Ubuntu fonts)
27 Group: X11/Applications/Multimedia
28 Source0: https://github.com/mixxxdj/mixxx/archive/release-%{version}/%{name}-release-%{version}.tar.gz
29 # Source0-md5: ef72d4b594f9f3dbafd1e264be89fbdc
30 Patch0: %{name}-vamp.patch
31 URL: https://mixxx.org/
32 BuildRequires: OpenGL-GLU-devel
34 BuildRequires: QtCore-devel >= %{qt4_ver}
35 BuildRequires: QtDBus-devel >= %{qt4_ver}
36 BuildRequires: QtGui-devel >= %{qt4_ver}
37 BuildRequires: QtNetwork-devel >= %{qt4_ver}
38 BuildRequires: QtOpenGL-devel >= %{qt4_ver}
39 BuildRequires: QtScript-devel >= %{qt4_ver}
40 BuildRequires: QtScriptTools-devel >= %{qt4_ver}
41 BuildRequires: QtSql-devel >= %{qt4_ver}
42 BuildRequires: QtSvg-devel >= %{qt4_ver}
43 BuildRequires: QtTest-devel >= %{qt4_ver}
44 BuildRequires: QtXml-devel >= %{qt4_ver}
46 BuildRequires: Qt5Concurrent-devel >= %{qt5_ver}
47 BuildRequires: Qt5Core-devel >= %{qt5_ver}
48 BuildRequires: Qt5DBus-devel >= %{qt5_ver}
49 BuildRequires: Qt5Gui-devel >= %{qt5_ver}
50 %{?with_qtkeychain:BuildRequires: Qt5Keychain-devel}
51 BuildRequires: Qt5Network-devel >= %{qt5_ver}
52 BuildRequires: Qt5OpenGL-devel >= %{qt5_ver}
53 BuildRequires: Qt5Script-devel >= %{qt5_ver}
54 BuildRequires: Qt5ScriptTools-devel >= %{qt5_ver}
55 BuildRequires: Qt5Sql-devel >= %{qt5_ver}
56 BuildRequires: Qt5Svg-devel >= %{qt5_ver}
57 BuildRequires: Qt5Test-devel >= %{qt5_ver}
58 BuildRequires: Qt5Widgets-devel >= %{qt5_ver}
59 BuildRequires: Qt5X11Extras-devel >= %{qt5_ver}
60 BuildRequires: Qt5Xml-devel >= %{qt5_ver}
62 BuildRequires: audiofile-devel
63 %{?with_faad:BuildRequires: faad2-devel >= 2.7}
64 # libavcodec >= 53.35.0 libavformat >= 53.21.0 libavutil
65 %{?with_ffmpeg:BuildRequires: ffmpeg-devel >= 0.11}
66 BuildRequires: fftw3-devel >= 3
67 BuildRequires: flac-devel
68 %{?with_ipod:BuildRequires: glib2-devel >= 2.0}
69 %{?with_hidapi:BuildRequires: hidapi-devel >= 0.8.0}
70 BuildRequires: jack-audio-connection-kit-devel
71 BuildRequires: libchromaprint-devel
72 BuildRequires: libebur128-devel
73 %{?with_ipod:BuildRequires: libgpod-devel}
74 BuildRequires: libid3tag-devel
75 BuildRequires: libmad-devel
76 BuildRequires: libmodplug-devel
77 BuildRequires: libogg-devel
78 BuildRequires: libshout-devel >= 2
79 BuildRequires: libsndfile-devel
80 BuildRequires: libstdc++-devel >= 6:4.7
81 BuildRequires: libusb-devel >= 1.0
82 BuildRequires: libvorbis-devel
83 %{?with_lv2:BuildRequires: lilv-devel >= 0.5}
84 %{?with_faad:BuildRequires: mp4v2-devel}
85 BuildRequires: opus-devel >= 1.0
86 BuildRequires: opusfile-devel >= 0.2
87 BuildRequires: pkgconfig >= 1:0.15.0
88 BuildRequires: portaudio-devel >= 19
89 BuildRequires: portmidi-devel >= 217
90 BuildRequires: protobuf-devel
92 BuildRequires: qt4-build >= %{qt4_ver}
93 BuildRequires: qt4-linguist >= %{qt4_ver}
95 BuildRequires: qt5-build >= %{qt5_ver}
96 BuildRequires: qt5-linguist >= %{qt5_ver}
98 BuildRequires: rpmbuild(macros) >= 1.566
99 BuildRequires: rubberband-devel
101 BuildRequires: sed >= 4.0
102 BuildRequires: soundtouch-devel >= 2.0.0
103 BuildRequires: sqlite3-devel >= 3
104 BuildRequires: taglib-devel
105 %{?with_upower:BuildRequires: upower-devel}
106 BuildRequires: vamp-devel >= 2.7.1
107 %{?with_wavpack:BuildRequires: wavpack-devel}
108 BuildRequires: xorg-lib-libX11-devel
110 Requires: QtSql-sqlite3 >= %{qt4_ver}
112 Requires: Qt5Sql-sqldriver-sqlite3 >= %{qt5_ver}
114 %{?with_faad:Requires: faad2 >= 2.7}
115 %{?with_hidapi:Requires: hidapi >= 0.8.0}
116 Obsoletes: mixxx-translations
117 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
126 Mixxx is an open source DJ tool designed for both professional and
129 %description -l hu.UTF-8
130 Mixxx egy nyílt forrású DJ eszköz profi és amatőr DJ-knek egyaránt.
132 %description -l pl.UTF-8
133 Mixxx to mające otwarte źródła narzędzie dla DJ-ów zaprojektowane
134 zarówno dla profesjonalistów jak i amatorów.
137 Summary: The core skins for Mixxx
138 Summary(hu.UTF-8): Alap skinek a Mixxx-hez
139 Summary(pl.UTF-8): Podstawowe skórki dla programu Mixxx
140 Group: X11/Applications/Multimedia
142 %description skins-core
143 The core skins for Mixxx.
145 %description skins-core -l hu.UTF-8
146 Alap skinek a Mixxx-hez.
148 %description skins-core -l pl.UTF-8
149 Podstawowe skórki dla programu Mixxx.
152 %setup -q -n %{name}-release-%{version}
155 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+node(\s|$),#!%{_bindir}/node\1,' \
156 res/controllers/novation-launchpad/scripts/*.js
159 export CXXFLAGS="%{rpmcxxflags}"
160 export CCFLAGS="%{rpmcflags}"
161 export CXX="%{__cxx}"
162 export QMAKE_CXX="%{__cxx}"
163 export LIBDIR=%{_libdir}
166 %{!?with_upower:battery=0} \
167 %{?with_faad:faad=1} \
168 %{?with_ffmpeg:ffmpeg=1} \
169 %{!?with_hidapi:hid=0} \
170 %{?with_ipod:ipod=1} \
171 %{?with_lv2:lilv=1} \
174 %{?with_qtkeychain:qtkeychain=1} \
176 %{?with_wavpack:wv=1}
179 rm -rf $RPM_BUILD_ROOT
181 export CXXFLAGS="%{rpmcxxflags}"
182 export CCFLAGS="%{rpmcflags}"
183 export CXX="%{__cxx}"
184 export QMAKE_CXX="%{__cxx}"
185 export LIBDIR=%{_libdir}
187 install_root=$RPM_BUILD_ROOT%{_prefix}
190 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/mixxx
191 %{__rm} $RPM_BUILD_ROOT%{_datadir}/mixxx/fonts/Ubuntu.LICENCE.txt
192 # generic Apache v2.0 license
193 %{__rm} $RPM_BUILD_ROOT%{_datadir}/mixxx/fonts/OpenSans.LICENSE.txt
196 # both ca and ca-ES exist, both up to date, with few differences... keep ca
197 %{__rm} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_ca-ES.qm
198 # en is en_US in fact
199 %{__mv} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_{en,en_US}.qm
200 # both es and es-ES exist, the first is outdated
201 %{__mv} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_{es-ES,es}.qm
202 # both fr and fr-FR exist, the latter is outdated
203 %{__rm} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_fr-FR.qm
204 # both pt and pt-PT exist, the first is outdated
205 %{__mv} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_{pt-PT,pt}.qm
206 # both zh_TW and zh_TW.Big5 exist, thr latter is outdated
207 %{__rm} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_zh_TW.Big5.qm
208 # unify using short code
209 %{__mv} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_{sq-AL,sq}.qm
210 # underscore (not dash) should be used as delimiter
211 %{__mv} $RPM_BUILD_ROOT%{_datadir}/mixxx/translations/mixxx_{es-MX,es_MX}.qm
214 rm -rf $RPM_BUILD_ROOT
217 %defattr(644,root,root,755)
218 %doc README Mixxx-Manual.pdf res/fonts/Ubuntu.LICENCE.txt
219 %attr(755,root,root) %{_bindir}/mixxx
220 %dir %{_libdir}/mixxx
221 %dir %{_libdir}/mixxx/plugins
222 %dir %{_libdir}/mixxx/plugins/soundsource%{qtsuf}
223 %attr(755,root,root) %{_libdir}/mixxx/plugins/soundsource%{qtsuf}/libsoundsourcem4a.so
224 %attr(755,root,root) %{_libdir}/mixxx/plugins/soundsource%{qtsuf}/libsoundsourcewv.so
225 %dir %{_libdir}/mixxx/plugins/vamp%{qtsuf}
226 %attr(755,root,root) %{_libdir}/mixxx/plugins/vamp%{qtsuf}/libmixxxminimal.so
227 %{_datadir}/appdata/mixxx.appdata.xml
228 %dir %{_datadir}/mixxx
229 %{_datadir}/mixxx/controllers
230 %{_datadir}/mixxx/fonts
231 %{_datadir}/mixxx/keyboard
232 %dir %{_datadir}/mixxx/skins
233 # This is the default skin
234 %{_datadir}/mixxx/skins/Deere
235 %dir %{_datadir}/mixxx/translations
236 %lang(ar) %{_datadir}/mixxx/translations/mixxx_ar.qm
237 %lang(ast) %{_datadir}/mixxx/translations/mixxx_ast.qm
238 %lang(bg) %{_datadir}/mixxx/translations/mixxx_bg.qm
239 %lang(br) %{_datadir}/mixxx/translations/mixxx_br.qm
240 %lang(bs) %{_datadir}/mixxx/translations/mixxx_bs.qm
241 %lang(ca) %{_datadir}/mixxx/translations/mixxx_ca.qm
242 %lang(ceb) %{_datadir}/mixxx/translations/mixxx_ceb.qm
243 %lang(cs) %{_datadir}/mixxx/translations/mixxx_cs.qm
244 %lang(da) %{_datadir}/mixxx/translations/mixxx_da.qm
245 %lang(de) %{_datadir}/mixxx/translations/mixxx_de.qm
246 %lang(el) %{_datadir}/mixxx/translations/mixxx_el.qm
247 %lang(en) %{_datadir}/mixxx/translations/mixxx_en_GB.qm
248 %lang(en) %{_datadir}/mixxx/translations/mixxx_en_US.qm
249 %lang(eo) %{_datadir}/mixxx/translations/mixxx_eo.qm
250 %lang(es) %{_datadir}/mixxx/translations/mixxx_es.qm
251 %lang(es_MX) %{_datadir}/mixxx/translations/mixxx_es_MX.qm
252 %lang(et) %{_datadir}/mixxx/translations/mixxx_et.qm
253 %lang(eu) %{_datadir}/mixxx/translations/mixxx_eu.qm
254 %lang(fa) %{_datadir}/mixxx/translations/mixxx_fa.qm
255 %lang(fi) %{_datadir}/mixxx/translations/mixxx_fi.qm
256 %lang(fr) %{_datadir}/mixxx/translations/mixxx_fr.qm
257 %lang(ga) %{_datadir}/mixxx/translations/mixxx_ga.qm
258 %lang(gl) %{_datadir}/mixxx/translations/mixxx_gl.qm
259 %lang(he) %{_datadir}/mixxx/translations/mixxx_he.qm
260 %lang(hr) %{_datadir}/mixxx/translations/mixxx_hr.qm
261 %lang(hu) %{_datadir}/mixxx/translations/mixxx_hu.qm
262 %lang(hy) %{_datadir}/mixxx/translations/mixxx_hy.qm
263 %lang(ia) %{_datadir}/mixxx/translations/mixxx_ia.qm
264 %lang(id) %{_datadir}/mixxx/translations/mixxx_id.qm
265 %lang(is) %{_datadir}/mixxx/translations/mixxx_is.qm
266 %lang(it) %{_datadir}/mixxx/translations/mixxx_it.qm
267 %lang(ja) %{_datadir}/mixxx/translations/mixxx_ja.qm
268 %lang(ko) %{_datadir}/mixxx/translations/mixxx_ko.qm
269 %lang(ky) %{_datadir}/mixxx/translations/mixxx_ky.qm
270 %lang(lb) %{_datadir}/mixxx/translations/mixxx_lb.qm
271 %lang(lt) %{_datadir}/mixxx/translations/mixxx_lt.qm
272 %lang(lv) %{_datadir}/mixxx/translations/mixxx_lv.qm
273 %lang(mk) %{_datadir}/mixxx/translations/mixxx_mk.qm
274 %lang(ml) %{_datadir}/mixxx/translations/mixxx_ml.qm
275 %lang(mn) %{_datadir}/mixxx/translations/mixxx_mn.qm
276 %lang(mr) %{_datadir}/mixxx/translations/mixxx_mr.qm
277 %lang(ms) %{_datadir}/mixxx/translations/mixxx_ms.qm
278 %lang(my) %{_datadir}/mixxx/translations/mixxx_my.qm
279 %lang(nb) %{_datadir}/mixxx/translations/mixxx_nb.qm
280 %lang(nl) %{_datadir}/mixxx/translations/mixxx_nl.qm
281 %lang(nn) %{_datadir}/mixxx/translations/mixxx_nn.qm
282 %lang(oc) %{_datadir}/mixxx/translations/mixxx_oc.qm
283 %lang(pl) %{_datadir}/mixxx/translations/mixxx_pl.qm
284 %lang(pt) %{_datadir}/mixxx/translations/mixxx_pt.qm
285 %lang(pt_BR) %{_datadir}/mixxx/translations/mixxx_pt_BR.qm
286 %lang(ro) %{_datadir}/mixxx/translations/mixxx_ro.qm
287 %lang(ru) %{_datadir}/mixxx/translations/mixxx_ru.qm
288 %lang(si) %{_datadir}/mixxx/translations/mixxx_si.qm
289 %lang(sk) %{_datadir}/mixxx/translations/mixxx_sk.qm
290 %lang(sl) %{_datadir}/mixxx/translations/mixxx_sl.qm
291 %lang(sn) %{_datadir}/mixxx/translations/mixxx_sn.qm
292 %lang(sq) %{_datadir}/mixxx/translations/mixxx_sq.qm
293 %lang(sr) %{_datadir}/mixxx/translations/mixxx_sr.qm
294 %lang(sv) %{_datadir}/mixxx/translations/mixxx_sv.qm
295 %lang(ta) %{_datadir}/mixxx/translations/mixxx_ta.qm
296 %lang(te) %{_datadir}/mixxx/translations/mixxx_te.qm
297 %lang(tr) %{_datadir}/mixxx/translations/mixxx_tr.qm
298 %lang(uk) %{_datadir}/mixxx/translations/mixxx_uk.qm
299 %lang(uz) %{_datadir}/mixxx/translations/mixxx_uz.qm
300 %lang(vi) %{_datadir}/mixxx/translations/mixxx_vi.qm
301 %lang(zh_CN) %{_datadir}/mixxx/translations/mixxx_zh_CN.qm
302 %lang(zh_TW) %{_datadir}/mixxx/translations/mixxx_zh_TW.qm
303 %{_desktopdir}/mixxx.desktop
304 %{_pixmapsdir}/mixxx_icon.svg
307 %defattr(644,root,root,755)
308 # note: "?" is used to catch spaces (I can't see any way to match space explicitly in rpm)
309 %{_datadir}/mixxx/skins/Deere?(64?Samplers)
310 %{_datadir}/mixxx/skins/LateNight
311 %{_datadir}/mixxx/skins/Shade
312 %{_datadir}/mixxx/skins/Tango
313 %{_datadir}/mixxx/skins/Tango?(64?Samplers)