MTG / homebrew-essentia

Homebrew build scripts for Essentia
34 stars 13 forks source link

install fails with avcodec #29

Closed d-rocchesso closed 2 years ago

d-rocchesso commented 2 years ago

If I run brew install essentia --HEAD I get

==> Downloading https://files.pythonhosted.org/packages/21/9f/b251f7f8a76dec1d6651be194dfba8fb8d7781d10ab3987190de8391d08e/six-1.14.0.tar.gz Already downloaded: /Users/roc/Library/Caches/Homebrew/downloads/22c9c7a937f5bb39678fed6ea3266190990eedb811f541ddc6b35ae42dc0e2e9--six-1.14.0.tar.gz ==> Cloning https://github.com/MTG/essentia.git Updating /Users/roc/Library/Caches/Homebrew/essentia--git ==> Checking out branch master Already on 'master' Your branch is up to date with 'origin/master'. HEAD is now at e226b152 Fix broken links to Essentia.js demos Entering 'test/audio' Entering 'test/models' /Users/roc/Library/Caches/Homebrew/essentia--git/test/audio /Users/roc/Library/Caches/Homebrew/essentia--git/test/models ==> Installing essentia from mtg/essentia ==> /opt/homebrew/opt/python@3.9/bin/python3 waf configure --mode=release --with-examples --with-vamp --prefix=/opt/homebrew/Cellar/essentia/HEAD-e226b15 ==> /opt/homebrew/opt/python@3.9/bin/python3 waf Last 15 lines from /Users/roc/Library/Logs/Homebrew/essentia/02.python3: avcodec_decode_subtitle2 /opt/homebrew/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2531:5: note: 'avcodec_decode_subtitle2' declared here int avcodec_decode_subtitle2(AVCodecContext avctx, AVSubtitle sub, ^ ../src/algorithms/io/audioloader.cpp:264:47: error: cannot initialize a parameter of type 'AVSubtitle ' with an lvalue of type 'AVFrame ' int len = avcodec_decode_audio4(audioCtx, _decodedFrame, &gotFrame, packet); ^~~~~ /opt/homebrew/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2531:65: note: passing argument to parameter 'sub' here int avcodec_decode_subtitle2(AVCodecContext avctx, AVSubtitle sub, ^ 8 errors generated.

tritip commented 2 years ago

Same issue here. Is it a change in the ffmpeg 5.0 API?

kesteele03 commented 2 years ago

I have the same issue, did anyone ever figure it out?

richardwesthaver commented 2 years ago

similar issue here, I will try build from source and see how that works out

Last 15 lines from /Users/ellis/Library/Logs/Homebrew/essentia/02.python3:
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:3011:61: note: passing argument to parameter 'buf' here
int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
                                                            ^
../src/essentia/utils/audiocontext.cpp:364:7: error: use of undeclared identifier 'av_free_packet'; did you mean 'av_init_packet'?
      av_free_packet(&packet);
      ^~~~~~~~~~~~~~
      av_init_packet
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/packet.h:506:6: note: 'av_init_packet' declared here
void av_init_packet(AVPacket *pkt);
     ^
14 errors generated.

Waf: Leaving directory `/private/tmp/essentia-20220218-3930-tqzxdx/build'
Build failed
richardwesthaver commented 2 years ago

install from source works like a charm - here's the config I used

python3 waf configure --build-static --with-python --with-examples --with-gaia

I was getting errors with the config but installing libresample and libav fixed it: brew install libav libresample

I needed to build gaia from source too - make sure you use python3 if it's not the default in your path - for example: PYTHON=python3 ./waf configure --with-python-bindings

I think the formulas for gaia and essentia are just a bit outdated :)

medusamedusa commented 2 years ago

Hello, I would have a closer-related question regarding Essentia for Mac and the waf configuration.

python3 ./waf configure --build-static --with-python --with-cpptests --with-examples --with-vamp
python3 ./waf
python3 ./waf install

I'm using macOs 12.0 with M1. I had first successfully installed Essentia with "brew." Then, I went into the folder essentia-master, and I ran python3 ./waf configure --build-static --with-python --with-cpptests --with-examples --with-vamp with no issues. However, at the step [293/294] Compiling essentia.pc.in, there are troubles. There appear references to the architecture arm64/x86_64:

[296/450] Linking build/src/examples/essentia_standard_beatsmarker
[298/450] Linking build/src/examples/essentia_standard_fadedetection
[300/450] Linking build/src/examples/essentia_standard_mfcc
[302/450] Linking build/src/examples/essentia_standard_onsetrate
[304/450] Linking build/src/examples/essentia_standard_pitchdemo
[306/450] Linking build/src/examples/essentia_standard_rhythmtransform
[308/450] Linking build/src/examples/essentia_standard_spectralcontrast
[310/450] Linking build/src/examples/essentia_standard_vibrato
[312/450] Linking build/src/examples/essentia_standard_harmonicmodel
[314/450] Linking build/src/examples/essentia_standard_hpsmodel
ld: warning: ignoring file /opt/homebrew/Cellar/fftw/3.3.10/lib/libfftw3f.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/Cellar/taglib/1.12/lib/libtag.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib/libsamplerate.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64

...and another issue seems to be related with TagLib:

Undefined symbols for architecture x86_64:
  "TagLib::StringList::StringList(TagLib::StringList const&)", referenced from:
      std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<TagLib::String, TagLib::StringList>, std::__1::__tree_node<std::__1::__value_type<TagLib::String, TagLib::StringList>, void*>*, long>, bool> 

At the end, the build fails.

How could I fix these issues? Thank you for the suggestions you can give me.

dbogdanov commented 2 years ago

@medusamedusa Does it build without --build-static flag?

You can run python3 waf -v to check which compilation flags are used.

medusamedusa commented 2 years ago

Without --build-static it configures correctly. I was not using this in the build step. With python3 waf -v, I get a plethora of comments of the form:

[296/450] Linking build/src/examples/essentia_standard_beatsmarker
19:47:31 runner ['/usr/bin/clang++', 'src/examples/standard_beatsmarker.cpp.1.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_beatsmarker', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']

and other comments as the following ones:

"_src_strerror", referenced from:
      essentia::standard::Resample::compute() in libessentia.a(resample.cpp.1.o)
      essentia::streaming::Resample::process() in libessentia.a(resample.cpp.1.o)
      essentia::streaming::Resample::reset() in libessentia.a(resample.cpp.1.o)

...

ld: symbol(s) not found for architecture x86_64`

