Skip to content
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

[Meta] - Windows XP builds might start to fail permanently #296

Closed
OPNA2608 opened this issue Dec 10, 2020 · 4 comments
Closed

[Meta] - Windows XP builds might start to fail permanently #296

OPNA2608 opened this issue Dec 10, 2020 · 4 comments
Labels
bug Something isn't working

Comments

@OPNA2608
Copy link
Member

Qt5.5 downloads (last version with XP support) are dead

Qt have removed all of their prebuilt versions of Qt5 < version 5.9. This includes Qt5.5, the latest possible version for XP-targeting builds. /.github/workflows/windows-xp.yml still works due to caching, but once that cache gets invalidated (which i believe can happen via repository inactivity too?), it's probably dead for good.

I've opened this meta-ish issue so we can potentially discuss what to do about this, if / once that cache eventually does die. I see afew potential options:

  1. Use AppVeyor for all XP tests & automatic releases
    This would need some additional changes to have a fourth, proper, XP-targeting CONFIG+=release build on AppVeyor, only triggered by a tagged commit & uploading its release archive to the release entry that the GitHub Actions builds will have created.

  2. Trusted user / developer building XP releases (regular tests is most likely too much to demand) on a privately-owned system & append to releases page
    Not sure how I'd feel about this, but a potential option nonetheless.

  3. Only AppVeyor testing
    Requires the least effort on our side: Only distribute the unoptimised debug builds.

  4. Build our own Qt5.5
    Absolutely madness, unlikely to happen.

  5. Abandon XP tests & releases
    The worst option out of them all. My CI fetching scripts have been a crutch since forever, AppVeyor is the only comfortable way for testing this build scenario that's left.

@OPNA2608 OPNA2608 added the bug Something isn't working label Dec 10, 2020
@rerrahkr
Copy link
Member

  1. Use AppVeyor for all XP tests & automatic releases

It's desireble I think, but after a quick look at the appveyor reference, I couldn't find out how to condition deployment, so I don't mind fetching the release artifact manually.

I made a draft of settings where the release job will work only when a tag is published.

diff --git a/.appveyor.yml b/.appveyor.yml
index 55d8243..72743e5 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -11,9 +11,6 @@ branches:
   only:
     - master
 
-# Do not build on tags
-skip_tags: true
-
 # Skipping commits with particular message or from specific user
 skip_commits:
     message: /Created.*\.(png|jpg|jpeg|bmp|gif|md)/       # Regex for matching commit message
@@ -41,7 +38,8 @@ environment:
       PLATFORM: windows
       DEST: BambooTracker-v%APPVEYOR_BUILD_VERSION%-dev-windows.zip
       MAKE: mingw32-make
-    # Windows XP
+      RELEASE_BUILD: false
+    # Windows XP (Debug)
     - APPVEYOR_JOB_NAME: for Windows XP
       APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
       COMPILER: C:\Qt\Tools\mingw492_32\bin
@@ -49,11 +47,36 @@ environment:
       PLATFORM: windows-xp
       DEST: BambooTracker-v%APPVEYOR_BUILD_VERSION%-dev-windows-xp.zip
       MAKE: mingw32-make
+      RELEASE_BUILD: false
+    # Windows XP (Release)
+    - APPVEYOR_JOB_NAME: for Windows XP (Release)
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
+      COMPILER: C:\Qt\Tools\mingw492_32\bin
+      QT: C:\Qt\5.5\mingw492_32\bin
+      PLATFORM: windows-xp
+      DEST: BambooTracker-v%APPVEYOR_BUILD_VERSION%-windows-xp.zip
+      MAKE: mingw32-make
+      RELEASE_BUILD: true
     - APPVEYOR_JOB_NAME: for macOS
       APPVEYOR_BUILD_WORKER_IMAGE: macOS-Mojave
       PLATFORM: macos
       DEST: BambooTracker-v$APPVEYOR_BUILD_VERSION-dev-macos.zip
       MAKE: make
+      RELEASE_BUILD: false
+
+for:
+-
+  # Debug
+  matrix:
+    only:
+      - RELEASE_BUILD: false
+  skip_tags: true
+-
+  # Release
+  matrix:
+    only:
+      - RELEASE_BUILD: true
+  skip_non_tags: true
 
 # scripts that run after cloning repository
 install:
@@ -80,7 +103,8 @@ before_build:
 # to run your custom scripts instead of automatic MSBuild
 build_script:
   - ps: |
-      qmake.exe BambooTracker.pro PREFIX=..\target CONFIG+=debug CONFIG+=console CONFIG+=nostrip
+      $QMAKE_CONFIGS = if ($env:RELEASE_BUILD) { "CONFIG+=release CONFIG-=debug" } else { "CONFIG+=debug CONFIG+=console CONFIG+=nostrip" }
+      Invoke-Expression ("qmake.exe BambooTracker.pro PREFIX=..\target " + $QMAKE_CONFIGS)
       Invoke-Expression ($env:MAKE + " -j2")
   - sh: |
       qmake BambooTracker.pro PREFIX=../target CONFIG+=debug CONFIG+=console CONFIG+=nostrip LIBS+=-L"$JACKLIB" INCLUDEPATH+="$JACKINC" CONFIG+=install_flat
@@ -107,8 +131,9 @@ after_build:
   - sh: bash ../scripts/package_osx.sh
   - cd ..
   - ps: |
-      mv target BambooTracker-v"$env:APPVEYOR_BUILD_VERSION"-dev-"$env:PLATFORM"
-      7z a -tzip "$env:DEST" BambooTracker-v"$env:APPVEYOR_BUILD_VERSION"-dev-"$env:PLATFORM"
+      $DEV_LAB = if ($env:RELEASE_BUILD) { "-" } else { "-dev-" }
+      mv target BambooTracker-v"$env:APPVEYOR_BUILD_VERSION$DEV_LAB$env:PLATFORM"
+      7z a -tzip "$env:DEST" BambooTracker-v"$env:APPVEYOR_BUILD_VERSION$DEV_LAB$env:PLATFORM"
   - sh: |
       mv target BambooTracker-v"$APPVEYOR_BUILD_VERSION"-dev-"$PLATFORM"
       7z a -tzip "$DEST" BambooTracker-v"$APPVEYOR_BUILD_VERSION"-dev-"$PLATFORM"

I'm not sure if this works, as appveyor can't be tested in this repository.

@OPNA2608
Copy link
Member Author

I'll try to test your diff on my fork later today.

@OPNA2608
Copy link
Member Author

branches:
   only:
     - master

also needs the tag name

    - /v\d*\.\d*\.\d*/

see Branches and Tags:

Despite the option name, only and except is applied to tag names too, so the above example using only would cause tags not trigger the build.


And instances of

if ($env:RELEASE_BUILD)

need to check for a string matching "true" instead

if ($env:RELEASE_BUILD -ieq "true")

AppVeyor seems to set that variable to "true"/"false", not $true/$false, which always evaluates to $true in those checks and applies release settings to all builds:

In PowerShell, Strings can be evaluated as Booleans. If a string is ZERO length – it is false, otherwise it is TRUE. “FALSE” has 5 characters so it is TRUE.

@rerrahkr
Copy link
Member

Until 1e67a3e, a new XP job is added to appveyor and remove old GH Actions workflow. Thanks for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants