Subject: [bug#77067] [PATCH] gnu: icestorm: Update to 0.0-5.7fbf8c0.

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 23 Apr 2025 10:41:46 +0900

Hello,

Cayetano Santos <[email-masked]> 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!

-- 
Maxim