MTG / essentia

C++ library for audio and music analysis, description and synthesis, including Python bindings
http://essentia.upf.edu
GNU Affero General Public License v3.0
2.85k stars 533 forks source link

building on arch linux --with-gaia #981

Closed vredesbyyrd closed 4 years ago

vredesbyyrd commented 4 years ago

Hi,

I am trying to compile essentia with gaia support. On arch linux qt4 is no longer supported, so I built gaia from the qt5 branch, although I do not know if that branch has conflicts with essentia master.

Any thoughts on compiling essentia + gaia on arch/qt5 would be greatly appreciated.

Build command:

  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./waf configure  \
        --mode=release \
        --with-gaia \
        --with-example=streaming_extractor_music,streaming_extractor_music_svm   \
        --with-python    \
        --python=$(which python)
    ./waf

Output:

==> Starting build()...
/home/clu/build/essentia-git/src/essentia/wscript:302: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if ctx.env.CXX_NAME is not "clang":
Setting top to                           : /home/clu/build/essentia-git/src/essentia 
Setting out to                           : /home/clu/build/essentia-git/src/essentia/build 
→ configuring the project in /home/clu/build/essentia-git/src/essentia
→ Building in release mode
Checking for 'g++' (C++ compiler)        : /usr/bin/g++ 
Checking for 'gcc' (C compiler)          : /usr/bin/gcc 
→ Searching *.pc pkg-config files for dependencies in /home/clu/.local/usr/local/lib/pkgconfig and default paths
Checking for program 'pkg-config'        : /usr/bin/pkg-config 
Checking for 'eigen3'                    : yes 
Checking for 'libavcodec' >= 55.34.1     : yes 
Checking for 'libavformat'               : yes 
Checking for 'libavutil'                 : yes 
Checking for 'libavresample'             : not found 
Checking for 'samplerate'                : yes 
Checking for 'taglib' >= 1.9             : yes 
Checking for 'yaml-0.1'                  : yes 
Checking for 'fftw3f'                    : yes 
Checking for 'libchromaprint'            : yes 
Checking for 'gaia2'                     : yes 
Checking for 'gcc' (C compiler)          : /usr/bin/gcc 
Checking for program 'python'            : /usr/bin/python 
Checking for python version >= 2.7.0     : 3.8.2 
→ Configuring for python3
python-config                            : /usr/bin/python-config 
Asking python-config for pyext '--cflags --libs --ldflags' flags : yes 
Testing pyext configuration                                      : yes 
Checking for python module 'numpy'                               : 1.18.4 

================================ CONFIGURATION SUMMARY ================================
- using FFTW for FFT

- fftw detected!
- FFmpeg (or LibAv on debian/ubuntu) seems to be missing.
  The following algorithms will be ignored: ['AudioLoader', 'MonoLoader', 'EqloudLoader', 'EasyLoader', 'MonoWriter', 'AudioWriter']

- libsamplerate (SRC) detected!
  The following algorithms will be included: ['Resample']

- TagLib detected!
  The following algorithms will be included: ['MetadataReader', 'MusicExtractor', 'FreesoundExtractor']

- libyaml detected!
  The following algorithms will be included: ['YamlInput', 'YamlOutput']

- Gaia2 detected!
  The following algorithms will be included: ['GaiaTransform', 'MusicExtractorSVM']

- Chromaprint detected!
  The following algorithms will be included: ['Chromaprinter']

- Essentia is configured without Tensorflow.
  The following algorithms will be ignored: ['TensorflowPredict', 'TensorflowPredictMusiCNN', 'TensorflowPredictVGGish']
