From d44029f2ddd897e3ff85e9ec6e206f08d5f05ccc Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Thu, 12 Feb 2026 20:13:01 +0300 Subject: [PATCH] Properly build an .msi for windows-arm64 --- .github/workflows/windows-arm64.yml | 26 +++++++++++++------------- .github/workflows/windows.yml | 3 ++- tests/arena.impure.lisp | 3 ++- tests/sleepytests.pure.lisp | 6 ++++-- tools-for-build/sbcl.1.4.14.nupkg | Bin 5295 -> 0 bytes tools-for-build/wxs.lisp | 13 +++++++------ 6 files changed, 28 insertions(+), 23 deletions(-) delete mode 100644 tools-for-build/sbcl.1.4.14.nupkg diff --git a/.github/workflows/windows-arm64.yml b/.github/workflows/windows-arm64.yml index 2bd785553..8bb115d68 100644 --- a/.github/workflows/windows-arm64.yml +++ b/.github/workflows/windows-arm64.yml @@ -30,20 +30,22 @@ jobs: - name: install host sbcl shell: pwsh run: | - choco install sbcl -source tools-for-build + Invoke-WebRequest -Uri "https://github.com/sbcl/sbcl/releases/download/sbcl-1.4.14/sbcl-2.6.1.132-4d12ab542-arm64-windows-binary.msi" -OutFile "sbcl.msi" + Start-Process msiexec.exe -Wait -ArgumentList '/i sbcl.msi /qn /norestart' + + - name: build + env: + SBCL_HOME: "/c/Program Files/Steel Bank Common Lisp/" + run: | + PATH=$PATH:"/c/Program Files/Steel Bank Common Lisp/" + export PATH + ./make.sh --arch=${{matrix.arch}} --with-sb-core-compression --xc-host='sbcl --lose-on-corruption --disable-ldb --disable-debugger' - name: install WiX Toolset shell: pwsh run: | choco install wixtoolset $wixPath = (Get-ChildItem "C:\Program Files (x86)\WiX Toolset*" | Select-Object -First 1).FullName echo "WIX=$wixPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - name: build - env: - SBCL_HOME: "/c/Program Files/Steel Bank Common Lisp/1.4.14" - run: | - PATH=$PATH:"/c/Program Files/Steel Bank Common Lisp/1.4.14" - export PATH - ./make.sh --arch=${{matrix.arch}} --with-sb-core-compression --xc-host='sbcl --lose-on-corruption --disable-ldb --disable-debugger' - name: make installer env: WIX: ${{ env.WIX }} @@ -55,12 +57,10 @@ jobs: with: name: sbcl-windows-installer-${{ matrix.sys }} path: sbcl-windows-installer - - name: tests - continue-on-error: true - working-directory: tests - run: ./run-tests.sh + # - name: tests + # working-directory: tests + # run: ./run-tests.sh - name: ansi-tests - continue-on-error: true working-directory: tests run: ./ansi-tests.sh diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8f2e42d7e..15cbf2bbb 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -30,7 +30,8 @@ jobs: - name: install host sbcl shell: pwsh run: | - choco install sbcl -source tools-for-build + Invoke-WebRequest -Uri "https://github.com/sbcl/sbcl/releases/download/sbcl-1.4.14/sbcl-1.4.14-x86-64-windows-binary.msi" -OutFile "sbcl.msi" + Start-Process msiexec.exe -Wait -ArgumentList '/i sbcl.msi /qn /norestart' - name: build env: SBCL_HOME: "/c/Program Files/Steel Bank Common Lisp/1.4.14" diff --git a/tests/arena.impure.lisp b/tests/arena.impure.lisp index 39bae5e21..29212d602 100644 --- a/tests/arena.impure.lisp +++ b/tests/arena.impure.lisp @@ -78,7 +78,8 @@ (assert (not (c-find-heap->arena))) (destroy-arena a))) -(test-util:with-test (:name :interrupt-thread-on-arena) +(test-util:with-test (:name :interrupt-thread-on-arena + :broken-on (and :win32 :arm64)) (let* ((a (new-arena 1048576)) (sem (sb-thread:make-semaphore)) (junk)) diff --git a/tests/sleepytests.pure.lisp b/tests/sleepytests.pure.lisp index 76fe6215a..33cc61b0f 100644 --- a/tests/sleepytests.pure.lisp +++ b/tests/sleepytests.pure.lisp @@ -9,6 +9,7 @@ ;;; (> (mod seconds 1) (* most-positive-fixnum 1e-9)) (with-test (:name (sleep :non-consing) :serial t :skipped-on :interpreter + :broken-on (and :win32 :arm64) :fails-on (and :arm :64-bit-time)) (handler-case (sb-ext:with-timeout 5 (ctu:assert-no-consing (sleep 0.00001s0)) @@ -21,7 +22,8 @@ ;;; Changes to make SLEEP cons less led to SLEEP ;;; not sleeping at all on 32-bit platforms when ;;; (> (mod seconds 1) (* most-positive-fixnum 1e-9)). -(with-test (:name (sleep :bug-1194673)) +(with-test (:name (sleep :bug-1194673) + :broken-on (and :win32 :arm64)) (assert (eq :timeout (handler-case (with-timeout 0.01 @@ -31,7 +33,7 @@ ;;; SLEEP should work with large integers as well (with-test (:name (sleep :pretty-much-forever) - :skipped-on (:and (:or :linux :darwin) :sb-safepoint)) ; hangs + :broken-on (:and (:or :linux :darwin (and :win32 :arm64)) :sb-safepoint)) ; hangs (assert (eq :timeout (handler-case (sb-ext:with-timeout 1 diff --git a/tools-for-build/sbcl.1.4.14.nupkg b/tools-for-build/sbcl.1.4.14.nupkg deleted file mode 100644 index 7a7850fbecd0e9c758f5597dced4554a82e758ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5295 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 DYrM8X diff --git a/tools-for-build/wxs.lisp b/tools-for-build/wxs.lisp index a341e81b5..c452d58e2 100644 --- a/tools-for-build/wxs.lisp +++ b/tools-for-build/wxs.lisp @@ -157,7 +157,7 @@ ("Component" ("Id" ,(component-id root) "Guid" ,(make-guid) "DiskId" 1 - #+x86-64 "Win64" #+x86-64 "yes") + #+64-bit "Win64" #+64-bit "yes") ,@(loop for file in (directory (make-pathname :name :wild :type :wild :defaults root)) when (or (pathname-name file) (pathname-type file)) @@ -229,9 +229,9 @@ "Language" 1033) ("Package" ("Id" "*" "Manufacturer" ,(manufacturer-name) - "InstallerVersion" 200 + "InstallerVersion" 500 "Compressed" "yes" - #+x86-64 "Platform" #+x86-64 "x64" + #+(or arm64 x86-64) "Platform" #+x86-64 "x64" #+arm64 "arm64" "InstallScope" "perMachine")) ("Media" ("Id" 1 "Cabinet" "sbcl.cab" @@ -260,7 +260,8 @@ "Type" "string" "Value" "" "KeyPath" "yes"))))) - ("Directory" ("Id" #-x86-64 "ProgramFilesFolder" #+x86-64 "ProgramFiles64Folder" + ("Directory" ("Id" #+x86 "ProgramFilesFolder" + #+64-bit "ProgramFiles64Folder" "Name" "PFiles") ("Directory" ("Id" "BaseFolder" "Name" ,(application-name)) @@ -268,7 +269,7 @@ ("Component" ("Id" "SBCL_SetPATH" "Guid" ,(make-guid) "DiskId" 1 - #+x86-64 "Win64" #+x86-64 "yes") + #+64-bit "Win64" #+64-bit "yes") ("CreateFolder") ("Environment" ("Id" "Env_PATH" "System" "yes" @@ -279,7 +280,7 @@ ("Component" ("Id" "SBCL_Base" "Guid" ,(make-guid) "DiskId" 1 - #+x86-64 "Win64" #+x86-64 "yes") + #+64-bit "Win64" #+64-bit "yes") ;; If we want to associate files with SBCL, this ;; is how it's done -- but doing this by default ;; and without asking the user for permission Is