Skip to content

Commit

Permalink
Windows: Use Qt 6 build
Browse files Browse the repository at this point in the history
  • Loading branch information
hluk committed Mar 3, 2024
1 parent 1667e0c commit 66777c8
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 73 deletions.
16 changes: 11 additions & 5 deletions appveyor.yml
Expand Up @@ -14,22 +14,28 @@ skip_branch_with_pr: true
environment:
APPVEYOR_SAVE_CACHE_ON_ERROR: true

KF5_VERSION: 5.109
KF5_PATCH: 0
KF_VERSION: 6.0
KF_BRANCH: stable
KF_PATCH: 0
SNORETOAST_VERSION: 0.9.0

matrix:
- QTDIR: /c/Qt/5.15/msvc2019_64
- QTDIR: /c/Qt/6.5/msvc2019_64
CMAKE_GENERATOR: Visual Studio 16 2019
CMAKE_GENERATOR_ARCH: x64
BUILD_SUB_DIR: Release
# https://wiki.qt.io/Qt_5.15_Tools_and_Versions
# https://wiki.qt.io/Qt_6.5_Tools_and_Versions
# https://www.appveyor.com/docs/windows-images-software/#tools
OPENSSL_PATH: /c/OpenSSL-v111-Win64/bin
LIBSSL: libssl-1_1-x64.dll
LIBCRYPTO: libcrypto-1_1-x64.dll
WITH_NATIVE_NOTIFICATIONS: "ON"
GPGPATH: /c/Program Files/Git/usr/bin
WITH_NATIVE_NOTIFICATIONS: "ON"
WITH_QT6: "ON"
WINDEPLOYQT_ARGS: >-
--no-system-d3d-compiler
--no-opengl-sw
--no-quick
# Parameters for default build commands (build_script is used instead).
build:
Expand Down
2 changes: 1 addition & 1 deletion shared/copyq.iss
Expand Up @@ -156,7 +156,7 @@ Source: "{#Root}\plugins\*itemtags.dll"; DestDir: "{app}\plugins"; Components: p
Source: "{#Root}\plugins\*itempinned.dll"; DestDir: "{app}\plugins"; Components: plugins/pinned; Flags: ignoreversion

; Qt and toolchain
Source: "{#Root}\bearer\*.dll"; DestDir: "{app}\bearer"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#Root}\bearer\*.dll"; DestDir: "{app}\bearer"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist
Source: "{#Root}\imageformats\*.dll"; DestDir: "{app}\imageformats"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#Root}\platforms\*.dll"; DestDir: "{app}\platforms"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#Root}\styles\*.dll"; DestDir: "{app}\styles"; Components: program; Flags: ignoreversion recursesubdirs createallsubdirs
Expand Down
19 changes: 8 additions & 11 deletions utils/appveyor/after_build.sh
Expand Up @@ -14,14 +14,14 @@ mkdir -p "$Destination"
cmake --install "$BUILD_PATH" --config Release --prefix "$Destination" --verbose

if [[ $WITH_NATIVE_NOTIFICATIONS == ON ]]; then
cp -v "$INSTALL_PREFIX/bin/KF5"*.dll "$Destination"
cp -v "$INSTALL_PREFIX/bin/KF6"*.dll "$Destination"
cp -v "$INSTALL_PREFIX/bin/snoretoast.exe" "$Destination"
kf5_libraries=(
"$Destination/KF5ConfigCore.dll"
"$Destination/KF5Notifications.dll"
kf_libraries=(
"$Destination/KF6ConfigCore.dll"
"$Destination/KF6Notifications.dll"
)
else
kf5_libraries=()
kf_libraries=()
fi

cp -v "$Source/AUTHORS" "$Destination"
Expand All @@ -42,19 +42,16 @@ cp -v "$OPENSSL_PATH/$LIBSSL" "$Destination"

"$QTDIR/bin/windeployqt" --help
"$QTDIR/bin/windeployqt" \
--no-system-d3d-compiler \
--no-angle \
--no-opengl-sw \
--no-quick \
"${kf5_libraries[@]}" \
$WINDEPLOYQT_ARGS \
"${kf_libraries[@]}" \
"$Executable"

# Create and upload portable zip file.
7z a "$APP.zip" -r "$Destination"
appveyor PushArtifact "$APP.zip" -DeploymentName "CopyQ Portable"

# This works with minGW, not msvc.
# objdump -x "$Destination/KF5Notifications.dll" | grep -F "DLL Name"
# objdump -x "$Destination/KF6Notifications.dll" | grep -F "DLL Name"
# objdump -x "$Destination/copyq.exe" | grep -F "DLL Name"

# Note: Following removes system-installed dlls to verify required libs are included.
Expand Down
5 changes: 3 additions & 2 deletions utils/appveyor/before_build.sh
Expand Up @@ -13,16 +13,16 @@ curl --location --silent --show-error --fail-with-body \
grep -q LanguageName "$languages/Korean.isl"

if [[ $WITH_NATIVE_NOTIFICATIONS == ON ]]; then
build=$APPVEYOR_BUILD_FOLDER/utils/appveyor/kf5_build.sh
build=$APPVEYOR_BUILD_FOLDER/utils/appveyor/kf_build.sh

export PATH=$PATH:$INSTALL_PREFIX/bin

"$build" snoretoast "v$SNORETOAST_VERSION" "$SNORETOAST_BASE_URL"
"$build" extra-cmake-modules
"$build" kconfig "" "" "-DKCONFIG_USE_DBUS=OFF" "-DKCONFIG_USE_GUI=OFF"
"$build" kwindowsystem
"$build" kcoreaddons
"$build" knotifications
"$build" kstatusnotifieritem

# Create and upload dependencies zip file.
7z a "$APP-dependencies.zip" -r "$INSTALL_PREFIX"
Expand All @@ -40,4 +40,5 @@ cmake -B"$BUILD_PATH" -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \
-DCMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION=. \
-DWITH_NATIVE_NOTIFICATIONS="$WITH_NATIVE_NOTIFICATIONS" \
-DWITH_QT6="$WITH_QT6" \
-DWITH_TESTS=ON
6 changes: 3 additions & 3 deletions utils/appveyor/env.sh
Expand Up @@ -11,8 +11,8 @@ export BUILD_PATH=$APPVEYOR_BUILD_FOLDER/build
export CMAKE_PREFIX_PATH="$QTDIR/lib/cmake"

if [[ $WITH_NATIVE_NOTIFICATIONS == ON ]]; then
export KF5_FULLVER=$KF5_VERSION.$KF5_PATCH
export INSTALL_PREFIX=$APPVEYOR_BUILD_FOLDER/usr/kf-$KF5_FULLVER-$CMAKE_GENERATOR_ARCH
export KF_FULLVER=$KF_VERSION.$KF_PATCH
export INSTALL_PREFIX=$APPVEYOR_BUILD_FOLDER/usr/kf-$KF_FULLVER-$CMAKE_GENERATOR_ARCH
export DEPENDENCY_PATH=$APPVEYOR_BUILD_FOLDER/dependencies
export DOWNLOADS_PATH=$APPVEYOR_BUILD_FOLDER/downloads
export DEPENDENCY_BUILD_PATH=$DEPENDENCY_PATH/build
Expand All @@ -21,7 +21,7 @@ if [[ $WITH_NATIVE_NOTIFICATIONS == ON ]]; then
export CMAKE_PREFIX_PATH="$CMAKE_PREFIX:$INSTALL_PREFIX/share/ECM/cmake":$CMAKE_PREFIX_PATH

export SNORETOAST_BASE_URL=https://invent.kde.org/libraries/snoretoast/-/archive/v$SNORETOAST_VERSION
export KF5_BASE_URL=https://download.kde.org/stable/frameworks/$KF5_VERSION
export KF_BASE_URL=https://download.kde.org/$KF_BRANCH/frameworks/$KF_VERSION

mkdir -p "$INSTALL_PREFIX"
mkdir -p "$DEPENDENCY_PATH"
Expand Down
41 changes: 26 additions & 15 deletions utils/appveyor/kf5_build.sh → utils/appveyor/kf_build.sh
Expand Up @@ -2,8 +2,8 @@
set -exo pipefail

name=$1
version=${2:-$KF5_FULLVER}
base_url=${3:-$KF5_BASE_URL}
version=${2:-$KF_FULLVER}
base_url=${3:-$KF_BASE_URL}

if [[ $# -gt 3 ]]; then
shift 3
Expand All @@ -12,8 +12,7 @@ else
extra_cmake_args=()
fi

pkg=$DOWNLOADS_PATH/$name-$version.zip
url=$base_url/$name-$version.zip
url=$base_url/$name-$version
patch_dir=$APPVEYOR_BUILD_FOLDER/utils/appveyor/patches/$name
state_old=$INSTALL_PREFIX/$name-state
state_new=$DEPENDENCY_PATH/$name-state-new
Expand All @@ -29,6 +28,22 @@ function get_new_state() {
echo | md5sum "$patch_dir"/*.patch
}

function get_source() {
suffix=$1
pkg=$DOWNLOADS_PATH/$name-$version.$suffix

for retry in $(seq 5); do
curl -sSL -o "$pkg" "$url.$suffix"
if cmake -E tar xf "$pkg"; then
return 0
fi
if [[ $retry -gt 0 ]]; then
sleep $((retry * 15))
fi
done
return 1
}

# Omit rebuilding if already cached.
get_new_state > "$state_new"
if diff "$state_old" "$state_new"; then
Expand All @@ -37,17 +52,13 @@ fi

(
cd "$DEPENDENCY_PATH"
# Retry downloading package.
for retry in $(seq 5); do
if cmake -E tar xf "$pkg" --format=zip; then
break
fi
rm -f "$pkg"
if [[ $retry -gt 0 ]]; then
sleep $((retry * 15))
fi
curl -L -o "$pkg" "$url"
done

if [[ "$base_url" == "$KF_BASE_URL" ]]; then
get_source tar.xz
else
get_source zip
fi

cd "$name-$version"

for patch in "$patch_dir"/*.patch; do
Expand Down
26 changes: 0 additions & 26 deletions utils/appveyor/patches/kconfig/0001-Fix-build.patch

This file was deleted.

@@ -1,4 +1,4 @@
From a91e08f149b64793fa3c0c0e09c61891f0814535 Mon Sep 17 00:00:00 2001
From dfb10fdbdc3ae82037366ed4cf039796beca7d6d Mon Sep 17 00:00:00 2001
From: Lukas Holecek <hluk@email.cz>
Date: Sun, 15 Nov 2020 19:06:53 +0100
Subject: [PATCH] Support updating Snore notifications
Expand All @@ -8,7 +8,7 @@ Subject: [PATCH] Support updating Snore notifications
1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/notifybysnore.cpp b/src/notifybysnore.cpp
index b89056b..6607b80 100644
index a82d0a4..4bf1c53 100644
--- a/src/notifybysnore.cpp
+++ b/src/notifybysnore.cpp
@@ -61,7 +61,7 @@ NotifyBySnore::NotifyBySnore(QObject *parent)
Expand All @@ -20,7 +20,7 @@ index b89056b..6607b80 100644
const QByteArray rawNotificationResponse = responseSocket->readAll();
responseSocket->deleteLater();

@@ -177,9 +177,20 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)
@@ -175,9 +175,20 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)

// handle the icon for toast notification
const QString iconPath = m_iconDir.path() + QLatin1Char('/') + QString::number(notification->id());
Expand All @@ -41,7 +41,7 @@ index b89056b..6607b80 100644
snoretoastArgsList << QStringLiteral("-p") << iconPath;
}

@@ -200,19 +211,20 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)
@@ -207,19 +218,20 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)
const auto data = snoretoastProcess->readAllStandardOutput();
qCDebug(LOG_KNOTIFICATIONS) << "SnoreToast process stdout:" << snoretoastArgsList << data;
});
Expand All @@ -66,7 +66,7 @@ index b89056b..6607b80 100644
});

qCDebug(LOG_KNOTIFICATIONS) << "SnoreToast process starting:" << snoretoastArgsList;
@@ -221,6 +233,9 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)
@@ -228,6 +240,9 @@ void NotifyBySnore::notifyDeferred(KNotification *notification)

void NotifyBySnore::close(KNotification *notification)
{
Expand All @@ -76,15 +76,17 @@ index b89056b..6607b80 100644
qCDebug(LOG_KNOTIFICATIONS) << "Requested to close notification with ID:" << notification->id();
if (m_notifications.constFind(notification->id()) == m_notifications.constEnd()) {
qCWarning(LOG_KNOTIFICATIONS) << "Couldn't find the notification in m_notifications. Nothing to close.";
@@ -239,7 +254,5 @@ void NotifyBySnore::close(KNotification *notification)
@@ -246,9 +261,7 @@ void NotifyBySnore::close(KNotification *notification)

void NotifyBySnore::update(KNotification *notification, KNotifyConfig *config)
void NotifyBySnore::update(KNotification *notification, const KNotifyConfig &notifyConfig)
{
- Q_UNUSED(notification);
- Q_UNUSED(config);
- Q_UNUSED(notifyConfig);
- qCWarning(LOG_KNOTIFICATIONS) << "updating a notification is not supported yet.";
+ notify(notification, config);
+ notify(notification, notifyConfig);
}

#include "moc_notifybysnore.cpp"
--
2.35.1
2.43.0

0 comments on commit 66777c8

Please sign in to comment.