@@ -51,19 +51,18 @@ jobs:
5151 cmake --build build --parallel
5252 env :
5353 CTEST_OUTPUT_ON_FAILURE : 1
54- - name : Prepare OpenCV libs
54+ - name : Prepare ALL libs
5555 run : |
56- mkdir -p build/bin/opencv_libs
57- cp -a build/3rdparty/opencv_build/lib/libopencv_* build/bin/opencv_libs/
58- echo "Library permissions after copy:"
59- stat -c "%A %n" build/bin/opencv_libs/libopencv_imgcodecs.so*
60-
56+ mkdir -p build/bin/all_libs
57+ cp -a build/3rdparty/opencv_build/lib/* build/bin/all_libs/ 2>/dev/null || true
58+ ldd build/bin/ACC | grep "=> /" | awk '{print $3}' | xargs -I {} cp {} build/bin/all_libs/ 2>/dev/null || true
6159 - name : Upload artifacts
6260 uses : actions/upload-artifact@v4
6361 with :
6462 name : mnist-${{ matrix.build_type }}${{ matrix.stats && '-stats' || '' }}
6563 path : |
6664 ${{ steps.set_binaries.outputs.ACC_BINARY }}
65+ build/bin/all_libs/*
6766 build/bin/opencv_libs/*
6867 build/setenv.sh
6968 - name : Test
@@ -251,41 +250,15 @@ jobs:
251250 name : mnist-RELEASE
252251 path : build/
253252
254- - name : Verify downloaded artifacts
255- run : |
256- echo "### Verifying downloaded artifacts ###"
257- echo "Current directory: $(pwd)"
258- echo "Build directory contents:"
259- ls -la build/ || echo "No build directory"
260- echo "Looking for ACC binary:"
261- find build/ -name "ACC" -type f 2>/dev/null || echo "ACC not found"
262- echo "Checking bin directory:"
263- ls -la build/bin/ 2>/dev/null || echo "No bin directory"
264-
265253 - name : Set binary path
266254 id : set_eval_binary
267255 run : |
268- if [ -f "build/bin/ACC" ]; then
269- echo "ACC binary found at build/bin/ACC"
270- echo "EVAL_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT
271- else
272- echo "ERROR: ACC binary not found at build/bin/ACC"
273- echo "Available files:"
274- find build/ -type f -name "*" 2>/dev/null | head -20
275- exit 1
276- fi
256+ echo "EVAL_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT
277257
278258 - name : Install system dependencies
279259 run : |
280260 sudo apt-get update
281- sudo apt-get install -y \
282- libgtk-3-0 \
283- libtbb12 \
284- libjpeg-dev \
285- libpng-dev \
286- libtiff-dev \
287- libopenjp2-7 \
288- libdnnl3
261+ sudo apt-get install -y libgtk-3-0 libtbb12 libjpeg-dev libpng-dev libtiff-dev libopenjp2-7 libdnnl3
289262 sudo ldconfig
290263
291264 - name : Generate model JSON
@@ -307,117 +280,46 @@ jobs:
307280 - name : Download MNIST test dataset
308281 if : steps.cache-mnist.outputs.cache-hit != 'true'
309282 run : |
310- set -e
311283 mkdir -p docs/mnist/mnist/test
312- echo "Downloading test images..."
313284 wget -q https://github.com/DeepTrackAI/MNIST_dataset/archive/main.zip -O main.zip
314285 unzip -q main.zip
315286 cp MNIST_dataset-main/mnist/test/*.png docs/mnist/mnist/test/
316287 rm -rf main.zip MNIST_dataset-main
317- echo "Downloaded $(ls docs/mnist/mnist/test | wc -l) images"
318288
319289 - name : Prepare environment
320290 run : |
321- echo "### Preparing environment ###"
322- echo "Binary path: ${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
323-
324- ls -la "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
325291 chmod +x "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
292+ export LD_LIBRARY_PATH=$PWD/build/bin/all_libs:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
326293
327- export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
328- echo "Final LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
329-
330- - name : Verify library integrity
331- run : |
332- echo "### Library verification ###"
333- ls -la build/bin/opencv_libs/ || echo "No opencv_libs directory"
334- file build/bin/opencv_libs/libopencv_imgcodecs.so* 2>/dev/null | head -1 || echo "No opencv_imgcodecs library found"
335-
336- - name : Test binary execution
337- run : |
338- echo "### Testing binary execution ###"
339- export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
340-
341- echo "Binary dependencies:"
342- ldd "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" 2>/dev/null || echo "ldd failed"
343-
344- echo "Testing help command:"
345- timeout 10s "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --help > /dev/null 2>&1 || echo "Help test completed"
346-
347294 - name : Run evaluation
348295 run : |
349- echo "### Running evaluation ###"
350- export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
351- echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
352-
353- echo "### Checking binary execution permissions ###"
354- ls -la "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
355- file "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
356-
357- echo "### Testing direct execution ###"
358- set +e
359- "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --version > version_output.txt 2>&1
360- VERSION_EXIT_CODE=$?
361- echo "Version command exit code: $VERSION_EXIT_CODE"
362- cat version_output.txt
363-
364- "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --help > help_output.txt 2>&1
365- HELP_EXIT_CODE=$?
366- echo "Help command exit code: $HELP_EXIT_CODE"
367- cat help_output.txt
368-
369- echo "### Running MNIST evaluation ###"
370- mkdir -p docs/mnist/mnist/test
371-
296+ export LD_LIBRARY_PATH=$PWD/build/bin/all_libs:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
372297 "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --model alexnet_mnist > accuracy.txt 2>&1
373- EVAL_EXIT_CODE=$?
374- echo "Evaluation exit code: $EVAL_EXIT_CODE"
375-
376- if [ $EVAL_EXIT_CODE -ne 0 ]; then
377- echo "Trying without --model parameter..."
378- "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" > accuracy.txt 2>&1
379- EVAL_EXIT_CODE=$?
380- echo "Fallback evaluation exit code: $EVAL_EXIT_CODE"
298+ if [ $? -ne 0 ]; then
299+ exit 1
381300 fi
382-
383- echo "### Evaluation output ###"
384- cat accuracy.txt
385- set -e
386301
387302 - name : Extract accuracy value
388303 run : |
389- echo "### Extracting accuracy ###"
390304 ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy.txt | head -1 || echo "0%")
391- echo "Accuracy: $ACCURACY"
392305 echo "$ACCURACY" > accuracy_value.txt
393306
394307 - name : Update README (master only)
395308 if : github.ref == 'refs/heads/master'
396309 run : |
397310 ACCURACY=$(cat accuracy_value.txt | sed 's/%//g')
398311 DATE=$(date '+%Y-%m-%d')
399-
400- echo "Updating README with:"
401- echo "Accuracy : $ACCURACY%"
402- echo "Date : $DATE"
403-
404312 sed -i "s/<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->/<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->/" README.md
405-
406- echo "Updated README content:"
407- grep -A 2 -B 2 "ACCURACY_PLACEHOLDER" README.md
408313
409314 - name : Commit and push changes (master only)
410315 if : github.ref == 'refs/heads/master'
411316 run : |
412317 git config --global user.name "GitHub Actions"
413318 git config --global user.email "actions@github.com"
414-
415319 git add README.md
416-
417320 if git diff-index --quiet HEAD --; then
418321 echo "No changes to commit"
419322 else
420323 git commit -m "[CI] Update accuracy: $(cat accuracy_value.txt)"
421324 git push origin master
422- echo "Changes pushed to master branch"
423325 fi
0 commit comments