Files
acousticbrainz-ng/misc/build-essentia.sh

72 lines
2.3 KiB
Bash
Executable File

#! /bin/bash
install_packages=false
install_tf_lib=false
test=false
tflib_already_downloaded=$([ -f libtensorflow-cpu-linux-x86_64.tar.gz ] && echo true || echo false)
if [ "$EUID" -ne 0 ]; then
echo "Must be root (to install packages and TensorFlow)"
exit 1
fi
while [[ $# -gt 0 ]]; do
case $1 in
--test)
test=true
shift
;;
--install-packages)
install_packages=true
shift
;;
--install-tf-lib)
install_tf_lib=true
shift
;;
--help)
echo "Usage: $0 [--test] [--install-packages] [--install-tf-lib]"
echo "Options:"
echo " --test Run tests after building"
echo " --install-packages Install required packages (only needed on first run if not already installed)"
echo " --install-tf-lib Install TensorFlow C library (only needed on first run if not already installed)"
exit 0
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
if [ "$install_packages" = true ]; then
apt-get install -y git wget build-essential cmake libeigen3-dev libyaml-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libsamplerate0-dev libtag1-dev libchromaprint-dev vamp-plugin-sdk
fi
if [ "$install_tf_lib" = true ]; then
if [ "$tflib_already_downloaded" = false ]; then
wget https://storage.googleapis.com/tensorflow/versions/2.18.0/libtensorflow-cpu-linux-x86_64.tar.gz
fi
tar -C /usr/local -xzf libtensorflow-cpu-linux-x86_64.tar.gz
echo "/usr/local/lib" | tee /etc/ld.so.conf.d/tensorflow.conf
/sbin/ldconfig
fi
if [ ! -d "essentia" ]; then
git clone https://github.com/wo80/essentia.git
fi
cd essentia || return 1
git switch cmake
sed -i 's/find_package(Yaml QUIET)/find_package(YAML QUIET)/' CMakeLists.txt
cmake -B build -D BUILD_EXAMPLES=ON -D BUILD_TESTS="$([ "$test" = true ] && echo ON || echo OFF)" -D BUILD_PYTHON_BINDINGS=OFF -D BUILD_VAMP_PLUGIN=ON -D USE_TENSORFLOW=ON
cmake --build build --config Release --parallel "$(nproc)"
if [ "$test" = true ]; then
ctest --test-dir build --output-on-failure -C Release
fi
cmake --install build --config Release
cd ..
mkdir -p out
find essentia/build/src/examples -type f -executable -exec cp {} out \;