Subject: [bug#66199] [PATCH] gnu: librepcb: Update to 1.0.0.

From: Vinicius Monego <[email-masked]>
Date: Tue, 26 Sep 2023 00:37:20 +0000

Hello,

Em 25/09/2023 17:27, pinoaffe escreveu:
> * gnu/packages/engineering.scm (librepcb): Update to 1.0.0.

Thank you.

The commit message should also mention the switch to cmake-build-system, 
the "not overriding" of the configure phase, the new inputs and the test 
skip. I have a few more comments below.

> ---
>   gnu/packages/engineering.scm | 29 +++++++++++++----------------
>   1 file changed, 13 insertions(+), 16 deletions(-)
>
> diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
> index c2846f0bda..f12f4ad59d 100644
> --- a/gnu/packages/engineering.scm
> +++ b/gnu/packages/engineering.scm
> @@ -2260,33 +2260,30 @@ (define-public freehdl
>   (define-public librepcb
>     (package
>       (name "librepcb")
> -    (version "0.1.5")
> +    (version "1.0.0")
>       (source
>        (origin
>          (method url-fetch)
>          (uri (string-append "https://download.librepcb.org/releases/"
>                              version "/librepcb-" version "-source.zip"))
>          (sha256
> -        (base32 "0smp1p7wnrj0vh4rmz1cr2krfawc2lzx0pbzmgyay7xdp6jxympr"))))
> -    (build-system gnu-build-system)
> +        (base32 "02qfwyhdq1pklb5gkwn3rbsdhwvcgiksd21swaphz3kw6s4p9i8v"))))
> +    (build-system cmake-build-system)
>       (inputs
> -     (list qtbase-5 qtsvg-5 zlib))
> +     (list qtbase-5
> +           qtsvg-5
> +           qtdeclarative-5
> +           qtquickcontrols2-5
> +           zlib
> +           opencascade-occt
> +           glu
> +           fontconfig))

Inputs should be sorted alphabetically.

>       (native-inputs
>        (list qttools-5 ; for lrelease
>              unzip))

The comment about lrelease can be removed as lrelease is not being 
manually invoked anymore, and the native inputs list can be squashed in 
one line.

>       (arguments
> -     `(#:phases
> -       (modify-phases %standard-phases
> -         (replace 'configure
> -           (lambda* (#:key inputs outputs #:allow-other-keys)
> -             (mkdir-p "build")
> -             (chdir "build")
> -             (let ((lrelease (search-input-file inputs "/bin/lrelease"))
> -                   (out (assoc-ref outputs "out")))
> -               (invoke "qmake"
> -                       (string-append "QMAKE_LRELEASE=" lrelease)
> -                       (string-append "PREFIX=" out)
> -                       "../librepcb.pro")))))))
> +     ;; There is no cmake test target
> +     `(#:tests? #f))
>       (home-page "https://librepcb.org/")
>       (synopsis "Electronic Design Automation tool")
>       (description "LibrePCB is @dfn{Electronic Design Automation} (EDA)
>
> base-commit: 445a0359083388b5ee686e6e855f94a3aac5f79c

There are options in LibrePCB's CMakeLists.txt to unvendor some 
dependencies: 
https://github.com/LibrePCB/LibrePCB/blob/9edb6ede393e5b48785f95252f81a027db4b718a/CMakeLists.txt#L51

The only dependencies we do not have is dxflib and fontobene-qt5. It 
failed to find muparser and polyclipping ('clipper' package in Guix), I 
don't know why.

It would be best to unvendor as many dependencies as possible. Could you 
send an updated patch? Optionally, you can try to package fontobene-qt5 
and have cmake find muparser and polyclipping.

Vinicius