2025-06-19 12:55:18 +03:00

172 lines
5.6 KiB
Bash
Executable File

#!/bin/bash
set -e
set -x
set -o pipefail
ARCH="$1"
if [[ "$ARCH" == "arm64" ]]; then
MACOS_DEPLOYMENT_TARGET="11.0"
OV_ARCH_NAME="arm64"
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.0/macos/openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_arm64.tgz"
OPENVINO_FOLDER="openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_arm64"
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-arm64-2.2.2.zip"
LIBOMP_LIB_DIR="/opt/homebrew/opt/libomp/lib/"
elif [[ "$ARCH" == "x86_64" ]]; then
MACOS_DEPLOYMENT_TARGET="10.15"
OV_ARCH_NAME="intel64"
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.0/macos/openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_x86_64.tgz"
OPENVINO_FOLDER="openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_x86_64"
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-x86_64-2.2.2.zip"
LIBOMP_LIB_DIR="/usr/local/opt/libomp/lib/"
echo "Install x86 brew"
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/bin/brew install libomp
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
brew install opencl-clhpp-headers
brew install libomp
MODULE_VERSION="3.7.1-R4.2"
ROOT_DIR=$(pwd)
SOURCE_PATH="$ROOT_DIR/sources"
PACKAGE_PATH="$ROOT_DIR/packages"
BUILD_PATH="$ROOT_DIR/build"
STAGING_PATH="$ROOT_DIR/staging"
OPENCL_INCLUDE_DIR="/opt/homebrew/opt/opencl-clhpp-headers/include"
echo "Applying patches..."
for repo in $(ls "$SOURCE_PATH"); do
patch_dir="${ROOT_DIR}/patches/$repo"
if [ -d "$patch_dir" ]; then
echo "Applying patches to $repo"
for patch in $patch_dir/*.patch; do
if [ -f "$patch" ]; then
echo "Applying patch $patch"
patch -d "$SOURCE_PATH/$repo" < "$patch"
fi
done
else
echo "No patches found for $repo"
fi
done
cp -r "$SOURCE_PATH/openvino-plugins-ai-audacity/mod-openvino" "$SOURCE_PATH/audacity/modules"
cd "$PACKAGE_PATH"
wget "$OPENVINO_URL"
tar xvf "$(basename "$OPENVINO_URL")"
source "$OPENVINO_FOLDER/setupvars.sh"
wget "$LIBTORCH_URL"
unzip "$(basename "$LIBTORCH_URL")"
export LIBTORCH_ROOTDIR="$PACKAGE_PATH/libtorch"
mkdir -p "$BUILD_PATH/whisper"
cd "$BUILD_PATH/whisper"
cmake "$SOURCE_PATH/whisper.cpp" -DWHISPER_OPENVINO=ON -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET -DWHISPER_NO_ACCELERATE=ON
make -j"$(sysctl -n hw.ncpu)"
cmake --install . --config Release --prefix "$PACKAGE_PATH/whisper"
export WHISPERCPP_ROOTDIR="$PACKAGE_PATH/whisper"
export LD_LIBRARY_PATH="${WHISPERCPP_ROOTDIR}/lib:$LD_LIBRARY_PATH"
mkdir -p "$BUILD_PATH/openvino_tokenizers"
cd "$BUILD_PATH/openvino_tokenizers"
cmake "$SOURCE_PATH/openvino_tokenizers" -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET
make -j"$(sysctl -n hw.ncpu)"
cmake --install . --config Release --prefix "$PACKAGE_PATH/openvino_tokenizers"
mkdir -p "$BUILD_PATH/audacity"
cd "$BUILD_PATH/audacity"
cmake -G "Unix Makefiles" \
-D CMAKE_CXX_FLAGS="-I${OPENCL_INCLUDE_DIR}" \
-DCMAKE_OSX_ARCHITECTURES=$ARCH \
-DMACOS_ARCHITECTURE=$ARCH \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET \
"$SOURCE_PATH/audacity" -DCMAKE_BUILD_TYPE=Release
make -j"$(sysctl -n hw.ncpu)"
mkdir -p "$STAGING_PATH"
cd "$STAGING_PATH"
MODULE_PATH="$STAGING_PATH/dist/Library/Application Support/audacity/modules"
mkdir -p "$MODULE_PATH/libs"
cp -P "$BUILD_PATH/audacity/Release/Audacity.app/Contents/modules/mod-openvino.so" "$MODULE_PATH"
cp -P "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/lib/$OV_ARCH_NAME/Release/"*.{so,dylib} "$MODULE_PATH/libs"
cp -P "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/3rdparty/tbb/lib/"*.dylib "$MODULE_PATH/libs"
cp -P "$PACKAGE_PATH/libtorch/lib/"*.dylib "$MODULE_PATH/libs"
cp -P "$PACKAGE_PATH/whisper/lib/"*.dylib "$MODULE_PATH/libs"
cp -P "$PACKAGE_PATH/openvino_tokenizers/lib/"*.dylib "$MODULE_PATH/libs"
cp "${LIBOMP_LIB_DIR}/libomp.dylib" "$MODULE_PATH/libs/"
chmod -R ug+w "$MODULE_PATH"
xattr -cr "$MODULE_PATH"
cd "$MODULE_PATH"
for lib in *.so *.dylib; do
[ -e "$lib" ] || continue
echo "Processing $lib..."
deps=$(otool -L "$lib" | awk 'NR>1 {print $1}' | grep '@loader_path/../Frameworks/')
for dep in $deps; do
dep_filename=$(basename "$dep")
if [[ -f "./libs/$dep_filename" ]]; then
new_dep="@rpath/$dep_filename"
else
new_dep="@executable_path/../Frameworks/$dep_filename"
fi
echo " Updating dependency: $dep$new_dep"
install_name_tool -change "$dep" "$new_dep" "$lib"
done
install_name_tool -add_rpath @loader_path/libs "$lib"
done
cd "$ROOT_DIR"
cp -r installer/* staging
sudo xcode-select -s /Applications/Xcode_16.2.app
PROJECT="tools/ResourceDownloader/ResourceDownloader.xcodeproj"
SCHEME="ResourceDownloader"
CONFIG="Release"
BUILD_DIR="build"
xcodebuild \
-project "$PROJECT" \
-scheme "$SCHEME" \
-configuration "$CONFIG" \
-derivedDataPath "$BUILD_DIR" \
-arch "$ARCH" \
clean build
APP_PATH="$BUILD_DIR/Build/Products/$CONFIG/$SCHEME.app"
cp -R "$APP_PATH" "$STAGING_PATH/Scripts"
cd "$STAGING_PATH"
mkdir -p packages
pkgbuild \
--root dist \
--scripts Scripts \
--install-location / \
--identifier org.audacityteam.openvino-module \
--version "$MODULE_VERSION" \
packages/openvino-module.pkg
productbuild --distribution distribution.xml \
--resources Resources \
--package-path ./packages \
./Audacity-OpenVINO-${MODULE_VERSION}-${ARCH}.pkg
echo "Done."