Skip to content

blammit is building wasm file #1395

blammit is building wasm file

blammit is building wasm file #1395

Workflow file for this run

name: build-wasm
run-name: ${{ github.actor }} is building wasm file
on:
push:
paths-ignore:
- '**/README.md'
jobs:
build-wasm-file:
env:
EMSCRIPTEN: 3.1.25
QT_VERSION: 6.5.2
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update -yq &&
sudo apt-get install -y g++ build-essential mesa-common-dev libssl-dev \
wget lsb libgl1-mesa-dev libxkbcommon-x11-0 libpulse-dev p7zip-full \
ninja-build dos2unix
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Check for a cached version
uses: actions/cache@v3
id: cached_qt_emscripten
with:
path: |
/opt/hostedtoolcache
# Adding version as cache key
key: ${{ runner.os }}-qt-${{ env.QT_VERSION }}-em-${{ env.EMSCRIPTEN }}
- name: Install Qt ${{env.QT_VERSION}} linux desktop
if: steps.cached_qt_emscripten.outputs.cache-hit != 'true'
uses: jurplel/install-qt-action@v3
with:
aqtversion: '==3.1.*'
version: "${{env.QT_VERSION}}"
host: 'linux'
target: 'desktop'
arch: 'gcc_64'
modules: 'qtwebsockets qt5compat qtshadertools'
dir: '/opt/hostedtoolcache'
- name: Install QT ${{env.QT_VERSION}} linux wasm and cmake
if: steps.cached_qt_emscripten.outputs.cache-hit != 'true'
uses: jurplel/install-qt-action@v3
with:
aqtversion: '==3.1.*'
version: "${{env.QT_VERSION}}"
host: 'linux'
target: 'desktop'
arch: 'wasm_singlethread'
modules: 'qtwebsockets qt5compat qtshadertools'
tools: 'tools_cmake'
dir: '/opt/hostedtoolcache'
- name: patch Qt ${{env.QT_VERSION}}
if: steps.cached_qt_emscripten.outputs.cache-hit != 'true'
run: |
echo patch Qt
export QTDIR=/opt/hostedtoolcache/Qt/$QT_VERSION/wasm_singlethread
./.github/patches/qt-fixes.sh
dos2unix ${QTDIR}/plugins/platforms/{qtloader.js,wasm_shell.html}
patch ${QTDIR}/plugins/platforms/qtloader.js < ./.github/patches/qtloader.js.patch
patch ${QTDIR}/plugins/platforms/wasm_shell.html < ./.github/patches/wasm_shell.html.patch
patch ${QTDIR}/bin/qt-configure-module < ./.github/patches/qt-configure-module.patch
- name: Install emscripten ${{env.EMSCRIPTEN}}
if: steps.cached_qt_emscripten.outputs.cache-hit != 'true'
run: |
echo installing emscripten ${EMSCRIPTEN}
cd /opt/hostedtoolcache/
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install ${EMSCRIPTEN}
./emsdk activate ${EMSCRIPTEN}
- name: Install QtMQTT
if: steps.cached_qt_emscripten.outputs.cache-hit != 'true'
run: |
echo installing QtMQTT
source "/opt/hostedtoolcache/emsdk/emsdk_env.sh"
git clone https://github.com/qt/qtmqtt.git
cd qtmqtt
git checkout $QT_VERSION
mkdir build-qtmqtt && cd build-qtmqtt
export PATH=$PATH:/opt/hostedtoolcache/Qt/Tools/CMake/bin
export QTDIR=/opt/hostedtoolcache/Qt/$QT_VERSION/wasm_singlethread
${QTDIR}/bin/qt-configure-module ..
cmake --build .
cmake --install . --prefix ${QTDIR} --verbose
- name: Build webassembly GUI
run: |
source "/opt/hostedtoolcache/emsdk/emsdk_env.sh"
export QTDIR=/opt/hostedtoolcache/Qt/$QT_VERSION/wasm_singlethread
export PATH=$PATH:/opt/hostedtoolcache/Qt/Tools/CMake/bin
mkdir build-wasm && cd build-wasm
${QTDIR}/bin/qt-cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..
cmake --build .
grep -q -E '^var createQtAppInstance' venus-gui-v2.js
sed -i "s%^var \(createQtAppInstance\)%window.\1%" venus-gui-v2.js
cd -
mkdir -p artifacts/wasm
mv build-wasm/venus-gui-v2.{html,js,wasm} build-wasm/qtloader.js images/victronenergy.svg artifacts/wasm/
mv artifacts/wasm/venus-gui-v2.html artifacts/wasm/index.html
cp .github/patches/qtloader-controller.js artifacts/wasm/
cd artifacts
zip -r ../venus-webassembly.zip wasm
- name: Upload wasm files
uses: actions/upload-artifact@v3
with:
name: venus-webassembly
path: artifacts
retention-days: 5
- name: Release tagged wasm files
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: venus-webassembly.zip