Skip to content

Commit

Permalink
tools: create a pipeline for building WebView via Qt 6
Browse files Browse the repository at this point in the history
* The compilation works successfully, but it doesn't work in the viewer.
  • Loading branch information
nicomiguelino committed Oct 4, 2024
1 parent 3b6ed15 commit a5b0765
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 1 deletion.
49 changes: 49 additions & 0 deletions webview/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
cmake_minimum_required(VERSION 3.5)

project(AnthiasWebView LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(
Qt6 COMPONENTS
Core
DBus
Widgets
WebEngineCore
WebEngineWidgets
REQUIRED
)

set(
CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wl,-rpath-link, ${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} -L${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}"
)
set(
CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -fPIC -Wl,-rpath-link,${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} -L${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}"
)

add_executable(
ScreenlyWebview
src/main.cpp
src/mainwindow.cpp
src/view.cpp
src/mainwindow.h
src/view.h
)

target_link_libraries(
ScreenlyWebview PRIVATE
Qt6::Core
Qt6::DBus
Qt6::WebEngineCore
Qt6::WebEngineWidgets
)

target_include_directories(ScreenlyWebview PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
12 changes: 12 additions & 0 deletions webview/docker/Dockerfile.qt6
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM arm32v7/debian:bookworm

RUN apt-get update -y && \
apt-get install -y \
cmake \
rsync \
gcc-arm-linux-gnueabihf \
g++-arm-linux-gnueabihf \
qt6-base-dev \
qt6-webengine-dev

Check notice

Code scanning / SonarCloud

Arguments in long RUN instructions should be sorted Low

Sort these package names alphanumerically. See more on SonarCloud

WORKDIR /build
33 changes: 33 additions & 0 deletions webview/scripts/build_webview.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

set -euo pipefail

CORE_COUNT="$(nproc)"

function build_webview() {
local ARCHIVE_NAME="webview.tar.gz"
local ARCHIVE_DESTINATION="/build/${ARCHIVE_NAME}"

rsync -aP /webview /build
cd /build/webview
mkdir -p build && cd build
cmake ..
cmake --build . --parallel "${CORE_COUNT}"

mkdir -p fakeroot/bin fakeroot/share/ScreenlyWebview
mv ScreenlyWebview fakeroot/bin/
cp -rf ../res fakeroot/share/ScreenlyWebview/

cd fakeroot

tar cfz ${ARCHIVE_DESTINATION} .
}

function main() {
local RELEASE_DIR='/build/release'
mkdir -p ${RELEASE_DIR}

build_webview
}

main
28 changes: 28 additions & 0 deletions webview/scripts/initialize_builder.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

set -euo pipefail

WEBVIEW_BUILDER_IMAGE_NAME='webview-builder'
WEBVIEW_BUILDER_CONTAINER_NAME='webview-builder-container'

BUILDX_ARGS=(
'-f' 'docker/Dockerfile.qt6'
'--platform' 'linux/arm/v7'
'-t' "${WEBVIEW_BUILDER_IMAGE_NAME}"
)

RUN_ARGS=(
'-itd'
'--name' "${WEBVIEW_BUILDER_CONTAINER_NAME}"
'-v' './build:/build'
'-v' './src:/webview/src'
'-v' './res:/webview/res'
'-v' './CMakeLists.txt:/webview/CMakeLists.txt'
'-v' './ScreenlyWebview.pro:/webview/ScreenlyWebview.pro'
'-v' './scripts/build_webview.sh:/scripts/build_webview.sh'
"${WEBVIEW_BUILDER_IMAGE_NAME}"
)

docker buildx build --load "${BUILDX_ARGS[@]}" .
docker rm -f "${WEBVIEW_BUILDER_CONTAINER_NAME}" || true
docker run "${RUN_ARGS[@]}" bash
3 changes: 2 additions & 1 deletion webview/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include <QApplication>
#include <QDebug>
#include <QtDBus>
#include <QDBusConnection>
#include <QDBusError>
#include <QWebEngineView>

#include "mainwindow.h"
Expand Down

0 comments on commit a5b0765

Please sign in to comment.