diff mbox series

[bug#50578] gnu: Add minipro

Message ID 20210914105601.12562-1-thomas@thomaslabs.org
State New
Headers show
Series [bug#50578] gnu: Add minipro | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Thomas Albers Raviola Sept. 14, 2021, 10:56 a.m. UTC
---
 gnu/packages/electronics.scm | 66 ++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

Comments

Bruno Victal March 31, 2023, 11:09 a.m. UTC | #1
Hi Thomas,

On 2021-09-14 11:56, Thomas Albers via Guix-patches via wrote:
> ---
>  gnu/packages/electronics.scm | 66 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 66 insertions(+)
> 
> diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
> index 0e985c9750..e6abdc6562 100644
> --- a/gnu/packages/electronics.scm
> +++ b/gnu/packages/electronics.scm
> @@ -4,6 +4,7 @@
>  ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
>  ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
>  ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
> +;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -24,6 +25,7 @@
>    #:use-module (guix utils)
>    #:use-module (guix packages)
>    #:use-module (guix download)
> +  #:use-module (guix git-download)
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system cmake)
> @@ -333,3 +335,67 @@ from ALSA, ESD, and COMEDI sources.  This package currently does not include
>  support for ESD sources.")
>      (home-page "http://xoscope.sourceforge.net/")
>      (license license:gpl2+)))
> +
> +(define-public minipro
> +  ;; Information needed to fix Makefile
> +  (let* ((commit "0774b071361366c866ec97302ec02972379418b0")
> +         (commit-short (substring commit 0 8))
> +         ;; git show -s --format="%ci"
> +         (date "2021-08-05 07:54:42 +0300")
> +         (revision "1"))
> +    (package
> +      (name "minipro")
> +      (version (git-version "0.5" revision commit))

[...]

> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url "https://gitlab.com/DavidGriffith/minipro.git")
> +               (commit commit)))
> +         (sha256
> +          (base32 "174m2dwgpxwkm1yrf54p6k5skihgpcd1iblxivg2f6xbdrsz8b18"))))
> +      (native-inputs
> +       `(("pkg-config" ,pkg-config)
> +         ("which" ,which)
> +         ("sed" ,sed)))
> +      (inputs
> +       `(("libusb" ,libusb)))

[...]

