Skip to content

Commit b166397

Browse files
committed
Add Docker build scripts for OpenCV.js with enhanced configuration
- Created a new Windows batch script `build_w_docker.bat` for building OpenCV.js using Docker, including user permissions handling and output directory management. - Updated the existing `build_w_docker.sh` script to improve error handling and ensure proper directory permissions, while aligning the Docker image version with the new batch script. - Modified the OpenCV submodule to update to the latest commit.
1 parent b583436 commit b166397

5 files changed

Lines changed: 60 additions & 16 deletions

File tree

.github/workflows/build_opencv.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
${{ runner.os }}-node-
2828
- run: git submodule update --init
2929
- run: npm install
30-
- run: docker run --rm -v $(pwd):/src -u $(id -u):$(id -g) -e "EMSCRIPTEN=/emsdk/upstream/emscripten" emscripten/emsdk:3.1.26 emcmake python3 ./opencv/platforms/js/build_js.py opencv_js --config="./opencv.webarkit_config.py" --build_wasm --cmake_option="-DBUILD_opencv_dnn=OFF" --cmake_option="-DBUILD_opencv_objdetect=OFF" --cmake_option="-DBUILD_opencv_photo=OFF" --build_flags="-s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0"
30+
- run: docker run --rm -v $(pwd):/src -u $(id -u):$(id -g) -e "EMSCRIPTEN=/emsdk/upstream/emscripten" emscripten/emsdk:3.1.69 emcmake python3 ./opencv/platforms/js/build_js.py opencv_js --config="./opencv.webarkit_config.py" --build_wasm --cmake_option="-DBUILD_opencv_dnn=OFF" --cmake_option="-DBUILD_opencv_objdetect=OFF" --cmake_option="-DBUILD_opencv_photo=OFF"--cmake_option="-DCPU_BASELINE=DETECT" --cmake_option="-DCPU_DISPATCH=" --cmake_option="-DCPU_BASELINE_DISABLE=SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;POPCNT;AVX;FP16;FMA3;AVX2;AVX_512F" --build_flags="-fwasm-exceptions -mbulk-memory -mnontrapping-fptoint -s WASM_BIGINT=1 -s SUPPORT_LONGJMP=wasm -s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0 -s ENVIRONMENT=web,worker"
3131
- run: cp -r opencv_js/bin/opencv_js.js build
3232
- uses: actions/upload-artifact@v4
3333
with:

build/opencv_js.js

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build_w_docker.bat

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@echo off
2+
setlocal enabledelayedexpansion
3+
4+
set "OUTPUT_DIR=opencv_js"
5+
set "BUILD_DIR=build"
6+
7+
if not exist "%OUTPUT_DIR%" (
8+
mkdir "%OUTPUT_DIR%"
9+
rem Grant broad access so Docker can write build artifacts when using Windows file permissions
10+
icacls "%OUTPUT_DIR%" /grant *S-1-1-0:^(OI^)(CI^)F >nul 2>&1
11+
echo mkdir opencv_js
12+
)
13+
14+
set "UID="
15+
set "GID="
16+
set "DOCKER_USER="
17+
for /f "usebackq tokens=* delims=" %%i in (`wsl id -u 2^>nul`) do set "UID=%%i"
18+
for /f "usebackq tokens=* delims=" %%i in (`wsl id -g 2^>nul`) do set "GID=%%i"
19+
if defined UID if defined GID (
20+
set "DOCKER_USER=-u %UID%:%GID%"
21+
)
22+
23+
docker run --rm -v "%cd%:/src" %DOCKER_USER% -e "EMSCRIPTEN=/emsdk/upstream/emscripten" emscripten/emsdk:3.1.69 emcmake python3 ./opencv/platforms/js/build_js.py %OUTPUT_DIR% --config="./opencv.webarkit_config.py" --build_wasm --cmake_option="-DBUILD_opencv_dnn=OFF" --cmake_option="-DBUILD_opencv_objdetect=OFF" --cmake_option="-DBUILD_opencv_photo=OFF" --cmake_option="-DCPU_BASELINE=DETECT" --cmake_option="-DCPU_DISPATCH=" --cmake_option="-DCPU_BASELINE_DISABLE=SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;POPCNT;AVX;FP16;FMA3;AVX2;AVX_512F" --build_flags="-fwasm-exceptions -mbulk-memory -mnontrapping-fptoint -s WASM_BIGINT=1 -s SUPPORT_LONGJMP=wasm -s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0 -s MODULARIZE=1 -s ENVIRONMENT=web,worker"
24+
if errorlevel 1 (
25+
echo Docker build failed.
26+
exit /b 1
27+
)
28+
29+
if not exist "%BUILD_DIR%" (
30+
mkdir "%BUILD_DIR%"
31+
)
32+
33+
copy /Y "%OUTPUT_DIR%\bin\opencv_js.js" "%BUILD_DIR%\opencv_js.js" >nul
34+
if errorlevel 1 (
35+
echo Failed to copy opencv_js.js to %BUILD_DIR%.
36+
exit /b 1
37+
)
38+
39+
echo Build completed successfully.
40+
endlocal

