Subject: [bug#47274] Linphone Packages

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 24 Mar 2021 00:12:19 -0400

Hi again,

Raghav Gururajan <[email-masked]> writes:

> From 4b03df1e5abf22da27c65e1f22ffe4be65377d29 Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Sat, 13 Mar 2021 12:04:37 -0500
> Subject: [PATCH 02/53] gnu: bcunit: Update to 3.0.2-13.
>
> * gnu/packages/linphone.scm (bcunit) [source]: Switch to git repository.

Nitpick: there should be no space between (bcunit) and [source].

> [version]: Update to 3.0.2-13.
> [native-inputs]: Add perl.
> ---
>  gnu/packages/linphone.scm | 30 ++++++++++++++++++------------
>  1 file changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
> index afa542412f..6d243d2073 100644
> --- a/gnu/packages/linphone.scm
> +++ b/gnu/packages/linphone.scm
> @@ -35,6 +35,7 @@
>    #:use-module (gnu packages gtk)
>    #:use-module (gnu packages image)
>    #:use-module (gnu packages linux)
> +  #:use-module (gnu packages perl)
>    #:use-module (gnu packages pulseaudio)
>    #:use-module (gnu packages python)
>    #:use-module (gnu packages python-xyz)
> @@ -57,28 +58,33 @@
>    #:use-module (guix build-system gnu))
>
>  (define-public bcunit
> -  (package
> -    (name "bcunit")
> -    (version "3.0.2")
> -    (source
> -     (origin
> -       (method url-fetch)
> -       (uri
> -        (string-append "https://www.linphone.org/releases/sources/" name
> -                       "/" name "-" version ".tar.gz"))
> -       (sha256
> -        (base32 "0ylchj8w98ic2fkqpxc6yk4s6s0h0ql2zsz5n49jd7126m4h8dqk"))))
> +  (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae")
> +        (revision "13"))

When not using an official release, a comment is in order to mention the
reason; in this case something like: "Use the latest commit as there
hasn't been a release in nearly 4 years." :-).

Also, why start the revision number at 13?  Perhaps the number of
commits since the last tagged release?  It's a detail, but since there
was no revision used before for this package, I'd expect it to start at
0.

> +    (package
> +      (name "bcunit")
> +      (version (git-version "3.0.2" revision commit))
> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url "git://git.linphone.org/bcunit")
> +               (commit commit)))
> +         (file-name (git-file-name name version))
> +         (sha256
> +          (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b"))))
>      (build-system cmake-build-system)
>      (arguments
>       '(#:tests? #f                      ; No test target
>         #:configure-flags
>         (list "-DENABLE_STATIC=NO")))    ; Not required
> +    (native-inputs
> +     `(("perl" ,perl)))

Seems Perl is not actually needed.

>      (synopsis "Belledonne Communications Unit Testing Framework")
>      (description "BCUnit is a fork of the defunct project CUnit, with several
>  fixes and patches applied.  It is an unit testing framework for writing,
                                     ^ a

>  administering, and running unit tests in C.")
>      (home-page "https://gitlab.linphone.org/BC/public/bcunit")
> -    (license license:lgpl2.0+)))
> +    (license license:lgpl2.0+))))
>
>  (define-public bctoolbox
>    (package

I ended up squashing all the bcunit changes in one, as I found it a bit
too micro to manage.

I've edited the result slightly, mostly taking out #t, the examples
output (examples are doc after all):

--8<---------------cut here---------------start------------->8---
1 file changed, 18 insertions(+), 26 deletions(-)
gnu/packages/linphone.scm | 44 ++++++++++++++++++--------------------------

modified   gnu/packages/linphone.scm
@@ -60,7 +60,7 @@
 
 (define-public bcunit
   (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae")
-        (revision "13"))
+        (revision "0"))
     (package
       (name "bcunit")
       (version (git-version "3.0.2" revision commit))
@@ -74,16 +74,14 @@
          (sha256
           (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b"))))
       (build-system cmake-build-system)
-      (outputs '("out" "doc" "example"))
+      (outputs '("out" "doc"))
       (arguments
-       `(#:configure-flags
-         (list
-          "-DENABLE_STATIC=NO"
-          "-DENABLE_CURSES=ON"
-          "-DENABLE_DOC=ON"
-          "-DENABLE_EXAMPLES=ON"
-          "-DENABLE_TEST=ON"
-          "-DENABLE_MEMTRACE=ON")
+       `(#:configure-flags (list "-DENABLE_STATIC=NO"
+                                 "-DENABLE_CURSES=ON"
+                                 "-DENABLE_DOC=ON"
+                                 "-DENABLE_EXAMPLES=ON"
+                                 "-DENABLE_TEST=ON"
+                                 "-DENABLE_MEMTRACE=ON")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'patch-source
@@ -99,36 +97,30 @@
                  (("target_include_directories\\(bcunit_test PUBLIC Test\\)")
                   (string-append
                    "target_include_directories(bcunit_test PUBLIC Test)\n"
-                   "target_link_libraries(bcunit_test bcunit)")))
-               #t))
+                   "target_link_libraries(bcunit_test bcunit)")))))
            (replace 'check
              (lambda _
                (with-directory-excursion "BCUnit/Sources/Test"
-                 (invoke "./test_bcunit"))
-               #t))
-           (add-after 'install 'seperate-outputs
+                 (invoke "./test_bcunit"))))
+           (add-after 'install 'move-doc
              (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (doc (assoc-ref outputs "doc"))
-                      (example (assoc-ref outputs "example")))
+               (let ((out (assoc-ref outputs "out"))
+                     (doc (assoc-ref outputs "doc")))
                  (for-each mkdir-p
                            `(,(string-append doc "/share/doc")
-                             ,(string-append example "/share/BCUnit")))
+                             ,(string-append doc "/share/BCUnit")))
                  (rename-file
                   (string-append out "/share/doc/BCUnit")
                   (string-append doc "/share/doc/BCUnit"))
                  (rename-file
                   (string-append out "/share/BCUnit/Examples")
-                  (string-append example "/share/BCUnit/Examples")))
-               #t)))))
-      (native-inputs
-       `(("perl" ,perl)))
+                  (string-append doc "/share/BCUnit/Examples"))))))))
       (inputs
        `(("ncurses" ,ncurses)))
       (synopsis "Belledonne Communications Unit Testing Framework")
