Subject: [bug#60695] [PATCH v2 9/9] gnu: nextpnr-ice40: Update to 0.5.

From: Simon South <[email-masked]>
Date: Fri, 27 Jan 2023 15:34:34 -0500

* gnu/packages/fpga.scm (nextpnr-ice40): Update to 0.5.
[arguments]<#:configure-flags>: Add "-DBUILD_GUI", "-DUSE_IPO"; update
"-DCURRENT_GIT_VERSION"; rename "-DICEBOX_ROOT" to
"-DICESTORM_INSTALL_PREFIX".
---
 gnu/packages/fpga.scm | 87 ++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 912b6cfb77..54a8d9550e 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -247,45 +247,48 @@ (define-public icestorm
     (license license:isc))))
 
 (define-public nextpnr-ice40
-  (let [(commit "fbe486df459909065d6852a7495a212dfd2accef")
-        (revision "1")]
+  (let* ((version "0.5")
+         (tag (string-append "nextpnr-" version)))
     (package
       (name "nextpnr-ice40")
-      (version (git-version "0.0.0" revision commit))
+      (version version)
       (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/YosysHQ/nextpnr")
-                 (commit commit)
-                 (recursive? #t)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "1llkrh8rk1a1xxzx54apbg49ny2jqzzl2rmbkb8188idipq568ws"))
-          (modules '((guix build utils)))
-          (snippet
-           #~(begin
-               ;; Remove bundled source code for which Guix has packages.
-               ;; Note the bundled copies of json11 and python-console contain
-               ;; modifications, while QtPropertyBrowser appears to be
-               ;; abandoned and without an official source.
-               (with-directory-excursion "3rdparty"
-                 (for-each delete-file-recursively
-                           '("googletest" "imgui" "pybind11" "qtimgui"
-                             "sanitizers-cmake")))
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/YosysHQ/nextpnr")
+               (commit tag)
+               (recursive? #t)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "119iqxxzbxq2qy8x20awf9gr0nf3y1yjmk36adsg89ly3rb9gwzk"))
+         (modules '((guix build utils)))
+         (snippet
+          #~(begin
+              ;; Remove bundled source code for which Guix has packages.
+              ;; Note the bundled copies of json11 and python-console contain
+              ;; modifications, while QtPropertyBrowser appears to be
+              ;; abandoned and without an official source.
+              ;; fpga-interchange-schema is used only by the
+              ;; "fpga_interchange" architecture target, which this package
+              ;; doesn't build.
+              (with-directory-excursion "3rdparty"
+                (for-each delete-file-recursively
+                          '("googletest" "imgui" "pybind11" "qtimgui"
+                            "sanitizers-cmake")))
 
-               ;; Remove references to unbundled code and link against
-               ;; external libraries instead.
-               (substitute* "CMakeLists.txt"
-                 (("^\\s+add_subdirectory\\(3rdparty/googletest.*") "")
-                 (("^(\\s+target_link_libraries.*)( gtest_main\\))"
-                   _ prefix suffix)
-                  (string-append prefix " gtest" suffix)))
-               (substitute* "gui/CMakeLists.txt"
-                 (("^\\s+../3rdparty/(qt)?imgui.*") "")
-                 (("^(target_link_libraries.*)\\)" _ prefix)
-                  (string-append prefix " imgui qt_imgui_widgets)")))))))
+              ;; Remove references to unbundled code and link against external
+              ;; libraries instead.
+              (substitute* "CMakeLists.txt"
+                (("^\\s+add_subdirectory\\(3rdparty/googletest.*") "")
+                (("^(\\s+target_link_libraries.*)( gtest_main\\))"
+                  _ prefix suffix)
+                 (string-append prefix " gtest" suffix)))
+              (substitute* "gui/CMakeLists.txt"
+                (("^\\s+../3rdparty/(qt)?imgui.*") "")
+                (("^(target_link_libraries.*)\\)" _ prefix)
+                 (string-append prefix " imgui qt_imgui_widgets)")))))))
       (native-inputs
        (list googletest sanitizers-cmake))
       (inputs
@@ -303,12 +306,12 @@ (define-public nextpnr-ice40
        (list
         #:configure-flags
         #~(list "-DARCH=ice40"
+                "-DBUILD_GUI=ON"
                 "-DBUILD_TESTS=ON"
-                (string-append "-DCURRENT_GIT_VERSION="
-                               #$(string-take commit 8))
-                (string-append "-DICEBOX_ROOT="
-                               #$(this-package-input "icestorm")
-                               "/share/icebox"))
+                (string-append "-DCURRENT_GIT_VERSION=" #$tag)
+                (string-append "-DICESTORM_INSTALL_PREFIX="
+                               #$(this-package-input "icestorm"))
+                "-DUSE_IPO=OFF")
         #:phases
         #~(modify-phases %standard-phases
             (add-after 'unpack 'patch-source
@@ -334,8 +337,8 @@ (define-public nextpnr-ice40
                                                           "include/qtimgui")
                                   suffix))))))))
       (synopsis "Place-and-Route tool for FPGAs")
-      (description "Nextpnr aims to be a vendor neutral, timing driven,
-FOSS FPGA place and route tool.")
+      (description "Nextpnr aims to be a vendor neutral, timing driven, FOSS
+FPGA place and route tool.")
       (home-page "https://github.com/YosysHQ/nextpnr")
       (license license:expat))))
 
-- 
2.38.1