addpkg(x11/mixxx): 2.5.4

- Fixes https://github.com/termux/termux-packages/issues/27668

- Unfortunately, the USB device detection support is not working, so it had to be disabled. Other functionality appears to be working.
This commit is contained in:
termux-pacman-bot
2025-12-19 00:12:05 +00:00
parent 1efefde0fb
commit bee25d49c9
5 changed files with 119 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
TERMUX_PKG_HOMEPAGE=https://www.mixxx.org
TERMUX_PKG_DESCRIPTION="Free DJ software that gives you everything you need to perform live mixes"
TERMUX_PKG_LICENSE="GPL-2.0-or-later"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="2.5.4"
TERMUX_PKG_SRCURL="https://github.com/mixxxdj/mixxx/archive/refs/tags/$TERMUX_PKG_VERSION.tar.gz"
TERMUX_PKG_SHA256=53fb1a2a6c5ac6eb3562cb99c5bcae8777d81e48b96b5b3c292794c0c105b269
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="chromaprint, ffmpeg, flac, glib, glu, hicolor-icon-theme, hidapi, libc++, libdjinterop, libebur128, libid3tag, libkeyfinder, libmad, libmodplug, libmp3lame, libogg, libopus, libsndfile, libsoundtouch, libsqlite, libusb, libvorbis, libx11, lilv, openssl, opusfile, portaudio, portmidi, protobuf, qt6-qt5compat, qt6-qtbase, qt6-qtdeclarative, qt6-qtsvg, qtkeychain, rubberband, taglib, upower, wavpack, zlib"
TERMUX_PKG_BUILD_DEPENDS="ms-gsl, googletest"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DCMAKE_SYSTEM_NAME=Linux
"
termux_step_pre_configure() {
termux_setup_protobuf
if [[ "$TERMUX_ON_DEVICE_BUILD" == "false" ]]; then
# By default cmake will pick $TERMUX_PREFIX/bin/protoc, we should avoid it when cross-compiling
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -Dprotobuf_generate_PROTOC_EXE=$(command -v protoc)"
fi
}

View File

@@ -0,0 +1,35 @@
Unfortunately, when tested, mixxx crashes here when launched if this is not disabled:
Thread 27 "Controller" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x63d5 (LWP 25557)]
0x0000007f6993a278 in pthread_mutex_lock () from /apex/com.android.runtime/lib64/bionic/libc.so
(gdb) bt
#0 0x0000007f6993a278 in pthread_mutex_lock () from /apex/com.android.runtime/lib64/bionic/libc.so
#1 0x0000007f82550ad8 in ?? () from /data/data/com.termux/files/usr/lib/libusb-1.0.so
#2 0x0000007f82550d78 in libusb_get_device_list () from /data/data/com.termux/files/usr/lib/libusb-1.0.so
#3 0x00000055561b5c24 in BulkEnumerator::queryDevices (this=0xb400007d9007ade0)
at /home/builder/.termux-build/mixxx/src/src/controllers/bulk/bulkenumerator.cpp:37
#4 0x0000005555972a5c in ControllerManager::updateControllerList (this=this@entry=0xb400007df0299608)
at /home/builder/.termux-build/mixxx/src/src/controllers/controllermanager.cpp:203
#5 0x0000005555970a68 in ControllerManager::slotSetUpDevices (this=0xb400007df0299608)
Since this doesn't seem to happen with other libusb reverse dependencies, it might be a problem with mixxx itself.
--- a/src/controllers/bulk/bulkenumerator.cpp
+++ b/src/controllers/bulk/bulkenumerator.cpp
@@ -34,7 +34,7 @@ static bool is_interesting(struct libusb_device_descriptor *desc) {
QList<Controller*> BulkEnumerator::queryDevices() {
qDebug() << "Scanning USB Bulk devices:";
libusb_device **list;
- ssize_t cnt = libusb_get_device_list(m_context, &list);
+ ssize_t cnt = 0;
ssize_t i = 0;
int err = 0;
@@ -56,6 +56,5 @@ QList<Controller*> BulkEnumerator::queryDevices() {
m_devices.push_back(currentDevice);
}
}
- libusb_free_device_list(list, 1);
return m_devices;
}

View File

@@ -0,0 +1,24 @@
Prevents
clang++: error: unsupported option '-mfloat-abi=hard' for target 'thumbv7-unknown-linux-android24'
Matches termux_setup_toolchain_29()
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -532,7 +532,7 @@ elseif(GNU_GCC OR LLVM_CLANG)
# https://stackoverflow.com/questions/45917280/mac-osx-minumum-support-sse-version
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|armv7.*)$") # but not armv8
add_compile_options(
- -mfloat-abi=hard
+ -mfloat-abi=softfp
-mfpu=neon
)
endif()
@@ -555,7 +555,7 @@ elseif(GNU_GCC OR LLVM_CLANG)
# are set automatically
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|armv7.*)$") # but not armv8
add_compile_options(
- -mfloat-abi=hard
+ -mfloat-abi=softfp
-mfpu=neon
)
endif()

View File

@@ -0,0 +1,13 @@
This should be OK to do as long as mixxx is always recompiled anytime libdjinterop is bumped.
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2435,7 +2435,7 @@ if(ENGINEPRIME)
# statically. This situation should be reviewed once libdjinterop hits version 1.x.
set(LIBDJINTEROP_VERSION 0.24.3)
# Look whether an existing installation of libdjinterop matches the required version.
- find_package(DjInterop ${LIBDJINTEROP_VERSION} EXACT CONFIG)
+ find_package(DjInterop ${LIBDJINTEROP_VERSION} CONFIG)
if(NOT DjInterop_FOUND)
find_package(DjInterop ${LIBDJINTEROP_VERSION} EXACT MODULE)
endif()

View File

@@ -0,0 +1,25 @@
Unlike GNU/Linux's hidapi,
Termux's hidapi does not have a libhidapi-hidraw.so.
--- a/cmake/modules/Findhidapi.cmake
+++ b/cmake/modules/Findhidapi.cmake
@@ -59,7 +59,7 @@ find_library(hidapi_LIBRARY
)
mark_as_advanced(hidapi_LIBRARY)
-if(CMAKE_SYSTEM_NAME STREQUAL Linux)
+if(FALSE)
find_library(hidapi-hidraw_LIBRARY
NAMES hidapi-hidraw
HINTS ${PC_hidapi_LIBRARY_DIRS}
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3867,7 +3867,7 @@ if(HID)
# hidapi has two backends on Linux, one using the kernel's hidraw API and one using libusb.
# libusb obviously does not support Bluetooth HID devices, so use the hidraw backend. The
# libusb backend is the default, so hidraw needs to be selected explicitly at link time.
- if(CMAKE_SYSTEM_NAME STREQUAL Linux)
+ if(FALSE)
target_link_libraries(mixxx-lib PRIVATE hidapi::hidraw)
else()
target_link_libraries(mixxx-lib PRIVATE hidapi::hidapi)