mirror of
https://github.com/chidiwilliams/buzz.git
synced 2024-06-29 13:10:26 +02:00
179 lines
5.6 KiB
Makefile
179 lines
5.6 KiB
Makefile
version := $$(poetry version -s)
|
|
version_escaped := $$(echo ${version} | sed -e 's/\./\\./g')
|
|
|
|
mac_app_path := ./dist/Buzz.app
|
|
mac_zip_path := ./dist/Buzz-${version}-mac.zip
|
|
mac_dmg_path := ./dist/Buzz-${version}-mac.dmg
|
|
|
|
unix_zip_path := Buzz-${version}-unix.tar.gz
|
|
|
|
windows_zip_path := Buzz-${version}-windows.tar.gz
|
|
|
|
bundle_linux: dist/Buzz
|
|
cd dist && tar -czf ${unix_zip_path} Buzz/ && cd -
|
|
|
|
bundle_windows: dist/Buzz
|
|
iscc //DAppVersion=${version} installer.iss
|
|
cd dist && tar -czf ${windows_zip_path} Buzz/ && cd -
|
|
|
|
bundle_mac: dist/Buzz.app codesign_all_mac zip_mac notarize_zip staple_app_mac dmg_mac
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
LIBWHISPER :=
|
|
ifeq ($(OS), Windows_NT)
|
|
LIBWHISPER=whisper.dll
|
|
else
|
|
ifeq ($(UNAME_S), Darwin)
|
|
LIBWHISPER=libwhisper.dylib
|
|
else
|
|
LIBWHISPER=libwhisper.so
|
|
endif
|
|
endif
|
|
|
|
clean:
|
|
rm -f $(LIBWHISPER)
|
|
rm -f whisper_cpp
|
|
rm -f buzz/whisper_cpp.py
|
|
rm -rf dist/* || true
|
|
|
|
test: buzz/whisper_cpp.py translation_mo
|
|
pytest -vv --cov=buzz --cov-report=xml --cov-report=html
|
|
|
|
dist/Buzz dist/Buzz.app: buzz/whisper_cpp.py translation_mo
|
|
pyinstaller --noconfirm Buzz.spec
|
|
|
|
version:
|
|
poetry version ${version}
|
|
echo "VERSION = \"${version}\"" > buzz/__version__.py
|
|
sed -i "" "s/version=.*,/version=\'${version_escaped}\',/" Buzz.spec
|
|
|
|
CMAKE_FLAGS=
|
|
ifeq ($(UNAME_S),Darwin)
|
|
AVX1_M := $(shell sysctl machdep.cpu.features)
|
|
ifeq (,$(findstring AVX1.0,$(AVX1_M)))
|
|
CMAKE_FLAGS += -DWHISPER_NO_AVX=ON
|
|
endif
|
|
ifeq (,$(findstring FMA,$(AVX1_M)))
|
|
CMAKE_FLAGS += -DWHISPER_NO_FMA=ON
|
|
endif
|
|
AVX2_M := $(shell sysctl machdep.cpu.leaf7_features)
|
|
ifeq (,$(findstring AVX2,$(AVX2_M)))
|
|
CMAKE_FLAGS += -DWHISPER_NO_AVX2=ON
|
|
endif
|
|
else
|
|
ifeq ($(OS), Windows_NT)
|
|
CMAKE_FLAGS += -DBUILD_SHARED_LIBS=ON
|
|
endif
|
|
endif
|
|
|
|
$(LIBWHISPER) whisper_cpp:
|
|
cmake -S whisper.cpp -B whisper.cpp/build/ $(CMAKE_FLAGS)
|
|
cmake --build whisper.cpp/build --verbose
|
|
cp whisper.cpp/build/bin/Debug/$(LIBWHISPER) . || true
|
|
cp whisper.cpp/build/bin/Debug/main whisper_cpp || true
|
|
cp whisper.cpp/build/$(LIBWHISPER) . || true
|
|
cp whisper.cpp/build/bin/main whisper_cpp || true
|
|
|
|
buzz/whisper_cpp.py: $(LIBWHISPER)
|
|
ctypesgen ./whisper.cpp/whisper.h -l$(LIBWHISPER) -o buzz/whisper_cpp.py
|
|
|
|
# Prints all the Mac developer identities used for code signing
|
|
print_identities_mac:
|
|
security find-identity -p basic -v
|
|
|
|
dmg_mac:
|
|
ditto -x -k "${mac_zip_path}" dist/dmg
|
|
create-dmg \
|
|
--volname "Buzz" \
|
|
--volicon "./assets/buzz.icns" \
|
|
--window-pos 200 120 \
|
|
--window-size 600 300 \
|
|
--icon-size 100 \
|
|
--icon "./assets/buzz.icns" 175 120 \
|
|
--hide-extension "Buzz.app" \
|
|
--app-drop-link 425 120 \
|
|
--codesign "$$BUZZ_CODESIGN_IDENTITY" \
|
|
--notarize "$$BUZZ_KEYCHAIN_NOTARY_PROFILE" \
|
|
"${mac_dmg_path}" \
|
|
"dist/dmg/"
|
|
|
|
staple_app_mac:
|
|
xcrun stapler staple ${mac_app_path}
|
|
|
|
notarize_zip:
|
|
xcrun notarytool submit ${mac_zip_path} --keychain-profile "$$BUZZ_KEYCHAIN_NOTARY_PROFILE" --wait
|
|
|
|
zip_mac:
|
|
ditto -c -k --keepParent "${mac_app_path}" "${mac_zip_path}"
|
|
|
|
codesign_all_mac: dist/Buzz.app
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp dist/Buzz.app/Contents/Resources/ffmpeg
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp dist/Buzz.app/Contents/Resources/whisper_cpp
|
|
for i in $$(find dist/Buzz.app/Contents/Resources/torch/bin -name "*" -type f); \
|
|
do \
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp "$$i"; \
|
|
done
|
|
for i in $$(find dist/Buzz.app/Contents/Resources -name "*.dylib" -o -name "*.so" -type f); \
|
|
do \
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp "$$i"; \
|
|
done
|
|
for i in $$(find dist/Buzz.app/Contents/MacOS -name "*.dylib" -o -name "*.so" -o -name "Qt*" -o -name "Python" -type f); \
|
|
do \
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp "$$i"; \
|
|
done
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --timestamp dist/Buzz.app/Contents/MacOS/Buzz
|
|
codesign --force --options=runtime --sign "$$BUZZ_CODESIGN_IDENTITY" --entitlements ./entitlements.plist --timestamp dist/Buzz.app
|
|
codesign --verify --deep --strict --verbose=2 dist/Buzz.app
|
|
|
|
# HELPERS
|
|
|
|
# Get the build logs for a notary upload
|
|
notarize_log:
|
|
xcrun notarytool log ${id} --keychain-profile "$$BUZZ_KEYCHAIN_NOTARY_PROFILE"
|
|
|
|
VENV_PATH := $(shell poetry env info -p)
|
|
|
|
# Make GGML model from whisper. Example: make ggml model_path=/Users/chidiwilliams/.cache/whisper/medium.pt
|
|
ggml:
|
|
python3 ./whisper.cpp/models/convert-pt-to-ggml.py ${model_path} $(VENV_PATH)/src/whisper dist
|
|
|
|
upload_brew:
|
|
brew bump-cask-pr --version ${version} --verbose buzz
|
|
|
|
UPGRADE_VERSION_BRANCH := upgrade-to-${version}
|
|
gh_upgrade_pr:
|
|
git checkout main && git pull
|
|
git checkout -B ${UPGRADE_VERSION_BRANCH}
|
|
|
|
make version version=${version}
|
|
|
|
git commit -am "Upgrade to ${version}"
|
|
git push --set-upstream origin ${UPGRADE_VERSION_BRANCH}
|
|
|
|
gh pr create --fill
|
|
gh pr merge ${UPGRADE_VERSION_BRANCH} --auto --squash
|
|
|
|
# Internationalization
|
|
|
|
translation_po_all:
|
|
$(MAKE) translation_po locale=ca_ES
|
|
|
|
TMP_POT_FILE_PATH := $(shell mktemp)
|
|
PO_FILE_PATH := locale/${locale}/LC_MESSAGES/buzz.po
|
|
translation_po:
|
|
if [[ -f "${PO_FILE_PATH}" ]]; then \
|
|
xgettext --from-code=UTF-8 -o ${TMP_POT_FILE_PATH} -l python buzz/gui.py; \
|
|
sed -i.bak 's/CHARSET/UTF-8/' ${TMP_POT_FILE_PATH} && rm ${TMP_POT_FILE_PATH}.bak; \
|
|
msgmerge -U ${PO_FILE_PATH} ${TMP_POT_FILE_PATH}; \
|
|
else \
|
|
mkdir -p locale/${locale}/LC_MESSAGES; \
|
|
xgettext --from-code=UTF-8 -o ${PO_FILE_PATH} -l python buzz/gui.py; \
|
|
sed -i.bak 's/CHARSET/UTF-8/' ${PO_FILE_PATH} && rm ${PO_FILE_PATH}.bak; \
|
|
fi
|
|
|
|
translation_mo:
|
|
for dir in locale/*/ ; do \
|
|
msgfmt --check $$dir/LC_MESSAGES/buzz.po -o $$dir/LC_MESSAGES/buzz.mo; \
|
|
done
|