clementine-player / Clementine

:tangerine: Clementine Music Player
https://www.clementine-player.org/
GNU General Public License v3.0
3.68k stars 670 forks source link

libprojectm needs update, current version will break in std=c++17 builds #7292

Open marcusmueller opened 9 months ago

marcusmueller commented 9 months ago

Before posting

Please follow the steps below and check the boxes with [x] once you did the step.

System information

Please provide information about your system and the version of Clementine used.

Expected behaviour / actual behaviour

It's 2023; bundled dependencies should not break with C++17 :)

Steps to reproduce the problem (only for bugs)

running a test build of clementine with the usual warnings enabled (cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=clang++), I spot that the currently bundled version of libprojectm still uses std::binary_function, which was removed in C++17. Upstream master does no longer do that.

Also, there's a bunch of other very questionable things in that bundled versions, like an inherently broken random number generator, a lot of inherently false comparisons (a bool is never < 0), and so on.

Question is why we're actually bundling libprojectm; don't think that makes too much sense.

polsvoice commented 9 months ago

Isn't libprojectm needed for visualizations?

marcusmueller commented 9 months ago

@polsvoice yes? So, the question is why we're bundling it, not why we're using it.

DarthGandalf commented 7 months ago

Yeah, visualizations work fine with libprojectm installed via the distro package manager