libspeech 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. {libspeech-0.1.0 → libspeech-0.2.0}/.github/workflows/wheels.yml +14 -1
  2. {libspeech-0.1.0 → libspeech-0.2.0}/CMakeLists.txt +76 -13
  3. {libspeech-0.1.0 → libspeech-0.2.0}/PKG-INFO +1 -1
  4. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/version.h +1 -1
  5. {libspeech-0.1.0 → libspeech-0.2.0}/pyproject.toml +33 -0
  6. {libspeech-0.1.0 → libspeech-0.2.0}/version.py +1 -1
  7. {libspeech-0.1.0 → libspeech-0.2.0}/.clang-format +0 -0
  8. {libspeech-0.1.0 → libspeech-0.2.0}/.github/workflows/cmake.yml +0 -0
  9. {libspeech-0.1.0 → libspeech-0.2.0}/.github/workflows/orchestrator.yml +0 -0
  10. {libspeech-0.1.0 → libspeech-0.2.0}/.gitignore +0 -0
  11. {libspeech-0.1.0 → libspeech-0.2.0}/.gitmodules +0 -0
  12. {libspeech-0.1.0 → libspeech-0.2.0}/CONTRIBUTING.md +0 -0
  13. {libspeech-0.1.0 → libspeech-0.2.0}/LICENSE +0 -0
  14. {libspeech-0.1.0 → libspeech-0.2.0}/README.md +0 -0
  15. {libspeech-0.1.0 → libspeech-0.2.0}/audioflux_issues.md +0 -0
  16. {libspeech-0.1.0 → libspeech-0.2.0}/benchmarks/CMakeLists.txt +0 -0
  17. {libspeech-0.1.0 → libspeech-0.2.0}/benchmarks/cpp/CMakeLists.txt +0 -0
  18. {libspeech-0.1.0 → libspeech-0.2.0}/benchmarks/cpp/bench_stft.cpp +0 -0
  19. {libspeech-0.1.0 → libspeech-0.2.0}/checklist.md +0 -0
  20. {libspeech-0.1.0 → libspeech-0.2.0}/cmake/AudioFlux.cmake +0 -0
  21. {libspeech-0.1.0 → libspeech-0.2.0}/cmake/Conan.cmake +0 -0
  22. {libspeech-0.1.0 → libspeech-0.2.0}/cmake/DynamicVersion.cmake +0 -0
  23. {libspeech-0.1.0 → libspeech-0.2.0}/cmake/ONNXRuntime.cmake +0 -0
  24. {libspeech-0.1.0 → libspeech-0.2.0}/cmake/PyProject.cmake +0 -0
  25. {libspeech-0.1.0 → libspeech-0.2.0}/conanfile.txt +0 -0
  26. {libspeech-0.1.0 → libspeech-0.2.0}/conda.recipe/meta.yaml +0 -0
  27. {libspeech-0.1.0 → libspeech-0.2.0}/docs/logo/README.md +0 -0
  28. {libspeech-0.1.0 → libspeech-0.2.0}/docs/logo/libspeech-logo-pods.svg +0 -0
  29. {libspeech-0.1.0 → libspeech-0.2.0}/docs/logo/libspeech-logo.svg +0 -0
  30. {libspeech-0.1.0 → libspeech-0.2.0}/examples/common.h +0 -0
  31. {libspeech-0.1.0 → libspeech-0.2.0}/examples/denoiser_app/controler.h +0 -0
  32. {libspeech-0.1.0 → libspeech-0.2.0}/examples/denoiser_app/main.cpp +0 -0
  33. {libspeech-0.1.0 → libspeech-0.2.0}/examples/main.cpp +0 -0
  34. {libspeech-0.1.0 → libspeech-0.2.0}/examples/silero_app/main.cpp +0 -0
  35. {libspeech-0.1.0 → libspeech-0.2.0}/git-submodule.sh +0 -0
  36. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/audio.h +0 -0
  37. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/dct.h +0 -0
  38. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/fft.h +0 -0
  39. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/mfcc.h +0 -0
  40. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/resample.h +0 -0
  41. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/stft.h +0 -0
  42. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/dsp/window.h +0 -0
  43. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/export.h +0 -0
  44. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/base_model.h +0 -0
  45. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/denoiser.h +0 -0
  46. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/facebook_denoiser.h +0 -0
  47. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/onnx_model.h +0 -0
  48. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/silero_vad.h +0 -0
  49. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/models/speechbrain_denoiser.h +0 -0
  50. {libspeech-0.1.0 → libspeech-0.2.0}/include/libspeech/utils/utils.h +0 -0
  51. {libspeech-0.1.0 → libspeech-0.2.0}/src/audio.cpp +0 -0
  52. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/about.cpp +0 -0
  53. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/bind_audio.cpp +0 -0
  54. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/bind_dsp.cpp +0 -0
  55. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/bind_io.cpp +0 -0
  56. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/bind_models.cpp +0 -0
  57. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/libspeech/__init__.py +0 -0
  58. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/libspeech/__main__.py +0 -0
  59. {libspeech-0.1.0 → libspeech-0.2.0}/src/bindings/python/libspeech/core.py +0 -0
  60. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/dct.cpp +0 -0
  61. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/fft.cpp +0 -0
  62. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/mfcc.cpp +0 -0
  63. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/resample.cpp +0 -0
  64. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/stft.cpp +0 -0
  65. {libspeech-0.1.0 → libspeech-0.2.0}/src/dsp/window.cpp +0 -0
  66. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/base_model.cpp +0 -0
  67. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/denoiser.cpp +0 -0
  68. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/facebook_denoiser.cpp +0 -0
  69. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/onnx_model.cpp +0 -0
  70. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/silero_vad.cpp +0 -0
  71. {libspeech-0.1.0 → libspeech-0.2.0}/src/models/speechbrain_denoiser.cpp +0 -0
  72. {libspeech-0.1.0 → libspeech-0.2.0}/src/speech_umbrella_placeholder.cpp +0 -0
  73. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/README.md +0 -0
  74. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/aixlog/LICENSE +0 -0
  75. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/aixlog/README.md +0 -0
  76. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/aixlog/include/aixlog.hpp +0 -0
  77. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/LICENSE.md +0 -0
  78. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/README.md +0 -0
  79. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/UPSTREAM_PATCHES.md +0 -0
  80. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/dsp/resample_algorithm.h +0 -0
  81. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/flux_base.h +0 -0
  82. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/stft_algorithm.h +0 -0
  83. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/util/flux_util.h +0 -0
  84. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/util/flux_wave.h +0 -0
  85. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/vector/flux_complex.h +0 -0
  86. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/include/vector/flux_vector.h +0 -0
  87. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/fft_algorithm.c +0 -0
  88. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/fft_algorithm.h +0 -0
  89. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/filterDesign_fir.c +0 -0
  90. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/filterDesign_fir.h +0 -0
  91. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/flux_window.c +0 -0
  92. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/flux_window.h +0 -0
  93. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/resample_algorithm.c +0 -0
  94. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/dsp/resample_algorithm.h +0 -0
  95. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/flux_base.h +0 -0
  96. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/stft_algorithm.c +0 -0
  97. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/stft_algorithm.h +0 -0
  98. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/util/flux_util.c +0 -0
  99. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/util/flux_util.h +0 -0
  100. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/util/flux_wave.c +0 -0
  101. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/util/flux_wave.h +0 -0
  102. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_complex.c +0 -0
  103. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_complex.h +0 -0
  104. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_vector.c +0 -0
  105. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_vector.h +0 -0
  106. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_vectorOp.c +0 -0
  107. {libspeech-0.1.0 → libspeech-0.2.0}/src/third_party/audioflux/src/vector/flux_vectorOp.h +0 -0
  108. {libspeech-0.1.0 → libspeech-0.2.0}/src/utils/utils.cpp +0 -0
  109. {libspeech-0.1.0 → libspeech-0.2.0}/tests/CMakeLists.txt +0 -0
  110. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_dct.cpp +0 -0
  111. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_fft.cpp +0 -0
  112. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_mfcc.cpp +0 -0
  113. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_resample.cpp +0 -0
  114. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_stft.cpp +0 -0
  115. {libspeech-0.1.0 → libspeech-0.2.0}/tests/dsp/test_window.cpp +0 -0
  116. {libspeech-0.1.0 → libspeech-0.2.0}/tests/models/CMakeLists.txt +0 -0
  117. {libspeech-0.1.0 → libspeech-0.2.0}/tests/models/test_default_model_cache_dir.cpp +0 -0
  118. {libspeech-0.1.0 → libspeech-0.2.0}/tests/models/test_denoiser.cpp +0 -0
  119. {libspeech-0.1.0 → libspeech-0.2.0}/tests/python/CMakeLists.txt +0 -0
  120. {libspeech-0.1.0 → libspeech-0.2.0}/tests/python/test_audio.py +0 -0
  121. {libspeech-0.1.0 → libspeech-0.2.0}/tests/python/test_dsp.py +0 -0
  122. {libspeech-0.1.0 → libspeech-0.2.0}/tests/python/test_models.py +0 -0
  123. {libspeech-0.1.0 → libspeech-0.2.0}/tests/utest/utest.h +0 -0
  124. {libspeech-0.1.0 → libspeech-0.2.0}/tests/utest/utest_main.cxx +0 -0
@@ -86,7 +86,20 @@ jobs:
86
86
  # ships wheels from cp39-abi3 up on PyPI, not cp38 -- building a
87
87
  # cp38 wheel here would require httpp built from source instead.
88
88
  CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-*"
89
- CIBW_ENVIRONMENT_CP312: "SKBUILD_WHEEL_PY_API=cp312"
89
+ # Per-Python-version env var overrides (SKBUILD_WHEEL_PY_API=cp312
90
+ # for the cp312 build only, so scikit-build-core tags it as a
91
+ # forward-compatible cp312-abi3 wheel instead of a version-locked
92
+ # cp312-cp312 one -- see the [tool.cibuildwheel.overrides] entry
93
+ # in pyproject.toml for *why* it has to live there instead of
94
+ # here) do NOT work as a "CIBW_<OPTION>_<IDENTIFIER>" env var like
95
+ # CIBW_ENVIRONMENT_CP312: cibuildwheel only recognizes that
96
+ # suffix pattern for CIBW_ENVIRONMENT_{LINUX,MACOS,WINDOWS} (i.e.
97
+ # by platform), not by Python-version identifier -- an env var
98
+ # like that is silently a no-op, not an error, which is exactly
99
+ # how this went unnoticed (confirmed: the wheel actually
100
+ # published to PyPI for 0.1.0 came out tagged cp312-cp312, not
101
+ # cp312-abi3, meaning SKBUILD_WHEEL_PY_API was never really set
102
+ # during that build despite this line being here).
90
103
  # Disable building PyPy wheels on all platforms. Also skip
91
104
  # musllinux (Alpine/musl has no official ONNX Runtime build --
92
105
  # only glibc-linked releases exist, which fail to link against
@@ -117,6 +117,26 @@ include(ONNXRuntime)
117
117
 
118
118
  add_subdirectory(src/third_party/miniaudio)
119
119
 
120
+ # miniaudio.h uses the C23 double-bracket attribute syntax for its
121
+ # fallthrough marker (MA_FALLTHROUGH -> [[fallthrough]], see miniaudio.h)
122
+ # even in the gnu99 translation unit miniaudio.c compiles as. GCC accepts
123
+ # this quietly under gnu99, but (Apple) Clang's -Wc23-extensions flags it
124
+ # -- three warnings, no errors, harmless either way.
125
+ #
126
+ # This is vendored, upstream code pulled in via a git submodule -- editing
127
+ # miniaudio.h directly isn't an option (the fix would silently vanish on
128
+ # the next `git submodule update`), and a project-wide -Wno-c23-extensions
129
+ # would also mute the same warning if it ever showed up in code we
130
+ # actually own. So silence only this one diagnostic, and only on the one
131
+ # target it's known to come from (confirmed: only miniaudio.c itself hits
132
+ # it, not the extra node .c files below, which don't compile the
133
+ # MA_FALLTHROUGH-containing implementation). Safe to drop once upstream
134
+ # miniaudio switches to __attribute__((fallthrough)) or the project moves
135
+ # to a C standard where the warning no longer applies.
136
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
137
+ target_compile_options(miniaudio PRIVATE -Wno-c23-extensions)
138
+ endif()
139
+
120
140
  # ---------------------------------------------------------------------------
121
141
  # Model downloading (speech::utils::downloadFile) used to link the SYSTEM
122
142
  # libcurl (find_package(CURL REQUIRED) + apt-installed libcurl4-openssl-dev)
@@ -366,7 +386,25 @@ if(DEFINED PYTHON_PROJECT_NAME)
366
386
  # the same way this file already bakes VERSION_INFO in below.
367
387
  # $<TARGET_FILE_NAME:...> is a generator expression, resolved once CMake
368
388
  # knows the real output name of each target.
369
- get_filename_component(_ONNXRUNTIME_LIB_FILENAME "${ONNXRUNTIME_LIB_FILE}" NAME)
389
+ # On Linux, ship (and load) the library under its SONAME
390
+ # (libonnxruntime.so.1) rather than the fully-versioned filename
391
+ # (libonnxruntime.so.1.21.0): both names used to be installed as full
392
+ # ~20MB copies (the SONAME file is a symlink on the upstream release
393
+ # tarball, but CMake's install(FILES ...)/file(COPY ...) dereference
394
+ # symlinks, and it turns out the wheel-building step also flattens an
395
+ # install-time symlink back into a second real copy when zipping -- so
396
+ # there is no way to keep both names *and* avoid shipping the bytes
397
+ # twice). Since the SONAME is the one name every consumer .so's
398
+ # DT_NEEDED entry actually requires at runtime, standardize the
399
+ # explicit ctypes preload in __init__.py on that same name too and
400
+ # stop installing the fully-versioned name altogether -- one file,
401
+ # one name, used both places. Windows/macOS have no such SONAME split
402
+ # (see cmake/ONNXRuntime.cmake) so they keep using ONNXRUNTIME_LIB_FILE.
403
+ if(ONNXRUNTIME_SONAME_FILE)
404
+ get_filename_component(_ONNXRUNTIME_LIB_FILENAME "${ONNXRUNTIME_SONAME_FILE}" NAME)
405
+ else()
406
+ get_filename_component(_ONNXRUNTIME_LIB_FILENAME "${ONNXRUNTIME_LIB_FILE}" NAME)
407
+ endif()
370
408
  target_compile_definitions(${NB_MODULE} PRIVATE
371
409
  VERSION_INFO=${PROJECT_VERSION}
372
410
  NB_MODULE_NAME=${NB_MODULE}
@@ -471,28 +509,53 @@ if(DEFINED PYTHON_PROJECT_NAME)
471
509
  # httpp is NOT bundled here -- __init__.py loads it from the
472
510
  # separately pip-installed httpp package instead (see __init__.py).
473
511
  #
474
- # ONNXRUNTIME_SONAME_FILE (see cmake/ONNXRuntime.cmake) additionally
475
- # ships a copy under onnxruntime's actual SONAME (libonnxruntime.so.1)
476
- # on Linux/macOS -- every compiled .so's DT_NEEDED entry references
477
- # that name, not the fully-versioned ONNXRUNTIME_LIB_FILE one, and
478
- # without it `auditwheel repair` fails to find/bundle it at all.
512
+ # ONNXRUNTIME_SONAME_FILE (see cmake/ONNXRuntime.cmake) is the name
513
+ # every compiled .so's DT_NEEDED entry actually requires at
514
+ # runtime (libonnxruntime.so.1 on Linux), not the fully-versioned
515
+ # ONNXRUNTIME_LIB_FILE one -- without a file by that exact name,
516
+ # `auditwheel repair` fails to find/bundle it at all.
517
+ #
518
+ # On disk (in the upstream release tarball) that name is a
519
+ # symlink to ONNXRUNTIME_LIB_FILE, which is why it used to look
520
+ # free to ship both: but CMake's install(FILES ...) dereferences
521
+ # symlinks, AND the wheel-building step separately flattens an
522
+ # install-time symlink back into a real copy when zipping -- so
523
+ # shipping *both* names always costs a full second ~20MB copy no
524
+ # matter which way the symlink is recreated. Since the SONAME is
525
+ # the only name anything actually needs to dlopen/link against at
526
+ # runtime (see the ONNXRUNTIME_LIB_PATH comment above), install
527
+ # the real bytes under that name ONLY and drop the fully-versioned
528
+ # name from the wheel entirely -- one ~20MB file instead of two.
479
529
  # ONNXRUNTIME_PROVIDERS_SHARED_FILE (Windows only) is the companion
480
530
  # onnxruntime_providers_shared.dll upstream ships alongside
481
531
  # onnxruntime.dll -- see cmake/ONNXRuntime.cmake for why.
482
- set(_LIBSPEECH_RUNTIME_LIBS "${ONNXRUNTIME_LIB_FILE}")
483
532
  if(ONNXRUNTIME_SONAME_FILE)
484
- list(APPEND _LIBSPEECH_RUNTIME_LIBS "${ONNXRUNTIME_SONAME_FILE}")
533
+ get_filename_component(_ONNXRUNTIME_SONAME_FILENAME "${ONNXRUNTIME_SONAME_FILE}" NAME)
534
+ # RENAME so only one copy of the (large) file is ever written
535
+ # -- under the SONAME, not the fully-versioned name.
536
+ install(FILES "${ONNXRUNTIME_LIB_FILE}"
537
+ DESTINATION ${SKBUILD_PROJECT_NAME}
538
+ RENAME "${_ONNXRUNTIME_SONAME_FILENAME}")
539
+ else()
540
+ install(FILES "${ONNXRUNTIME_LIB_FILE}"
541
+ DESTINATION ${SKBUILD_PROJECT_NAME})
485
542
  endif()
486
543
  if(ONNXRUNTIME_PROVIDERS_SHARED_FILE)
487
- list(APPEND _LIBSPEECH_RUNTIME_LIBS "${ONNXRUNTIME_PROVIDERS_SHARED_FILE}")
544
+ install(FILES "${ONNXRUNTIME_PROVIDERS_SHARED_FILE}"
545
+ DESTINATION ${SKBUILD_PROJECT_NAME})
488
546
  endif()
489
- install (FILES ${_LIBSPEECH_RUNTIME_LIBS}
490
- DESTINATION ${SKBUILD_PROJECT_NAME})
491
547
  else()
492
548
  file(COPY ${PROJECT_SOURCE_DIR}/src/bindings/python/${PROJECT_NAME} DESTINATION ${PYTHON_PROJECT_NAME})
493
- file(COPY ${ONNXRUNTIME_LIB_FILE} DESTINATION ${PYTHON_PROJECT_NAME}/${PROJECT_NAME})
494
549
  if(ONNXRUNTIME_SONAME_FILE)
495
- file(COPY ${ONNXRUNTIME_SONAME_FILE} DESTINATION ${PYTHON_PROJECT_NAME}/${PROJECT_NAME})
550
+ # Same fix as the scikit-build install(FILES ...) branch above:
551
+ # ship the real bytes under the SONAME only (one ~20MB file,
552
+ # not the fully-versioned name too), since that's the only
553
+ # name anything actually dlopens/links against at runtime.
554
+ get_filename_component(_ONNXRUNTIME_SONAME_FILENAME "${ONNXRUNTIME_SONAME_FILE}" NAME)
555
+ file(COPY_FILE "${ONNXRUNTIME_LIB_FILE}"
556
+ "${PYTHON_PROJECT_NAME}/${PROJECT_NAME}/${_ONNXRUNTIME_SONAME_FILENAME}")
557
+ else()
558
+ file(COPY ${ONNXRUNTIME_LIB_FILE} DESTINATION ${PYTHON_PROJECT_NAME}/${PROJECT_NAME})
496
559
  endif()
497
560
  if(ONNXRUNTIME_PROVIDERS_SHARED_FILE)
498
561
  file(COPY ${ONNXRUNTIME_PROVIDERS_SHARED_FILE} DESTINATION ${PYTHON_PROJECT_NAME}/${PROJECT_NAME})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: libspeech
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Best library for speech
5
5
  Author-Email: Mohammad Raziei <mohammadraziei1375@gmail.com>
6
6
  Classifier: Development Status :: 4 - Beta
@@ -15,7 +15,7 @@
15
15
  #define LIBSPEECH_VERSION_H
16
16
 
17
17
  #define LIBSPEECH_VERSION_MAJOR 0
18
- #define LIBSPEECH_VERSION_MINOR 1
18
+ #define LIBSPEECH_VERSION_MINOR 2
19
19
  #define LIBSPEECH_VERSION_PATCH 0
20
20
 
21
21
  #define LIBSPEECH_VERSION_STRINGIFY_IMPL(x) #x
@@ -67,6 +67,39 @@ test-extras = ["test"]
67
67
  test-skip = ["*universal2:arm64"]
68
68
  #build-verbosity = 1
69
69
 
70
+ [[tool.cibuildwheel.overrides]]
71
+ # Only the cp312 build's nanobind extensions are actually compiled
72
+ # against the Limited API (STABLE_ABI in CMakeLists.txt's
73
+ # nanobind_add_module(... STABLE_ABI ...) calls resolves to
74
+ # Py_LIMITED_API=0x030C0000, i.e. Python 3.12+, confirmed by inspecting
75
+ # an actual local build's compile flags -- nanobind's own STABLE_ABI
76
+ # option is a Python-3.12-floor feature, it silently does nothing on
77
+ # older interpreters per nanobind's own docs, so the cp39/cp310/cp311
78
+ # builds really are ordinary version-locked extensions and must keep
79
+ # their default per-version wheel.py-api, or their wheel's tag would be
80
+ # lying about what's actually inside).
81
+ #
82
+ # So only for cp312 do we want scikit-build-core to tag the wheel
83
+ # cp312-abi3 (forward-compatible with 3.12, 3.13, 3.14, 3.15, ...)
84
+ # instead of the default cp312-cp312 (that one Python version only) --
85
+ # set via SKBUILD_WHEEL_PY_API, which is scikit-build-core's env-var
86
+ # spelling of its `wheel.py-api` config option.
87
+ #
88
+ # This has to be an [[overrides]] table with its own `select`, not a
89
+ # top-level `CIBW_ENVIRONMENT_CP312` env var in wheels.yml: cibuildwheel
90
+ # only recognizes CIBW_ENVIRONMENT_{LINUX,MACOS,WINDOWS} as valid
91
+ # per-selector *environment-variable name* suffixes (i.e. by platform),
92
+ # not arbitrary identifiers like "CP312" -- an env var spelled that way
93
+ # is silently ignored rather than erroring, which is exactly how this
94
+ # was never actually applied to the wheels published for 0.1.0 (all
95
+ # four came out version-locked, cp312 included -- confirmed by
96
+ # inspecting the actual .dist-info/WHEEL of the published wheel).
97
+ # `select` here is cibuildwheel's own, real mechanism for the same
98
+ # per-build-identifier scoping that env var name was trying (and
99
+ # failing) to achieve.
100
+ select = "cp312-*"
101
+ environment = { SKBUILD_WHEEL_PY_API = "cp312" }
102
+
70
103
 
71
104
  #[tool.scikit-build.cmake.define]
72
105
  #SOME_DEFINE = "ON"
@@ -171,7 +171,7 @@ def cmd_tag(args):
171
171
  new_version = version_str(version)
172
172
  tag_name = f"v{new_version}"
173
173
  run(["git", "add", str(HEADER_ABS_PATH)])
174
- run(["git", "commit", "-m", f"Release {new_version}"])
174
+ run(["git", "commit", "-m", f"Release {new_version}", "--allow-empty-message"])
175
175
  run(["git", "tag", tag_name])
176
176
  print(f"Committed and tagged {tag_name}")
177
177
  return
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes