[PATCH] * gnu: Add siglo.

  • Open
  • quality assurance status badge
Details
4 participants
  • Wamm K. D
  • Ludovic Courtès
  • Maxime Devos
  • Jean Pierre De Jesus DIAZ
Owner
unassigned
Submitted by
Wamm K. D
Severity
normal
W
W
Wamm K. D wrote on 3 Aug 2022 22:23
(address . guix-patches@gnu.org)(name . Wamm K. D)(address . jaft.r@outlook.com)
BY5PR07MB70295CC0C994E9AF0BCC5300999C9@BY5PR07MB7029.namprd07.prod.outlook.com
* gnu/packages/flashing-tools.scm (siglo): Add package.
---
gnu/packages/flashing-tools.scm | 78 +++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)

Toggle diff (107 lines)
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 08300cb860..4de3bee294 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -35,6 +35,7 @@ (define-module (gnu packages flashing-tools)
#:use-module (gnu packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (gnu packages autotools)
#:use-module (gnu packages admin)
@@ -44,11 +45,19 @@ (define-module (gnu packages flashing-tools)
#:use-module (gnu packages compression)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages groff)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-crypto)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages libusb)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages pciutils)
@@ -559,3 +568,72 @@ (define-public uuu
(description "@code{uuu} is a command line tool, evolved out of MFGTools.
It can be used to upload images to I.MX SoC's using at least their boot ROM.")
(license license:bsd-3)))
+
+(define-public siglo
+ (package
+ (name "siglo")
+ (version "0.9.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://github.com/alexr4535/" name "/"))
+ (commit (string-append "v" version))))
+ (sha256 (base32
+ "0c08xvr6w77dm5mgzlh6imqdi13bshnp9rxmskvp3j7fki3aqcp2"))))
+ (build-system meson-build-system)
+ (native-inputs (list gettext-minimal
+ ;; for 'glib-compile-resources', 'glib-compile-schemas'
+ `(,glib "bin")
+ pkg-config
+ ;; for gtk-update-icon-cache
+ `(,gtk+ "bin")))
+ (inputs (list desktop-file-utils
+ appstream-glib
+ python
+ python-pyxdg
+ python-gatt
+ python-dbus
+ python-pygobject
+ python-requests
+ python-urllib3
+ python-chardet
+ python-certifi
+ python-idna))
+ (propagated-inputs (list gtk+))
+ (arguments
+ `(#:glib-or-gtk? #t
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'remove-internet-using-test
+ (lambda _
+ (substitute* "data/meson.build"
+ (("appstream_util.found\\(\\)") "false")
+ (((string-append
+ "install_data[(]'siglo\\.service', "
+ "install_dir: '/etc/systemd/user/'[)]"))
+ ""))))
+ (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/siglo")
+ `("GUIX_PYTHONPATH" = ,(map
+ (lambda (python-input)
+ (string-append (cdr python-input)
+ "/lib/python"
+ ,(version-major+minor
+ (package-version python))
+ "/site-packages"))
+ (filter
+ (lambda (input)
+ (string-prefix? "python" (car input)))
+ inputs)))
+ `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
+ (synopsis "GTK app to sync InfiniTime watch with PinePhone")
+ (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
+watches running the InfiniTime operating system, via bluetooth.
+
+Users can also sync the time of their watch to the time of the device running
+@code{siglo} as well as check the battery charge of their watch or what version
+of firmware their watch is running.")
+ (home-page "https://github.com/theironrobin/siglo")
+ (license license:mpl2.0)))
--
2.37.1
J
J
Jean Pierre De Jesus DIAZ wrote on 11 Aug 2022 13:56
(name . 56960@debbugs.gnu.org)(address . 56960@debbugs.gnu.org)
XstYJbX5smxZuTd-017ZvUVs-6SO8I6qfWAbVkAVrx685Q6CIWBTVlp-NVdYtrZFrxn6mtYbIT3ocRLs5r8KrByM4tEcFYr0aQXutSKaXs8=@jeandudey.tech
Hello,

Just a quick review.

Toggle quote (2 lines)
>+ (url (string-append "https://github.com/alexr4535/"name "/"))

`name' is discouraged from being used on the source URL.

If the package name changes, the URL does too. Can't recall where I saw it if
on the documentation or IRC.

Toggle quote (5 lines)
>+ (arguments
>+ `(#:glib-or-gtk? #t
>+ #:phases
>+ (modify-phases %standard-phases

You'll probably want to use a list (argument (list ...)) instead of
quasi-quoting, and also, use G-Expressions, see (guix)G-Expressions:


As the method used for the package is being phased out.

For example:

(arguments
(list #:glib-or-gtk? #t
#:phases
#~(modify-phases %standard-phases
...)))

Toggle quote (3 lines)
>+ (wrap-program (string-append (assoc-ref outputs "out")
>+ "/bin/siglo")

After using G-Expressions, this can be simplified to:

(wrap-program (string-append #$output "/bin/siglo")
...)

Toggle quote (2 lines)
>+ (synopsis "GTK app to sync InfiniTime watch with PinePhone")

GTK is an implementation detail, no need to be specified, and if necessary,
better suited for the description.

See (guix)Synopses and Descriptions:


For example, variations could include:

* "Application to synchronize InfiniTime with PinePhone"
* "Synchronize InifniTime with PinePhone"
* "Smartwatch synchronization application"
* etc.

Keep in mind that synopsis != description. Probably someone with more experience
than me could correct me on this topic.

Toggle quote (3 lines)
>+ (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
>+watches running the InfiniTime operating system, via bluetooth.

flash -> update (non-technical term).
watches -> PineTime watches (or PineTime smartwatches).
bluetooth > Bluetooth.

Toggle quote (4 lines)
>+Users can also sync the time of their watch to the time of the device running
>+@code{siglo} as well as check the battery charge of their watch or what version
>+of firmware their watch is running.

sync -> synchronize.

Maybe @itemize or @enumerate could be used to list the features provided, like so:

Siglo (or @code{siglo}) provides the following features:

@itemize
@item Retrieve the version of the InfiniTime firmware running.
@item Check the battery charge.
@item Synchronize the time.
@end itemize

Toggle quote (3 lines)
>--- a/gnu/packages/flashing-tools.scm
>+++ b/gnu/packages/flashing-tools.scm

Not entirely sure if this belongs in this category. Or if there's another applicable.

Jean-Pierre De Jesus DIAZ
M
M
Maxime Devos wrote on 11 Aug 2022 21:00
ea744f19-6db3-d1ae-1d10-482aa67c9040@telenet.be
On 03-08-2022 22:23, Wamm K. D wrote:
See response by other reviewer (though I'm not sure about the 'name'
thing, if we change the package name it's easy to adjust the url field
too), and ...
Toggle quote (1 lines)
> + (propagated-inputs (list gtk+))
... why is it propagated?
Toggle quote (1 lines)
> + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
Using getenv in this way is incorrect when cross-compiling because it
will look in native-inputs instead of inputs, but correcting that can
wait until gtk+ is actually cross-compilable (and then we could write a
convenient procedure for that).
For GUIX_PYTHONPATH, search-path-as-list can be useful (and slightly
less fragile, as it does not depend on labels).
Greetings,
Maxime.
Attachment: OpenPGP_signature
L
L
Ludovic Courtès wrote on 31 Aug 2022 22:44
Re: bug#56960: [PATCH] * gnu: Add siglo.
(name . Wamm K. D)(address . jaft.r@outlook.com)
87k06o9m89.fsf_-_@gnu.org
Hi Wamm,

Could you send an updated patch taking into accounts the comments made
by Jean Pierre and Maxime?

Thanks in advance!

Ludo’.

Jean Pierre De Jesus DIAZ <me@jeandudey.tech> skribis:

Toggle quote (88 lines)
> Hello,
>
> Just a quick review.
>
>>+ (url (string-append "https://github.com/alexr4535/" name "/"))
>
> `name' is discouraged from being used on the source URL.
>
> If the package name changes, the URL does too. Can't recall where I saw it if
> on the documentation or IRC.
>
>>+ (arguments
>>+ `(#:glib-or-gtk? #t
>>+ #:phases
>>+ (modify-phases %standard-phases
>
> You'll probably want to use a list (argument (list ...)) instead of
> quasi-quoting, and also, use G-Expressions, see (guix)G-Expressions:
>
> https://guix.gnu.org/manual/en/html_node/G_002dExpressions.html
>
> As the method used for the package is being phased out.
>
> For example:
>
> (arguments
> (list #:glib-or-gtk? #t
> #:phases
> #~(modify-phases %standard-phases
> ...)))
>
>>+ (wrap-program (string-append (assoc-ref outputs "out")
>>+ "/bin/siglo")
>
> After using G-Expressions, this can be simplified to:
>
> (wrap-program (string-append #$output "/bin/siglo")
> ...)
>
>>+ (synopsis "GTK app to sync InfiniTime watch with PinePhone")
>
> GTK is an implementation detail, no need to be specified, and if necessary,
> better suited for the description.
>
> See (guix)Synopses and Descriptions:
>
> https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html
>
> For example, variations could include:
>
> * "Application to synchronize InfiniTime with PinePhone"
> * "Synchronize InifniTime with PinePhone"
> * "Smartwatch synchronization application"
> * etc.
>
> Keep in mind that synopsis != description. Probably someone with more experience
> than me could correct me on this topic.
>
>>+ (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
>>+watches running the InfiniTime operating system, via bluetooth.
>
> flash -> update (non-technical term).
> watches -> PineTime watches (or PineTime smartwatches).
> bluetooth > Bluetooth.
>
>>+Users can also sync the time of their watch to the time of the device running
>>+@code{siglo} as well as check the battery charge of their watch or what version
>>+of firmware their watch is running.
>
> sync -> synchronize.
>
> Maybe @itemize or @enumerate could be used to list the features provided, like so:
>
> Siglo (or @code{siglo}) provides the following features:
>
> @itemize
> @item Retrieve the version of the InfiniTime firmware running.
> @item Check the battery charge.
> @item Synchronize the time.
> @end itemize
>
>>--- a/gnu/packages/flashing-tools.scm
>>+++ b/gnu/packages/flashing-tools.scm
>
> Not entirely sure if this belongs in this category. Or if there's another applicable.
>
> —
> Jean-Pierre De Jesus DIAZ
W
W
Wamm K. D. wrote on 5 Sep 2022 00:27
(name . Ludovic Courtès)(address . ludo@gnu.org)
BY5PR07MB7029ABFD1CD3F672E69B5028997C9@BY5PR07MB7029.namprd07.prod.outlook.com
Hey, Ludo.

I will; my spouse recently had surgery so my time's been a tad bit more stretched from other activities.

I'll make sure to get a response, though.

Wamm

On Wed, 31 Aug 2022 15:44:46 -0500,
Ludovic Courtès wrote:
Toggle quote (100 lines)
>
> Hi Wamm,
>
> Could you send an updated patch taking into accounts the comments made
> by Jean Pierre and Maxime?
>
> Thanks in advance!
>
> Ludo’.
>
> Jean Pierre De Jesus DIAZ <me@jeandudey.tech> skribis:
>
> > Hello,
> >
> > Just a quick review.
> >
> >>+ (url (string-append "https://github.com/alexr4535/" name "/"))
> >
> > `name' is discouraged from being used on the source URL.
> >
> > If the package name changes, the URL does too. Can't recall where I saw it if
> > on the documentation or IRC.
> >
> >>+ (arguments
> >>+ `(#:glib-or-gtk? #t
> >>+ #:phases
> >>+ (modify-phases %standard-phases
> >
> > You'll probably want to use a list (argument (list ...)) instead of
> > quasi-quoting, and also, use G-Expressions, see (guix)G-Expressions:
> >
> > https://guix.gnu.org/manual/en/html_node/G_002dExpressions.html
> >
> > As the method used for the package is being phased out.
> >
> > For example:
> >
> > (arguments
> > (list #:glib-or-gtk? #t
> > #:phases
> > #~(modify-phases %standard-phases
> > ...)))
> >
> >>+ (wrap-program (string-append (assoc-ref outputs "out")
> >>+ "/bin/siglo")
> >
> > After using G-Expressions, this can be simplified to:
> >
> > (wrap-program (string-append #$output "/bin/siglo")
> > ...)
> >
> >>+ (synopsis "GTK app to sync InfiniTime watch with PinePhone")
> >
> > GTK is an implementation detail, no need to be specified, and if necessary,
> > better suited for the description.
> >
> > See (guix)Synopses and Descriptions:
> >
> > https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html
> >
> > For example, variations could include:
> >
> > * "Application to synchronize InfiniTime with PinePhone"
> > * "Synchronize InifniTime with PinePhone"
> > * "Smartwatch synchronization application"
> > * etc.
> >
> > Keep in mind that synopsis != description. Probably someone with more experience
> > than me could correct me on this topic.
> >
> >>+ (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
> >>+watches running the InfiniTime operating system, via bluetooth.
> >
> > flash -> update (non-technical term).
> > watches -> PineTime watches (or PineTime smartwatches).
> > bluetooth > Bluetooth.
> >
> >>+Users can also sync the time of their watch to the time of the device running
> >>+@code{siglo} as well as check the battery charge of their watch or what version
> >>+of firmware their watch is running.
> >
> > sync -> synchronize.
> >
> > Maybe @itemize or @enumerate could be used to list the features provided, like so:
> >
> > Siglo (or @code{siglo}) provides the following features:
> >
> > @itemize
> > @item Retrieve the version of the InfiniTime firmware running.
> > @item Check the battery charge.
> > @item Synchronize the time.
> > @end itemize
> >
> >>--- a/gnu/packages/flashing-tools.scm
> >>+++ b/gnu/packages/flashing-tools.scm
> >
> > Not entirely sure if this belongs in this category. Or if there's another applicable.
> >
> > —
> > Jean-Pierre De Jesus DIAZ
W
W
Wamm K. D. wrote on 26 Sep 2022 20:33
Re: [bug#56960] [PATCH] * gnu: Add siglo.
BY5PR07MB7029E0D5C6D59E7951E40E6099529@BY5PR07MB7029.namprd07.prod.outlook.com
On Thu, 11 Aug 2022 11:56:00 +0000,
Jean Pierre De Jesus DIAZ wrote:
Toggle quote (4 lines)
>
> You'll probably want to use a list (argument (list ...)) instead of
> quasi-quoting, and also, use G-Expressions

Makes sense; adjusted.

Toggle quote (5 lines)
> >+ (synopsis "GTK app to sync InfiniTime watch with PinePhone")
>
> GTK is an implementation detail, no need to be specified, and if necessary,
> better suited for the description.

That makes sense though, as a disabled person, I would warn that the
level of non-specificity can make things more difficult, as well. A
synopsis such as "Smartwatch synchronization application" is so
non-specific that, if I already know I'm looking for such an
application, I'm forced to dig through the much more detailed
description to figure out if it's relevant to my particular smartwatch.

This creates extra steps and more cognitive overload whereas a phrase
such as "InfiniTime watch", while dealing with the implementation,
allows me to easily tell whether this /particular/ smartphone
sync. app. has to do with the device I'm trying to use and, now, I can
take a look at the description to see if it has the features, etc. I want.

Otherwise, I have to look at the description of every smartphone
sync. app. (and all of the extra energy/effort could be for naught if
none of the smartphone sync. app.s available on Guix, at the moment,
deal with the smartwatch brand or OS that I'm looking for (like, say,
WaspOS for the PineTime).

This isn't at its absolute worst with the Guix CLI but, when a GUI is
made (say, in the style of Synaptic), it could be designed that the
packages and their synopses are first displayed and one has to click
on the package to see the description or expand it in some
manner. This increases the effort beyond just cognitive but to an
additional task.

I'm going to go with "Synchronize InfiniTime watch with PinePhone" as
mentioning the OS allows the user to know whether it's relevant to
their particular watch while the inclusion of the word "watch" lets
those who are unfamiliar with the tech. know that "InfiniTime" is
related to watches and watches are, in some way, involved.

Toggle quote (7 lines)
> >+ (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
> >+watches running the InfiniTime operating system, via bluetooth.
>
> flash -> update (non-technical term).
> watches -> PineTime watches (or PineTime smartwatches).
> bluetooth > Bluetooth.

No disagreements here; this is definitely clearer ("update", in
particular, as, while flashing is /how/ we update things, the really
relevant bit is that we're updating to a newer version; this phrasing
is much more clear).

I opted for "smartwatches" as the terminology is more specific and
accurate (without any more cognitive strain or processing).

Toggle quote (2 lines)
> sync -> synchronize.

Makes sense and done.

Toggle quote (2 lines)
> Maybe @itemize or @enumerate could be used to list the features provided

Yeah; that's much more clear to read and easily digest. Done.



On Thu, 11 Aug 2022 14:00:00 -0500,
Maxime Devos wrote:
Toggle quote (5 lines)
>
> > + (propagated-inputs (list gtk+))
>
> ... why is it propagated?

That's…a fair question; I could've sworn I'd been told, before, to
propagate =gtk+= but, looking through past E-mails, I can't find
anything to support that. Maybe I confused ~propagated-inputs~ and
~inputs~, for some reason.

In any case, I've corrected that.

Toggle quote (3 lines)
> For GUIX_PYTHONPATH, search-path-as-list can be useful (and slightly
> less fragile, as it does not depend on labels).

Are you able to demonstrate what this might look like, especially with
in the context of using G-Expressions?

I couldn't find any examples of ~search-path-as-list~ in the
repo. which easily made this clear to me, unfortunately.

Thanks a ton.
J
BY5PR07MB70299E4845FD4721AB5DF48399B89@BY5PR07MB7029.namprd07.prod.outlook.com
Just checking back in on this one.






On Monday, September 26, 2022 at 01:33:59 PM CDT, Wamm K. D. <jaft.r@outlook.com> wrote:





On Thu, 11 Aug 2022 11:56:00 +0000,
Jean Pierre De Jesus DIAZ wrote:
Toggle quote (4 lines)
>
> You'll probably want to use a list (argument (list ...)) instead of
> quasi-quoting, and also, use G-Expressions

Makes sense; adjusted.

Toggle quote (5 lines)
> >+  (synopsis "GTK app to sync InfiniTime watch with PinePhone")
>
> GTK is an implementation detail, no need to be specified, and if necessary,
> better suited for the description.

That makes sense though, as a disabled person, I would warn that the
level of non-specificity can make things more difficult, as well. A
synopsis such as "Smartwatch synchronization application" is so
non-specific that, if I already know I'm looking for such an
application, I'm forced to dig through the much more detailed
description to figure out if it's relevant to my particular smartwatch.

This creates extra steps and more cognitive overload whereas a phrase
such as "InfiniTime watch", while dealing with the implementation,
allows me to easily tell whether this /particular/ smartphone
sync. app. has to do with the device I'm trying to use and, now, I can
take a look at the description to see if it has the features, etc. I want.

Otherwise, I have to look at the description of every smartphone
sync. app. (and all of the extra energy/effort could be for naught if
none of the smartphone sync. app.s available on Guix, at the moment,
deal with the smartwatch brand or OS that I'm looking for (like, say,
WaspOS for the PineTime).

This isn't at its absolute worst with the Guix CLI but, when a GUI is
made (say, in the style of Synaptic), it could be designed that the
packages and their synopses are first displayed and one has to click
on the package to see the description or expand it in some
manner. This increases the effort beyond just cognitive but to an
additional task.

I'm going to go with "Synchronize InfiniTime watch with PinePhone" as
mentioning the OS allows the user to know whether it's relevant to
their particular watch while the inclusion of the word "watch" lets
those who are unfamiliar with the tech. know that "InfiniTime" is
related to watches and watches are, in some way, involved.

Toggle quote (7 lines)
> >+  (description "@code{siglo} is a graphical tool to flash InfiniTime firmware to
> >+watches running the InfiniTime operating system, via bluetooth.
>
> flash -> update (non-technical term).
> watches -> PineTime watches (or PineTime smartwatches).
> bluetooth > Bluetooth.

No disagreements here; this is definitely clearer ("update", in
particular, as, while flashing is /how/ we update things, the really
relevant bit is that we're updating to a newer version; this phrasing
is much more clear).

I opted for "smartwatches" as the terminology is more specific and
accurate (without any more cognitive strain or processing).

Toggle quote (2 lines)
> sync -> synchronize.

Makes sense and done.

Toggle quote (2 lines)
> Maybe @itemize or @enumerate could be used to list the features provided

Yeah; that's much more clear to read and easily digest. Done.



On Thu, 11 Aug 2022 14:00:00 -0500,
Maxime Devos wrote:
Toggle quote (5 lines)
>
> > +    (propagated-inputs (list gtk+))
>
> ... why is it propagated?

That's…a fair question; I could've sworn I'd been told, before, to
propagate =gtk+= but, looking through past E-mails, I can't find
anything to support that. Maybe I confused ~propagated-inputs~ and
~inputs~, for some reason.

In any case, I've corrected that.


Toggle quote (4 lines)
> For GUIX_PYTHONPATH, search-path-as-list can be useful (and slightly
> less fragile, as it does not depend on labels).


Are you able to demonstrate what this might look like, especially with
in the context of using G-Expressions?

I couldn't find any examples of ~search-path-as-list~ in the
repo. which easily made this clear to me, unfortunately.

Thanks a ton.
L
L
Ludovic Courtès wrote on 16 Mar 2023 11:19
Re: bug#56960: [PATCH] * gnu: Add siglo.
(name . Jaft)(address . jaft.r@outlook.com)
873565j8wo.fsf_-_@gnu.org
Hi Jaft,

Jaft <jaft.r@outlook.com> skribis:

Toggle quote (2 lines)
> Just checking back in on this one.

I think we’re waiting for a second version of this patch from you,
taking into account comments that were made.

Could you send it or let us know if anything’s unclear?

Thanks in advance,
Ludovic.
J
(name . Ludovic Courtès)(address . ludo@gnu.org)
BY5PR07MB7029F2793D9362A1D73AD81C99BD9@BY5PR07MB7029.namprd07.prod.outlook.com
Hey, Ludovic.

I'd asked in my last E-mail if anyone was able to demonstrate what ~search-path-as-list~ might look like, especially within the context of using G-Expressions.

I hadn't been able to find any examples of ~search-path-as-list~ in the repo. which easily made it clear to me.

Playing around with it, the other day, things seemed to almost work with:

Toggle quote (25 lines)
> (arguments (list #:glib-or-gtk? #t
>                  #:phases       #~(modify-phases %standard-phases
>                                     (add-before 'configure 'remove-internet-using-test
>                                       (lambda _
>                                         (substitute* "data/meson.build"
>                                           (("appstream_util.found\\(\\)")              "false")
>                                           (((string-append
>                                               "install_data[(]'siglo\\.service', "
>                                               "install_dir: '/etc/systemd/user/'[)]")) ""))))
>                                     (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
>                                       (lambda* (#:key outputs inputs #:allow-other-keys)
>                                         (wrap-program (string-append #$output "/bin/siglo")
>                                           `("GUIX_PYTHONPATH" = ,(search-path-as-list
>                                                                    `(,(string-append "/lib/python"
>                                                                                      (version-major+minor
>                                                                                       (package-version python))
>                                                                                      "/site-packages"))
>                                                                    (map
>                                                                      cdr
>                                                                      (filter
>                                                                        (lambda (input)
>                                                                          (string-prefix? "python" (car input)))
>                                                                        inputs))))
>                                           `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))

Was this similar to what was in mind? I'm getting an error of "Unbound variable: version-major+minor"; I'm guessing I need to import "(guix utils)" through "#:import" but I'm not terribly familiar with that usage (or even the why and nuances thereof).


On Thursday, March 16, 2023 at 05:19:26 AM CDT, Ludovic Courtès <ludo@gnu.org> wrote:





Hi Jaft,

Jaft <jaft.r@outlook.com> skribis:

Toggle quote (2 lines)
> Just checking back in on this one.

I think we’re waiting for a second version of this patch from you,
taking into account comments that were made.

Could you send it or let us know if anything’s unclear?

Thanks in advance,
Ludovic.
J
(name . Ludovic Courtès)(address . ludo@gnu.org)
BY5PR07MB702916ED907009123051F1D999799@BY5PR07MB7029.namprd07.prod.outlook.com
Well, my naïve attempt of adding ~#:modules '((guix utils))~ (I'm not sure why I referred to that as ~#:import~, in my last E-mail…) didn't work; I just get back a "no code for module (guix utils)", in the logs.

I'm afraid I really don't understand why ~version-major+minor~ cannot be found, even with ~(guix utils)~ added as a module at the top level, or how to get around this.






On Friday, March 17, 2023 at 11:03:06 AM CDT, Jaft <jaft.r@outlook.com> wrote:





Hey, Ludovic.

I'd asked in my last E-mail if anyone was able to demonstrate what ~search-path-as-list~ might look like, especially within the context of using G-Expressions.

I hadn't been able to find any examples of ~search-path-as-list~ in the repo. which easily made it clear to me.

Playing around with it, the other day, things seemed to almost work with:

Toggle quote (25 lines)
> (arguments (list #:glib-or-gtk? #t
>                  #:phases       #~(modify-phases %standard-phases
>                                     (add-before 'configure 'remove-internet-using-test
>                                       (lambda _
>                                         (substitute* "data/meson.build"
>                                           (("appstream_util.found\\(\\)")              "false")
>                                           (((string-append
>                                               "install_data[(]'siglo\\.service', "
>                                               "install_dir: '/etc/systemd/user/'[)]")) ""))))
>                                     (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
>                                       (lambda* (#:key outputs inputs #:allow-other-keys)
>                                         (wrap-program (string-append #$output "/bin/siglo")
>                                           `("GUIX_PYTHONPATH" = ,(search-path-as-list
>                                                                    `(,(string-append "/lib/python"
>                                                                                      (version-major+minor
>                                                                                       (package-version python))
>                                                                                      "/site-packages"))
>                                                                    (map
>                                                                      cdr
>                                                                      (filter
>                                                                        (lambda (input)
>                                                                          (string-prefix? "python" (car input)))
>                                                                        inputs))))
>                                           `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))

Was this similar to what was in mind? I'm getting an error of "Unbound variable: version-major+minor"; I'm guessing I need to import "(guix utils)" through "#:import" but I'm not terribly familiar with that usage (or even the why and nuances thereof).


On Thursday, March 16, 2023 at 05:19:26 AM CDT, Ludovic Courtès <ludo@gnu.org> wrote:





Hi Jaft,

Jaft <jaft.r@outlook.com> skribis:

Toggle quote (2 lines)
> Just checking back in on this one.

I think we’re waiting for a second version of this patch from you,
taking into account comments that were made.

Could you send it or let us know if anything’s unclear?

Thanks in advance,
Ludovic.
W
W
Wamm K. D wrote on 9 Jan 22:58 +0100
[PATCH v2] gnu: Add siglo.
(address . 56960@debbugs.gnu.org)
PH0PR84MB1360B862D9CAC09584981AFD996A2@PH0PR84MB1360.NAMPRD84.PROD.OUTLOOK.COM
It seems I needed to unquote the gexp.


* gnu/packages/flashing-tools.scm (siglo): New variable.
---
gnu/packages/flashing-tools.scm | 81 +++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)

Toggle diff (105 lines)
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 6165845261..b4f465014f 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -53,13 +53,21 @@ (define-module (gnu packages flashing-tools)
#:use-module (gnu packages elf)
#:use-module (gnu packages embedded)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-crypto)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages libusb)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages linux)
@@ -654,3 +662,76 @@ (define-public qdl
(description "This tool communicates with USB devices of id 05c6:9008 to
upload a flash loader and use this to flash images.")
(license license:bsd-3))))
+
+(define-public siglo
+ (package
+ (name "siglo")
+ (version "0.9.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://github.com/alexr4535/" name "/"))
+ (commit (string-append "v" version))))
+ (sha256 (base32
+ "0c08xvr6w77dm5mgzlh6imqdi13bshnp9rxmskvp3j7fki3aqcp2"))))
+ (build-system meson-build-system)
+ (native-inputs (list gettext-minimal
+ ;; for 'glib-compile-resources', 'glib-compile-schemas'
+ `(,glib "bin")
+ pkg-config
+ ;; for gtk-update-icon-cache
+ `(,gtk+ "bin")))
+ (inputs (list appstream-glib
+ desktop-file-utils
+ gtk+
+ python
+ python-pyxdg
+ python-gatt
+ python-dbus
+ python-pygobject
+ python-requests
+ python-urllib3
+ python-chardet
+ python-certifi
+ python-idna))
+ (arguments
+ (list #:glib-or-gtk? #t
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'remove-internet-using-test
+ (lambda _
+ (substitute* "data/meson.build"
+ (("appstream_util.found\\(\\)") "false")
+ (((string-append
+ "install_data[(]'siglo\\.service', "
+ "install_dir: '/etc/systemd/user/'[)]"))
+ ""))))
+ (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/siglo")
+ `("GUIX_PYTHONPATH" = ,(search-path-as-list
+ `(,(string-append
+ "/lib/python"
+ #$(version-major+minor
+ (package-version python))
+ "/site-packages"))
+ (map cdr
+ (filter
+ (lambda (input)
+ (string-prefix? "python"
+ (car input)))
+ inputs))))
+ `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
+ (synopsis "Synchronize InfiniTime watch with PinePhone")
+ (description "@code{siglo} is a graphical tool to update InfiniTime firmware
+to PineTime smartwatches running the InfiniTime operating system, via Bluetooth.
+
+@code{siglo} provides the following features:
+
+@itemize
+@item Retrieve the version of the InfiniTime firmware running.
+@item Check the battery charge.
+@item Synchronize the time.
+@end itemize")
+ (home-page "https://github.com/theironrobin/siglo")
+ (license license:mpl2.0)))
--
2.41.0
?