Skip to content
This repository has been archived by the owner on May 20, 2023. It is now read-only.

Commit

Permalink
upgpkg: mixxx 2.3.0-1: Upgrade to 2.3.0.
Browse files Browse the repository at this point in the history
Switch to cmake as scons has been deprecated as build system \o/
Remove libshout as dependency as mixxx now uses a statically linked version of libshout-idjc (currently only in the AUR).
Add fftw to makedepends/ soname depends.
Remove mp4v2 patch for scons build system.

git-svn-id: file:///srv/repos/svn-community/svn@968051 9fca08f4-af9d-4005-b8df-a31f2cc04f65
  • Loading branch information
dvzrv authored and svntogit committed Jun 30, 2021
1 parent 8492a1f commit da37cf2
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 72 deletions.
75 changes: 29 additions & 46 deletions trunk/PKGBUILD
Expand Up @@ -5,67 +5,50 @@
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>

pkgname=mixxx
pkgver=2.2.4
pkgrel=6
pkgver=2.3.0
pkgrel=1
pkgdesc="Free, open source software for digital DJ'ing."
arch=('x86_64')
url="https://www.mixxx.org"
license=('GPL2')
groups=('pro-audio')
depends=('chromaprint' 'gcc-libs' 'glibc' 'hidapi' 'libglvnd' 'libmad'
'libmodplug' 'libmp4v2' 'libshout' 'libx11' 'openssl' 'opusfile>=0.12' 'qt5-base'
'qt5-script' 'qt5-svg' 'qt5-x11extras' 'qtkeychain' 'soundtouch' 'speex'
'sqlite' 'taglib' 'upower' 'wavpack')
makedepends=('faad2' 'ffmpeg' 'flac' 'glib2' 'glu' 'gperftools' 'libid3tag'
'libogg' 'libsndfile' 'libusb' 'libvorbis' 'lilv' 'lv2' 'qt5-tools' 'portaudio'
'portmidi' 'protobuf' 'rubberband' 'scons' 'vamp-plugin-sdk')
# TODO: package libshout-idjc
depends=('gcc-libs' 'glibc' 'hidapi' 'lame' 'libglvnd' 'libmad' 'libmodplug'
'libmp4v2' 'libx11' 'openssl' 'opusfile' 'qt5-base' 'qt5-script'

This comment has been minimized.

Copy link
@Be-ing

Be-ing Jul 3, 2021

libmp4v2 is no longer required. It has been replaced by FFmpeg. libmp4v2 is only linked when FAAD=ON
https://github.com/mixxxdj/mixxx/blob/2.3.0/CMakeLists.txt#L2304

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 4, 2021

Author Member

Thanks! will change it.

Congrats on the very smooth transition between build systems otherwise btw.!

This comment has been minimized.

Copy link
@Be-ing

Be-ing Jul 5, 2021

🤣 It was anything but smooth. I spent 5 months including several all-nighters dealing with macOS and Windows builds: https://mixxx.org/news/2021-02-23-build-infrastructure-updates

All in all, it took over a year from the initial merge of CMake support to releasing 2.3.0.

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

Well, for me it was smooth to transition from scons to cmake (apart from the CMAKE_BUILD_TYPE being basically hard coded, which is not so great).
This is not a given at all, and I guess something was done right! :)

This comment has been minimized.

Copy link
@Be-ing

Be-ing Jul 5, 2021

I'm unclear what we should be doing for the CMAKE_BUILD_TYPE. The wiki says not to use Release build type in Arch, but here this package explicitly specifies Release. We use RelWithDebInfo for our CI builds.

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

The wiki says not to use Release build type in Arch, but here this package explicitly specifies Release

I had to, as anything else (e.g. specifically using 'None') fails due to how the CMakeLists.txt configures this.

This comment has been minimized.

Copy link
@Holzhaus

Holzhaus Jul 5, 2021

@dvzrv the code that populates the default build type is a variation of the code suggested on kitware's Blog btw: https://blog.kitware.com/cmake-and-the-default-build-type/

We had to do it, because without a default build type it builds a debug build, which didn't work on Windows. That should be fixed now, so we could remove it. But we have very special optimization needs, so its probably not a good idea to mess with out compiler flags because that may result in an unusable slow executable.

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

FWIW: This can probably be patched to allow not having a build type, but I was not sure what the larger implications would be (e.g. some projects configure their cmake setup in such a way, that having no build type equals to building debug type).

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

@Holzhaus Ah, thanks for the explanation. I was suspecting something like that.

I guess the more problematic options for our distribution-wide use-cases are also specific optimization flags that we would like to be able to have for all packages, e.g. https://gitlab.archlinux.org/archlinux/rfcs/-/blob/master/rfcs/0003-buildflags.rst or https://gitlab.archlinux.org/archlinux/rfcs/-/blob/master/rfcs/0004-lto-by-default.rst