> +      (build-system gnu-build-system)
> +      (arguments
> +       `(#:phases
> +         (modify-phases %standard-phases
> +           (delete 'configure)
> +           (delete 'check)
> +           (add-before 'build 'fix-makefile
> +             (lambda* (#:key outputs #:allow-other-keys)
> +               ;; Modify the makefile so that its 'PREFIX' variable points to
> +               ;; "out".
> +               ;; Also fix the folder to where the udev rules are installed and
> +               ;; some git related variables that minipro expects.
> +               (let ((out (assoc-ref outputs "out")))
> +                 (substitute* "Makefile"
> +                   (("PREFIX \\?= .*")
> +                    (string-append "PREFIX ?= " out "\n" ))
> +                   (("UDEV_DIR=.*")
> +                    (string-append "UDEV_DIR=" out "/lib/udev/\n"))
> +                   (("GIT_BRANCH = .*")
> +                    (string-append "GIT_BRANCH = \"master\"\n"))
> +                   (("GIT_HASH = .*")
> +                    (string-append "GIT_HASH = \"" ,commit "\"\n"))
> +                   (("GIT_HASH_SHORT = .*")
> +                    (string-append "GIT_HASH_SHORT = \"" ,commit-short "\"\n"))
> +                   (("GIT_DATE = .*")
> +                    (string-append "GIT_DATE = \"" ,date "\"\n"))))
> +               #t)))))

Upstream has released 0.6 in the meantime, so these fixes will have to be checked if
they're still needed. In case they are, this part will have to be rewritten with G-Expressions.
The dependencies should be restyled as well.


I know this a very late reply, but could you send a revised patch for this? (in case you're still maintaining it locally)

Thanks,
Bruno
Thomas Albers Raviola April 1, 2023, 3:41 p.m. UTC | #2
Hi Bruno,

yes, I am still maintaining a local copy of this package.

I have a question regarding your observations though. Could you please
reference some example in the guix source base, how one is supposed to
rewrite the fixes as a G-Expression in this context?

I am not familiar with this specific use. Also the manual does not show
something similar AFAIK.

Regards,

Thomas

Bruno Victal <mirai@makinata.eu> writes:

> Hi Thomas,
>
> On 2021-09-14 11:56, Thomas Albers via Guix-patches via wrote:
>> ---
>>  gnu/packages/electronics.scm | 66 ++++++++++++++++++++++++++++++++++++
>>  1 file changed, 66 insertions(+)
>> 
>> diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
>> index 0e985c9750..e6abdc6562 100644
>> --- a/gnu/packages/electronics.scm
>> +++ b/gnu/packages/electronics.scm
>> @@ -4,6 +4,7 @@
>>  ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
>>  ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
>>  ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
>> +;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
>>  ;;;
>>  ;;; This file is part of GNU Guix.
>>  ;;;
>> @@ -24,6 +25,7 @@
>>    #:use-module (guix utils)
>>    #:use-module (guix packages)
>>    #:use-module (guix download)
>> +  #:use-module (guix git-download)
>>    #:use-module ((guix licenses) #:prefix license:)
>>    #:use-module (guix build-system gnu)
>>    #:use-module (guix build-system cmake)
>> @@ -333,3 +335,67 @@ from ALSA, ESD, and COMEDI sources.  This package currently does not include
>>  support for ESD sources.")
>>      (home-page "http://xoscope.sourceforge.net/")
>>      (license license:gpl2+)))
>> +
>> +(define-public minipro
>> +  ;; Information needed to fix Makefile
>> +  (let* ((commit "0774b071361366c866ec97302ec02972379418b0")
>> +         (commit-short (substring commit 0 8))
>> +         ;; git show -s --format="%ci"
>> +         (date "2021-08-05 07:54:42 +0300")
>> +         (revision "1"))
>> +    (package
>> +      (name "minipro")
>> +      (version (git-version "0.5" revision commit))
>
> [...]
>
>> +      (source
>> +       (origin
>> +         (method git-fetch)
>> +         (uri (git-reference
>> +               (url "https://gitlab.com/DavidGriffith/minipro.git")
>> +               (commit commit)))
>> +         (sha256
>> +          (base32 "174m2dwgpxwkm1yrf54p6k5skihgpcd1iblxivg2f6xbdrsz8b18"))))
>> +      (native-inputs
>> +       `(("pkg-config" ,pkg-config)
>> +         ("which" ,which)
>> +         ("sed" ,sed)))
>> +      (inputs
>> +       `(("libusb" ,libusb)))
>
> [...]
>
>> +      (build-system gnu-build-system)
>> +      (arguments
>> +       `(#:phases
>> +         (modify-phases %standard-phases
>> +           (delete 'configure)
>> +           (delete 'check)
>> +           (add-before 'build 'fix-makefile
>> +             (lambda* (#:key outputs #:allow-other-keys)
>> +               ;; Modify the makefile so that its 'PREFIX' variable points to
>> +               ;; "out".
>> +               ;; Also fix the folder to where the udev rules are installed and
>> +               ;; some git related variables that minipro expects.
>> +               (let ((out (assoc-ref outputs "out")))
>> +                 (substitute* "Makefile"
>> +                   (("PREFIX \\?= .*")
>> +                    (string-append "PREFIX ?= " out "\n" ))
>> +                   (("UDEV_DIR=.*")
>> +                    (string-append "UDEV_DIR=" out "/lib/udev/\n"))
>> +                   (("GIT_BRANCH = .*")
>> +                    (string-append "GIT_BRANCH = \"master\"\n"))
>> +                   (("GIT_HASH = .*")
>> +                    (string-append "GIT_HASH = \"" ,commit "\"\n"))
>> +                   (("GIT_HASH_SHORT = .*")
>> +                    (string-append "GIT_HASH_SHORT = \"" ,commit-short "\"\n"))
>> +                   (("GIT_DATE = .*")
>> +                    (string-append "GIT_DATE = \"" ,date "\"\n"))))
>> +               #t)))))
>
> Upstream has released 0.6 in the meantime, so these fixes will have to be checked if
> they're still needed. In case they are, this part will have to be rewritten with G-Expressions.
> The dependencies should be restyled as well.
>
>
> I know this a very late reply, but could you send a revised patch for this? (in case you're still maintaining it locally)
>
> Thanks,
> Bruno
Bruno Victal April 1, 2023, 5:46 p.m. UTC | #3
On 2023-04-01 16:41, Thomas Albers Raviola via Guix-patches via wrote:
> Hi Bruno,
> 
> yes, I am still maintaining a local copy of this package.
> 
> I have a question regarding your observations though. Could you please
> reference some example in the guix source base, how one is supposed to
> rewrite the fixes as a G-Expression in this context?

I've edited mympd, libavif, autokey, rng-tools, dropwatch and nvme-cli to use
G-Expressions but you can also take a look at other packages for inspiration.

Another source of inspiration is to grep for commits that perform conversion
to G-Expressions.

> I am not familiar with this specific use. Also the manual does not show
> something similar AFAIK.

Right, it's a bit unfortunate in this department at the moment.


Cheers,
Bruno
Thomas Albers Raviola April 2, 2023, 10:13 p.m. UTC | #4
Hi Bruno,

I have sent a new patch with the new dependencies and G-Expressions. The
fix for the Makefile is still needed.

I fail to see the purpose of G-Expressions over normal backticks for the
build phases as no file-like or package is being used inside of them. I
am missing something?

Cheers,
Thomas
Bruno Victal April 3, 2023, 11:17 a.m. UTC | #5
On 2023-04-02 23:13, Thomas Albers Raviola via Guix-patches via wrote:
> 
> I fail to see the purpose of G-Expressions over normal backticks for the
> build phases as no file-like or package is being used inside of them. I
> am missing something?

They allow for a separation between host and build code.
There's a post at <https://guix.gnu.org/blog/2021/the-big-change/> and
a chapter in the manual which explains them in further detail.

One bonus point is that for outputs, instead of writing:

--8<---------------cut here---------------start------------->8---
#~(let ((out (assoc-ref %outputs "out")))
    (list (string-append "VERSION=" #$version)
          (string-append "PREFIX=" out)
--8<---------------cut here---------------end--------------->8---

you can directly write this without the assoc-ref machinery:

--8<---------------cut here---------------start------------->8---
#~(list (string-append "VERSION=" #$version)
        (string-append "PREFIX=" #$output)
--8<---------------cut here---------------end--------------->8---


HTH!


Cheers,
Bruno
Thomas Albers Raviola April 3, 2023, 1:20 p.m. UTC | #6
Thanks, this does indeed help. I've send a last patch removing
assoc-ref.

Cheers,
Thomas
diff mbox series

Patch

diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index 0e985c9750..e6abdc6562 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -4,6 +4,7 @@ 
 ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@ 
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
@@ -333,3 +335,67 @@  from ALSA, ESD, and COMEDI sources.  This package currently does not include
 support for ESD sources.")
     (home-page "http://xoscope.sourceforge.net/")
     (license license:gpl2+)))
+
+(define-public minipro
+  ;; Information needed to fix Makefile
+  (let* ((commit "0774b071361366c866ec97302ec02972379418b0")
+         (commit-short (substring commit 0 8))
+         ;; git show -s --format="%ci"
+         (date "2021-08-05 07:54:42 +0300")
+         (revision "1"))
+    (package
+      (name "minipro")
+      (version (git-version "0.5" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/DavidGriffith/minipro.git")
+               (commit commit)))
+         (sha256
+          (base32 "174m2dwgpxwkm1yrf54p6k5skihgpcd1iblxivg2f6xbdrsz8b18"))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("which" ,which)
+         ("sed" ,sed)))
+      (inputs
+       `(("libusb" ,libusb)))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'check)
+           (add-before 'build 'fix-makefile
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Modify the makefile so that its 'PREFIX' variable points to
+               ;; "out".
+               ;; Also fix the folder to where the udev rules are installed and
+               ;; some git related variables that minipro expects.
+               (let ((out (assoc-ref outputs "out")))
+                 (substitute* "Makefile"
+                   (("PREFIX \\?= .*")
+                    (string-append "PREFIX ?= " out "\n" ))
+                   (("UDEV_DIR=.*")
+                    (string-append "UDEV_DIR=" out "/lib/udev/\n"))
+                   (("GIT_BRANCH = .*")
+                    (string-append "GIT_BRANCH = \"master\"\n"))
+                   (("GIT_HASH = .*")
+                    (string-append "GIT_HASH = \"" ,commit "\"\n"))
+                   (("GIT_HASH_SHORT = .*")
+                    (string-append "GIT_HASH_SHORT = \"" ,commit-short "\"\n"))
+                   (("GIT_DATE = .*")
+                    (string-append "GIT_DATE = \"" ,date "\"\n"))))
+               #t)))))
+      (synopsis "Controls the TL866xx series of chip programmers")
+      (description "minipro is designed to program or read the contents of
+chips supported by the TL866xx series of programmers.  This includes many
+microcontrollers, ROMs, EEPROMs and PLDs.
+
+To use this program without root privileges you must install the necessary udev
+rules.  This can be done by extending @code{udev-service-type} in your
+@code{operating-system} configuration with this package.  E.g.:
+@code{(udev-rules-service 'minipro minipro #:groups '(\"plugdev\")}.
+Additionally your user must be member of the @code{plugdev} group.")
+      (home-page "https://gitlab.com/DavidGriffith/minipro")
+      (license license:gpl3+))))