...

essentia::parseYaml(__sFILE*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libessentia.a(yamlast.cpp.1.o)
      throwParserError(yaml_parser_s*) in libessentia.a(yamlast.cpp.1.o)

...and finally:

Waf: Leaving directory `/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build'
Build failed
 -> task in 'essentia_standard_pitchdemo' failed with exit status 1: 
    {task 140683534275744: cxxprogram standard_pitchdemo.cpp.5.o -> essentia_standard_pitchdemo}
['/usr/bin/clang++', 'src/examples/standard_pitchdemo.cpp.5.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_pitchdemo', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_mfcc' failed with exit status 1: 
    {task 140683534275296: cxxprogram standard_mfcc.cpp.3.o -> essentia_standard_mfcc}
['/usr/bin/clang++', 'src/examples/standard_mfcc.cpp.3.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_mfcc', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_rhythmtransform' failed with exit status 1: 
    {task 140683534275968: cxxprogram standard_rhythmtransform.cpp.6.o -> essentia_standard_rhythmtransform}
['/usr/bin/clang++', 'src/examples/standard_rhythmtransform.cpp.6.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_rhythmtransform', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_spectralcontrast' failed with exit status 1: 
    {task 140683534276192: cxxprogram standard_spectralcontrast.cpp.7.o -> essentia_standard_spectralcontrast}
['/usr/bin/clang++', 'src/examples/standard_spectralcontrast.cpp.7.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_spectralcontrast', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_harmonicmodel' failed with exit status 1: 
    {task 140683534276640: cxxprogram standard_harmonicmodel.cpp.9.o -> essentia_standard_harmonicmodel}
['/usr/bin/clang++', 'src/examples/standard_harmonicmodel.cpp.9.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_harmonicmodel', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_vibrato' failed with exit status 1: 
    {task 140683534276416: cxxprogram standard_vibrato.cpp.8.o -> essentia_standard_vibrato}
['/usr/bin/clang++', 'src/examples/standard_vibrato.cpp.8.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_vibrato', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_onsetrate' failed with exit status 1: 
    {task 140683534275520: cxxprogram standard_onsetrate.cpp.4.o -> essentia_standard_onsetrate}
['/usr/bin/clang++', 'src/examples/standard_onsetrate.cpp.4.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_onsetrate', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_fadedetection' failed with exit status 1: 
    {task 140683534275072: cxxprogram standard_fadedetection.cpp.2.o -> essentia_standard_fadedetection}
['/usr/bin/clang++', 'src/examples/standard_fadedetection.cpp.2.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_fadedetection', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_beatsmarker' failed with exit status 1: 
    {task 140683534274848: cxxprogram standard_beatsmarker.cpp.1.o -> essentia_standard_beatsmarker}
['/usr/bin/clang++', 'src/examples/standard_beatsmarker.cpp.1.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_beatsmarker', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']
 -> task in 'essentia_standard_hpsmodel' failed with exit status 1: 
    {task 140683534276864: cxxprogram standard_hpsmodel.cpp.10.o -> essentia_standard_hpsmodel}
['/usr/bin/clang++', 'src/examples/standard_hpsmodel.cpp.10.o', '-o/opt/homebrew/Cellar/essentia/HEAD-c9eadba/essentia-master/build/src/examples/essentia_standard_hpsmodel', '-Lsrc', '-lessentia', '-L/opt/homebrew/Cellar/fftw/3.3.10/lib', '-L/opt/homebrew/Cellar/libsamplerate/0.1.9_1/lib', '-L/opt/homebrew/Cellar/taglib/1.12/lib', '-L/opt/homebrew/Cellar/libyaml/0.2.5/lib', '-L/opt/homebrew/Cellar/chromaprint/1.5.1_1/lib', '-lfftw3f', '-lsamplerate', '-ltag', '-lz', '-lyaml', '-lchromaprint']