- Compiling 56 examples
  standard_beatsmarker, standard_fadedetection, standard_mfcc, standard_onsetrate, standard_pitchdemo, standard_rhythmtransform, standard_spectralcontrast, standard_vibrato, standard_harmonicmodel, standard_hpsmodel, standard_hprmodel, standard_predominantmask, standard_sinemodel, standard_sinesubtraction, standard_sprmodel, standard_spsmodel, standard_stft, standard_stochasticmodel, standard_chromaprinter, standard_pca, standard_discontinuitydetector, standard_extractor_la-cupula, standard_gapsdetector, standard_humdetector, standard_loudnessebur128_double_input, standard_saturationdetector, standard_snr, standard_welch, streaming_humdetector, standard_crosssimilaritymatrix, standard_chromacrosssimilarity, standard_coversongsimilarity, streaming_beatsmarker, streaming_beattracker_multifeature_mirex2013, streaming_key, streaming_gfcc, streaming_md5, streaming_mfcc, streaming_spectrogram, streaming_rhythmextractor_multifeature, streaming_onsetrate, streaming_panning, streaming_pitchyinfft, streaming_predominantpitchmelodia, streaming_chromacrosssimilarity, streaming_coversongsimilarity, streaming_stft, streaming_tuningfrequency, streaming_vibrato, streaming_tensorflowpredict, streaming_yinprobabilistic, streaming_musicnn_predict, streaming_vggish_predict, streaming_extractor_music, streaming_extractor_freesound, streaming_extractor_music_svm
Building all the algorithms
Ignoring the following algorithms: AudioLoader, FFTAComplex, IFFTAComplex, AudioWriter, FFTK, IFFTKComplex, TensorflowPredict, MonoLoader, EqloudLoader, IFFTA, FFTKComplex, FFTA, TensorflowPredictVGGish, TensorflowPredictMusiCNN, EasyLoader, MonoWriter, IFFTK
Created algorithms registration file

---------------------------------------------------------------------------------------
- Building shared library
- Building Python extension
- Building examples
=======================================================================================
'configure' finished successfully (0.824s)
/home/clu/build/essentia-git/src/essentia/wscript:302: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if ctx.env.CXX_NAME is not "clang":
Waf: Entering directory `/home/clu/build/essentia-git/src/essentia/build'
→ building from /home/clu/build/essentia-git/src/essentia
→ building from /home/clu/build/essentia-git/src/essentia/src
Building all the algorithms
Ignoring the following algorithms: IFFTAComplex, MonoLoader, IFFTA, TensorflowPredictMusiCNN, EqloudLoader, FFTKComplex, FFTAComplex, IFFTK, MonoWriter, FFTA, AudioLoader, TensorflowPredictVGGish, TensorflowPredict, AudioWriter, FFTK, EasyLoader, IFFTKComplex
Created algorithms registration file
→ building from /home/clu/build/essentia-git/src/essentia/src/examples
→ building from /home/clu/build/essentia-git/src/essentia/src/python
[  7/293] Compiling src/essentia/connector.cpp
[  9/293] Compiling src/algorithms/standard/stereodemuxer.cpp
[ 10/293] Compiling src/algorithms/tonal/dissonance.cpp
[ 11/293] Compiling src/3rdparty/cephes/bessel/iv.cpp
[146/293] Compiling src/3rdparty/cephes/bessel/gamma.cpp
[147/293] Compiling src/essentia/pool.cpp
[148/293] Compiling src/algorithms/spectral/triangularbarkbands.cpp
[149/293] Compiling src/algorithms/essentia_algorithms_reg.cpp
In file included from ../src/algorithms/essentia_algorithms_reg.cpp:74:
../src/algorithms/highlevel/gaiatransform.h:23:10: fatal error: gaia2/transformation.h: No such file or directory
   23 | #include <gaia2/transformation.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Waf: Leaving directory `/home/clu/build/essentia-git/src/essentia/build'
vredesbyyrd commented 4 years ago

Well, installing gaia to /usr/local/lib/ got the build much closer - but it failed on linking.

/usr/bin/ld: cannot find -lQtCore
collect2: error: ld returned 1 exit status

full output

vredesbyyrd commented 4 years ago

I decided just to build qt4 from source and install it alongside qt5, so I suppose I'll close this issue.

dbogdanov commented 4 years ago

We'll work on updating Essentia accordingly once the https://github.com/MTG/gaia/pull/92 is finished.

vredesbyyrd commented 4 years ago

Thanks for the info.

Yesterday, by changing:

Libs: -L${libdir} -L${qtlibdir} -lgaia2 -lQtCore -lyaml to Libs: -L${libdir} -L${qtlibdir} -lgaia2 -lQt5Core -lyaml in giai2.pc

I was able to get Essentia to build with qt5 and --with-gaia. But I could not get it to compile the examples.

--with-example=streaming_extractor_music,streaming_extractor_music_svm

I don't have access to the error messages anymore, but it looked like some conflicts with qt5, understandably.

I'll keep an eye on future updates. Thanks for all your work on this awesome project.