mbox series

[bug#49383,00/21] Add hyperfine

Message ID 20210704163203.31351-1-ds815@gmx.com
Headers show
Series Add hyperfine | expand

Message

Domagoj Stolfa July 4, 2021, 4:31 p.m. UTC
Hyperfine is a rust utility used for benchmarking, see:
https://github.com/sharkdp/hyperfine.

This patch series packages hyperfine in Guix, and each patch is adding the
necessary dependencies for hyperfine to build.

I've tested 5 rounds of building hyperfine and everything seems to be in order
and have been using it locally.

Domagoj Stolfa (21):
  gnu: Add hyperfine.
  gnu: Add rust-colored-2
  gnu: Add rust-rust-decimal-1
  gnu: Add rust-statistical-1
  gnu: Add rust-postgres-0.19
  gnu: Add rust-tokio-postgres-0.7
  gnu: Add rust-postgres-protocol-0.6
  gnu: Add rust-postgres-types-0.2
  gnu: Add rust-socket2-0.4
  gnu: Add rust-hmac-0.11
  gnu: Add rust-crypto-mac-0.11
  gnu: Add rust-cipher-0.3
  gnu: Add rust-streebog-0.9
  gnu: Add rust-hmac-0.10
  gnu: Add rust-bit-vec-0.6
  gnu: Add rust-eui48-0.4
  gnu: Add rust-geo-types-0.7
  gnu: Add rust-geo-types-0.6
  gnu: Add rust-rstar-0.8
  gnu: Add rust-postgres-derive-0.4
  gnu: Add rust-pdqselect-0.1

 gnu/packages/crates-io.scm | 628 +++++++++++++++++++++++++++++++++++++
 gnu/packages/rust-apps.scm |  40 +++
 2 files changed, 668 insertions(+)

Comments

Xinglu Chen July 11, 2021, 9:26 a.m. UTC | #1
On Sun, Jul 04 2021, Domagoj Stolfa wrote:

> Hyperfine is a rust utility used for benchmarking, see:
> https://github.com/sharkdp/hyperfine.
>
> This patch series packages hyperfine in Guix, and each patch is adding the
> necessary dependencies for hyperfine to build.
>
> I've tested 5 rounds of building hyperfine and everything seems to be in order
> and have been using it locally.
>
> Domagoj Stolfa (21):
>   gnu: Add hyperfine.
>   gnu: Add rust-colored-2
>   gnu: Add rust-rust-decimal-1
>   gnu: Add rust-statistical-1
>   gnu: Add rust-postgres-0.19
>   gnu: Add rust-tokio-postgres-0.7
>   gnu: Add rust-postgres-protocol-0.6
>   gnu: Add rust-postgres-types-0.2
>   gnu: Add rust-socket2-0.4
>   gnu: Add rust-hmac-0.11
>   gnu: Add rust-crypto-mac-0.11
>   gnu: Add rust-cipher-0.3
>   gnu: Add rust-streebog-0.9
>   gnu: Add rust-hmac-0.10
>   gnu: Add rust-bit-vec-0.6
>   gnu: Add rust-eui48-0.4
>   gnu: Add rust-geo-types-0.7
>   gnu: Add rust-geo-types-0.6
>   gnu: Add rust-rstar-0.8
>   gnu: Add rust-postgres-derive-0.4
>   gnu: Add rust-pdqselect-0.1

Ideally, the patches should be in the reverse order, so that the
dependencies of ‘hyperfine’ gets added before ‘hyperfine’ itself gets
added.

A more general suggestion after reviewing the patches is to run ‘guix
lint’ after adding new packages, it will often catch a lot of the
common mistakes people make; don’t just rely on the importer to do
everything.

I didn’t build any of the packages as I was building GHC while reviewing
the packages, hopefully I will get to that.  :)
Domagoj Stolfa July 11, 2021, 11:27 a.m. UTC | #2
Hi Xinglu:

Thanks for taking the effort to look through everything!

Regarding the multiple versions, when I'd tried building with the same versions
of things already imported (e.g. hmac-0.11 and hmac-0.10) it didn't work.
Same is true for rust-geo-types. I'll investigate if maybe it was caused by
some oversight on my end and try to eleminate as many duplicates as possible.

> Ideally, the patches should be in the reverse order, so that the
> dependencies of ‘hyperfine’ gets added before ‘hyperfine’ itself gets
> added.

ACK.

> A more general suggestion after reviewing the patches is to run ‘guix
> lint’ after adding new packages, it will often catch a lot of the
> common mistakes people make; don’t just rely on the importer to do
> everything.

Will do, I'd ran it for hyperfine itself and had an (in retrospect, a very
silly) assumption that it would lint the dependencies too.

Will update the patches based on your comments and send them in as soon as I
have something working with the updated patch set.

Thanks again!

--
Domagoj
Domagoj Stolfa July 11, 2021, 2:55 p.m. UTC | #3
Hi:

I've gone through the comments and made sure that every `guix lint` and
`guix build` is happy. I've update what made sense to update for this patch,
however for anything that I could not update (e.g. there are too many packages
depending on it) -- I simply added a new version and inherited from it in other
versions.

For rust-cipher, I added a new package, rust-cipher-0.3 and then moved all the
packages that use rust-cipher-0.2 to use rust-cipher-0.3. I don't know if there
is anything else that depends on rust-cipher-0.2, so I did not remove it.

Any duplicate package with different versions must unfortunately be added in
order for things to build (e.g. geo-types@0.7 and geo-types@0.6). I've tried
everything, but cargo is generally unhappy about not having a particular
version.

Domagoj Stolfa (26):
  gnu: Add rust-pdqselect-0.1
  gnu: Add rust-postgres-derive-0.4
  gnu: Add rust-rstar-0.9
  gnu: Add rust-geo-types-0.7
  gnu: Add rust-bit-vec-0.6
  gnu: Add rust-cipher-0.3
  gnu: rust-crypto-mac-0.10: Use rust-cipher-0.3.
  gnu: rust-ctr-0.6: Use rust-cipher-0.3.
  gnu: rust-eax-0.3: Use rust-cipher-0.3.
  gnu: rust-win-crypto-ng-0.4: Use rust-cipher-0.3.
  gnu: Add rust-crypto-mac-0.11
  gnu: Add rust-streebog-0.9
  gnu: Add rust-hmac-0.11
  gnu: Add rust-hmac-0.10
  gnu: Add rust-postgres-protocol-0.6
  gnu: Add rust-eui48-0.4
  gnu: Add rust-rstar-0.8
  gnu: Add rust-geo-types-0.6
  gnu: Add rust-postgres-types-0.2
  gnu: Add rust-socket2-0.4
  gnu: Add rust-tokio-postgres-0.7
  gnu: Add rust-postgres-0.19
  gnu: Add rust-statistical-1
  gnu: Add rust-rust-decimal-1
  gnu: Add rust-colored-2
  gnu: Add hyperfine.

 gnu/packages/crates-graphics.scm |  38 +-
 gnu/packages/crates-io.scm       | 701 ++++++++++++++++++++++++++++---
 gnu/packages/rust-apps.scm       |  40 ++
 3 files changed, 713 insertions(+), 66 deletions(-)