Beets: Update to v2.11.0 - #7178
Conversation
|
Basic testing was successful: EDIT: Also tested the long-elusive plugin |
|
I just noticed your review ask on this one, sorry for the delay. Super interesting hooks you've added. It's using current pip options while this should be updated to allow using newer pip (or build) methods to pass arguments. Also needs to be divided on sub PRs. Mind if i look further in the codebase to see how best to include your proposed changes? Noting that fully supporting cmake and meson with pip (and or build) as always been on my todo list, real glad you managed to get this working somehow. |
|
hey @th0ma7, I've rebased the beets-2.11.0 branch onto the current master, which includes the recent framework restructuring (mk file renames). The build passes for The armv7 failure is in scipy's meson build: when cross-compiling for 32-bit ARM, pkg-config finds the native (x86_64) Python's #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." The native Python headers happen to work on 64-bit targets (aarch64, x64) because We have two options:
Any preference or other ideas to consider? |
|
Re-reading this i believe the problem is elsewhere. Adding the pc file to the plist won't change anything: it only serves for the spk packaging, but if you look close enough the .pc files are into the target/lib/pkgconfig directory. The main reason why you're seing this is due to you environment: the spk-meta are meant to add the proper entries into PKG_CONFIG_LIBDIR and all the _FLAGS. Look at the structure under mk/spksrc.spk/ where the exports and variable mangling are done. Your code for beets to generate a meson dependent package from pip is exactly the direction I want to take to avoid when ever possible of using spksrc/python exceptions. But the framework needs a lot of adjustments to occur in the first place to properly allow this, in particular the need yo migrate to new variables allowing the use of a more recent pip (and that's just one of the few i believe). I have the gcc overlay then a handful of minor things before completing the broader framework changes. I could realistically resume work on the python part of the framework and see how to fully integrate this functionality over the Fall period. Otherwise can try to assist but this requires a lot of cycles... |
|
Hey @th0ma7, thanks for taking the time to consider this. Your reasoning makes sense, and I agree that our long-term goal should be to simplify the packaging framework and make Python packages more sustainable to maintain. Since beets isn't a high-demand package, I'll leave this PR as a draft for now until you have some cycles to look at that part of the framework. |
…s-env vars to wheel-compile
…rn, numba, lap, soxr
…support - Bump SPK_VERS from 2.5.1 to 2.11.0, SPK_REV from 12 to 13 - Migrate from Python 3.12 to Python 3.14 - Add autobpm plugin support via librosa/llvmlite (requires DSM 7.2+) - Enable OpenBLAS dependency for scipy - Update CHANGELOG
e89c678 to
f79b8be
Compare
Without a python binary in the meson cross-file, import('python') resolves
the build-machine (host) python, whose headers break 32-bit cross builds
(LONG_BIT mismatch, e.g. scipy on armv7). Generate a cross-file fragment
declaring the crossenv cross-python and pass it alongside the existing
meson cross-files for pip-built meson wheels.
meson-python reads setup args from [tool.meson-python.args] for every meson invocation, including the metadata-generation setup that does not receive config-settings. Inject the --cross-file configure args there so cross compilation is consistent (fixes pycairo sanity-check failure on ARM).
pycairo compiles bindings for cairo-xcb.h, which includes xcb/xcb.h. Without cross/libxcb the header is missing on cross builds.
The pygobject crossenv installs pycairo from the wheelhouse; the pins must match python/pycairo (now 1.29.0) or pip rebuilds from source without cross-files and fails.
Description
Package Changes
autobpm(via librosa/llvmlite)BUILD_SHARED_LIBS=OFF,LLVM_BUILD_LLVM_DYLIB=ON, target-specific arch, andLLVM_ENABLE_ZSTD=OFF. UsesADDITIONAL_CONFIGURE_ARGS(framework cmake command readsCONFIGURE_ARGS, notCMAKE_ARGS).Framework
tc_vars.mk): Addsneeds_exe_wrapper = trueandlongdouble_formatfor numpy/scipy cross-compilation.pkgconfiglines.wheel-env.mk): Only passes cross-file for non-x64.crossenv.mk,compile.mk): Injects cross-file args for meson packages, cmake args for soxr, andSETUPTOOLS_SCM_PRETEND_VERSIONfor soxr (version detection fails without git tags). AddsLD_LIBRARY_PATHand npymath override for scipy. Fixed PATH ordering (build-bin after system PATH to avoid using cross-compiled Python on host).Fixes #
Checklist
all-supportedcompleted successfullyType of change