MTG / homebrew-essentia

Homebrew build scripts for Essentia
34 stars 13 forks source link

Unable to install Essentia #11

Closed spraveena closed 5 years ago

spraveena commented 5 years ago

Hi, I tried installing essentia using homebrew following the instructions on the page, but was unable to do so. This is the error I'm getting:

Last 15 lines from /Users/steffen_herff/Library/Logs/Homebrew/essentia/02.waf: ../src/algorithms/standard/constantq.cpp:104:58: error: implicit conversion from '_Complex double' to 'double' is not permitted in C++ vector<complex > hammingWindow(_FFTLength, 0.0 + 0.0j);


../src/algorithms/standard/constantq.cpp:105:63: error: implicit conversion from '_Complex double' to 'float' is not permitted in C++
  vector<complex<Real> > transfHammingWindowR(_FFTLength, 0.0 + 0.0j);
                                                          ~~~~^~~~~~
../src/algorithms/standard/constantq.cpp:120:42: error: implicit conversion from '_Complex double' to 'double' is not permitted in C++
    hammingWindow.assign(_FFTLength, 0.0 + 0.0j);
                                     ~~~~^~~~~~
4 errors generated.
Waf: Leaving directory `/private/tmp/essentia-20181015-30480-114o76z/essentia-2.1_beta3/build'
Build failed

Any idea what the issue could be?
tobiasschlatter commented 5 years ago

I have the same issue just now. Installation with brew directly does not work. Seems like the way the preinstalled clang(++) on OSX is the problem here (though I'm no expert on that topic).

Compiling from source does not work either.

Interestingly, when installing the llvm via brew and updating PATH the sources can be compiled successfully. Retrying to install essentia via brew still fails. Apparently brew keeps using the xcode version - and according to a short google search this behaviour cannot be changed.

Using: OSX 10.13.6 (17G65) Before installing llvm via brew (so the xcode version I guess)

➜  which clang
/usr/bin/clang
➜  clang -v   
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

After installing llvm via brew:

➜  which clang
/usr/local/opt/llvm/bin/clang
➜  clang -v
clang version 7.0.0 (tags/RELEASE_700/final)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

Edit: Installing from HEAD results in the same issue.

alastair commented 5 years ago

This looks like it's caused by https://github.com/MTG/essentia/issues/795, We'll look into getting this fix fixed in essentia as soon as possible.

Also a duplicate of #9

dbogdanov commented 5 years ago

@tobiasschlatter Hmm, I've got no issues building master from source nor installing with brew from HEAD. Native Clang 9.1.0 on OSX 10.13.6.

@spraveena, we've done some fixes in constantq.cpp some time ago (so, it shouldn't be related to MTG/essentia#795). You are building an old version (beta3), try building the master branch.

zuzmuz commented 5 years ago

having the same issue, apparently building is failing at /src/algorithms/standard/constantq.cpp

zuzmuz commented 5 years ago

native clang 10.0.0 in my case

justinsalamon commented 5 years ago

I had a similar issue with the build failing on constantq.cpp, here's a quick (hacky) fix:

It appears the compiler is complaining about a cast from _Complex double to double. Note that the complex value in all the lines the compiler is complaining about is 0.0 + 0.0j which is just 0. So you can replace 0.0 + 0.0j with just 0.0 in these lines, and then the compilation completes successfully (at least for me).

Note that for these lines this change shouldn't change the semantics of the code because it's just a complex 0 value that's immediately cast to a double 0, but be careful about making this change to lines where the value is not 0 or where it's not immediately cast to a double, since that could change the behavior of the code in undesired ways.

EDIT: this is for building beta3, not the latest version on master.

alastair commented 5 years ago

This should be fixed now in MTG/essentia#804, building for OSX from HEAD should now work with any version of Clang or gcc