MTG / homebrew-essentia

Homebrew build scripts for Essentia
34 stars 13 forks source link

installing essentia for python on mac (including 10.11) #13

Closed loicgithub closed 5 years ago

loicgithub commented 5 years ago

Hi,

I want to install essentia on my mac, this mac doesn't support os 10.12 and later. is it possible to install it via pip ? (I installed numpy, scipy, matplotlib on python3 with pip and everything seems to work well).

I try to install brew on this computer and it seems to not be such a good idea (this is what I get on the command line):

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

==> You are using macOS 10.11. ==> We (and Apple) do not provide support for this old version. This installation may not succeed. After installation, you will encounter build failures and other breakages. Please create pull requests instead of asking for help on Homebrew's GitHub, Discourse, Twitter or IRC. As you are running this old version, you are responsible for resolving any issues you experience.


So I wonder if I really want to "encounter build failures and other breakages" :-) ...

Also, I see that there was some issues with brew install, are they solved? https://github.com/MTG/homebrew-essentia/issues/8

thanks, Loïc

dbogdanov commented 5 years ago

Unfortunately, Homebrew does not officially support 10.11, as it is outdated and they only have the possibility to support the most recent platforms: https://discourse.brew.sh/t/mac-os-10-11-support/4117/9

You can still install it, and it should be safe for your computer (see https://discourse.brew.sh/t/install-homebrew-on-osx-10-11-6/3655/3)

loicgithub commented 5 years ago

Thanks for your answer. What I'm more worried about is the modification that the install will do about directories, owner, group, creation and the issues on other softwares that may happen, and in particular for python and python libs. And also the compatibilities with python libs and there use simultaneously.

What about pip install? could it work on mac ? Thanks, Loïc

dbogdanov commented 5 years ago

Brew works in a separate environment, and it installs its own python, so this should not be a problem.

pip install is in our todo list, we should be able to build mac python wheels on Travis.

loicgithub commented 5 years ago

I installed brew on my macos 10.11, and tried to install essentia. I seems that it's not going to work on this macos version.

Thirst, I had an error because it didn't found java jdk1.8, This was the error:

libbluray: Java 1.8 is required to install this formula. JavaRequirement unsatisfied! You can install with Homebrew Cask: brew cask install homebrew/cask-versions/java8 You can download from: https://www.oracle.com/technetwork/java/javase/downloads/index.html Error: An unsatisfied requirement failed this build.

but the indication on how to install java8 (actually the jdk) with homebrew was wrong, but I finally (and hardly) found a way to do it like this:

$ brew tap AdoptOpenJDK/openjdk $ brew cask install adoptopenjdk/openjdk/adoptopenjdk8

none of the different things that I found on the web did work, thes two lines are a mix of different things I found.

Apparently with this, the java jdk8 was installed correctly, and I could launch essentia installation properly, it installed several dependencies but get a error for open-mpi:

server/pmix_server_ops.c:3432:19: error: use of undeclared identifier 'CLOCK_MONOTONIC' clock_gettime(CLOCK_MONOTONIC, &tp); ^ 1 error generated. make[5]: [server/pmix_server_ops.lo] Error 1 make[5]: Waiting for unfinished jobs.... make[4]: [all-recursive] Error 1 make[3]: [all-recursive] Error 1 make[2]: [all-recursive] Error 1 make[1]: [all-recursive] Error 1 make: *** [all-recursive] Error 1

Do not report this issue to Homebrew/brew or Homebrew/core!

Error: You are using macOS 10.11. We (and Apple) do not provide support for this old version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew's GitHub, Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version.

SpyRoomi commented 4 years ago

After lot of hours of installing, my terminal returns the same think, what is the solution for this?

loicgithub commented 4 years ago

depending on what you want to do with it, if you want to do real-time C++ , There is an OpenFrameworks addon called audioanalyzer that is a wrapper of the essentia lib. Not all the algorithm are available, adding the missing ones yourself work in some case, but until now not all for me. For python, a possibility is to install a linux boot on your mac (in addition to your macos) on a separate disk partition.

loicgithub commented 4 years ago

for other usage of the c++ lib you may try to use an already compiled lib, that what is done when using OpenFrameworks.

SpyRoomi commented 4 years ago

depending on what you want to do with it, if you want to do real-time C++ , There is an OpenFrameworks addon called audioanalyzer that is a wrapper of the essentia lib. Not all the algorithm are available, adding the missing ones yourself work in some case, but until now not all for me. For python, a possibility is to install a linux boot on your mac (in addition to your macos) on a separate disk partition.

Yes, i need this package for python, and i wanted to run this on my mac, i' ve already run also with Ubutu virtual box, but i have other problems there, for the communication with my sound devices, through pyaudio and other audio packages! Maybe isn't possible to pip install essentia on mac, i' ll try to find an other solution, thanks for your time an for your post about java8, its was so close!

SpyRoomi commented 4 years ago

However, except virtual box, i can import essentia on google drive colab, so combining all that, maybe i can make it!

loicgithub commented 4 years ago

The use of java and the blueray related lib is probably not essential for a c++ lib and a python layer on it. So rethinking the compile and make of the library and the python layer without things that are not necessary and make hard to compile on macos (at least macos 10.11.6 don't know for more recent ones) can be good, but not easy probably.

Le jeu. 30 janv. 2020 à 10:42, SpyRoomi notifications@github.com a écrit :

However, except virtual box, i can import essentia on google drive colab, so combining all that, maybe i can make it!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MTG/homebrew-essentia/issues/13?email_source=notifications&email_token=AKP6NOFY4G5Y2GSRNJ74QT3RAKOI5A5CNFSM4HHWXVQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKKK72Q#issuecomment-580169706, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKP6NOBJBZR6UY5EGFK4MQDRAKOI5ANCNFSM4HHWXVQA .

j14y commented 3 years ago

The easiest way to install this is via source using your preferred Python version.

Clone the repository first and then you can run the following from the project root (from the documentation):

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

The --with-python flag enables python binding for it. You can also set the Python version used during compilation using the --python flag and point it to the appropriate path.

This will add the compiled Essentia python files to the site packages folder for the python interpreter used to compile it or the version of Python specified via --python if you've set that flag.

If you're using a virtual environment, you can then copy the compiled files to the environments site packages folder provided that the environment uses the same Python version used to compile Essentia initially, otherwise recompile it using the required Python version and repeat the process.

suedez commented 2 years ago

when I use 'pip install essentia', the 'building wheel for essentia' takes forever. I have also tried to use homebrew, but when I do 'brew tap MTG/essentia‘ in terminal, it report error as 'fatal: authentication failed for https//:github.com/MTG/homebrew-essentia'...

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.