Commit Graph

17197 Commits

Author SHA1 Message Date
Max Kellermann eb3cd7bed3 subprojects: add lame 2025-01-28 19:13:59 +01:00
Max Kellermann 56cc2f4c65 subprojects: add libmpdclient wrap 2025-01-28 19:13:46 +01:00
Max Kellermann 9723af3f35 subprojects: add openssl 2025-01-28 19:13:45 +01:00
Max Kellermann dcf3cf4216 subprojects: add ogg, flac, opus 2025-01-28 19:13:19 +01:00
Max Kellermann 578c94081f subprojects: add curl 2025-01-28 19:12:57 +01:00
Max Kellermann efa8304d2d subprojects/.gitignore: sort 2025-01-28 19:12:42 +01:00
Max Kellermann 2752f67877 lib/nfs/meson.build: add missing dependency on libevent.a 2025-01-28 19:05:09 +01:00
Max Kellermann f55e0df614 lib/curl/meson.build: add missing internal dependency on libevent.a 2025-01-28 18:52:37 +01:00
Max Kellermann a0a39ae828 .github/workflows/build.yml: update actions/checkout to v4 2025-01-28 18:39:17 +01:00
Max Kellermann e57c60e3d8 .github/workflows/build.yml: update hendrikmuhs/ccache-action to v1.2 2025-01-28 18:38:59 +01:00
Max Kellermann 53090e3745 .github/workflows/build.yml: update actions/setup-python to v5 2025-01-28 18:37:06 +01:00
Max Kellermann 93eb3da48a subprojects: add liburing 2025-01-28 18:35:21 +01:00
Max Kellermann 75a3d9340e python/build/libs.py: update FFmpeg to 7.1 2025-01-28 18:34:29 +01:00
Max Kellermann 9445ea1565 subprojects: add libnpupnp 2025-01-28 18:34:29 +01:00
Max Kellermann a5a26d304b subprojects: update sqlite3 to 3.48.0-1 2025-01-28 18:34:29 +01:00
Max Kellermann 1d8d298a22 subprojects: update fmt to 11.1.1-2 2025-01-28 18:34:28 +01:00
Max Kellermann 508bfbe334 pipewire/meson.build: add "include_type:system"
This suppresses a compiler warning due to sloppy code in PipeWire:

 /usr/include/spa-0.2/spa/utils/json-core.h:440:29: error: implicit conversion increases floating-point precision: 'float' to 'double' [-Werror,-Wdouble-promotion]
   440 |         return spa_dtoa(str, size, val);
       |                ~~~~~~~~            ^~~
2025-01-28 18:34:12 +01:00
Max Kellermann 1385212572 io/uring/meson.build: detect liburing with include_type=system
This avoids breakages due to `-Wgnu-anonymous-struct`.
2025-01-28 18:34:07 +01:00
Max Kellermann 8dcd6ea2b4 increment version number to 0.23.17 2025-01-28 18:13:07 +01:00
Alfred Wingate 5de0909ae5 lib/fmt: remove the rest of the broken use of FMT_STRING
Fixes: 9db7144d0f
Signed-off-by: Alfred Wingate <parona@protonmail.com>
2025-01-18 03:29:14 +02:00
Rudi Heitbaum da6efd6361 plugins/meson.build: revert unintentional static link change
Minor revert of 9db7144d0f
- no change was to be done to meson.build.
2025-01-13 22:39:12 +00:00
Rudi Heitbaum 9db7144d0f lib/fmt: drop use of FMT_STRING
When compiling with libfmt-11.1.0 and newer the following compile errors occur:

