Control: forwarded -1 https://github.com/savonet/ocaml-taglib/issues/12

Hi,

On Fri, 10 Jan 2025 12:44:42 -0500 Boyuan Yang <by...@debian.org> wrote:
> Source: ocaml-taglib
> Version: 0.3.10-3
> Severity: important
> User: debian-multime...@lists.debian.org
> Usertags: taglib2.0
> 
> The package fails to build with taglib 2.0.2 from Debian experimental.
> There are API breakages between taglib 1.x and taglib 2.x, and
> some manual tweaks may be necessary.
> 
> Related build logs:
> 
>     dh_auto_build -O--buildsystem=ocaml_dune
>          dune build -j 8 -p taglib
> File "src/dune", line 8, characters 9-21:
> 8 |   (names taglib_stubs)
>               ^^^^^^^^^^^^
> (cd _build/default/src && /usr/bin/x86_64-linux-gnu-gcc -fPIC 
> -I/usr/include/taglib -g -I /usr/lib/x86_64-linux-gnu/ocaml/5.2.0 -I 
> /usr/lib/x86_64-linux-gnu/ocaml/5.2.0/unix
-o taglib_stubs.o -c taglib_stubs.cc)
> taglib_stubs.cc: In function ‘value caml_taglib_file_new(value, value)’:
> taglib_stubs.cc:231:18: error: ‘create’ is not a member of ‘TagLib::FileRef’
>    231 |     f = FileRef::create(filename);
>        |                  ^~~~~~
> taglib_stubs.cc: In function ‘value 
> caml_taglib_audioproperties_get_int(value, value)’:
> taglib_stubs.cc:502:23: warning: ‘virtual int 
> TagLib::AudioProperties::length() const’ is deprecated 
> [-Wdeprecated-declarations]
>    502 |     tmp = prop->length();
>        |           ~~~~~~~~~~~~^~
> In file included from /usr/include/taglib/fileref.h:33,
>                   from taglib_stubs.cc:45:
> /usr/include/taglib/audioproperties.h:82:17: note: declared here
>     82 |     virtual int length() const;
>        |                 ^~~~~~
> taglib_stubs.cc: In function ‘value caml_taglib_id3v2_parse_tag(value, 
> value)’:
> taglib_stubs.cc:571:11: error: ‘uint’ is not a member of ‘TagLib’; did you 
> mean ‘uint’?
>    571 |   TagLib::uint size = ID3v2::Header::size();
>        |           ^~~~
> In file included from /usr/include/stdlib.h:514,
>                   from /usr/include/c++/14/cstdlib:79,
>                   from /usr/include/c++/14/stdlib.h:36,
>                   from taglib_stubs.cc:43:
> /usr/include/x86_64-linux-gnu/sys/types.h:150:22: note: ‘uint’ declared here
>    150 | typedef unsigned int uint;
>        |                      ^~~~
> taglib_stubs.cc:573:31: error: ‘size’ was not declared in this scope; did you 
> mean ‘std::size’?
>    573 |   tag->doParse(ByteVector(s + size, caml_string_length(h) - size));
>        |                               ^~~~
>        |                               std::size
> In file included from /usr/include/c++/14/vector:69,
>                   from /usr/include/taglib/tbytevector.h:30,
>                   from /usr/include/taglib/tfile.h:29,
>                   from /usr/include/taglib/fileref.h:29:
> /usr/include/c++/14/bits/range_access.h:272:5: note: ‘std::size’ declared here
>    272 |     size(const _Tp (&)[_Nm]) noexcept
>        |     ^~~~
> dh_auto_build: error: dune build -j 8 -p taglib returned exit code 1

I tried to look into the porting issue, but unfortunately I do not understand
the OCaml C/C++ binding's variable lifecycle around File *f. This is especially
problematic since upstream is turning to RAII fasion and cancelled the interface
of obtaining a raw File * pointer with file type guessing support. In the 
meanwhile,
ocaml-taglib upstream has no activity on this issue in the past 6 months, see
https://github.com/savonet/ocaml-taglib/issues/12 .

Any help would be grateful. Otherwise I would like to see this package fall out
of Testing before Trixie freeze to unblock the taglib-2.0 transition.

Thanks,
Boyuan Yang

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to