-      (description "BCUnit is a fork of the defunct project CUnit, with several
-fixes and patches applied.  It is an unit testing framework for writing,
-administering, and running unit tests in C.")
+      (description "BCUnit is a fork of the defunct project CUnit, with
+several fixes and patches applied.  It is a unit testing framework for
+writing, administering, and running unit tests in C.")
       (home-page "https://gitlab.linphone.org/BC/public/bcunit")
       (license license:lgpl2.0+))))
--8<---------------cut here---------------end--------------->8---

I've also "normalized" the commit message in a way that I think is more
typical.  Arguments such as phases, configure-flags, and such are
typically enclosed in a conditional marker (square brakets); e.g.:

--8<---------------cut here---------------start------------->8---
gnu: bcunit: Update to 3.0.2-0.74021cc and enable more features.

* gnu/packages/linphone.scm (bcunit)[source]: Switch to git repository.
[version]: Update to 3.0.2-0.74021cc.
[outputs]: Add a "doc" output.
[arguments]: Remove the tests? argument, enabling tests.
[configure-flags]: Enable curses, doc, examples, tests and memtrace.
[phases]{patch-source, move-doc}: New phases.
{check}: Override phase.
[inputs]: Add ncurses.
[description]: Fix typo.
--8<---------------cut here---------------end--------------->8---

That's all very subjective, but hoping you get a feel :-).

After having verified that bcunit's dependent packages could still be
built fine and testing the resulting linphoneqt, I've pushed the
squashed bcunit series as commit c2a9b05f02.

Thank you!

Maxim