19025 Commits

Author SHA1 Message Date
Max Kellermann
cf9a2eb508 .github/workflows/build.yml: disable yajl on macOS
This yajl on Homebrew comes with broken headers:

 /opt/homebrew/Cellar/yajl/2.1.0/include/yajl/yajl_parse.h:22:10: fatal error: 'yajl/yajl_common.h' file not found
 #include <yajl/yajl_common.h>
          ^~~~~~~~~~~~~~~~~~~~
2025-01-28 19:31:35 +01:00
Max Kellermann
0aeda01ba6 lib/yajl: drop "yajl/" prefix from #include paths
According to the yajl API documentation, #include lines should have
the "yajl/" path prefix, but the actual pkg-config file contains:

 includedir=${dollar}{prefix}/include/yajl

.. which already contains this directory name, and thus the "yajl/"
prefix cannot work.  Unfortunately, the yajl project hasn't been
maintained for nearly 10 years, and there's little chance this bug
will ever be fixed.
2025-01-28 19:27:46 +01:00
Max Kellermann
3798d11a8d .github/workflows/build.yml: disable NFS support
Homebrew comes with libnfs 6 which is not supported by MPD 0.23.
2025-01-28 19:23:36 +01:00
Max Kellermann
fab03f800a subprojects: remove libmicrohttpd
This one will be pulled in by libnpupnp automatically.  No need to
have it here.
2025-01-28 19:17:06 +01:00
Max Kellermann
5b5b101c56 subprojects: add id3tag 2025-01-28 19:15:43 +01:00
Max Kellermann
7770accee0 python/build/libs.py: remove libmad (unused) 2025-01-28 19:14:03 +01:00
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
177ffde90f Merge branch 'v0.23.x' 2025-01-28 18:45:02 +01:00
Max Kellermann
0d1fb9a02c meson.build: build libnpupnp and libmicrohttpd statically as submodules 2025-01-28 18:43:23 +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
Max Kellermann
75d0914373 Merge branch 'fix-handle-status' of https://github.com/geneticdrift/MPD 2025-01-28 06:18:19 +01:00
Max Kellermann
35dc1fc589 io/UniqueFileDescriptor: use AdoptTag in the constructors that adopt ownership 2025-01-23 16:57:39 +01:00
Max Kellermann
765a6a2f20 net/UniqueSocketDescriptor: use AdoptTag in the constructors that adopt ownership
This makes it a little bit harder to use the ownershop-adopting
constructors accidently.
2025-01-23 16:56:57 +01:00
Max Kellermann
131263cbe3 util/TagStructs: add struct AdoptTag 2025-01-23 16:56:00 +01:00
Max Kellermann
936611b47c util/ShallowCopy: rename header to TagStructs.hxx
This new header will be a collection of more structs like ShallowCopy.
2025-01-23 16:55:51 +01:00
gd
266eb393eb fix: output of command status broken by a misplaced comma in the format arguments 2025-01-21 14:03:41 +02:00
Michael Herstine
194ecd69e0 lib/fmt: remove even more now-broken uses of FMT_STRING
MPD stopped building since fmt 11.1.0; see
<https://github.com/fmtlib/fmt/issues/4304>. The first commit
fixing this was 9db7144, followed by 5de0909 (both on the
unstable branch).

This commit removes what the author believes to be the remaining
uses in the MPD codebase.
2025-01-20 19:54:41 -08:00
Michael Herstine
b24b3c1054 Merge remote-tracking branch 'upstream/v0.23.x' 2025-01-20 09:44:07 -08:00
Alfred Wingate
5de0909ae5
lib/fmt: remove the rest of the broken use of FMT_STRING
Fixes: 9db7144d0fa4512335070a984690f3f5034210a5
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 9db7144d0fa4512335070a984690f3f5034210a5
- 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
jcorporation
bd36b5e310 Response with error for sticker set,inc,dec and add missing asserts 2024-12-12 19:40:06 +01:00
jcorporation
015870ac71 Replace STICKER_SQL_INSERT and STICKER_SQL_UPDATE with STICKER_SQL_SET that lets handle sqlite insertion or update of the sticker value. 2024-12-12 19:15:22 +01:00
Max Kellermann
b1677bf79c Merge branch 'sticker_inc_dec' of https://github.com/jcorporation/MPD 2024-12-12 08:38:58 +01:00
jcorporation
1078c1c1bf Add sticker sub-commands inc and dec
Let sqlite do the work for incrementing or decrementing a sticker value.
This sub-commands are usefull to track playcounts with sticker values and
saves us one roundtrip.
2024-12-11 21:41:24 +01:00
Max Kellermann
9a8579d956 event/ServerSocket: do not close all listeners before rethrowing
If binding one address fails, we don't need to close all listeners.
For fatal errors, this will be done automatically and implicitly; and
for non-fatal errors (e.g. binding to the default port failed, but
there is an XDG listener), this closes the good listeners which are
supposed to be used.

Closes https://github.com/MusicPlayerDaemon/MPD/pull/2157
2024-12-04 14:25:42 +01:00
Max Kellermann
b6e187efd8 release v0.23.16
-----BEGIN PGP SIGNATURE-----
 
 iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmdO8gkNHG1heEBibGFy
 Zy5kZQAKCRAjbopYxttFEgdSEACRi/mJGq9at6GAlyBDuemzAo/UyyAa2fR8xTxf
 V7qGMlWfyylSFp9J1SwPvl56J5s28VpoFL4sfW9TYb9U3bl/eTTlyEvxZBgCbYq8
 fSDzVY7ReWxr1u/Fv7GuR9Nbu/tN0NItlBRB23FkNIYmdRxxH0h/fKbgXRD9TUiG
 qs4w97AqeWvxDuEyaoX0Y/l2tdlLyUENi7G7Np34giSFKpq9ldD28nKl18ORSuby
 +tK124wW1s/p7ncrzhzd9NyrEvmCMKB951H95H7+sfgojAY1LuVWGtiJSfMYw+w0
 LqCd23l78kwOfDYPwvB8sp4lUpVdxv4u9YhGwgNfzwavCrOWfzYMVg+hub3V0N//
 Xx79wGSkR1NQcbfUD05U6c4+jfDGARDRx9dUQWpeJGOF3LHFFFIyAPGW5T0DZrDY
 aPdoaLKbtK7F36QdBPZryhv49lXdsbd1OKhFV54QMR04bM3a150t6CiFk53nQIk0
 akIKCDt0Gi3GrLRkSwOeOwVuWsI/Y0SQC8dp8cIzCa9toIzfn42hG14SKM2FWAP1
 4BmekNkfqsG6xY8xcRwq6+HF1aq3dDHoPqIfE0r71/hadlIX9OjSNlepP2VIyzY/
 Gl5jvkf9el2MfI4JeCXafsZCyqlV6mx4HVPXrtiLgSdY3odTA1aShFI6/jfEjxXM
 Yo/ngQ==
 =640n
 -----END PGP SIGNATURE-----

Merge tag 'v0.23.16'

release v0.23.16
2024-12-03 13:01:15 +01: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]: 199bc82702

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