Install binaries via pip install (#112)
When pepole use pip install sherpa-onnx, they also get the following binaries: (py38) fangjuns-MacBook-Pro:bin fangjun$ ls -lh sherpa-onnx* -rwxr-xr-x 1 fangjun staff 36K Apr 4 13:48 sherpa-onnx -rwxr-xr-x 1 fangjun staff 52K Apr 4 13:48 sherpa-onnx-microphone -rwxr-xr-x 1 fangjun staff 54K Apr 4 13:48 sherpa-onnx-microphone-offline -rwxr-xr-x 1 fangjun staff 37K Apr 4 13:48 sherpa-onnx-offline -rwxr-xr-x 1 fangjun staff 634K Apr 4 13:48 sherpa-onnx-offline-websocket-server -rwxr-xr-x 1 fangjun staff 710K Apr 4 13:48 sherpa-onnx-online-websocket-client -rwxr-xr-x 1 fangjun staff 651K Apr 4 13:48 sherpa-onnx-online-websocket-server (py38) fangjuns-MacBook-Pro:bin fangjun$ pwd /Users/fangjun/py38/bin
This commit is contained in:
15
.github/workflows/build-wheels.yaml
vendored
15
.github/workflows/build-wheels.yaml
vendored
@@ -34,6 +34,8 @@ jobs:
|
|||||||
CIBW_BEFORE_BUILD: "pip install -U cmake numpy"
|
CIBW_BEFORE_BUILD: "pip install -U cmake numpy"
|
||||||
CIBW_SKIP: "cp27-* cp35-* cp36-* *-win32 pp* *-musllinux* *-manylinux_i686"
|
CIBW_SKIP: "cp27-* cp35-* cp36-* *-win32 pp* *-musllinux* *-manylinux_i686"
|
||||||
CIBW_BUILD_VERBOSITY: 3
|
CIBW_BUILD_VERBOSITY: 3
|
||||||
|
CIBW_ENVIRONMENT_LINUX: LD_LIBRARY_PATH='/project/build/bdist.linux-x86_64/wheel/sherpa_onnx/lib'
|
||||||
|
CIBW_REPAIR_WHEEL_COMMAND_MACOS: ""
|
||||||
|
|
||||||
- name: Display wheels
|
- name: Display wheels
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -55,3 +57,16 @@ jobs:
|
|||||||
python3 -m pip install wheel twine setuptools
|
python3 -m pip install wheel twine setuptools
|
||||||
|
|
||||||
twine upload ./wheelhouse/*.whl
|
twine upload ./wheelhouse/*.whl
|
||||||
|
|
||||||
|
- name: Build sdist
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
python3 setup.py sdist
|
||||||
|
ls -l dist/*
|
||||||
|
|
||||||
|
- name: Publish sdist to PyPI
|
||||||
|
env:
|
||||||
|
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
|
||||||
|
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
twine upload dist/sherpa-onnx-*.tar.gz
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -59,6 +60,7 @@ class BuildExtension(build_ext):
|
|||||||
# build/lib.linux-x86_64-3.8
|
# build/lib.linux-x86_64-3.8
|
||||||
os.makedirs(self.build_lib, exist_ok=True)
|
os.makedirs(self.build_lib, exist_ok=True)
|
||||||
|
|
||||||
|
out_bin_dir = Path(self.build_lib).parent / "sherpa_onnx" / "bin"
|
||||||
install_dir = Path(self.build_lib).resolve() / "sherpa_onnx"
|
install_dir = Path(self.build_lib).resolve() / "sherpa_onnx"
|
||||||
|
|
||||||
sherpa_onnx_dir = Path(__file__).parent.parent.resolve()
|
sherpa_onnx_dir = Path(__file__).parent.parent.resolve()
|
||||||
@@ -75,9 +77,9 @@ class BuildExtension(build_ext):
|
|||||||
|
|
||||||
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_CHECK=OFF "
|
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_CHECK=OFF "
|
||||||
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_PYTHON=ON "
|
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_PYTHON=ON "
|
||||||
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF "
|
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_PORTAUDIO=ON "
|
||||||
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_C_API=OFF "
|
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_C_API=OFF "
|
||||||
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF "
|
extra_cmake_args += " -DSHERPA_ONNX_ENABLE_WEBSOCKET=ON "
|
||||||
|
|
||||||
if "PYTHON_EXECUTABLE" not in cmake_args:
|
if "PYTHON_EXECUTABLE" not in cmake_args:
|
||||||
print(f"Setting PYTHON_EXECUTABLE to {sys.executable}")
|
print(f"Setting PYTHON_EXECUTABLE to {sys.executable}")
|
||||||
@@ -125,3 +127,21 @@ class BuildExtension(build_ext):
|
|||||||
"You can ask for help by creating an issue on GitHub.\n"
|
"You can ask for help by creating an issue on GitHub.\n"
|
||||||
"\nClick:\n\thttps://github.com/k2-fsa/sherpa-onnx/issues/new\n" # noqa
|
"\nClick:\n\thttps://github.com/k2-fsa/sherpa-onnx/issues/new\n" # noqa
|
||||||
)
|
)
|
||||||
|
|
||||||
|
suffix = ".exe" if is_windows() else ""
|
||||||
|
# Remember to also change setup.py
|
||||||
|
|
||||||
|
binaries = ["sherpa-onnx"]
|
||||||
|
binaries += ["sherpa-onnx-offline"]
|
||||||
|
binaries += ["sherpa-onnx-microphone"]
|
||||||
|
binaries += ["sherpa-onnx-microphone-offline"]
|
||||||
|
binaries += ["sherpa-onnx-online-websocket-server"]
|
||||||
|
binaries += ["sherpa-onnx-offline-websocket-server"]
|
||||||
|
binaries += ["sherpa-onnx-online-websocket-client"]
|
||||||
|
|
||||||
|
for f in binaries:
|
||||||
|
src_file = install_dir / "bin" / (f + suffix)
|
||||||
|
print(f"Copying {src_file} to {out_bin_dir}/")
|
||||||
|
shutil.copy(f"{src_file}", f"{out_bin_dir}/")
|
||||||
|
|
||||||
|
shutil.rmtree(f"{install_dir}/bin")
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ function(download_onnxruntime)
|
|||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/lib*")
|
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/lib*")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/lib*dylib")
|
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/libonnxruntime.*.*dylib")
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/*.dll")
|
file(GLOB onnxruntime_lib_files "${onnxruntime_SOURCE_DIR}/lib/*.dll")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -53,6 +53,23 @@ function(download_portaudio)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(${portaudio_SOURCE_DIR} ${portaudio_BINARY_DIR} EXCLUDE_FROM_ALL)
|
add_subdirectory(${portaudio_SOURCE_DIR} ${portaudio_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
set_target_properties(portaudio PROPERTIES OUTPUT_NAME "sherpa-onnx-portaudio")
|
||||||
|
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||||
|
install(TARGETS portaudio DESTINATION ..)
|
||||||
|
else()
|
||||||
|
install(TARGETS portaudio DESTINATION lib)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set_target_properties(portaudio_static PROPERTIES OUTPUT_NAME "sherpa-onnx-portaudio_static")
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||||
|
install(TARGETS portaudio_static DESTINATION ..)
|
||||||
|
else()
|
||||||
|
install(TARGETS portaudio_static DESTINATION lib)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
download_portaudio()
|
download_portaudio()
|
||||||
|
|||||||
23
setup.py
23
setup.py
@@ -39,6 +39,28 @@ install_requires = [
|
|||||||
"numpy",
|
"numpy",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_binaries_to_install():
|
||||||
|
bin_dir = Path("build") / "sherpa_onnx" / "bin"
|
||||||
|
bin_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
suffix = ".exe" if is_windows() else ""
|
||||||
|
|
||||||
|
# Remember to also change cmake/cmake_extension.py
|
||||||
|
binaries = ["sherpa-onnx"]
|
||||||
|
binaries += ["sherpa-onnx-offline"]
|
||||||
|
binaries += ["sherpa-onnx-microphone"]
|
||||||
|
binaries += ["sherpa-onnx-microphone-offline"]
|
||||||
|
binaries += ["sherpa-onnx-online-websocket-server"]
|
||||||
|
binaries += ["sherpa-onnx-offline-websocket-server"]
|
||||||
|
binaries += ["sherpa-onnx-online-websocket-client"]
|
||||||
|
|
||||||
|
exe = []
|
||||||
|
for f in binaries:
|
||||||
|
t = bin_dir / (f + suffix)
|
||||||
|
exe.append(str(t))
|
||||||
|
return exe
|
||||||
|
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name=package_name,
|
name=package_name,
|
||||||
python_requires=">=3.6",
|
python_requires=">=3.6",
|
||||||
@@ -50,6 +72,7 @@ setuptools.setup(
|
|||||||
"sherpa_onnx": "sherpa-onnx/python/sherpa_onnx",
|
"sherpa_onnx": "sherpa-onnx/python/sherpa_onnx",
|
||||||
},
|
},
|
||||||
packages=["sherpa_onnx"],
|
packages=["sherpa_onnx"],
|
||||||
|
data_files=[("bin", get_binaries_to_install())],
|
||||||
url="https://github.com/k2-fsa/sherpa-onnx",
|
url="https://github.com/k2-fsa/sherpa-onnx",
|
||||||
long_description=read_long_description(),
|
long_description=read_long_description(),
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
include_directories(${CMAKE_SOURCE_DIR})
|
include_directories(${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON)
|
||||||
|
message(STATUS "PYTHON_EXECUTABLE: ${PYTHON_EXECUTABLE}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${PYTHON_EXECUTABLE}" -c "import sys; print('.'.join(sys.version.split('.')[:2]))"
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
OUTPUT_VARIABLE PYTHON_VERSION
|
||||||
|
)
|
||||||
|
message(STATUS "PYTHON_VERSION: ${PYTHON_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(sources
|
set(sources
|
||||||
cat.cc
|
cat.cc
|
||||||
endpoint.cc
|
endpoint.cc
|
||||||
@@ -72,7 +82,15 @@ target_link_libraries(sherpa-onnx sherpa-onnx-core)
|
|||||||
target_link_libraries(sherpa-onnx-offline sherpa-onnx-core)
|
target_link_libraries(sherpa-onnx-offline sherpa-onnx-core)
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
target_link_libraries(sherpa-onnx "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
target_link_libraries(sherpa-onnx "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
target_link_libraries(sherpa-onnx-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
target_link_libraries(sherpa-onnx-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON)
|
||||||
|
target_link_libraries(sherpa-onnx "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
target_link_libraries(sherpa-onnx-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
if(SHERPA_ONNX_ENABLE_PYTHON AND WIN32)
|
||||||
@@ -91,12 +109,12 @@ install(
|
|||||||
|
|
||||||
if(SHERPA_ONNX_HAS_ALSA)
|
if(SHERPA_ONNX_HAS_ALSA)
|
||||||
add_executable(sherpa-onnx-alsa sherpa-onnx-alsa.cc alsa.cc)
|
add_executable(sherpa-onnx-alsa sherpa-onnx-alsa.cc alsa.cc)
|
||||||
target_link_libraries(sherpa-onnx-alsa PRIVATE sherpa-onnx-core)
|
target_link_libraries(sherpa-onnx-alsa sherpa-onnx-core)
|
||||||
|
|
||||||
if(DEFINED ENV{SHERPA_ONNX_ALSA_LIB_DIR})
|
if(DEFINED ENV{SHERPA_ONNX_ALSA_LIB_DIR})
|
||||||
target_link_libraries(sherpa-onnx-alsa PRIVATE -L$ENV{SHERPA_ONNX_ALSA_LIB_DIR} -lasound)
|
target_link_libraries(sherpa-onnx-alsa -L$ENV{SHERPA_ONNX_ALSA_LIB_DIR} -lasound)
|
||||||
else()
|
else()
|
||||||
target_link_libraries(sherpa-onnx-alsa PRIVATE asound)
|
target_link_libraries(sherpa-onnx-alsa asound)
|
||||||
endif()
|
endif()
|
||||||
install(TARGETS sherpa-onnx-alsa DESTINATION bin)
|
install(TARGETS sherpa-onnx-alsa DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
@@ -118,8 +136,21 @@ if(SHERPA_ONNX_ENABLE_PORTAUDIO)
|
|||||||
set(PA_LIB portaudio_static)
|
set(PA_LIB portaudio_static)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(sherpa-onnx-microphone PRIVATE ${PA_LIB} sherpa-onnx-core)
|
target_link_libraries(sherpa-onnx-microphone ${PA_LIB} sherpa-onnx-core)
|
||||||
target_link_libraries(sherpa-onnx-microphone-offline PRIVATE ${PA_LIB} sherpa-onnx-core)
|
target_link_libraries(sherpa-onnx-microphone-offline ${PA_LIB} sherpa-onnx-core)
|
||||||
|
|
||||||
|
if(NOT WIN32)
|
||||||
|
target_link_libraries(sherpa-onnx-microphone "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-microphone "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
target_link_libraries(sherpa-onnx-microphone-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-microphone-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON)
|
||||||
|
target_link_libraries(sherpa-onnx-microphone "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
target_link_libraries(sherpa-onnx-microphone-offline "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
install(
|
install(
|
||||||
TARGETS
|
TARGETS
|
||||||
@@ -164,6 +195,32 @@ if(SHERPA_ONNX_ENABLE_WEBSOCKET)
|
|||||||
target_link_libraries(sherpa-onnx-offline-websocket-server -pthread)
|
target_link_libraries(sherpa-onnx-offline-websocket-server -pthread)
|
||||||
target_compile_options(sherpa-onnx-offline-websocket-server PRIVATE -Wno-deprecated-declarations)
|
target_compile_options(sherpa-onnx-offline-websocket-server PRIVATE -Wno-deprecated-declarations)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NOT WIN32)
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-client "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-client "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
target_link_libraries(sherpa-onnx-offline-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib")
|
||||||
|
target_link_libraries(sherpa-onnx-offline-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../../../sherpa_onnx/lib")
|
||||||
|
|
||||||
|
if(SHERPA_ONNX_ENABLE_PYTHON)
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
target_link_libraries(sherpa-onnx-online-websocket-client "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
target_link_libraries(sherpa-onnx-offline-websocket-server "-Wl,-rpath,${SHERPA_ONNX_RPATH_ORIGIN}/../lib/python${PYTHON_VERSION}/site-packages/sherpa_onnx/lib")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS
|
||||||
|
sherpa-onnx-online-websocket-server
|
||||||
|
sherpa-onnx-online-websocket-client
|
||||||
|
sherpa-onnx-offline-websocket-server
|
||||||
|
DESTINATION
|
||||||
|
bin
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user