In file included from ../src/decoder/DecoderPrint.cxx:23:
../src/client/Response.hxx: In instantiation of 'bool Response::Fmt(const S&, Args&& ...) [with S = decoder_plugin_print(Response&, const DecoderPlugin&)::<lambda()>::FMT_COMPILE_STRING; Args = {const char* const&}]':
../src/decoder/DecoderPrint.cxx:38:7:   required from here
   38 |         r.Fmt(FMT_STRING("plugin: {}\n"), plugin.name);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/client/Response.hxx:86:28: error: cannot convert 'const decoder_plugin_print(Response&, const DecoderPlugin&)::<lambda()>::FMT_COMPILE_STRING' to 'fmt::v11::string_view' {aka 'fmt::v11::basic_string_view<char>'}
   86 |                 return VFmt(format_str,
      |                        ~~~~^~~~~~~~~~~~
   87 |                             fmt::make_format_args(args...));
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/client/Response.hxx:81:36: note: initializing argument 1 of 'bool Response::VFmt(fmt::v11::string_view, fmt::v11::format_args)'
   81 |         bool VFmt(fmt::string_view format_str, fmt::format_args args) noexcept;
      |                   ~~~~~~~~~~~~~~~~~^~~~~~~~~~
../src/client/Response.hxx: In instantiation of 'bool Response::Fmt(const S&, Args&& ...) [with S = decoder_plugin_print(Response&, const DecoderPlugin&)::<lambda()>::FMT_COMPILE_STRING; Args = {const char* const&}]':

The error is due to the use of FMT_STRING. The libfmt team shared the following:

    The correct way of using FMT_STRING is to wrap a format string when passing to a
    function with compile-time checks (i.e. that takes format_string) as documented
    in https://fmt.dev/11.1/api/#legacy-compile-time-checks.

    Noting that FMT_STRING is a legacy API and has been superseded by consteval-based
    API starting from version 8: https://github.com/fmtlib/fmt/releases/tag/8.0.0. It
    looks like MPD is trying to emulate {fmt}'s old way of implementing compile-time
    checks which was never properly documented because it was basically a hack. So the
    correct fix is to switch to format_string and, possibly, remove usage of FMT_STRING.

    The old way of doing compile-time checks (fmt::make_args_checked) was documented
    in https://fmt.dev/7.1/api.html#argument-lists but it looks like MPD is not using
    that API so the problematic uses of FMT_STRING have no effect and can just be removed.

The FMT_STRING has been removed in this change based on the fmt-7.1 API and now MPD is
successfully compile against the current libfmt-11.1.0 which highlighted the issue that
had been present in the codebase as it is now triggering the error, is legacy and was
not using the API for which FMT_STRING was aligned with.
2025-01-13 06:17:01 +00:00
Max Kellermann b5bd294e5c release v0.23.16 v0.23.16 2024-12-03 12:56:57 +01:00
Max Kellermann ac60bd47f0 thread/WindowsFuture: add missing include for std::error_category 2024-12-03 12:54:12 +01:00
Max Kellermann b7248f0333 filter/ffmpeg: fill AVFrame::pts
Some libavfilter plugins don't produce any output if `pts` is never
set, e.g. the `lowpass` plugin.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2114
2024-12-03 12:52:15 +01:00
Marius Feraru 8a5b5378e6 db/update/Walk:FindAncestorLoop: uint64_t inode & device
Previously, inode numbers were truncated to 32 bits, which could lead
to problems on XFS where inodes are 64 bit; this could lead to bogus
"recursive directory found" errors during database update.

[mk: added commit description and NEWS line]

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2000
2024-12-03 12:49:02 +01:00
Michael Cho 4a49f75799 meson.build: support building with ICU 76
ICU 76 decided to reduce overlinking[^1] thus `icu-i18n` will no longer
add `icu-uc` when linking to shared libraries. This results in failure:
```
src/lib/icu/libicu.a.p/Converter.cxx.o: undefined reference to symbol 'ucnv_fromUnicode_76'
```

[^1]: https://github.com/unicode-org/icu/commit/199bc827021ffdb43b6579d68e5eecf54c7f6f56

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2151
2024-12-03 12:47:55 +01:00
Max Kellermann 9d2666f293 subprojects: update sqlite3 to 3.47.1-1 2024-12-03 12:46:33 +01:00
Max Kellermann e63fcc5982 python/build/libs: update libnfs to 5.0.3 2024-12-03 12:45:05 +01:00
Max Kellermann 4c37c17f2e python/build/libs.py: update WildMidi to 0.4.6 2024-12-03 12:44:33 +01:00
Max Kellermann 722820a375 python/build/libs: update zlib to 1.3.1 2024-12-03 12:44:14 +01:00
Max Kellermann 688023eb9e python/build/libs.py: update libopenmpt to 0.7.9 2024-12-03 12:43:34 +01:00
Max Kellermann 5771aeaddd subprojects: update fmt to 11.0.2-1 2024-12-03 12:42:02 +01:00
Rudi Heitbaum a42da90042 lib/fmt: support build with libfmt-11.0.0
Upstream libfmt commit fmtlib/fmt@d707292
now requires the format function to be const.

