-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for TagLib 2.0 #12775
Add support for TagLib 2.0 #12775
Conversation
…uild This fixes a build error with TagLib 2.0 while still being backwards compatible with legacy TagLib 1.x versions. The `binaryData()` method exists since TagLib 1.8 which was released almost 12 years ago (September 6, 2012).
Compiles successfully on my EndeavourOS (Arch) box - only taglib2 installed, no taglib1. |
The only change is the method used for reading cover art from APE tags, so this makes sense to test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for taking care. It is a good idea to remove deprecated calls from our code base.
However this is not true IMHO:
Because Taglib 2.0 also changes the way tags are handled. There is at least a new separator " / " for multi value tags and probably other braking changes. We have a good experience with wired issue around taglib including crashes.
#12760 helps to have a free choice between V1 and V2 which is also a good idea in any case.
At least this is not a no-brainer and I would aeaidvthe risk a few days before our 2.4.0 release.
Can you please revert removing the guard against 2.0?
Please note that Taglib has also change the advice to
This is a good indicator that it is more safe to let package maintainers stick 1.13 for 2.4.0 until we have a done a good amount of testing and maybe until 2.1 is released. |
Did you consider what needs to be done for the new separator? |
I had a look and grepped the code a bit, but I doesn't look like we handle multi-valued fields anyway (at least from my reading of the mixxx code).
I don't understand. The PR you mention adds some workarounds for supporting the self-built If I understand correctly, #12760 is only needed for Arch Linux. We should send that patch to the Arch maintainer and may apply it to the AUR packages but it doesn't really belong into the Mixxx codebase. We shouldn't try to add workarounds for specific distros, otherwise I worry that it will degrade the code quality in the long term. Regarding the removal of the guard, there are two major reasons for it:
This does not influence our pre-built binaries. The only risk I see is with distro maintainers. However, we could alleviate that with a remark in the release notes to use TagLib 1.x and maybe an additional warning when building Mixxx. |
My idea was to keep the guard for the 2.4.0 release to not put user data on a risk of an untested library with Mixxx. We should remove it with 2.5, than we have the 2.5-beta phase to become confident that the library is good. We may also consider to remove the guard in 2.4.1
It is needed for all distros that integrate Taglib 2.0 without an extra namespace. The path of taglib1 might be ARCH specific, but it can be adjusted via PKG_CONFIG_PATH. We don't know which decision other bistros make, but it looks like at least freeBSD will follow.
Flowing the 2.5 idea, the user can just remove the FATAL_ERROR line or use the 2.5 branch. We may add an extra config value, but I don't think it is worth the effort to spend time time for making things convenient that we do not want.
Than let's repair it.
We have the experience that a warning is not strict enough, |
My original Idea was also to just focus on the release and not spend time for the taglib1/2 issue we do now. So let's take here a safe shortcut and continue this discussion in a week or such after 2.4.0 is released. |
The 2.4 branch will use the 2.0 header even if it will link against taglib 1.0 because of the taglib prefixed includes. Or is it a CMakeCache issue? |
I don't have |
Interesting, on which OS are you? Does cake display a version? I can imagine that the version lookup fallback is broken when ther is no PC file found. |
FWIW, I just did a full official and AUR update, build of
|
giving up on that - couldn't find nor convert a track to APE file format. Sorry. |
@mxmilkiib to test this, you need to checkout the branch of this PR:
|
Removing the guard will introduce this issue: |
Sure, excuse me for not testing more in specific or in general yet, but I haven't worked out a non frustrating workflow for building (whether it should involve a PKGBUILD at all, which neatly contains all the build steps and parameters, and, a more recent concern, if I can easily integrate GitButler with it's oh-so-pain-point-reducing virtual branch feature), though hopefully I can sort that out today. |
I use |
If you're using a PKGBUILD, just replace the Mixxx repository URL in See https://man.archlinux.org/man/PKGBUILD.5#USING_VCS_SOURCES for details. |
I removed the revert to unblock this fix, and will create a separate PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you.
The
I do that, but it complains about the local repo not being the same as the source repo, and I have to delete the bare mixxx/ repo and the extracted src/ so makepkg can pull as fresh copy, which is the frustrating part. I don't know how to reconcile things, so I guess I'll just forsake the "building a package and installing a proper pacman tracked instance" part of the process that makepkg provides, and use the manual untracked install command method that I'll take from the PKGBUILD install(). |
The good thing with Mixxx is that it does not require to be installed. It runs from the build directory. So in your case, just clone mixxx repository to your home drive and use cmake as described in our wiki. |
This fixes a build error with TagLib 2.0 while still being backwards compatible with legacy TagLib 1.x versions. The
binaryData()
method exists since TagLib 1.8 which was released almost 12 years ago (September 6, 2012).Also see https://taglib.org/#taglib-20-release---jan-24-2024:
This seems to be the only deprecated API we use, at least it builds fine on Arch.
Obsoletes #12709 and #12760.