Skip to content

Windows 11 (arm64) - PR Artifacts - Vulkan headers - CPack workaround #1866

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Jun 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e9e1da4
Added Windows arm64 platform
Paulchen-Panther May 1, 2025
9b5a0bb
test run
Paulchen-Panther May 16, 2025
9f2e080
Added XProtect race condition workaround
Paulchen-Panther May 16, 2025
997c338
Update Changelog
Paulchen-Panther May 16, 2025
93427d3
typo
Paulchen-Panther May 16, 2025
53f8412
Collect the correct QT dlls on Windows
Paulchen-Panther May 24, 2025
60854b0
Merge remote-tracking branch 'upstream/master' into arm64
Lord-Grey Jun 1, 2025
4fa4077
Add SignalHandling to Windows
Lord-Grey Jun 1, 2025
883e220
Add missing ENABLE_MDNS
Lord-Grey Jun 1, 2025
dcd232a
Windows console updates
Lord-Grey Jun 1, 2025
7e1355d
Clean-up
Lord-Grey Jun 1, 2025
865e101
Add package build presets in preset template
Lord-Grey Jun 1, 2025
0937617
Disable DirectX grabber per default
Lord-Grey Jun 1, 2025
7516d0b
Correct output position param
Lord-Grey Jun 1, 2025
f3af98b
Replaced exceptions by signaling errors in main program
Lord-Grey Jun 1, 2025
625ec03
Snap removed as it has its own repo
Paulchen-Panther Jun 1, 2025
55cff3a
INNO Setup fixes
Paulchen-Panther Jun 2, 2025
a3048ae
Set windows console to info output
Paulchen-Panther Jun 2, 2025
7bbac75
Fix double message on "Default Password is set"
Lord-Grey Jun 2, 2025
f8644a5
update inno setup
Paulchen-Panther Jun 3, 2025
8224068
fix windows autostart + icon edit
Paulchen-Panther Jun 4, 2025
a7cc3b9
Removed "-c" console option on Window
Lord-Grey Jun 4, 2025
a985080
Merge branch 'arm64' of https://github.com/Paulchen-Panther/hyperion.…
Lord-Grey Jun 4, 2025
a50d8b9
Removed "-c" console option on Window (2)
Lord-Grey Jun 4, 2025
77305c3
Rename "-v" & "--verbose" options to "-i" & "--info to not overlap wi…
Lord-Grey Jun 4, 2025
883547f
Clean-up logging options
Lord-Grey Jun 4, 2025
03fb103
Remove hard exit()s when database and hyperion versions are not compa…
Lord-Grey Jun 4, 2025
242d713
Fix Non schema elements were not removed when validating configuration
Lord-Grey Jun 5, 2025
4a36cb7
On Windows arm64 install Python 3.13.3
Paulchen-Panther Jun 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 33 additions & 54 deletions .github/workflows/qt5_6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ jobs:
- name: 📥 Install dependencies
uses: tecolicom/actions-use-homebrew-tools@v1
with:
tools: qt@${{ inputs.qt_version }} vulkan-headers coreutils
tools: qt@${{ inputs.qt_version }} coreutils
key: ${{ runner.os }}-${{ matrix.architecture }}-homebrew-packages-${{ inputs.qt_version }}

- name: 💾 Download Pre-Build Dependencies
Expand All @@ -146,25 +146,9 @@ jobs:
- name: 👷 Build ${{ env.HINT }}
shell: bash
run: |
# Remove once issue with Homebrew cache action is fixed
brew reinstall --formula cmake

# Build
cmake --preset macos-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }}
cmake --build --preset macos-${{ env.BUILD_TYPE }}
# CPack workaround for macOS 13
attempt=0
max_attempts=5
while [ $attempt -lt $max_attempts ]; do
if cd build && cpack; then
echo "Package created successfully"
break
else
echo "Failed to create package, retrying..."
sleep 10
fi
attempt=$((attempt + 1))
done
cmake --build --preset macos-${{ env.BUILD_TYPE }} --target package
env:
BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
HINT: ${{ steps.dependencies.outputs.cmakeArgs != '' && '(with pre-built dependencies)' || '(full build)' }}
Expand All @@ -183,10 +167,20 @@ jobs:
######################

windows:
name: 🪟 Windows x64
runs-on: windows-2022
name: 🪟 Windows ${{ matrix.architecture }}
runs-on: ${{ matrix.architecture == 'arm64' && 'windows-11-arm' || 'windows-2022' }}
env:
LIBJPEG_TURBO_VERSION: 3.0.1
LIBJPEG_TURBO_VERSION: 3.1.0
strategy:
fail-fast: false
matrix:
architecture: [ arm64, x64 ]
isQt5:
- ${{ inputs.qt_version == '5' }}
exclude:
- isQt5: true
architecture: arm64

steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
Expand All @@ -198,63 +192,48 @@ jobs:
shell: bash
run: tr -d '\n' < .version > temp && mv temp .version && echo -n "+PR${{ inputs.pull_request_number }}" >> .version

- name: 💾 Restore DirectX SDK (if available)
uses: ethanjli/cached-download-action@v0.1.2
- name: 📥 Install Python
uses: actions/setup-python@v5
with:
url: https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe
destination: .\installer\dxsdk-jun10.exe
cache-key: dxsdk-jun10

- name: 💾 Restore libjpeg-turbo (if available)
uses: ethanjli/cached-download-action@v0.1.2
with:
url: https://sourceforge.net/projects/libjpeg-turbo/files/${{ env.LIBJPEG_TURBO_VERSION }}/libjpeg-turbo-${{ env.LIBJPEG_TURBO_VERSION }}-vc64.exe
destination: .\installer\libjpeg-turbo.exe
cache-key: libjpeg-turbo

- name: 📥 Extract DirectX SDK & libjpeg-turbo
run: |
7z x -aoa .\installer\dxsdk-jun10.exe DXSDK/Include DXSDK/Lib -oC:\
echo "DXSDK_DIR=C:\DXSDK" | Out-File -FilePath $env:GITHUB_ENV -Append
7z x -aoa .\installer\libjpeg-turbo.exe bin include lib -oC:\turbojpeg
echo "TURBOJPEG_DIR=C:\turbojpeg" | Out-File -FilePath $env:GITHUB_ENV -Append

- name: 📥 Install Vulkan SDK
if: ${{ inputs.qt_version == '6' }}
uses: jakoch/install-vulkan-sdk-action@v1
with:
install_runtime: false
cache: true
stripdown: true
python-version: '3.13.3'
architecture: ${{ matrix.architecture }}

- name: 📥 Install Qt
uses: jurplel/install-qt-action@v4
# If the following PR is merged, you can switch back to jurplel/install-qt-action
# https://github.com/jurplel/install-qt-action/pull/273
uses: jdpurcell/install-qt-action@v5
with:
version: ${{ inputs.qt_version == '6' && '6.8' || '5.15.*' }}
version: ${{ inputs.qt_version == '6' && '6.8.*' || '5.15.*' }}
target: 'desktop'
modules: ${{ inputs.qt_version == '6' && 'qtserialport qtwebsockets' || '' }}
cache: 'true'
cache-key-prefix: 'cache-qt-windows'
setup-python: 'false'

- name: 📥 Install latest CMake and Ninja
uses: lukka/get-cmake@latest

- name: 🛠️ Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.architecture }}

- name: 💾 Download Pre-Build Dependencies
id: dependencies
uses: ./.github/actions/download-pre-built-deps
with:
os: 'windows'
architecture: 'x64'
architecture: ${{ matrix.architecture }}
qt_version: ${{ inputs.qt_version }}
build_type: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
build_type: ${{ inputs.event_name == 'pull_request' && 'relwithdebinfo' || 'release' }}

- name: 👷 Build ${{ env.HINT }}
shell: cmd
run: |
cmake --preset windows-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }}
cmake --build --preset windows-${{ env.BUILD_TYPE }} --target package
env:
BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'relwithdebinfo' || 'release' }}
HINT: ${{ steps.dependencies.outputs.cmakeArgs != '' && '(with pre-built dependencies)' || '(full build)' }}

- name: 📦 Upload
Expand All @@ -264,7 +243,7 @@ jobs:
name: ${{ inputs.event_name == 'pull_request' && env.NAME || format('artifact-{0}', env.NAME) }}
path: ${{ inputs.event_name == 'pull_request' && 'build/*.exe' || 'build/Hyperion-*' }}
env:
NAME: ${{ inputs.qt_version == '6' && 'windows_x64_qt6' || 'windows_x64' }}
NAME: ${{ inputs.qt_version == '6' && format('windows_{0}_qt6', matrix.architecture) || format('windows_{0}', matrix.architecture) }}

#####################################
###### Publish GitHub Releases ######
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### ⚠️ Breaking Changes

- Rename "-v" & "--verbose" options to "-i" & "--info to not overlap with version information

#### JSON-API
- Standardized subscription update elements: `ledcolors-imagestream-update`, `ledcolors-ledstream-update`, and `logmsg-update` now return data under `data` instead of `result`.
- Global configuration elements are now separated from instance-specific ones.
Expand Down Expand Up @@ -39,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Enhanced error dialog with additional details
- LED preview displays the associated instance name
- **HTTP Server:** Support for **Cross-Origin Resource Sharing (CORS)** (#1496)
- **GitHub builds** Added Windows 11 on arm64 platform

#### JSON-API
- New event subscriptions: `Suspend`, `Resume`, `Idle`, `IdleResume`, `Restart`, `Quit`
Expand Down Expand Up @@ -116,13 +119,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Use of smart pointers
- UI code streamlining
- Improved `install_pr` script
- Replaced exceptions by signaling errors in main program and standalone grabbers
- Enhanced resilience and error handling

- **Build:**
- Updated **CompileHowto for macOS**. _Thanks to @Rastafabisch_ (#1757)
- Added missing `ENABLE_MDNS`. _Thanks to @Links2004_ (#1711)
- Build system now uses **pre-built dependencies** to reduce resource usage
- Introduced **CMakePresets** and a **CMakeUserPresets** template
- GitHub Windows, Pull request artifacts are built with RelWithDebInfo (#1865 )

#### JSON-API
- Consistent token authorization across sessions and single requests
Expand All @@ -145,6 +150,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Removed: `session-updates` subscription
- Deprecated: `serverinfo/subscribe`
- Use `subscribe` / `unsubscribe` subcommands instead
- Deprecated: DirectX grabber in favour of the new DXGI DDA grabber
- Removed "-c" console option on Windows. Hyperion can be started via terminal to get the required console output

## [2.0.16](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.16) - 2024-01

Expand Down
18 changes: 15 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ if(${CMAKE_SYSTEM} MATCHES "Linux")
set(DEFAULT_DEV_TINKERFORGE ON)
set(DEFAULT_CEC ON)
elseif (WIN32)
set(DEFAULT_DX ON)
set(DEFAULT_DDA ON)
set(DEFAULT_MF ON)
else()
Expand Down Expand Up @@ -204,6 +203,10 @@ if("${PLATFORM}" MATCHES "osx")
set(DEFAULT_OSX ON)
set(DEFAULT_AUDIO OFF)

elseif ("${PLATFORM}" MATCHES "windows")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i386|i686|amd64|x86_64|AMD64")
set(DEFAULT_DX OFF)
endif()
elseif ("${PLATFORM}" MATCHES "rpi")
set(DEFAULT_DISPMANX ON)
set(DEFAULT_DEV_WS281XPWM ON)
Expand Down Expand Up @@ -576,7 +579,7 @@ endif()
# Search for Windows SDK
if(MSVC)
find_package(WindowsSDK REQUIRED)
message(STATUS "WINDOWS SDK: ${WINDOWSSDK_LATEST_DIR} ${WINDOWSSDK_LATEST_NAME}")
message(STATUS "WINDOWS SDK: ${WINDOWSSDK_LATEST_DIR} (${WINDOWSSDK_LATEST_NAME})")
message(STATUS "MSVC VERSION: ${MSVC_VERSION}")
endif()

Expand Down Expand Up @@ -605,7 +608,11 @@ if(NOT DEFINED QTDIR)
if(MSVC)
FIRSTSUBDIR(SUBDIRQT "C:/Qt")
if(NOT ${SUBDIRQT} STREQUAL "")
set(QTDIR "${SUBDIRQT}/msvc2019_64")
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64|ARM64|arm64")
set(QTDIR "${SUBDIRQT}/msvc2019_arm64")
else()
set(QTDIR "${SUBDIRQT}/msvc2019_64")
endif()
endif()
elseif ("${PLATFORM}" MATCHES "osx")
foreach(QT_VERSION 6 5)
Expand Down Expand Up @@ -651,6 +658,11 @@ if("${QT_VERSION}" VERSION_LESS "${QT_MIN_VERSION}")
message(FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}")
endif()

# Pseydo target WrapVulkanHeaders::WrapVulkanHeaders for Qt6
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6 AND NOT TARGET WrapVulkanHeaders::WrapVulkanHeaders)
add_library(WrapVulkanHeaders::WrapVulkanHeaders INTERFACE IMPORTED)
endif()

find_package(Qt${QT_VERSION_MAJOR} ${QT_VERSION} COMPONENTS Core Gui Network Sql Widgets REQUIRED)

message(STATUS "Qt version used: ${QT_VERSION}")
Expand Down
31 changes: 31 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,13 @@
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "relwithdebinfo",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "ninja-base",
"hidden": true,
Expand Down Expand Up @@ -166,6 +173,17 @@
"rhs": "Windows"
}
},
{
"name": "windows-relwithdebinfo",
"displayName": "Windows (RelWithDebInfo) (msvc)",
"description": "Build with MSVC's CL as Release with Debug Symbols",
"inherits": [ "base", "relwithdebinfo", "msvc" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows-debug",
"displayName": "Windows (debug) (msvc)",
Expand Down Expand Up @@ -238,6 +256,19 @@
"rhs": "Windows"
}
},
{
"name": "windows-relwithdebinfo",
"displayName": "Windows (RelWithDebInfo) (msvc)",
"description": "Build with MSVC's CL as Release with Debug Symbols",
"configuration": "RelWithDebInfo",
"targets": "all",
"configurePreset": "windows-relwithdebinfo",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows-debug",
"displayName": "Windows (debug) (msvc)",
Expand Down
9 changes: 4 additions & 5 deletions assets/webconfig/js/content_index.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,23 +292,23 @@ async function handlePasswordRequirement(event) {
}

const loginEvent = await waitForEvent("cmd-authorize-login");
handleLogin(loginEvent);
handleLogin(loginEvent, token !== null);
} else {
$("#main-nav, #top-navbar").hide();

if (token) {
requestTokenAuthorization(token);

const loginEvent = await waitForEvent("cmd-authorize-login");
handleLogin(loginEvent);
handleLogin(loginEvent, true);
} else {
loadContentTo("#page-content", "login");
}
}
}

function handleLogin(event) {
if (window.defaultPasswordIsSet && getStorage("suppressDefaultPwWarning") !== "true") {
function handleLogin(event, isLoggedIn = false) {
if (isLoggedIn && window.defaultPasswordIsSet && getStorage("suppressDefaultPwWarning") !== "true") {
const msg = `
<div class="text-right">
${$.i18n('dashboard_message_do_not_show_again')}
Expand Down Expand Up @@ -336,7 +336,6 @@ function handleLogin(event) {
async function handleSchema(event) {
window.serverSchema = event.response.info;
window.schema = window.serverSchema.properties;

}

function getStoredInstance() {
Expand Down
23 changes: 0 additions & 23 deletions cmake/FindDebBuilder.cmake

This file was deleted.

23 changes: 0 additions & 23 deletions cmake/FindRpmBuilder.cmake

This file was deleted.

Loading