Adjust the function prototype so it is const and can compile.

Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2141
2024-12-03 12:42:02 +01:00
Max Kellermann d7d32ed6fc meson.build: suppress -Wnan-infinity-disabled (clang 18) due to libfmt 2024-12-03 12:40:21 +01:00
Max Kellermann 4715acf27e Log: add missing include for std::back_inserter()
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2071
2024-12-03 12:38:00 +01:00
Max Kellermann 8780db5ee8 increment version number to 0.23.16 2024-12-03 12:34:01 +01:00
Max Kellermann b8bfc98618 release v0.23.15 v0.23.15 2023-12-20 16:21:57 +01:00
Max Kellermann 6e6f72a521 win32/HResult: convert assert() to runtime check to work around -Walloc-size-larger-than 2023-12-20 16:15:58 +01:00
Max Kellermann a654c5d643 Revert "android: Fix MPD shutdown from settings UI"
This reverts commit 94b5b9f370.  It was
not necessary for branch v0.23.x because there, Break() is
thread-safe; this was only changed later by commit
a3b32819b1
2023-12-20 16:15:58 +01:00
Max Kellermann c5d6aa169f lib/curl/patches: refresh no_CMAKE_C_IMPLICIT_LINK_LIBRARIES.patch for 7.85.0 2023-12-20 13:43:20 +01:00
Max Kellermann c1c67286d3 python/build/libs.py: update CURL to 8.5.0 2023-12-20 13:28:54 +01:00
borine 2fb34697c7 input/plugins/Alsa: catch all exceptions
snd_pcm_poll_descriptors_revents() may return any error code; the
ALSA docs do not constrain the permitted values. A 'hw' device
will only ever return an error if the pfd array passed in is
invalid (-EINVAL), but other I/O plugins may return arbitary
errors. For example a network-based device may return -EPIPE etc.
The resulting exception thrown by
AlsaNonBlockPcm::DispatchSockets() must be caught to prevent the
mpd process from being aborted.
2023-12-20 13:27:25 +01:00
Colin Edwards 94b5b9f370 android: Fix MPD shutdown from settings UI 2023-12-20 13:27:16 +01:00
Max Kellermann a9467513e1 doc/developer.rst: add missing return type to code style sample 2023-12-20 13:26:48 +01:00
borine 17d944f6ce input/plugins/Alsa: limit ALSA buffer time to 2 seconds maximum
Some ALSA capture devices can have very large buffers, holding 10
seconds or more audio. Using the maximum buffer size with such
devices leads to unacceptably large, and unnecessary, latency.
Also, some ALSA drivers (e.g. HDA Intel PCH) report an invalid
maximum period size, and the period size that mpd calculates from
the maximum buffer size results in "Invalid argument" error when
applying the hw_params. Note that the "default" capture device on
many cards includes the "dsnoop" plugin which imposes a buffer
size of 16384 frames, so that "alsa://" works OK but
"alsa://plughw" or "alsa://hw" both fail.

Limit the maximum buffer time for ALSA input devices to a more useable
2 seconds, thereby avoiding both the above problems.
2023-12-20 13:26:24 +01:00
Max Kellermann 0f82f18652 python/build/libs.py: update CURL to 8.4.0 2023-12-20 13:25:08 +01:00
Max Kellermann 3db3e577f1 python/build/libs.py: update OpenSSL to 3.1.4 2023-12-20 13:25:04 +01:00
Max Kellermann 37ee821947 python/build/libs.py: update FFmpeg to 6.1 2023-12-20 13:25:00 +01:00
Max Kellermann 916ab9a7e6 python/build/libs.py: update openmpt to 0.7.3 2023-12-20 13:24:57 +01:00