Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package primesieve for openSUSE:Factory checked in at 2026-01-27 16:15:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/primesieve (Old) and /work/SRC/openSUSE:Factory/.primesieve.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "primesieve" Tue Jan 27 16:15:15 2026 rev:22 rq:1329423 version:12.12 Changes: -------- --- /work/SRC/openSUSE:Factory/primesieve/primesieve.changes 2025-12-16 16:03:59.230406265 +0100 +++ /work/SRC/openSUSE:Factory/.primesieve.new.1928/primesieve.changes 2026-01-27 16:15:24.977796181 +0100 @@ -1,0 +2,10 @@ +Mon Jan 26 09:26:00 UTC 2026 - Kim Walisch <[email protected]> + +- Update to primesieve-12.12 +- CMakeLists.txt: Fix CMAKE_PROJECT_VERSION not defined +- doc/Doxyfile.in: REVERSE workaround for Doxygen/LaTeX broken tables +- Automated building Windows binaries using GitHub Actions CI +- build_clang_x64.ps1: New Clang Windows x64 build script +- build_clang_arm64.ps1: New Clang Windows ARM64 build script + +------------------------------------------------------------------- @@ -4,8 +14,8 @@ -- Update to primesieve-12.11. -- calculator.hpp: Update to version 2.0 with improved error handling. -- test/calculator.cpp: Add much more tests for calculator.hpp. -- PreSieve.cpp: Simplify SIMD runtime dispatching. -- CountPrintPrimes.cpp: Faster printing of primes to stdout. -- CmdOptions.cpp: Prevent multiple different --print options. -- CMakeLists.txt: Set CMAKE_VISIBILITY_INLINES_HIDDEN=ON by default. -- BUILD.md: Update MSVC build instructions. +- Update to primesieve-12.11 +- calculator.hpp: Update to version 2.0 with improved error handling +- test/calculator.cpp: Add much more tests for calculator.hpp +- PreSieve.cpp: Simplify SIMD runtime dispatching +- CountPrintPrimes.cpp: Faster printing of primes to stdout +- CmdOptions.cpp: Prevent multiple different --print options +- CMakeLists.txt: Set CMAKE_VISIBILITY_INLINES_HIDDEN=ON by default +- BUILD.md: Update MSVC build instructions Old: ---- primesieve-12.11.tar.gz New: ---- primesieve-12.12.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ primesieve.spec ++++++ --- /var/tmp/diff_new_pack.Dl1fW2/_old 2026-01-27 16:15:26.069841156 +0100 +++ /var/tmp/diff_new_pack.Dl1fW2/_new 2026-01-27 16:15:26.073841321 +0100 @@ -17,7 +17,7 @@ Name: primesieve -Version: 12.11 +Version: 12.12 Release: 0 Summary: A prime number generator License: BSD-2-Clause ++++++ primesieve-12.11.tar.gz -> primesieve-12.12.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/.github/workflows/build_windows_binaries.yml new/primesieve-12.12/.github/workflows/build_windows_binaries.yml --- old/primesieve-12.11/.github/workflows/build_windows_binaries.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/primesieve-12.12/.github/workflows/build_windows_binaries.yml 2026-01-09 23:18:31.000000000 +0100 @@ -0,0 +1,63 @@ +name: Build Windows binaries + +# Run ONLY when manually triggered from the GitHub Actions UI +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + windows-x64: + name: Windows x64 / Clang + runs-on: windows-2022 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build and Package + shell: powershell + run: | + ./scripts/build_clang_x64.ps1 + + - name: Get Version for Artifact + shell: powershell + run: | + $VersionString = Select-String -Path "include/primesieve.hpp" -Pattern 'PRIMESIEVE_VERSION "(.*)"' + echo "PROJECT_VERSION=$($VersionString.Matches.Groups[1].Value)" >> $env:GITHUB_ENV + + - name: Upload Windows x64 CI artifact + uses: actions/upload-artifact@v4 + with: + name: primesieve-${{ env.PROJECT_VERSION }}-win-x64 + path: build-release/primesieve-${{ env.PROJECT_VERSION }}-win-x64/* + if-no-files-found: error + retention-days: 7 + + windows-arm64: + name: Windows ARM64 / Clang + runs-on: windows-11-arm + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build and Package + shell: powershell + run: | + ./scripts/build_clang_arm64.ps1 + + - name: Get Version for Artifact + shell: powershell + run: | + $VersionString = Select-String -Path "include/primesieve.hpp" -Pattern 'PRIMESIEVE_VERSION "(.*)"' + echo "PROJECT_VERSION=$($VersionString.Matches.Groups[1].Value)" >> $env:GITHUB_ENV + + - name: Upload Windows arm64 CI artifact + uses: actions/upload-artifact@v4 + with: + name: primesieve-${{ env.PROJECT_VERSION }}-win-arm64 + path: build-release/primesieve-${{ env.PROJECT_VERSION }}-win-arm64/* + if-no-files-found: error + retention-days: 7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/CMakeLists.txt new/primesieve-12.12/CMakeLists.txt --- old/primesieve-12.11/CMakeLists.txt 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/CMakeLists.txt 2026-01-09 23:18:31.000000000 +0100 @@ -1,7 +1,8 @@ -cmake_minimum_required(VERSION 3.9...3.30) -project(primesieve CXX) -set(PRIMESIEVE_VERSION "12.11") -set(PRIMESIEVE_SOVERSION "12.11.0") +cmake_minimum_required(VERSION 3.9...4.2) + +project(primesieve + VERSION 12.12 + LANGUAGES CXX) # Build options ###################################################### @@ -144,10 +145,8 @@ add_library(libprimesieve SHARED ${LIB_SRC}) set_target_properties(libprimesieve PROPERTIES OUTPUT_NAME primesieve) target_link_libraries(libprimesieve PRIVATE Threads::Threads ${PRIMESIEVE_LINK_LIBRARIES}) - string(REPLACE "." ";" SOVERSION_LIST ${PRIMESIEVE_SOVERSION}) - list(GET SOVERSION_LIST 0 PRIMESIEVE_SOVERSION_MAJOR) - set_target_properties(libprimesieve PROPERTIES SOVERSION ${PRIMESIEVE_SOVERSION_MAJOR}) - set_target_properties(libprimesieve PROPERTIES VERSION ${PRIMESIEVE_SOVERSION}) + set_target_properties(libprimesieve PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) + set_target_properties(libprimesieve PROPERTIES VERSION ${PROJECT_VERSION}) target_compile_definitions(libprimesieve PRIVATE ${PRIMESIEVE_COMPILE_DEFINITIONS}) if(WIN32_MSVC_COMPATIBLE) @@ -270,7 +269,7 @@ write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/primesieveConfigVersion.cmake" - VERSION ${PRIMESIEVE_VERSION} + VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) configure_package_config_file( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/COPYING new/primesieve-12.12/COPYING --- old/primesieve-12.11/COPYING 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/COPYING 2026-01-09 23:18:31.000000000 +0100 @@ -1,6 +1,6 @@ BSD 2-Clause License -Copyright (c) 2010 - 2025, Kim Walisch. +Copyright (c) 2010 - 2026, Kim Walisch. All rights reserved. Redistribution and use in source and binary forms, with or without diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/ChangeLog new/primesieve-12.12/ChangeLog --- old/primesieve-12.11/ChangeLog 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/ChangeLog 2026-01-09 23:18:31.000000000 +0100 @@ -1,3 +1,12 @@ +Changes in version 12.12, 09/01/2026 +==================================== + +* CMakeLists.txt: Fix CMAKE_PROJECT_VERSION not defined. +* doc/Doxyfile.in: REVERSE workaround for Doxygen/LaTeX broken tables #172. +* Automated building Windows binaries using GitHub Actions CI. +* build_clang_x64.ps1: New Clang Windows x64 build script. +* build_clang_arm64.ps1: New Clang Windows ARM64 build script. + Changes in version 12.11, 12/12/2025 ==================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/doc/CMakeLists.txt new/primesieve-12.12/doc/CMakeLists.txt --- old/primesieve-12.11/doc/CMakeLists.txt 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/doc/CMakeLists.txt 2026-01-09 23:18:31.000000000 +0100 @@ -1,6 +1,6 @@ find_package(Doxygen) -if(DOXYGEN_FOUND) +if(Doxygen_FOUND) find_package(LATEX) find_program(DOT_FONUD dot) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/doc/Doxyfile.in new/primesieve-12.12/doc/Doxyfile.in --- old/primesieve-12.11/doc/Doxyfile.in 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/doc/Doxyfile.in 2026-01-09 23:18:31.000000000 +0100 @@ -32,4 +32,3 @@ GENERATE_LATEX = @HAVE_LATEX@ FULL_PATH_NAMES = NO HAVE_DOT = @HAVE_DOT@ -LATEX_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/override_tables.sty diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/doc/override_tables.sty new/primesieve-12.12/doc/override_tables.sty --- old/primesieve-12.11/doc/override_tables.sty 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/doc/override_tables.sty 1970-01-01 01:00:00.000000000 +0100 @@ -1,101 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} - -% Packages used by this style file -\RequirePackage{doxygen} - -% Used by parameter lists -\renewenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtable}[l]{|l|l|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtable}[l]{|l|l|l|}}% in/out + name + desc - {\begin{longtable}[l]{|l|l|l|l|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\renewenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtable}[l]{|l|l|l|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\renewenvironment{DoxyEnumFields}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{2}}% - {\begin{longtable}[l]{|l|l|}}% - {\begin{longtable}[l]{|l|l|l|}}% with init value - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} - -% Used by return value lists -\renewenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtable}[l]{|l|l|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} - -% Used by exception lists -\renewenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtable}[l]{|l|l|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} - -% Used by template parameter lists -\renewenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtable}[l]{|l|l|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \endhead% - \hline% -}{% - \end{longtable}% - \vspace{6pt}% -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/include/primesieve.h new/primesieve-12.12/include/primesieve.h --- old/primesieve-12.11/include/primesieve.h 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/include/primesieve.h 2026-01-09 23:18:31.000000000 +0100 @@ -15,9 +15,9 @@ #ifndef PRIMESIEVE_H #define PRIMESIEVE_H -#define PRIMESIEVE_VERSION "12.11" +#define PRIMESIEVE_VERSION "12.12" #define PRIMESIEVE_VERSION_MAJOR 12 -#define PRIMESIEVE_VERSION_MINOR 11 +#define PRIMESIEVE_VERSION_MINOR 12 #include <primesieve/iterator.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/include/primesieve.hpp new/primesieve-12.12/include/primesieve.hpp --- old/primesieve-12.11/include/primesieve.hpp 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/include/primesieve.hpp 2026-01-09 23:18:31.000000000 +0100 @@ -13,9 +13,9 @@ #ifndef PRIMESIEVE_HPP #define PRIMESIEVE_HPP -#define PRIMESIEVE_VERSION "12.11" +#define PRIMESIEVE_VERSION "12.12" #define PRIMESIEVE_VERSION_MAJOR 12 -#define PRIMESIEVE_VERSION_MINOR 11 +#define PRIMESIEVE_VERSION_MINOR 12 #include <primesieve/iterator.hpp> #include <primesieve/primesieve_error.hpp> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/build_clang_arm64.ps1 new/primesieve-12.12/scripts/build_clang_arm64.ps1 --- old/primesieve-12.11/scripts/build_clang_arm64.ps1 1970-01-01 01:00:00.000000000 +0100 +++ new/primesieve-12.12/scripts/build_clang_arm64.ps1 2026-01-09 23:18:31.000000000 +0100 @@ -0,0 +1,92 @@ +# Usage: ./scripts/build_clang_arm64.ps1 +$ErrorActionPreference = "Stop" + +# Configuration ###################################################### + +$LLVM_VER = "21.1.8" +$BUILD_DIR = Join-Path (Get-Location) "build-release" +$LLVM_DIR = Join-Path $BUILD_DIR "clang+llvm-$LLVM_VER-aarch64-pc-windows-msvc" +$URL_LLVM = "https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VER/clang+llvm-$LLVM_VER-aarch64-pc-windows-msvc.tar.xz" +$URL_PREV = "https://github.com/kimwalisch/primesieve/releases/download/v12.11/primesieve-12.11-win-arm64.zip" + +# Clean and Init ##################################################### + +Remove-Item -Recurse -Force $BUILD_DIR -ErrorAction SilentlyContinue +New-Item -ItemType Directory -Force -Path $BUILD_DIR | Out-Null +Set-Location $BUILD_DIR + +# Helper: Silent Download (.NET WebClient is faster than Invoke-WebRequest and has no progress bar) +function Download-File ($Url, $Dest) { + Write-Host "Downloading $(Split-Path $Dest -Leaf)..." + (New-Object System.Net.WebClient).DownloadFile($Url, $Dest) +} + +# Setup LLVM ######################################################### + +# LLVM/Clang 20.1.6 is installed by default on the windows-11-arm +# GitHub Actions CI instance. However, that version is unable to +# compile our ARM SVE code. Hence we download LLVM/Clang 21 which +# has no problem compiling our code. + +Download-File $URL_LLVM "$BUILD_DIR\llvm.tar.xz" + +Write-Host "Extracting LLVM..." +tar.exe -xf "llvm.tar.xz" +Remove-Item "llvm.tar.xz" -Force +$env:Path = "$(Join-Path $LLVM_DIR 'bin');$env:Path" + +# Compilation ######################################################## + +$Version = [regex]::Match((Get-Content "../include/primesieve.hpp"), 'PRIMESIEVE_VERSION "(.*)"').Groups[1].Value +Write-Host "Compiling Primesieve $Version with Clang $LLVM_VER..." -ForegroundColor Cyan + +# Gather source files +$Src = @("../src/*.cpp", "../src/arch/arm/*.cpp", "../src/app/*.cpp") | ForEach-Object { Get-Item $_ } + +# Compiler options +$ClangArgs = @( + "-I../include", "-I../src", "-O3", + "-DNDEBUG", "-DENABLE_MULTIARCH_ARM_SVE", + "-o", "primesieve.exe" +) +& clang++ $ClangArgs $Src + +if ($LASTEXITCODE -ne 0) { throw "Compilation failed." } +& llvm-strip primesieve.exe + +# Packaging ########################################################## + +Write-Host "Packaging release..." +Download-File $URL_PREV "$BUILD_DIR\prev.zip" +$PkgName = "primesieve-$Version-win-arm64" +Expand-Archive "prev.zip" -DestinationPath "$PkgName-tmp" -Force + +# Verify Size and Move Binary +Write-Host "Old binary size: $((Get-Item "$PkgName-tmp/primesieve.exe").Length)" +Move-Item "primesieve.exe" "$PkgName-tmp" -Force +Write-Host "New binary size: $((Get-Item "$PkgName-tmp/primesieve.exe").Length)" + +# Update version info (Regex replace) +$Date = Get-Date -Format "MMMM dd, yyyy" +$Year = Get-Date -Format "yyyy" +(Get-Content "$PkgName-tmp\README.txt") -replace "^primesieve.*", "primesieve $Version" -replace "^\w+ \d+, \d+", $Date | Set-Content "$PkgName-tmp\README.txt" +(Get-Content "$PkgName-tmp\COPYING") -replace "Copyright \(c\) 2010 - \d+", "Copyright (c) 2010 - $Year" | Set-Content "$PkgName-tmp\COPYING" + +# Testing ############################################################ + +Write-Host "Running Tests..." +Set-Location "$PkgName-tmp" +Write-Host "================================================================================" + +foreach ($arg in @("-v", "--cpu-info", "--test", "1e11")) { + & ./primesieve $arg + if ($LASTEXITCODE -ne 0) { throw "Test failed: $arg" } + Write-Host "================================================================================" +} + +# Compress zip archive ############################################### + +Compress-Archive -Path "README.txt", "primesieve.exe", "COPYING" -DestinationPath "..\$PkgName.zip" -Force +Set-Location .. +Rename-Item "$PkgName-tmp" $PkgName +Write-Host "Release binary built successfully!" -ForegroundColor Green diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/build_clang_multiarch_win_x64.bat new/primesieve-12.12/scripts/build_clang_multiarch_win_x64.bat --- old/primesieve-12.11/scripts/build_clang_multiarch_win_x64.bat 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/scripts/build_clang_multiarch_win_x64.bat 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -clang++ -I../include -I../src -O3 -mpopcnt -DNDEBUG -DENABLE_MULTIARCH_AVX512_BW -DENABLE_MULTIARCH_AVX512_VBMI2 ../src/*.cpp ../src/arch/x86/*.cpp ../src/app/*.cpp -o primesieve.exe "C:\Program Files\LLVM\lib\clang\18\lib\windows\clang_rt.builtins-x86_64.lib" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/build_clang_x64.ps1 new/primesieve-12.12/scripts/build_clang_x64.ps1 --- old/primesieve-12.11/scripts/build_clang_x64.ps1 1970-01-01 01:00:00.000000000 +0100 +++ new/primesieve-12.12/scripts/build_clang_x64.ps1 2026-01-09 23:18:31.000000000 +0100 @@ -0,0 +1,75 @@ +# Usage: ./scripts/build_clang_x64.ps1 +$ErrorActionPreference = "Stop" + +# Configuration ###################################################### + +$BUILD_DIR = Join-Path (Get-Location) "build-release" +$URL_PREV = "https://github.com/kimwalisch/primesieve/releases/download/v12.11/primesieve-12.11-win-x64.zip" + +# Clean and Init ##################################################### + +Remove-Item -Recurse -Force $BUILD_DIR -ErrorAction SilentlyContinue +New-Item -ItemType Directory -Force -Path $BUILD_DIR | Out-Null +Set-Location $BUILD_DIR + +# Helper: Silent Download (.NET WebClient is faster than Invoke-WebRequest and has no progress bar) +function Download-File ($Url, $Dest) { + Write-Host "Downloading $(Split-Path $Dest -Leaf)..." + (New-Object System.Net.WebClient).DownloadFile($Url, $Dest) +} + +# Compilation ######################################################## + +$Version = [regex]::Match((Get-Content "../include/primesieve.hpp"), 'PRIMESIEVE_VERSION "(.*)"').Groups[1].Value +Write-Host "Compiling primesieve-$Version with Clang" -ForegroundColor Cyan + +# Gather source files +$Src = @("../src/*.cpp", "../src/arch/x86/*.cpp", "../src/app/*.cpp") | ForEach-Object { Get-Item $_ } + +# Compiler options +$ClangArgs = @( + "-I../include", "-I../src", "-O3", "-mpopcnt", "-DNDEBUG", + "-DENABLE_MULTIARCH_AVX512_BW", "-DENABLE_MULTIARCH_AVX512_VBMI2", + "-o", "primesieve.exe" +) +& clang++ $ClangArgs $Src + +if ($LASTEXITCODE -ne 0) { throw "Compilation failed." } +& llvm-strip primesieve.exe + +# Packaging ########################################################## + +Write-Host "Packaging release..." +Download-File $URL_PREV "$BUILD_DIR\prev.zip" +$PkgName = "primesieve-$Version-win-x64" +Expand-Archive "prev.zip" -DestinationPath "$PkgName-tmp" -Force + +# Verify Size and Move Binary +Write-Host "Old binary size: $((Get-Item "$PkgName-tmp/primesieve.exe").Length)" +Move-Item "primesieve.exe" "$PkgName-tmp" -Force +Write-Host "New binary size: $((Get-Item "$PkgName-tmp/primesieve.exe").Length)" + +# Update version info (Regex replace) +$Date = Get-Date -Format "MMMM dd, yyyy" +$Year = Get-Date -Format "yyyy" +(Get-Content "$PkgName-tmp\README.txt") -replace "^primesieve.*", "primesieve $Version" -replace "^\w+ \d+, \d+", $Date | Set-Content "$PkgName-tmp\README.txt" +(Get-Content "$PkgName-tmp\COPYING") -replace "Copyright \(c\) 2010 - \d+", "Copyright (c) 2010 - $Year" | Set-Content "$PkgName-tmp\COPYING" + +# Testing ############################################################ + +Write-Host "Running Tests..." +Set-Location "$PkgName-tmp" +Write-Host "================================================================================" + +foreach ($arg in @("-v", "--cpu-info", "--test", "1e11")) { + & ./primesieve $arg + if ($LASTEXITCODE -ne 0) { throw "Test failed: $arg" } + Write-Host "================================================================================" +} + +# Compress zip archive ############################################### + +Compress-Archive -Path "README.txt", "primesieve.exe", "COPYING" -DestinationPath "..\$PkgName.zip" -Force +Set-Location .. +Rename-Item "$PkgName-tmp" $PkgName +Write-Host "Release binary built successfully!" -ForegroundColor Green diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/build_mingw64_arm64.sh new/primesieve-12.12/scripts/build_mingw64_arm64.sh --- old/primesieve-12.11/scripts/build_mingw64_arm64.sh 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/scripts/build_mingw64_arm64.sh 2026-01-09 23:18:31.000000000 +0100 @@ -10,7 +10,7 @@ # 3) Install MSYS2 x64 # 4) Open C:/msys64/clangarm64.exe # 5) pacman -Syu (exit then run it again) -# 6) pacman -S mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-openmp make git zip unzip +# 6) pacman -S mingw-w64-clang-aarch64-clang make git zip unzip # 7) git clone https://github.com/kimwalisch/primesieve.git # 8) scripts/build_mingw64_arm64.sh @@ -36,15 +36,8 @@ exit 1 } -#################################################################### - -# The repo must no have any uncommited changes as we -# switch to another branch during the script. -git diff --exit-code > /dev/null || handle_error "repo must not have any uncommitted changes" - # Build primesieve binary ########################################## -git pull mkdir build-release cd build-release @@ -52,19 +45,19 @@ strip primesieve.exe # Create a release zip archive -wget https://github.com/kimwalisch/primesieve/releases/download/v12.0/primesieve-12.0-win-arm64.zip -unzip primesieve-12.0-win-arm64.zip -d primesieve-$VERSION-win-arm64 -rm primesieve-12.0-win-arm64.zip +wget https://github.com/kimwalisch/primesieve/releases/download/v12.11/primesieve-12.11-win-arm64.zip +unzip primesieve-12.11-win-arm64.zip -d primesieve-$VERSION-win-arm64-tmp +rm primesieve-12.11-win-arm64.zip echo "" echo "" -echo "Old file size: $(ls -l --block-size=K primesieve-$VERSION-win-arm64/primesieve.exe)" +echo "Old file size: $(ls -l --block-size=K primesieve-$VERSION-win-arm64-tmp/primesieve.exe)" echo "New file size: $(ls -l --block-size=K primesieve.exe)" echo "" echo "" -mv -f primesieve.exe primesieve-$VERSION-win-arm64 -cd primesieve-$VERSION-win-arm64 +mv -f primesieve.exe primesieve-$VERSION-win-arm64-tmp +cd primesieve-$VERSION-win-arm64-tmp sed -i "1 s/.*/primesieve $VERSION/" README.txt sed -i "2 s/.*/$FULL_DATE/" README.txt sed -i "3 s/.*/Copyright \(c\) 2010 - $YEAR, Kim Walisch\./" COPYING @@ -74,9 +67,6 @@ [ "$(sed -n '2p' < README.txt)" = "$FULL_DATE" ] || handle_error "failed updating README.txt" [ "$(sed -n '3p' < COPYING)" = "Copyright (c) 2010 - $YEAR, Kim Walisch." ] || handle_error "failed updating COPYING" -zip primesieve-$VERSION-win-arm64.zip primesieve.exe README.txt COPYING -cp primesieve-$VERSION-win-arm64.zip .. - ./primesieve -v echo "" echo "" @@ -93,6 +83,13 @@ echo "" echo "" +# Build release zip archive ######################################## + +zip primesieve-$VERSION-win-arm64.zip primesieve.exe README.txt COPYING +mv primesieve-$VERSION-win-arm64.zip .. +cd .. +mv primesieve-$VERSION-win-arm64-tmp primesieve-$VERSION-win-arm64 + #################################################################### echo "Release binary built successfully!" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/build_mingw64_x64.sh new/primesieve-12.12/scripts/build_mingw64_x64.sh --- old/primesieve-12.11/scripts/build_mingw64_x64.sh 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/scripts/build_mingw64_x64.sh 2026-01-09 23:18:31.000000000 +0100 @@ -33,15 +33,8 @@ exit 1 } -#################################################################### - -# The repo must no have any uncommited changes as we -# switch to another branch during the script. -git diff --exit-code > /dev/null || handle_error "repo must not have any uncommitted changes" - # Build primesieve binary ########################################## -git pull mkdir build-release cd build-release @@ -49,19 +42,19 @@ strip primesieve.exe # Create a release zip archive -wget https://github.com/kimwalisch/primesieve/releases/download/v12.0/primesieve-12.0-win-x64.zip -unzip primesieve-12.0-win-x64.zip -d primesieve-$VERSION-win-x64 -rm primesieve-12.0-win-x64.zip +wget https://github.com/kimwalisch/primesieve/releases/download/v12.11/primesieve-12.11-win-x64.zip +unzip primesieve-12.11-win-x64.zip -d primesieve-$VERSION-win-x64-tmp +rm primesieve-12.11-win-x64.zip echo "" echo "" -echo "Old file size: $(ls -l --block-size=K primesieve-$VERSION-win-x64/primesieve.exe)" +echo "Old file size: $(ls -l --block-size=K primesieve-$VERSION-win-x64-tmp/primesieve.exe)" echo "New file size: $(ls -l --block-size=K primesieve.exe)" echo "" echo "" -mv -f primesieve.exe primesieve-$VERSION-win-x64 -cd primesieve-$VERSION-win-x64 +mv -f primesieve.exe primesieve-$VERSION-win-x64-tmp +cd primesieve-$VERSION-win-x64-tmp sed -i "1 s/.*/primesieve $VERSION/" README.txt sed -i "2 s/.*/$FULL_DATE/" README.txt sed -i "3 s/.*/Copyright \(c\) 2010 - $YEAR, Kim Walisch\./" COPYING @@ -71,9 +64,6 @@ [ "$(sed -n '2p' < README.txt)" = "$FULL_DATE" ] || handle_error "failed updating README.txt" [ "$(sed -n '3p' < COPYING)" = "Copyright (c) 2010 - $YEAR, Kim Walisch." ] || handle_error "failed updating COPYING" -zip primesieve-$VERSION-win-x64.zip primesieve.exe README.txt COPYING -cp primesieve-$VERSION-win-x64.zip .. - ./primesieve -v echo "" echo "" @@ -90,6 +80,13 @@ echo "" echo "" +# Build release zip archive ######################################## + +zip primesieve-$VERSION-win-x64.zip primesieve.exe README.txt COPYING +mv primesieve-$VERSION-win-x64.zip .. +cd .. +mv primesieve-$VERSION-win-x64-tmp primesieve-$VERSION-win-x64 + #################################################################### echo "Release binary built successfully!" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/scripts/update_version.sh new/primesieve-12.12/scripts/update_version.sh --- old/primesieve-12.11/scripts/update_version.sh 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/scripts/update_version.sh 2026-01-09 23:18:31.000000000 +0100 @@ -32,37 +32,32 @@ echo "Old year: $old_year" echo "" -# Update version -for i in $(echo README.md \ - CMakeLists.txt \ - include/primesieve.hpp \ +# 1. Update VERSION in CMakeLists.txt +echo "Update version in CMakeLists.txt" +sed "s/VERSION $old_version/VERSION $new_version/" CMakeLists.txt > CMakeLists.txt.tmp +mv -f CMakeLists.txt.tmp CMakeLists.txt + +# 2. Update version string in headers +for i in $(echo include/primesieve.hpp \ include/primesieve.h) do - echo "Update version in $i" + echo "Update version string in $i" sed "s/$old_major\.$old_minor/$new_version/g" $i > $i.tmp mv -f $i.tmp $i done -# Update shared libprimesieve version -for i in $(echo CMakeLists.txt) -do - echo "Update shared libprimesieve version in $i" - new_so_version="$new_major.$new_minor.0" - sed "s/$old_major\.$old_minor\.0/$new_so_version/g" $i > $i.tmp - mv -f $i.tmp $i -done - -# Update version +# 3. Update version macros in headers (MAJOR/MINOR) for i in $(echo include/primesieve.hpp \ include/primesieve.h) do + echo "Update version macros in $i" sed "s/PRIMESIEVE_VERSION_MAJOR $old_major/PRIMESIEVE_VERSION_MAJOR $new_major/g" $i > $i.tmp mv -f $i.tmp $i sed "s/PRIMESIEVE_VERSION_MINOR $old_minor/PRIMESIEVE_VERSION_MINOR $new_minor/g" $i > $i.tmp mv -f $i.tmp $i done -# Update year +# 4. Update copyright year for i in $(echo COPYING \ src/app/help.cpp) do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/primesieve-12.11/src/app/help.cpp new/primesieve-12.12/src/app/help.cpp --- old/primesieve-12.11/src/app/help.cpp 2025-12-14 09:14:12.000000000 +0100 +++ new/primesieve-12.12/src/app/help.cpp 2026-01-09 23:18:31.000000000 +0100 @@ -3,7 +3,7 @@ /// @brief help() and version() functions of the primesieve /// console application. /// -/// Copyright (C) 2025 Kim Walisch, <[email protected]> +/// Copyright (C) 2026 Kim Walisch, <[email protected]> /// /// This file is distributed under the BSD License. See the COPYING /// file in the top level directory. @@ -64,6 +64,6 @@ { std::cout << "primesieve " << primesieve::primesieve_version(); std::cout << ", <https://github.com/kimwalisch/primesieve>" << std::endl; - std::cout << "Copyright (C) 2010 - 2025 Kim Walisch" << std::endl; + std::cout << "Copyright (C) 2010 - 2026 Kim Walisch" << std::endl; std::cout << "BSD 2-Clause License <https://opensource.org/licenses/BSD-2-Clause>" << std::endl; }
