[bug#77067,v2] gnu: icestorm: Update to 0.0-5.7fbf8c0.

Message ID a92ef6ba874fe716de11e58a927451a470836351.1743063481.git.csantosb@inventati.org
State New
Headers
Series [bug#77067,v2] gnu: icestorm: Update to 0.0-5.7fbf8c0. |

Commit Message

Cayetano Santos March 27, 2025, 8:18 a.m. UTC
  * gnu/packages/fpga.scm (icestorm): Update to 0.0-5.7fbf8c0.

Change-Id: I545ac91c94a97989c3a1494479d36cb5bb46930d

- update to latest commit
- update source url and homepage
- include doc info file
- update CC, CXX and PREFIX variables
- updated /usr/local substitutions in makefiles
- replaced old style native inputs, including new requirements for doc
- improve synopsys and description
- tests require nextpnr-ice40, which depends on this package

Change-Id: I22d8adb52daac893bf7436fd86fefe0df18c7bf9
---
 gnu/packages/fpga.scm | 108 +++++++++++++++++++++++++-----------------
 1 file changed, 65 insertions(+), 43 deletions(-)


base-commit: eb30f5ecbea896e9cf93722bf97681d208f1a7be
  

Patch

diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 893e875276..b1ffde17bf 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -75,7 +75,9 @@  (define-module (gnu packages fpga)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages sphinx)
   #:use-module (gnu packages tcl)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages toolkits)
   #:use-module (gnu packages version-control))
 
@@ -269,49 +271,69 @@  (define-public yosys-clang
     (synopsis "FPGA Verilog RTL synthesizer (Clang variant)")))
 
 (define-public icestorm
-  (let ((commit "2bc541743ada3542c6da36a50e66303b9cbd2059")
-        (revision "4"))
-   (package
-    (name "icestorm")
-    (version (git-version "0.0" revision commit))
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/cliffordwolf/icestorm")
-                     (commit commit)))
-              (file-name (git-file-name name version))
-              (sha256
-                (base32
-                 "0d0ibdq3rzmjcbv97h4b9wgq8ikvgwlfw60spi2w81mis317lis8"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f ; no unit tests that don't need an FPGA exist.
-       #:make-flags (list "CC=gcc" "CXX=g++"
-                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:phases
-        (modify-phases %standard-phases
-          (add-after 'unpack 'remove-usr-local
-            (lambda _
-              (substitute* "iceprog/Makefile"
-                (("-I/usr/local/include") "")
-                (("-L/usr/local/lib") ""))
-              #t))
-          (add-after 'remove-usr-local 'fix-usr-local
-            (lambda* (#:key outputs #:allow-other-keys)
-              (substitute* "icebox/icebox_vlog.py"
-                (("/usr/local/share") (string-append (assoc-ref outputs "out") "/share")))
-              #t))
-          (delete 'configure))))
-    (inputs
-     (list libftdi))
-    (native-inputs
-     `(("python-3" ,python)
-       ("pkg-config" ,pkg-config)))
-    (home-page "https://www.clifford.at/icestorm/")
-    (synopsis "Project IceStorm - Lattice iCE40 FPGAs bitstream tools")
-    (description "Project IceStorm - Lattice iCE40 FPGAs Bitstream Tools.
-Includes the actual FTDI connector.")
-    (license license:isc))))
+  (let ((commit "7fbf8c0afbcf7665c45499b090409859b1815184")
+        (revision "5"))
+    (package
+      (name "icestorm")
+      (version (git-version "0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/YosysHQ/icestorm/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0vwl0j5sw2awsv82s18zby522h2b6wa5jyc6dkpqfxybak19kv7f"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f ; tests require nextpr-ice40, will be run in there
+        #:make-flags
+        #~(list (string-append "CC="
+                               #$(cc-for-target))
+                (string-append "CXX="
+                               #$(cxx-for-target))
+                (string-append "PREFIX="
+                               #$output)
+                "ICEPROG=1")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'fix-usr-local
+              (lambda* (#:key outputs #:allow-other-keys)
+                (substitute* "icepack/Makefile"
+                  (("/usr/local")
+                   #$output))
+                (substitute* "icebox/Makefile"
+                  (("/usr/local")
+                   #$output))
+                (substitute* "icebox/icebox_vlog.py"
+                  (("/usr/local")
+                   #$output))))
+            (add-after 'build 'make-info
+              (lambda* (#:key outputs #:allow-other-keys)
+                (with-directory-excursion "docs"
+                  (invoke "make" "info")
+                  (install-file "build/texinfo/projecticestorm.info"
+                                (string-append #$output "/share/info"))
+                  (copy-recursively "build/texinfo/projecticestorm-figures"
+                                    (string-append #$output
+                                     "/share/info/projecticestorm-figures")))))
+            (delete 'configure))))
+      (inputs (list libftdi))
+      (native-inputs (list python
+                           pkg-config
+                           ;; doc
+                           texinfo
+                           python-sphinx
+                           python-sphinx-rtd-theme))
+      (home-page "https://prjicestorm.readthedocs.io/")
+      (synopsis "Project IceStorm")
+      (description
+       "Project IceStorm aims at documenting the bitstream format of
+Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream
+files.")
+      (license license:isc))))
 
 (define-public nextpnr-ice40
   (let* ((version "0.7")