Skip to content

Commit e6edcd8

Browse files
Add required Qt modules (Gui, Sql, Widgets, SerialPort, WebSockets) and fix Docker tag for Bullseye armv6
Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
1 parent 805c0da commit e6edcd8

File tree

3 files changed

+59
-13
lines changed

3 files changed

+59
-13
lines changed

.github/workflows/qt5_6.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
matrix:
3030
os: [
3131
{ distribution: debian, codename: bullseye, description: Debian Bullseye (amd64), architecture: [ amd64, linux/amd64 ], platform: x11, qt_version: '6.8.2' },
32-
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 1 & Zero 1), architecture: [ armv6, linux/arm/v6 ], platform: rpi, qt_version: '6.8.2' },
32+
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 1 & Zero 1), architecture: [ armv6, linux/arm/v6 ], platform: rpi, qt_version: '5.15.2' }, # Qt5 for armv6 - Docker image bullseye-qt6 doesn't exist
3333
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 2), architecture: [ armv7, linux/arm/v7 ], platform: rpi, qt_version: '6.8.2' },
3434
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 3/4/5 & Zero 2), architecture: [ arm64, linux/arm64 ], platform: rpi, qt_version: '6.8.2' },
3535
{ distribution: debian, codename: bookworm, description: Debian Bookworm (amd64), architecture: [ amd64, linux/amd64 ], platform: x11, qt_version: '6.8.2' },

CMakeLists.txt

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ endif()
165165
set(QT_VERSION_TO_BUILD "6.8.2" CACHE STRING "Qt version to build")
166166

167167
# Qt6 CMake configure options for static build
168-
# We build only qtbase with minimal features to get Qt::Core and Qt::Network
168+
# Building qtbase with required modules for Hyperion.NG: Core, Gui, Network, Sql, Widgets
169169
set(QT_CMAKE_ARGS
170170
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
171171
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}/qt6
@@ -174,10 +174,9 @@ set(QT_CMAKE_ARGS
174174
-DBUILD_SHARED_LIBS:BOOL=OFF
175175
-DQT_BUILD_EXAMPLES:BOOL=OFF
176176
-DQT_BUILD_TESTS:BOOL=OFF
177-
-DFEATURE_sql:BOOL=OFF
178-
-DFEATURE_dbus:BOOL=OFF
179-
-DFEATURE_gui:BOOL=OFF
180-
-DFEATURE_widgets:BOOL=OFF
177+
-DFEATURE_sql:BOOL=ON
178+
-DFEATURE_gui:BOOL=ON
179+
-DFEATURE_widgets:BOOL=ON
181180
-DFEATURE_testlib:BOOL=OFF
182181
-DFEATURE_openssl:BOOL=OFF
183182
-DFEATURE_icu:BOOL=OFF
@@ -188,9 +187,9 @@ set(QT_CMAKE_ARGS
188187
${APPLE_CONFIGURATION}
189188
)
190189

191-
# Build Qt6 qtbase from source (minimal static build with Network support)
192-
ExternalProject_Add(qt6
193-
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/qt6
190+
# Build Qt6 qtbase from source (static build with Core, Gui, Network, Sql, Widgets)
191+
ExternalProject_Add(qt6-base
192+
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/qt6-base
194193
GIT_REPOSITORY https://code.qt.io/qt/qtbase.git
195194
GIT_TAG v${QT_VERSION_TO_BUILD}
196195
GIT_SHALLOW TRUE
@@ -202,6 +201,49 @@ ExternalProject_Add(qt6
202201
INSTALL_COMMAND cmake --install <BINARY_DIR> --config ${CMAKE_BUILD_TYPE}
203202
)
204203

204+
# Build Qt6 SerialPort module (required by Hyperion.NG)
205+
ExternalProject_Add(qt6-serialport
206+
DEPENDS qt6-base
207+
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/qt6-serialport
208+
GIT_REPOSITORY https://code.qt.io/qt/qtserialport.git
209+
GIT_TAG v${QT_VERSION_TO_BUILD}
210+
GIT_SHALLOW TRUE
211+
GIT_PROGRESS TRUE
212+
UPDATE_COMMAND ""
213+
CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
214+
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}/qt6
215+
-DCMAKE_PREFIX_PATH:PATH=${CMAKE_INSTALL_PREFIX}/qt6
216+
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
217+
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
218+
-DBUILD_SHARED_LIBS:BOOL=OFF
219+
${APPLE_CONFIGURATION}
220+
BUILD_COMMAND cmake --build <BINARY_DIR> --config ${CMAKE_BUILD_TYPE} --parallel
221+
INSTALL_COMMAND cmake --install <BINARY_DIR> --config ${CMAKE_BUILD_TYPE}
222+
)
223+
224+
# Build Qt6 WebSockets module (required by Hyperion.NG)
225+
ExternalProject_Add(qt6-websockets
226+
DEPENDS qt6-base
227+
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/qt6-websockets
228+
GIT_REPOSITORY https://code.qt.io/qt/qtwebsockets.git
229+
GIT_TAG v${QT_VERSION_TO_BUILD}
230+
GIT_SHALLOW TRUE
231+
GIT_PROGRESS TRUE
232+
UPDATE_COMMAND ""
233+
CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
234+
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}/qt6
235+
-DCMAKE_PREFIX_PATH:PATH=${CMAKE_INSTALL_PREFIX}/qt6
236+
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
237+
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
238+
-DBUILD_SHARED_LIBS:BOOL=OFF
239+
${APPLE_CONFIGURATION}
240+
BUILD_COMMAND cmake --build <BINARY_DIR> --config ${CMAKE_BUILD_TYPE} --parallel
241+
INSTALL_COMMAND cmake --install <BINARY_DIR> --config ${CMAKE_BUILD_TYPE}
242+
)
243+
244+
# Convenience target to build all Qt6 modules
245+
add_custom_target(qt6 DEPENDS qt6-base qt6-serialport qt6-websockets)
246+
205247
# Set Qt6_DIR to find the built Qt6
206248
set(Qt6_DIR "${CMAKE_INSTALL_PREFIX}/qt6/lib/cmake/Qt6" CACHE PATH "Qt6 CMake directory" FORCE)
207249
list(PREPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}/qt6)

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,23 @@ This ensures:
1414
### Build Configuration
1515

1616
- **Qt Version**: 6.8.2
17-
- **Build Type**: Static (minimal configuration)
18-
- **Components**: Qt Core and Qt Network only
19-
- **Disabled Features**: GUI, Widgets, SQL, DBus, OpenSSL, ICU
17+
- **Build Type**: Static
18+
- **Modules Built**:
19+
- **qtbase**: Core, Gui, Network, Sql, Widgets
20+
- **qtserialport**: SerialPort
21+
- **qtwebsockets**: WebSockets
22+
- **Disabled Features**: DBus (optional), OpenSSL, ICU
2023

2124
### Build Time
2225

2326
Building Qt6 from source is time-intensive:
24-
- **First build**: 30-120 minutes depending on hardware
27+
- **First build**: 45-180 minutes depending on hardware (increased due to additional modules)
2528
- **Cached builds**: Much faster due to GitHub Actions caching
2629

2730
### Platform Support
2831

2932
Qt6 6.8.2 static builds are created for:
3033
- **Linux**: All Debian distributions (Bullseye, Bookworm, Trixie) and architectures (amd64, armv6, armv7, arm64)
34+
- Note: Debian Bullseye armv6 uses Qt 5.15.2 due to Docker image availability
3135
- **macOS**: arm64 and x64 architectures
3236
- **Windows**: arm64 and x64 architectures

0 commit comments

Comments
 (0)