Subject: Re: [bug#74344] [PATCH v3 6/7] gnu: Add qt-widget-animation-framework.

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 16 Feb 2025 15:41:26 +0900

Sughosha <[email-masked]> writes:

> * gnu/packages/qt.scm (qt-widget-animation-framework): New variable.
>
> Change-Id: I9ce4b75d613c3af2e16fe7a6479e3bc02f8ac23c
> ---
>  gnu/packages/qt.scm | 60 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 60 insertions(+)
>
> diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
> index 4d1abec6ed..0b205d3be5 100644
> --- a/gnu/packages/qt.scm
> +++ b/gnu/packages/qt.scm
> @@ -34,6 +34,7 @@
>  ;;; Copyright © 2024 Foundation Devices, Inc. <[email-masked]>
>  ;;; Copyright © 2024 Josep Bigorra <[email-masked]>
>  ;;; Copyright © 2025 John Kehayias <[email-masked]>
> +;;; Copyright © 2024 Sughosha <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -4995,6 +4996,65 @@ (define-public qtpromise
>       "This package provides Promises/A+ implementation for Qt/C++.")
>      (license license:expat)))
>  
> +(define-public qt-widget-animation-framework
> +  (let ((commit "b07ab59cee7a21eb29d29cb67c160681f13ac5ae") ;no tags
> +          (revision "0"))
> +    (package
> +      (name "qt-widget-animation-framework")

I know you had a comment about naming it this earlier (thanks to them
for their review!) but or naming conventions do not suggest turning
camel case names into hyphen-separated ones, so I'd keep it as one
block, 'qtwidgetanimationframework'.

See (info '(guix) Package Naming'):

   [package variable and names] correspond to the lowercase conversion
   of the project name chosen upstream, with underscores replaced with
   hyphens.

> +      (version (git-version "0" revision commit))
> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri
> +           (git-reference
> +             (url "https://github.com/dimkanovikov/WidgetAnimationFramework")
> +             (commit commit)))
> +         (file-name (git-file-name name version))
> +         (sha256
> +          (base32 "1smbdrzk05vvbf6lpjdq82k4y2kc4yv1gk5388qbslbzlb6ihls6"))
> +         (modules '((guix build utils)))
> +         (snippet
> +          ;; This project does not have any build rule but its demo has one. So
> +          ;; make use of it.
> +          '(begin
> +             (copy-file "demo/waf-demo.pro" "src/waf.pro")
> +             (substitute* "src/waf.pro"
> +               (("main.cpp ") "")
> +               (("app") "lib")
> +               (("waf-demo") "waf"))))))
> +      (build-system qt-build-system)
> +      (arguments
> +       (list #:qtbase qtbase
> +             #:tests? #f ;no tests
> +             #:phases
> +             #~(modify-phases %standard-phases
> +                 (replace 'configure
> +                   (lambda _
> +                     (chdir "src")
> +                     (invoke "qmake")))
> +                 (replace 'install
> +                   (lambda _
> +                     ;; Install library files.
> +                     (for-each
> +                       (lambda (file)
> +                         (install-file file
> +                                       (string-append #$output "/lib/"
> +                                                      (dirname file))))
> +                       (find-files "." "\\.so"))

I'd use \\.so$ as the regexp.

> +                     ;; Install header files.
> +                     (for-each
> +                       (lambda (file)
> +                         (install-file file
> +                                       (string-append #$output "/include/WAF/"
> +                                                      (dirname file))))
> +                       (find-files "." "\\.h$")))))))
> +      (home-page "https://github.com/dimkanovikov/WidgetAnimationFramework")
> +      (synopsis "Extension for animating Qt widgets")
> +      (description
> +       "Widget Animation Framework (WAF) is an extension for animating Qt
> +widgets.")
> +      (license license:lgpl3))))

The license is actually lgpl3+ (note the +, which means 'or any later
version').  That's the default wording of the GPL licenses, unless the
project adjust them to say otherwise.  See
e.g. https://github.com/dimkanovikov/WidgetAnimationFramework/blob/b07ab59cee7a21eb29d29cb67c160681f13ac5ae/src/AbstractAnimator.h#L7

-- 
Thanks,
Maxim