[bug#77067,v3] gnu: icestorm: Update to 0.0-5.3cdcf4b.

Message ID 70195b2e71c81651588ddde2783cf04715bd50fa.1744281179.git.csantosb@inventati.org
State New
Headers
Series [bug#77067,v3] gnu: icestorm: Update to 0.0-5.3cdcf4b. |

Commit Message

Cayetano Santos April 10, 2025, 10:32 a.m. UTC
* gnu/packages/fpga.scm (icestorm): Update to 0.0-5.3cdcf4b.

Change-Id: I545ac91c94a97989c3a1494479d36cb5bb46930d

[source]: Update url.
[arguments]<#:phases>: Add make-info to produce info document using included makefile.
[arguments]<#:phases>: Update /usr/local substitutions in makefiles.
[arguments]<#:tests>: Tests require nextpnr-ice40, which depends on this package.
[arguments]<#:make-flags>: Update CC, CXX and PREFIX variables.
[native-inputs]: Replaced old style, add requirements for buildig the documentation.
[homepage]: Update url.
[synopsys]: Improve.
[description]: Improve.

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


base-commit: 07c9a4273152deb128006b5ac2087d5fe30a5927
--
2.49.0
  

Comments

Maxim Cournoyer April 23, 2025, 1:41 a.m. UTC | #1
Hello,

Cayetano Santos <csantosb@inventati.org> writes:

> * gnu/packages/fpga.scm (icestorm): Update to 0.0-5.3cdcf4b.
>
> Change-Id: I545ac91c94a97989c3a1494479d36cb5bb46930d
>
> [source]: Update url.
> [arguments]<#:phases>: Add make-info to produce info document using included makefile.
> [arguments]<#:phases>: Update /usr/local substitutions in makefiles.
> [arguments]<#:tests>: Tests require nextpnr-ice40, which depends on this package.
> [arguments]<#:make-flags>: Update CC, CXX and PREFIX variables.

The maximum column width to use in Guix is 80.  You do not need to
repeat the [arguments] here.  I've rewritten your changelog to something
like this, for example:

--8<---------------cut here---------------start------------->8---
* gnu/packages/fpga.scm (icestorm): Update to 0.0-5.3cdcf4b.
[source]: Update URL.
[arguments] <#:phases> {make-info}: New phase.
{fix-usr-local}: Update substitutions.
<#:tests>: Update comment.
<#:make-flags>: Update CC, CXX and PREFIX variables.
[native-inputs]: Use new style.  Add texinfo, python-sphinx and
python-sphinx-rtd-theme.
[homepage]: Update URL.
[description]: Improve.
--8<---------------cut here---------------end--------------->8---


> [native-inputs]: Replaced old style, add requirements for buildig the documentation.
> [homepage]: Update url.
> [synopsys]: Improve.
> [description]: Improve.
>
> Change-Id: I22d8adb52daac893bf7436fd86fefe0df18c7bf9

The change-id is meant to be listed only once; ideally it should remain
static from the first to the last revision submitted (that's its
purpose, to be a stable identifier for a series being reviewed).

> ---
>  gnu/packages/fpga.scm | 108 +++++++++++++++++++++++++-----------------
>  1 file changed, 65 insertions(+), 43 deletions(-)
>
> diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
> index 893e875276..8afaccf62c 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 "3cdcf4b009bb8681ab7e2e09d65043f04334b60e")
> +        (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 "0ygp6cj7grlnyji572kx215p2mw4crllskif9g795f390bp38g68"))))
> +      (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))))

I've done these adjustment on top:

--8<---------------cut here---------------start------------->8---
modified   gnu/packages/fpga.scm
@@ -288,7 +288,7 @@ (define-public icestorm
       (build-system gnu-build-system)
       (arguments
        (list
-        #:tests? #f ; tests require nextpr-ice40, will be run in there
+        #:tests? #f               ;avoid a cyclic dependency with nextpr-ice40
         #:make-flags
         #~(list (string-append "CC="
                                #$(cc-for-target))
@@ -321,14 +321,13 @@ (define-public icestorm
                                      "/share/info/projecticestorm-figures")))))
             (delete 'configure))))
       (inputs (list libftdi))
-      (native-inputs (list python
-                           pkg-config
-                           ;; doc
-                           texinfo
+      (native-inputs (list pkg-config
+                           python
                            python-sphinx
-                           python-sphinx-rtd-theme))
+                           python-sphinx-rtd-theme
+                           texinfo))
       (home-page "https://prjicestorm.readthedocs.io/")
-      (synopsis "Project IceStorm")
+      (synopsis "Bitstream tools for Lattice iCE40 FPGAs")
       (description
        "Project IceStorm aims at documenting the bitstream format of
 Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream
--8<---------------cut here---------------end--------------->8---

The synopsis should describe what this *is* precisely, so the above
seems more useful.  I don't see value in splitting what native-inputs
are used for anymore; this makes it harder to maintain in the long run,
and its obvious that sphinx dependencies are used for generating doc.

And pushed.  Thank you!
  

Patch

diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 893e875276..8afaccf62c 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 "3cdcf4b009bb8681ab7e2e09d65043f04334b60e")
+        (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 "0ygp6cj7grlnyji572kx215p2mw4crllskif9g795f390bp38g68"))))
+      (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")