build_w_docker.sh

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
#!/usr/bin/env bash
2+
set -euo pipefail
23

3-
if [ ! -d "opencv_js" ] ; then
4-
mkdir opencv_js
5-
sudo chmod -R 777 opencv_js
6-
echo "mkdir opencv_js"
4+
OUTPUT_DIR="opencv_js"
5+
BUILD_DIR="build"
6+
7+
if [ ! -d "${OUTPUT_DIR}" ]; then
8+
mkdir -p "${OUTPUT_DIR}"
9+
chmod -R a+rwx "${OUTPUT_DIR}" 2>/dev/null || sudo chmod -R 777 "${OUTPUT_DIR}" > /dev/null
10+
echo "mkdir ${OUTPUT_DIR}"
711
fi
812

9-
docker run --rm -v $(pwd):/src -u $(id -u):$(id -g) -e "EMSCRIPTEN=/emsdk/upstream/emscripten" emscripten/emsdk:3.1.26 emcmake python3 ./opencv/platforms/js/build_js.py opencv_js --config="./opencv.webarkit_config.py" --build_wasm --cmake_option="-DBUILD_opencv_dnn=OFF" --cmake_option="-DBUILD_opencv_objdetect=OFF" --cmake_option="-DBUILD_opencv_photo=OFF" --build_flags="-s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0 -s MODULARIZE=1"
13+
docker run --rm -v "$(pwd)":/src -u "$(id -u):$(id -g)" -e "EMSCRIPTEN=/emsdk/upstream/emscripten" emscripten/emsdk:3.1.69 emcmake python3 ./opencv/platforms/js/build_js.py "${OUTPUT_DIR}" --config="./opencv.webarkit_config.py" --build_wasm --cmake_option="-DBUILD_opencv_dnn=OFF" --cmake_option="-DBUILD_opencv_objdetect=OFF" --cmake_option="-DBUILD_opencv_photo=OFF" --cmake_option="-DCPU_BASELINE=DETECT" --cmake_option="-DCPU_DISPATCH=" --cmake_option="-DCPU_BASELINE_DISABLE=SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;POPCNT;AVX;FP16;FMA3;AVX2;AVX_512F" --build_flags="-fwasm-exceptions -mbulk-memory -mnontrapping-fptoint -s WASM_BIGINT=1 -s SUPPORT_LONGJMP=wasm -s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0 -s MODULARIZE=1 -s ENVIRONMENT=web,worker"
1014

11-
# copy the output to the build folder
12-
cp -r opencv_js/bin/opencv_js.js build
15+
mkdir -p "${BUILD_DIR}"
16+
cp -f "${OUTPUT_DIR}/bin/opencv_js.js" "${BUILD_DIR}/opencv_js.js"

opencv

Submodule opencv updated 3153 files

0 commit comments

Comments
 (0)