'qt5-svg' 'qt5-x11extras' 'qtkeychain' 'soundtouch' 'speex' 'sqlite' 'taglib'
'upower' 'wavpack')
makedepends=('chromaprint' 'cmake' 'faad2' 'ffmpeg' 'fftw' 'flac' 'glib2' 'glu'
'gperftools' 'libid3tag' 'libogg' 'libsndfile' 'libusb' 'libvorbis' 'lilv'
'lv2' 'qt5-tools' 'portaudio' 'portmidi' 'protobuf' 'rubberband'
'vamp-plugin-sdk')
checkdepends=('xorg-server-xvfb')
source=("https://github.com/${pkgname}dj/${pkgname}/archive/release-${pkgver}.tar.gz"
mixxx-mp4v2-c++.patch)
sha512sums=('34f67088ea2271cb13b75d001d3814237b1b6c2052646d670a36e341fb78e24c34d361a3eb03b0dbfb2d94b0026fecc9125713d7533aac7e99161c27090115fa'
'c7ea562ac32e46ec12302cb3c50f2152d172830cfe669f230f810dff51c1421ae7811a96a26cbc06f28be6cf1900f9fc161ff91dfcad659831bd0ff24dea3cd7')

prepare() {
mv -v "${pkgname}-release-${pkgver}" "${pkgname}-${pkgver}"
cd "${pkgname}-${pkgver}"

# Check for mp4v2 headers in C++ mode, since using mp4v2 in C is broken https://github.com/TechSmith/mp4v2/issues/47
patch -p1 < ../mixxx-mp4v2-c++.patch
}
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/${pkgname}dj/${pkgname}/archive/${pkgver}.tar.gz")
sha512sums=('9ebb735b4f5d85b5f2b1ea6b8976ccfc0b1cd39516c5d5d6eb9038761836bb640583ea5c941f3b0d37e1882fa14dbc971c99f69498de764218d2815f58fc00f1')
b2sums=('346bef3feecf1671729b2b07156be281d9f7879aaf3bb5764ec7bdfa1004ef1630c9279df46467ab3696ea7debf3c2a6b68202db9f5a288879d8a34ee00df738')

build() {
cd "${pkgname}-${pkgver}"
export SCONSFLAGS="-j $(nproc)"
scons prefix=/usr \
build=release \
faad=1 \
ffmpeg=1 \
modplug=1 \
perftools=1 \
perftools_profiler=1 \
qt_sqlite_plugin=0 \
qtkeychain=1 \
test=1 \
target=linux \
virtualize=0 \
wv=1
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE='Release' \
-Wno-dev \
-B build \
-S .
make VERBOSE=1 -C build
}

check() {
cd "${pkgname}-${pkgver}"
xvfb-run lin64_build/${pkgname}-test
xvfb-run build/${pkgname}-test

This comment has been minimized.

Copy link
@Holzhaus

Holzhaus Jul 5, 2021

Any reason for not using ctest? Then the check can be parallelized when the appropriate CTEST_PARALLEL_LEVEL env var is set. Also, the output is much more readable.

cd build
ctest --output-on-failure

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

No particular reason, apart from me not having to change more characters in that line ;-)

}

package() {
depends+=('libFLAC.so' 'libfaad.so' 'libavcodec.so' 'libavformat.so'
'libavutil.so' 'libglib-2.0.so' 'libid3tag.so' 'libgobject-2.0.so'
'liblilv-0.so' 'libogg.so' 'libportaudio.so' 'libportmidi.so'
'libprotobuf-lite.so' 'librubberband.so' 'libsndfile.so' 'libtcmalloc.so'
'libusb-1.0.so' 'libvorbis.so' 'libvorbisenc.so' 'libvorbisfile.so')
depends+=('libFLAC.so' 'libavcodec.so' 'libavformat.so' 'libavutil.so'
'libchromaprint.so' 'libfftw3.so' 'libglib-2.0.so' 'libid3tag.so'

This comment has been minimized.

Copy link
@Holzhaus

Holzhaus Jul 5, 2021

Is this the preferred way to list runtime dependencies? Then I can update the mixxx_beta-git AUR package.

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

It is one take at listing the .so dependencies of a package.

You don't have to change the AUR package, as we will see a more generic approach for this (and other package components) in pacman 6.1 or 6.2.

'libgobject-2.0.so' 'liblilv-0.so' 'libogg.so' 'libportaudio.so'
'libportmidi.so' 'libprotobuf-lite.so' 'librubberband.so' 'libsndfile.so'
'libtcmalloc.so' 'libusb-1.0.so' 'libvorbis.so' 'libvorbisenc.so'
'libvorbisfile.so')

cd "${pkgname}-${pkgver}"
scons prefix=/usr \
install_root="${pkgdir}/usr" \
install
# removing the test executable
rm -v "${pkgdir}/usr/bin/${pkgname}-test"
make DESTDIR="${pkgdir}" install -C build

This comment has been minimized.

Copy link
@Be-ing

Be-ing Jul 5, 2021

It looks like this does not install the udev rule file? This is required to give unprivileged users access to HID devices: https://github.com/mixxxdj/mixxx/blob/main/res/linux/mixxx-usb-uaccess.rules

This comment has been minimized.

Copy link
@dvzrv

dvzrv Jul 5, 2021

Author Member

Yes:

$ pacman -Ql mixxx |rg udev
mixxx /usr/share/mixxx/udev/
mixxx /usr/share/mixxx/udev/rules.d/
mixxx /usr/share/mixxx/udev/rules.d/mixxx-usb-uaccess.rules

This comment has been minimized.

Copy link
@Be-ing

Be-ing Jul 8, 2021

Great, thank you for verifying.

}
26 changes: 0 additions & 26 deletions trunk/mixxx-mp4v2-c++.patch

This file was deleted.

0 comments on commit da37cf2

Please sign in to comment.