Skip to content

Taglib 2.0 compatibility? #127

@q234rty

Description

@q234rty

Taglib has released their 2.0 version removing a few deprecated funtions that taglib-ruby seems to use.

Building taglib-ruby with taglib 2.0 fails with

Build logs

current directory: /build/ruby-taglib-ruby/pkg/ruby-taglib-ruby/usr/lib/ruby/gems/3.0.0/gems/taglib-ruby-1.1.3/ext/taglib_base
/usr/bin/ruby -I /usr/lib/ruby/3.0.0 extconf.rb
checking for -lstdc++... yes
checking for -ltag... yes
creating Makefile

current directory: /build/ruby-taglib-ruby/pkg/ruby-taglib-ruby/usr/lib/ruby/gems/3.0.0/gems/taglib-ruby-1.1.3/ext/taglib_base
make DESTDIR\= sitearchdir\=./.gem.20240127-2508-yotc3p sitelibdir\=./.gem.20240127-2508-yotc3p clean

current directory: /build/ruby-taglib-ruby/pkg/ruby-taglib-ruby/usr/lib/ruby/gems/3.0.0/gems/taglib-ruby-1.1.3/ext/taglib_base
make DESTDIR\= sitearchdir\=./.gem.20240127-2508-yotc3p sitelibdir\=./.gem.20240127-2508-yotc3p
compiling taglib_base_wrap.cxx
taglib_base_wrap.cxx: In function ‘VALUE taglib_bytevector_to_ruby_string(const TagLib::ByteVector&)’:
taglib_base_wrap.cxx:1964:18: error: ‘const class TagLib::ByteVector’ has no member named ‘isNull’
 1964 |   if (byteVector.isNull()) {
      |                  ^~~~~~
taglib_base_wrap.cxx: In function ‘TagLib::ByteVector ruby_string_to_taglib_bytevector(VALUE)’:
taglib_base_wrap.cxx:1973:32: error: ‘null’ is not a member of ‘TagLib::ByteVector’
 1973 |     return TagLib::ByteVector::null;
      |                                ^~~~
taglib_base_wrap.cxx: In function ‘VALUE taglib_string_to_ruby_string(const TagLib::String&)’:
taglib_base_wrap.cxx:1980:14: error: ‘const class TagLib::String’ has no member named ‘isNull’
 1980 |   if (string.isNull()) {
      |              ^~~~~~
taglib_base_wrap.cxx: In function ‘TagLib::String ruby_string_to_taglib_string(VALUE)’:
taglib_base_wrap.cxx:1991:28: error: ‘null’ is not a member of ‘TagLib::String’
 1991 |     return TagLib::String::null;
      |                            ^~~~
taglib_base_wrap.cxx: In function ‘VALUE _wrap_File_readableq___(int, VALUE*, VALUE)’:
taglib_base_wrap.cxx:4194:32: error: ‘isReadable’ is not a member of ‘TagLib::File’
 4194 |   result = (bool)TagLib::File::isReadable((char const *)arg1);
      |                                ^~~~~~~~~~
taglib_base_wrap.cxx: In function ‘VALUE _wrap_File_writableq___(int, VALUE*, VALUE)’:
taglib_base_wrap.cxx:4221:32: error: ‘isWritable’ is not a member of ‘TagLib::File’
 4221 |   result = (bool)TagLib::File::isWritable((char const *)arg1);
      |                                ^~~~~~~~~~
taglib_base_wrap.cxx: In function ‘VALUE _wrap_FileRef_create__SWIG_0(int, VALUE*, VALUE)’:
taglib_base_wrap.cxx:4738:45: error: ‘create’ is not a member of ‘TagLib::FileRef’
 4738 |   result = (TagLib::File *)TagLib::FileRef::create(SWIG_STD_MOVE(arg1),arg2,arg3);
      |                                             ^~~~~~
taglib_base_wrap.cxx: In function ‘VALUE _wrap_FileRef_create__SWIG_1(int, VALUE*, VALUE)’:
taglib_base_wrap.cxx:4769:45: error: ‘create’ is not a member of ‘TagLib::FileRef’
 4769 |   result = (TagLib::File *)TagLib::FileRef::create(SWIG_STD_MOVE(arg1),arg2);
      |                                             ^~~~~~
taglib_base_wrap.cxx: In function ‘VALUE _wrap_FileRef_create__SWIG_2(int, VALUE*, VALUE)’:
taglib_base_wrap.cxx:4792:45: error: ‘create’ is not a member of ‘TagLib::FileRef’
 4792 |   result = (TagLib::File *)TagLib::FileRef::create(SWIG_STD_MOVE(arg1));
      |                                             ^~~~~~
taglib_base_wrap.cxx: In function ‘VALUE taglib_bytevector_to_ruby_string(const TagLib::ByteVector&)’:
taglib_base_wrap.cxx:1969:1: warning: control reaches end of non-void function [-Wreturn-type]
 1969 | }
      | ^
taglib_base_wrap.cxx: In function ‘VALUE taglib_string_to_ruby_string(const TagLib::String&)’:
taglib_base_wrap.cxx:1987:1: warning: control reaches end of non-void function [-Wreturn-type]
 1987 | }
      | ^
make: *** [Makefile:230: taglib_base_wrap.o] Error 1

make failed, exit code 2

Edit: I didn't regenerate swig headers when building, I guess only the usages of ByteVector::isNull() and ByteVector::null and their String counterparts are real issues :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions