1515 build-linux :
1616 runs-on : ubuntu-latest
1717 if : true
18+ env :
19+ MKL_URL : " "
20+ # MKL_URL: "https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16917/l_mkl_2020.4.304.tgz"
1821 steps :
1922 - name : Checkout repository
2023 uses : actions/checkout@v5
@@ -26,29 +29,56 @@ jobs:
2629 export TAG=$(git tag --points-at HEAD)
2730 echo "TAG: $TAG"
2831 if [[ $TAG ]]; then
32+ echo "KALDI_BRANCH: kag-$TAG"
2933 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_ENV
3034 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_OUTPUT
3135 else
36+ echo "KALDI_BRANCH: ${GITHUB_REF/refs\/heads\//}"
3237 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_ENV
3338 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_OUTPUT
3439 fi
3540
41+ - name : Get Kaldi commit hash
42+ id : get-kaldi-commit
43+ run : |
44+ KALDI_COMMIT=$(git ls-remote https://github.com/daanzu/kaldi-fork-active-grammar.git $KALDI_BRANCH | cut -f1)
45+ echo "KALDI_COMMIT: $KALDI_COMMIT"
46+ echo "KALDI_COMMIT=$KALDI_COMMIT" >> $GITHUB_OUTPUT
47+
48+ - name : Restore cached native binaries
49+ id : cache-native-binaries-restore
50+ uses : actions/cache/restore@v4
51+ with :
52+ key : native-${{ runner.os }}-${{ steps.get-kaldi-commit.outputs.KALDI_COMMIT }}-${{ env.MKL_URL }}-v1
53+ path : kaldi_active_grammar/exec/linux
54+
3655 - name : Setup just
3756 run : |
3857 ls -al $HOME
3958 mkdir $HOME/bin
4059 curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to $HOME/bin/
4160 echo "$HOME/bin" >> $GITHUB_PATH
4261
43- - name : Build with dockcross
62+ - name : Build with dockcross (native binaries & python wheel)
4463 run : |
4564 echo "KALDI_BRANCH: $KALDI_BRANCH"
4665 echo "MKL_URL: $MKL_URL"
47- # Example MKL_URL: https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16917/l_mkl_2020.4.304.tgz
48- just build-dockcross $KALDI_BRANCH $MKL_URL
49- # cp dist/* wheelhouse/
66+ just build-dockcross ${{ steps.cache-native-binaries-restore.outputs.cache-hit == 'true' && '--skip-native' || '' }} $KALDI_BRANCH $MKL_URL
5067 ls -al wheelhouse/
5168
69+ - name : Save cached native binaries
70+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
71+ uses : actions/cache/save@v4
72+ with :
73+ key : ${{ steps.cache-native-binaries-restore.outputs.cache-primary-key }}
74+ path : kaldi_active_grammar/exec/linux
75+
76+ - name : Upload native binaries to artifacts
77+ uses : actions/upload-artifact@v4
78+ with :
79+ name : native-linux
80+ path : kaldi_active_grammar/exec/linux
81+
5282 - name : Upload Linux wheels
5383 uses : actions/upload-artifact@v4
5484 with :
@@ -74,33 +104,54 @@ jobs:
74104 path : main
75105
76106 - name : Get KALDI_BRANCH (kag-$TAG tag if commit is tagged; current branch name if not)
77- id : get_kaldi_branch
107+ id : get-kaldi-branch
108+ working-directory : main
78109 run : |
79110 # Fetch tags on the one fetched commit (shallow clone)
80111 git fetch --depth=1 origin "+refs/tags/*:refs/tags/*"
81112 export TAG=$(git tag --points-at HEAD)
113+ echo "TAG: $TAG"
82114 if [[ $TAG ]]; then
115+ echo "KALDI_BRANCH: kag-$TAG"
83116 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_ENV
84117 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_OUTPUT
85118 else
119+ echo "KALDI_BRANCH: ${GITHUB_REF/refs\/heads\//}"
86120 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_ENV
87121 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_OUTPUT
88122 fi
89123
124+ - name : Get Kaldi commit hash
125+ id : get-kaldi-commit
126+ run : |
127+ KALDI_COMMIT=$(git ls-remote https://github.com/daanzu/kaldi-fork-active-grammar.git $KALDI_BRANCH | cut -f1)
128+ echo "KALDI_COMMIT: $KALDI_COMMIT"
129+ echo "KALDI_COMMIT=$KALDI_COMMIT" >> $GITHUB_OUTPUT
130+
131+ - name : Restore cached native binaries
132+ id : cache-native-binaries-restore
133+ uses : actions/cache/restore@v4
134+ with :
135+ key : native-${{ runner.os }}-${{ steps.get-kaldi-commit.outputs.KALDI_COMMIT }}-${{ env.VS_VERSION }}-${{ env.PLATFORM_TOOLSET }}-${{ env.WINDOWS_TARGET_PLATFORM_VERSION }}-${{ env.MKL_VERSION }}-v1
136+ path : main/kaldi_active_grammar/exec/windows
137+
90138 - name : Checkout OpenFST repository
139+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
91140 uses : actions/checkout@v5
92141 with :
93142 repository : daanzu/openfst
94143 path : openfst
95144
96145 - name : Checkout Kaldi repository
146+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
97147 uses : actions/checkout@v5
98148 with :
99149 repository : daanzu/kaldi-fork-active-grammar
100150 path : kaldi
101- ref : ${{ steps.get_kaldi_branch .outputs.KALDI_BRANCH }}
151+ ref : ${{ steps.get-kaldi-branch .outputs.KALDI_BRANCH }}
102152
103153 - name : Gather system information
154+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
104155 run : |
105156 echo $GITHUB_WORKSPACE
106157 df -h
@@ -118,6 +169,7 @@ jobs:
118169 vswhere -find 'VC\Redist\**\VC_redist.x64.exe'
119170
120171 - name : Setup Kaldi build configuration
172+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
121173 run : |
122174 cd kaldi/windows
123175 cp kaldiwin_mkl.props kaldiwin.props
@@ -136,28 +188,49 @@ jobs:
136188 perl get_version.pl
137189
138190 - name : Add msbuild to PATH
191+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
139192 uses : microsoft/setup-msbuild@v2
140193
141194 - name : Install MKL
195+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
142196 run : winget install --id=Intel.oneMKL -v "${MKL_VERSION}" -e --accept-package-agreements --accept-source-agreements --disable-interactivity
143197
144198 - name : Build OpenFST
199+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
145200 shell : cmd
146201 run : msbuild -t:Build -p:Configuration=Release -p:Platform=x64 -p:PlatformToolset=%PLATFORM_TOOLSET% -maxCpuCount -verbosity:minimal openfst/openfst.sln
147202
148203 - name : Build Kaldi
204+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
149205 shell : cmd
150206 run : msbuild -t:Build -p:Configuration=Release -p:Platform=x64 -p:PlatformToolset=%PLATFORM_TOOLSET% -p:WindowsTargetPlatformVersion=%WINDOWS_TARGET_PLATFORM_VERSION% -maxCpuCount -verbosity:minimal kaldi/kaldiwin_%VS_VERSION%_MKL/kaldiwin/kaldi-dragonfly/kaldi-dragonfly.vcxproj
151207
208+ - name : Copy native binaries
209+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
210+ run : |
211+ mkdir -p main/kaldi_active_grammar/exec/windows
212+ cp kaldi/kaldiwin_${VS_VERSION}_MKL/kaldiwin/kaldi-dragonfly/x64/Release/kaldi-dragonfly.dll main/kaldi_active_grammar/exec/windows/
213+
214+ - name : Save cached native binaries
215+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
216+ uses : actions/cache/save@v4
217+ with :
218+ key : ${{ steps.cache-native-binaries-restore.outputs.cache-primary-key }}
219+ path : main/kaldi_active_grammar/exec/windows
220+
221+ - name : Upload native binaries to artifacts
222+ uses : actions/upload-artifact@v4
223+ with :
224+ name : native-windows
225+ path : main/kaldi_active_grammar/exec/windows
226+
152227 - name : Build Python wheel
228+ working-directory : main
153229 run : |
154- cd main
155230 python -m pip -V
156231 python -m pip install --upgrade setuptools wheel scikit-build cmake ninja
157232 # ls -alR ../
158- mkdir -p kaldi_active_grammar/exec/windows
159- cp ../kaldi/kaldiwin_${VS_VERSION}_MKL/kaldiwin/kaldi-dragonfly/x64/Release/kaldi-dragonfly.dll kaldi_active_grammar/exec/windows/
160- env KALDIAG_SETUP_RAW=1 python setup.py bdist_wheel
233+ env KALDIAG_BUILD_SKIP_NATIVE=1 python setup.py bdist_wheel
161234 ls -al dist/
162235
163236 - name : Upload Windows wheels
@@ -188,27 +261,46 @@ jobs:
188261 uses : actions/checkout@v5
189262
190263 - name : Get KALDI_BRANCH (kag-$TAG tag if commit is tagged; current branch name if not)
264+ id : get-kaldi-branch
191265 run : |
192266 # Fetch tags on the one fetched commit (shallow clone)
193267 git fetch --depth=1 origin "+refs/tags/*:refs/tags/*"
194268 export TAG=$(git tag --points-at HEAD)
269+ echo "TAG: $TAG"
195270 if [[ $TAG ]]; then
271+ echo "KALDI_BRANCH: kag-$TAG"
196272 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_ENV
197273 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_OUTPUT
198274 else
275+ echo "KALDI_BRANCH: ${GITHUB_REF/refs\/heads\//}"
199276 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_ENV
200277 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_OUTPUT
201278 fi
202279
280+ - name : Get Kaldi commit hash
281+ id : get-kaldi-commit
282+ run : |
283+ KALDI_COMMIT=$(git ls-remote https://github.com/daanzu/kaldi-fork-active-grammar.git $KALDI_BRANCH | cut -f1)
284+ echo "KALDI_COMMIT: $KALDI_COMMIT"
285+ echo "KALDI_COMMIT=$KALDI_COMMIT" >> $GITHUB_OUTPUT
286+
287+ - name : Restore cached native binaries
288+ id : cache-native-binaries-restore
289+ uses : actions/cache/restore@v4
290+ with :
291+ key : native-${{ runner.os }}-arm-${{ steps.get-kaldi-commit.outputs.KALDI_COMMIT }}-${{ env.MACOSX_DEPLOYMENT_TARGET }}-${{ env.MKL_URL }}-v1
292+ path : kaldi_active_grammar/exec/macos
293+
203294 - name : Install dependencies
295+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
204296 run : |
205297 python3 -m pip install --break-system-packages --user --upgrade setuptools wheel scikit-build cmake ninja
206298 brew install automake sox libtool
207299 brew reinstall gfortran # For openblas
208300 # brew install autoconf
209301
210302 - name : Install MKL (if enabled)
211- if : ${{ env.MKL_URL != '' }}
303+ if : ${{ env.MKL_URL != '' && steps.cache-native-binaries-restore.outputs.cache-hit != 'true' }}
212304 run : |
213305 echo "Installing MKL from: $MKL_URL"
214306 export MKL_FILE=${MKL_URL##*/}
@@ -222,9 +314,23 @@ jobs:
222314 - name : Build Python wheel
223315 run : |
224316 echo "KALDI_BRANCH: $KALDI_BRANCH"
225- python3 setup.py bdist_wheel
317+ echo "MKL_URL: $MKL_URL"
318+ ${{ steps.cache-native-binaries-restore.outputs.cache-hit == 'true' && 'KALDIAG_BUILD_SKIP_NATIVE=1' || '' }} python3 setup.py bdist_wheel
226319 ls -al dist/
227320
321+ - name : Save cached native binaries
322+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
323+ uses : actions/cache/save@v4
324+ with :
325+ key : ${{ steps.cache-native-binaries-restore.outputs.cache-primary-key }}
326+ path : kaldi_active_grammar/exec/macos
327+
328+ - name : Upload native binaries to artifacts
329+ uses : actions/upload-artifact@v4
330+ with :
331+ name : native-macos-arm
332+ path : kaldi_active_grammar/exec/macos
333+
228334 - name : Upload MacOS ARM wheels
229335 uses : actions/upload-artifact@v4
230336 with :
@@ -243,27 +349,46 @@ jobs:
243349 uses : actions/checkout@v5
244350
245351 - name : Get KALDI_BRANCH (kag-$TAG tag if commit is tagged; current branch name if not)
352+ id : get-kaldi-branch
246353 run : |
247354 # Fetch tags on the one fetched commit (shallow clone)
248355 git fetch --depth=1 origin "+refs/tags/*:refs/tags/*"
249356 export TAG=$(git tag --points-at HEAD)
357+ echo "TAG: $TAG"
250358 if [[ $TAG ]]; then
359+ echo "KALDI_BRANCH: kag-$TAG"
251360 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_ENV
252361 echo "KALDI_BRANCH=kag-$TAG" >> $GITHUB_OUTPUT
253362 else
363+ echo "KALDI_BRANCH: ${GITHUB_REF/refs\/heads\//}"
254364 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_ENV
255365 echo "KALDI_BRANCH=${GITHUB_REF/refs\/heads\//}" >> $GITHUB_OUTPUT
256366 fi
257367
368+ - name : Get Kaldi commit hash
369+ id : get-kaldi-commit
370+ run : |
371+ KALDI_COMMIT=$(git ls-remote https://github.com/daanzu/kaldi-fork-active-grammar.git $KALDI_BRANCH | cut -f1)
372+ echo "KALDI_COMMIT: $KALDI_COMMIT"
373+ echo "KALDI_COMMIT=$KALDI_COMMIT" >> $GITHUB_OUTPUT
374+
375+ - name : Restore cached native binaries
376+ id : cache-native-binaries-restore
377+ uses : actions/cache/restore@v4
378+ with :
379+ key : native-${{ runner.os }}-intel-${{ steps.get-kaldi-commit.outputs.KALDI_COMMIT }}-${{ env.MACOSX_DEPLOYMENT_TARGET }}-${{ env.MKL_URL }}-v1
380+ path : kaldi_active_grammar/exec/macos
381+
258382 - name : Install dependencies
383+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
259384 run : |
260385 python3 -m pip install --break-system-packages --user --upgrade setuptools wheel scikit-build cmake ninja
261386 brew install automake sox
262387 brew reinstall gfortran # For openblas
263388 # brew install autoconf libtool
264389
265390 - name : Install MKL (if enabled)
266- if : ${{ env.MKL_URL != '' }}
391+ if : ${{ env.MKL_URL != '' && steps.cache-native-binaries-restore.outputs.cache-hit != 'true' }}
267392 run : |
268393 echo "Installing MKL from: $MKL_URL"
269394 export MKL_FILE=${MKL_URL##*/}
@@ -276,14 +401,29 @@ jobs:
276401
277402 - name : Build Python wheel
278403 run : |
279- python3 setup.py bdist_wheel
404+ echo "KALDI_BRANCH: $KALDI_BRANCH"
405+ echo "MKL_URL: $MKL_URL"
406+ ${{ steps.cache-native-binaries-restore.outputs.cache-hit == 'true' && 'KALDIAG_BUILD_SKIP_NATIVE=1' || '' }} python3 setup.py bdist_wheel
280407 ls -al dist/
281408
409+ - name : Save cached native binaries
410+ if : steps.cache-native-binaries-restore.outputs.cache-hit != 'true'
411+ uses : actions/cache/save@v4
412+ with :
413+ key : ${{ steps.cache-native-binaries-restore.outputs.cache-primary-key }}
414+ path : kaldi_active_grammar/exec/macos
415+
416+ - name : Upload native binaries to artifacts
417+ uses : actions/upload-artifact@v4
418+ with :
419+ name : native-macos-intel
420+ path : kaldi_active_grammar/exec/macos
421+
282422 - name : Upload MacOS Intel wheels
283423 uses : actions/upload-artifact@v4
284424 with :
285425 name : wheels-macos-intel
286- path : dist/*
426+ path : dist/*.whl
287427
288428 merge-wheels :
289429 runs-on : ubuntu-latest
0 commit comments