From d8ea41ef95df8f90bee13b243ec873755be6545a Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 19 Jul 2026 13:58:17 -0500 Subject: [PATCH] supercell-wx: 0.5.3 -> 0.6.1 https://github.com/dpaulat/supercell-wx/releases#release-v0.6.1-release --- pkgs/by-name/su/supercell-wx/package.nix | 39 ++++++--- .../patches/boost-1.89-compat.patch | 12 +++ .../patches/explicit-link-aws-crt.patch | 6 +- .../patches/fix-cmake-install.patch | 14 ++-- .../patches/fix-find-opengl.patch | 27 ------ .../su/supercell-wx/patches/fix-qt-6.10.patch | 13 --- .../su/supercell-wx/patches/libtiff-cxx.patch | 22 +++++ .../patches/skip-git-versioning.patch | 83 +++++++++++++++---- .../patches/use-find-package.patch | 25 +++--- 9 files changed, 150 insertions(+), 91 deletions(-) create mode 100644 pkgs/by-name/su/supercell-wx/patches/boost-1.89-compat.patch delete mode 100644 pkgs/by-name/su/supercell-wx/patches/fix-find-opengl.patch delete mode 100644 pkgs/by-name/su/supercell-wx/patches/fix-qt-6.10.patch create mode 100644 pkgs/by-name/su/supercell-wx/patches/libtiff-cxx.patch diff --git a/pkgs/by-name/su/supercell-wx/package.nix b/pkgs/by-name/su/supercell-wx/package.nix index 3425406e42e6..8c530536e06e 100644 --- a/pkgs/by-name/su/supercell-wx/package.nix +++ b/pkgs/by-name/su/supercell-wx/package.nix @@ -1,7 +1,6 @@ { lib, stdenv, - gcc14Stdenv, fetchFromGitHub, replaceVars, tracy, @@ -17,13 +16,16 @@ bzip2, geos, geographiclib, - glew, glm, gtest, howard-hinnant-date, libsm, libcpr, + libGLU, + libjpeg, libpng, + libtiff, + libzip, onetbb, openssl, python3, @@ -34,7 +36,11 @@ zlib, }: let - buildStdenv = if stdenv.cc.isGNU then gcc14Stdenv else stdenv; + libtiffWithCxx = libtiff.overrideAttrs (old: { + cmakeFlags = (old.cmakeFlags or [ ]) ++ [ + "-Dcxx=ON" + ]; + }); gtestSkip = [ # Skip tests requiring network access @@ -57,16 +63,16 @@ let "MarkerModelTest.*" ]; in -buildStdenv.mkDerivation (finalAttrs: { +stdenv.mkDerivation (finalAttrs: { pname = "supercell-wx"; - version = "0.5.3"; + version = "0.6.1"; src = fetchFromGitHub { owner = "dpaulat"; repo = "supercell-wx"; tag = "v${finalAttrs.version}-release"; fetchSubmodules = true; - hash = "sha256-1n1WXBLco2TpyhS8KA1tk6HzRIXLqS6YV3aYagoQiTM="; + hash = "sha256-wvtLu5K0bz0X7WzUCUH4/vAYtJsHJ2UOv5Q06uMMlyw="; }; patches = [ @@ -78,13 +84,14 @@ buildStdenv.mkDerivation (finalAttrs: { }) # Prevents using some Qt scripts that seemed to break the install step. Fixes missing link to some targets. ./patches/fix-cmake-install.patch + # libtiff with C++ support is required + ./patches/libtiff-cxx.patch # }}} # These may be or already are submitted upstream {{{ ./patches/explicit-link-aws-crt.patch # fix missing symbols from aws-crt-cpp - ./patches/fix-qt-6.10.patch - ./patches/fix-find-opengl.patch # }}} + ./patches/boost-1.89-compat.patch ]; # This also may be submitted upstream to maplibre-native-qt, which is currently vendored @@ -96,6 +103,7 @@ buildStdenv.mkDerivation (finalAttrs: { env = { CXXFLAGS = lib.concatStringsSep " " [ "-Wno-error=deprecated-declarations" + "-Wno-error=free-nonheap-object" "-Wno-error=maybe-uninitialized" "-Wno-error=restrict" "-Wno-error=stringop-overflow" @@ -105,6 +113,9 @@ buildStdenv.mkDerivation (finalAttrs: { }; cmakeFlags = [ + # v0.6.1 Release Date + (lib.cmakeFeature "SCWX_RELEASE_DATE" "2026-07-18") + # CMake Error at external/aws-sdk-cpp/crt/aws-crt-cpp/cmake/EnforceSubmoduleVersions.cmake:18 (message): # ENFORCE_SUBMODULE_VERSIONS is ON but Git was not found. (lib.cmakeBool "ENFORCE_SUBMODULE_VERSIONS" false) @@ -127,13 +138,16 @@ buildStdenv.mkDerivation (finalAttrs: { bzip2 geos geographiclib - glew glm gtest howard-hinnant-date libsm libcpr + libGLU + libjpeg libpng + libtiffWithCxx + libzip onetbb openssl (python3.withPackages (ps: [ @@ -167,7 +181,7 @@ buildStdenv.mkDerivation (finalAttrs: { ''; meta = { - homepage = "https://supercell-wx.rtfd.io"; + homepage = "https://supercellwx.net/"; downloadPage = "https://github.com/dpaulat/supercell-wx/releases"; description = "Live visualization of NEXRAD weather data and alerts"; changelog = "https://github.com/dpaulat/supercell-wx/releases/tag/${finalAttrs.src.tag}"; @@ -184,6 +198,9 @@ buildStdenv.mkDerivation (finalAttrs: { "x86_64-linux" "aarch64-linux" ]; - maintainers = with lib.maintainers; [ aware70 ]; + maintainers = with lib.maintainers; [ + aware70 + dpaulat + ]; }; }) diff --git a/pkgs/by-name/su/supercell-wx/patches/boost-1.89-compat.patch b/pkgs/by-name/su/supercell-wx/patches/boost-1.89-compat.patch new file mode 100644 index 000000000000..69f094d249ff --- /dev/null +++ b/pkgs/by-name/su/supercell-wx/patches/boost-1.89-compat.patch @@ -0,0 +1,12 @@ +diff --git a/wxdata/source/scwx/provider/nws_level3_behavior.cpp b/wxdata/source/scwx/provider/nws_level3_behavior.cpp +index 378c98d4..f95b6d80 100644 +--- a/wxdata/source/scwx/provider/nws_level3_behavior.cpp ++++ b/wxdata/source/scwx/provider/nws_level3_behavior.cpp +@@ -12,6 +12,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/pkgs/by-name/su/supercell-wx/patches/explicit-link-aws-crt.patch b/pkgs/by-name/su/supercell-wx/patches/explicit-link-aws-crt.patch index 3fca9577a889..2962d61db577 100644 --- a/pkgs/by-name/su/supercell-wx/patches/explicit-link-aws-crt.patch +++ b/pkgs/by-name/su/supercell-wx/patches/explicit-link-aws-crt.patch @@ -1,12 +1,12 @@ diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake -index 36911947..451efc13 100644 +index 0624971d..1df079de 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake -@@ -320,6 +320,7 @@ endif() +@@ -363,6 +363,7 @@ endif() target_link_libraries(wxdata PUBLIC aws-cpp-sdk-core aws-cpp-sdk-s3 + aws-crt-cpp cpr::cpr LibXml2::LibXml2 - OpenSSL::Crypto + libzip::zip diff --git a/pkgs/by-name/su/supercell-wx/patches/fix-cmake-install.patch b/pkgs/by-name/su/supercell-wx/patches/fix-cmake-install.patch index 4db8401e3e94..2b6c288e6a85 100644 --- a/pkgs/by-name/su/supercell-wx/patches/fix-cmake-install.patch +++ b/pkgs/by-name/su/supercell-wx/patches/fix-cmake-install.patch @@ -1,18 +1,18 @@ diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake -index 648b6578..4833b9c2 100644 +index ed40e428..8743b2ab 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake -@@ -776,6 +776,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets +@@ -859,6 +859,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets Boost::timer Boost::atomic QMapLibre::Core + QMapLibre::Widgets + OpenGL::GLU $<$:opengl32> $<$:SetupAPI> - Fontconfig::Fontconfig -@@ -793,18 +794,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets - target_link_libraries(supercell-wx PRIVATE scwx-qt - wxdata) +@@ -891,18 +892,7 @@ if (WIN32) + COMMENT "Running windeployqt for supercell-wx...") + endif() -if (LINUX) - # Set DT_RUNPATH for Linux targets @@ -29,7 +29,7 @@ index 648b6578..4833b9c2 100644 RUNTIME COMPONENT supercell-wx BUNDLE -@@ -819,24 +809,6 @@ install(TARGETS supercell-wx +@@ -917,24 +907,6 @@ install(TARGETS supercell-wx COMPONENT supercell-wx OPTIONAL) diff --git a/pkgs/by-name/su/supercell-wx/patches/fix-find-opengl.patch b/pkgs/by-name/su/supercell-wx/patches/fix-find-opengl.patch deleted file mode 100644 index f3aebc9c99e0..000000000000 --- a/pkgs/by-name/su/supercell-wx/patches/fix-find-opengl.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake -index 648b6578..3f1d8070 100644 ---- a/scwx-qt/scwx-qt.cmake -+++ b/scwx-qt/scwx-qt.cmake -@@ -18,7 +18,7 @@ find_package(Fontconfig) - find_package(geographiclib) - find_package(geos) - find_package(glm) --find_package(OpenGL) -+find_package(OpenGL REQUIRED) - find_package(Python COMPONENTS Interpreter) - find_package(SQLite3) - -@@ -759,12 +759,7 @@ if (LINUX) - target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::WaylandClient) - endif() - --if (LINUX) -- find_package(mesa-glu REQUIRED) -- target_link_libraries(scwx-qt PUBLIC mesa-glu::mesa-glu) --else() -- target_link_libraries(scwx-qt PUBLIC OpenGL::GLU) --endif() -+target_link_libraries(scwx-qt PUBLIC OpenGL::GLU) - - target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets - Qt${QT_VERSION_MAJOR}::OpenGLWidgets diff --git a/pkgs/by-name/su/supercell-wx/patches/fix-qt-6.10.patch b/pkgs/by-name/su/supercell-wx/patches/fix-qt-6.10.patch deleted file mode 100644 index d58710225f2d..000000000000 --- a/pkgs/by-name/su/supercell-wx/patches/fix-qt-6.10.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/external/qt6ct.cmake b/external/qt6ct.cmake -index 665b5368..9e6ed0e9 100644 ---- a/external/qt6ct.cmake -+++ b/external/qt6ct.cmake -@@ -5,7 +5,7 @@ find_package(QT NAMES Qt6 - COMPONENTS Gui Widgets - REQUIRED) - find_package(Qt${QT_VERSION_MAJOR} -- COMPONENTS Gui Widgets -+ COMPONENTS Gui Widgets WidgetsPrivate - REQUIRED) - - #extract version from qt6ct.h diff --git a/pkgs/by-name/su/supercell-wx/patches/libtiff-cxx.patch b/pkgs/by-name/su/supercell-wx/patches/libtiff-cxx.patch new file mode 100644 index 000000000000..381f8dd5024b --- /dev/null +++ b/pkgs/by-name/su/supercell-wx/patches/libtiff-cxx.patch @@ -0,0 +1,22 @@ +diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake +index 8743b2ab..afa7c407 100644 +--- a/scwx-qt/scwx-qt.cmake ++++ b/scwx-qt/scwx-qt.cmake +@@ -23,7 +23,7 @@ find_package(OpenGL REQUIRED) + find_package(PNG) + find_package(Python COMPONENTS Interpreter) + find_package(SQLite3) +-find_package(TIFF) ++find_package(Tiff CONFIG REQUIRED) + + find_package(QT NAMES Qt6 + COMPONENTS Gui +@@ -875,7 +875,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets + qt6ct-widgets + SQLite::SQLite3 + PNG::PNG +- TIFF::TIFF ++ TIFF::tiffxx + wxdata) + + target_link_libraries(scwx-qt INTERFACE Boost::program_options) diff --git a/pkgs/by-name/su/supercell-wx/patches/skip-git-versioning.patch b/pkgs/by-name/su/supercell-wx/patches/skip-git-versioning.patch index 842d4118256a..8747ed2713bd 100644 --- a/pkgs/by-name/su/supercell-wx/patches/skip-git-versioning.patch +++ b/pkgs/by-name/su/supercell-wx/patches/skip-git-versioning.patch @@ -1,5 +1,38 @@ +diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake +index ed40e428..5d5676ad 100644 +--- a/scwx-qt/scwx-qt.cmake ++++ b/scwx-qt/scwx-qt.cmake +@@ -642,6 +642,12 @@ else() + set(SCWX_BUILD_NUM 0) + endif() + ++if (NOT SCWX_RELEASE_DATE) ++ message(FATAL_ERROR ++ "SCWX_RELEASE_DATE must be set to YYYY-MM-DD " ++ "(e.g. -DSCWX_RELEASE_DATE=2026-07-18)") ++endif() ++ + if (WIN32) + add_custom_command(OUTPUT ${VERSIONS_HEADER} + ${RESOURCE_OUTPUT} +@@ -655,6 +661,7 @@ if (WIN32) + -i ${VERSIONS_INPUT} + -o ${VERSIONS_HEADER} + -b ${SCWX_BUILD_NUM} ++ --release-date ${SCWX_RELEASE_DATE} + --input-resource ${RESOURCE_INPUT} + --output-resource ${RESOURCE_OUTPUT} + --input-metainfo ${METAINFO_INPUT} +@@ -671,6 +678,7 @@ else() + -i ${VERSIONS_INPUT} + -o ${VERSIONS_HEADER} + -b ${SCWX_BUILD_NUM} ++ --release-date ${SCWX_RELEASE_DATE} + --input-metainfo ${METAINFO_INPUT} + --output-metainfo ${METAINFO_OUTPUT}) + endif() diff --git a/scwx-qt/tools/generate_versions.py b/scwx-qt/tools/generate_versions.py -index c6c94020..000f6e6e 100644 +index 61b7cc1f..32ec482e 100644 --- a/scwx-qt/tools/generate_versions.py +++ b/scwx-qt/tools/generate_versions.py @@ -1,6 +1,5 @@ @@ -9,26 +42,42 @@ index c6c94020..000f6e6e 100644 import json import os import pathlib -@@ -110,27 +109,23 @@ def ParseArguments(): +@@ -64,6 +63,13 @@ kKeys_ = [Keys.BuildNumber, + Keys.VersionCommas, + Keys.VersionString] + ++def ParseReleaseDate(value: str) -> str: ++ try: ++ return datetime.date.fromisoformat(value).strftime("%Y-%m-%d") ++ except ValueError as ex: ++ raise argparse.ArgumentTypeError( ++ f"invalid release date '{value}'; expected YYYY-MM-DD") from ex ++ + def ParseArguments(): + parser = argparse.ArgumentParser(description='Generate versions') + parser.add_argument("-c", "--cache", +@@ -126,6 +132,12 @@ def ParseArguments(): + dest = "version_", + type = str, required = True) ++ parser.add_argument("--release-date", ++ metavar = "YYYY-MM-DD", ++ help = "release date (YYYY-MM-DD)", ++ dest = "releaseDate_", ++ type = ParseReleaseDate, ++ required = True) return parser.parse_args() -+def GetYearFromLicense(license_file: pathlib.Path): -+ import re -+ for line in license_file.read_text().splitlines(): -+ m = re.search(r'^\s*Copyright \(c\) 2021-(\d{4,})', line) -+ if m is not None: -+ return int(m.group(1)) -+ raise RuntimeError(f"Could not find copyright year in {license_file}") -+ def CollectVersionInfo(args): - print("Collecting version info") +@@ -133,24 +145,12 @@ def CollectVersionInfo(args): versionInfo = VersionInfo() - repo = git.Repo(args.gitRepo_, search_parent_directories = True) - - commitString = str(repo.head.commit)[:10] +- releaseDate = datetime.datetime.fromtimestamp( +- repo.head.commit.committed_date, tz=datetime.timezone.utc).strftime("%Y-%m-%d") - - if not repo.is_dirty(submodules = False): - copyrightYear = datetime.datetime.fromtimestamp(repo.head.commit.committed_date).year @@ -36,15 +85,15 @@ index c6c94020..000f6e6e 100644 - commitString = commitString + "+dirty" - copyrightYear = datetime.date.today().year - -- resourceDir = str(args.gitRepo_).replace("\\", "\\\\") -- + resourceDir = str(args.gitRepo_).replace("\\", "\\\\") + versionInfo.buildNumber_ = args.buildNumber_ - versionInfo.commitString_ = commitString - versionInfo.copyrightYear_ = copyrightYear -- versionInfo.resourceDir_ = resourceDir +- versionInfo.releaseDate_ = releaseDate + versionInfo.commitString_ = "@rev@" -+ versionInfo.copyrightYear_ = GetYearFromLicense(args.gitRepo_ / "LICENSE.txt") -+ versionInfo.resourceDir_ = str(args.gitRepo_).replace("\\", "\\\\") ++ versionInfo.copyrightYear_ = datetime.date.fromisoformat(args.releaseDate_).year ++ versionInfo.releaseDate_ = args.releaseDate_ + versionInfo.resourceDir_ = resourceDir versionInfo.versionString_ = args.version_ - versionInfo.Calculate() diff --git a/pkgs/by-name/su/supercell-wx/patches/use-find-package.patch b/pkgs/by-name/su/supercell-wx/patches/use-find-package.patch index 58f1eba3baa9..d6b062cc4118 100644 --- a/pkgs/by-name/su/supercell-wx/patches/use-find-package.patch +++ b/pkgs/by-name/su/supercell-wx/patches/use-find-package.patch @@ -22,37 +22,36 @@ index 570af425..f2e7b2c8 100644 -set(STB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/stb PARENT_SCOPE) +# Nix: set STB_INCLUDE_DIR in cmake flags diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake -index 4833b9c2..641fc637 100644 +index f73d70da..ed40e428 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake -@@ -13,14 +13,15 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) +@@ -13,13 +13,14 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) OPTION(SCWX_DISABLE_CONSOLE "Disables the Windows console in release mode" ON) -find_package(Boost) -+find_package(Boost REQUIRED COMPONENTS json timer atomic) ++find_package(Boost REQUIRED COMPONENTS json timer atomic program_options) find_package(Fontconfig) -find_package(geographiclib) +find_package(GeographicLib) find_package(geos) find_package(glm) - find_package(OpenGL) + find_package(JPEG) + find_package(OpenGL REQUIRED) ++find_package(PNG) find_package(Python COMPONENTS Interpreter) find_package(SQLite3) -+find_package(PNG) - - find_package(QT NAMES Qt6 - COMPONENTS Gui -@@ -789,6 +790,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets + find_package(TIFF) +@@ -872,6 +873,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets qt6ct-common qt6ct-widgets SQLite::SQLite3 + PNG::PNG + TIFF::TIFF wxdata) - target_link_libraries(supercell-wx PRIVATE scwx-qt diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake -index 451efc13..86cbb42b 100644 +index 07fe8464..0624971d 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -4,7 +4,8 @@ project(scwx-data) @@ -60,8 +59,8 @@ index 451efc13..86cbb42b 100644 include(CheckCXXSymbolExists) -find_package(Boost) -+find_package(Boost REQUIRED COMPONENTS iostreams) ++find_package(Boost REQUIRED COMPONENTS iostreams url) +find_package(BZip2) find_package(cpr) find_package(LibXml2) - find_package(OpenSSL) + find_package(libzip)