unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#30041] Issues with GNU Ring on licenses, bundling, configure/build flags and patches
@ 2018-01-09 13:12 Adonay Felipe Nogueira
  2018-01-09 14:30 ` Adonay Felipe Nogueira
  0 siblings, 1 reply; 3+ messages in thread
From: Adonay Felipe Nogueira @ 2018-01-09 13:12 UTC (permalink / raw)
  To: 30041

[-- Attachment #1: Type: text/plain, Size: 1149 bytes --]

This bug/patch only moves [1] to here, so the progress can be tracked
regardless of archive date.

This is done because the patch might be an improvement to the list of
packages available in GNU Guix.

I have attached a set of recipes (not a patch!) related to GNU Ring and
the dependencies. This attachment is more updated than [2].

However, if you want to test GNU Ring in its unstable state, you must
apply [3] (either directly on your copy of GNU Guix or by making your
own recipes based on the patch) and then use the recipes attached in
this message.

[1]
<https://lists.gnu.org/archive/cgi-bin/namazu.cgi?query=%2Bsubject%3A%7BContinuing+the+work+on+the+recipes+related+to+GNU+Ring%7D&submit=Search%21&idxname=guix-devel&max=20&result=normal&sort=date%3Alate>. Alternatively,
see all messages in
<https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00550.html>
and in
<https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00416.html>.

[2]
<https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00692.html>. An
update I made, also in the discussion related to [1].

[3] <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27475#16>.


[-- Attachment #2: messaging.scm --]
[-- Type: application/octet-stream, Size: 29866 bytes --]

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Lukas Gradl
;;; Copyright © 2017 Marius Bakke
;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

;;; Before creating patches out of these recipes, please guarantee
;;; that there's contact information for Mx. Gradl and Mx. Bakke.

;;; TODO For other atributions, look for:
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01541.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01937.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01938.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01216.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01061.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01062.html>.
;;; - <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01063.html>.

(define-module (adfeno packages messaging)
  #:use-module (gnu packages)
  #:use-module (gnu packages aidc)
  #:use-module (gnu packages audio)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages check)
  #:use-module (gnu packages compression)
  #:use-module (adfeno packages cpp)
  #:use-module (adfeno packages crypto)
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages libupnp)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages pulseaudio)
  #:use-module (gnu packages python)
  #:use-module (gnu packages qt)
  #:use-module (gnu packages serialization)
  #:use-module (gnu packages telephony)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages video)
  #:use-module (gnu packages webkit)
  #:use-module (gnu packages xiph)
  #:use-module (gnu packages xorg)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (guix build utils)
  #:use-module (guix download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  ;; #:use-module (srfi srfi-1)
  )

;;; FIXME Convince upstream, Ring, to send patches to their upstreams.
;;; FIXME See if the combination of Savoir-faire Linux's pjproject +
;;; restbed + Ring daemon is OK.

;;; Dependencies on OpenSSL were disabled due to licensing issues.

(define-public gnu-ring-release
  (let ((release "20171024.1.eadbdeb")
	(revision 1))
    (package
      (name "gnu-ring-release")
      (version (string-append release
                              (if (and (defined? 'revision)
                                       (not (zero? revision)))
                                  (string-append "-"
                                                 (number->string revision))
                                  "")
                              (if (defined? 'commit)
                                  (string-append "."
                                                 (string-take commit 7))
                                  "")))
      (source (origin
                (method url-fetch)
                (uri (string-append "https://dl.ring.cx/ring-release/tarballs/ring_"
                                    release ".tar.gz"))
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
                  "1ijmxjhfdjyqrlc6crdxk3ap9v7fikygja18sw3gmck9fqyihn2g"))))
      (build-system trivial-build-system)
      (arguments
       `(#:modules ((guix build utils))
         #:builder
         (begin
           (use-modules (guix build utils))
           (let ((gzip (assoc-ref %build-inputs "gzip"))
                 (source (assoc-ref %build-inputs "source"))
                 (tar (assoc-ref %build-inputs "tar")))
             (setenv "PATH" (string-append gzip "/bin:"
                                           tar "/bin")) 
             (mkdir-p %output)
             (system* "tar" "-xvf" source "-C" %output)
             (chdir (string-append %output "/ring-project"))))))
      (native-inputs
       `(("source" ,source)
         ("tar" ,tar)
         ("gzip" ,gzip)))
      (synopsis "Distributed multimedia communications platform")
      (description "Ring is a secure and distributed voice, video and chat
communication platform that requires no centralized server and leaves the
power of privacy in the hands of the user.  It supports the SIP and IAX
protocols, as well as decentralized calling using P2P-DHT.")
      (home-page "https://gnu.org/software/ring")
      (license license:gpl3+))))

;;; Based on
;;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01541.html>.
(define-public savoir-faire-linux-pjproject
  (let ((release "2.6")
	(revision 1))
    (package
      (name "pjproject")
      (version (string-append release
                              (if (and (defined? 'revision)
                                       (not (zero? revision)))
                                  (string-append "-"
                                                 (number->string revision))
                                  "")
                              (if (defined? 'commit)
                                  (string-append "."
                                                 (string-take commit 7))
                                  "")))
      (source (origin
                (method url-fetch)
                (uri (string-append "http://www.pjsip.org/release/"
                                    release "/" name "-" release ".tar.bz2"))
                (file-name (string-append name "-" version ".tar.bz2"))
                (modules '((guix build utils)))
                (snippet
                 '(begin
                    (let ((third-party-directories
                           '( "BaseClasses" "bdsound" "bin" "g7221" "gsm"
                              "ilbc" "lib" "milenage" "mp3" "speex" "srtp"
                              "webrtc"
                              ;; "threademulation" is under Ms-PL, don't
                              ;; use it, see
                              ;; <https://www.gnu.org/licenses/license-list.html#ms-pl>.
                              "threademulation"
                              ;; Originally, "resample", "yuv", "build"
                              ;; and "README.txt" would be kept.
                              "resample"
                              ;; "yuv"
                              "build/baseclasses" "build/g7221" "build/gsm"
                              "build/ilbc" "build/milenage" "build/samplerate"
                              "build/speex" "build/srtp" "build/webrtc"
                              ;; Originally, Makefiles related to
                              ;; "resample" and "yuv" would be kept.
                              "build/resample"
                              ;; "build/yuv"
                              )))
                      (for-each (lambda (file)
                                  (delete-file-recursively (string-append "third_party/"
                                                                          file)))
                                third-party-directories)
                      #t)
                    (let ((third-party-directories
                           '( "gsm" "ilbc" "speex" "g7221" "srtp"
                              "portaudio"
                              ;; Originally, "resample" would be kept.
                              "resample")))
                      (for-each
                       (lambda (directory-path)
                         (substitute* "third_party/build/os-linux.mak"
                           (((string-append "DIRS += "
                                            directory-path))
                            "")))
                       third-party-directories))
                    #t))
                (sha256
                 (base32
                  "1d67c58jn22f7h6smkykk5vwl3sqpc7xi2vm3j3lbn3lq6hisnig"))))
      (build-system gnu-build-system)
      (inputs
       `(("portaudio" ,portaudio)))
      (propagated-inputs
       ;; These packages are referenced in the Libs field of the pkg-config
       ;; file that will be installed by pjproject.
       `(("speex" ,speex)
         ("libsrtp" ,libsrtp)
         ("gnutls" ,gnutls)
         ("util-linux" ,util-linux)))
      (native-inputs
       `(("gnu-ring-release" ,gnu-ring-release)
         ("autoconf" ,autoconf)
         ("automake" ,automake)
         ("pkg-config" ,pkg-config)
         ("libtool" ,libtool)))
      (arguments
       `(#:tests? #f ; FIXME make: No rule to make target
                     ; 'pjlib/bin/pjlib-test-i686-unknown-linux-gnu'.
         ;; #:test-target "selftest"
         #:configure-flags
         ;; The disabled features are not used by libring.  Comes from
         ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
         ;; NOTE This doesn't seem right, other packages might want
         ;; some of these. We must talk to Ring project and ask why we
         ;; need things to be built this way. One way out of this would
         ;; be to tell it to use external things instead of disabling.
         `( "--disable-oss"
            "--disable-sound"
            "--disable-video"
            "--enable-ext-sound"
            "--disable-speex-aec"
            "--disable-g711-codec"
            "--disable-l16-codec"
            "--disable-gsm-codec"
            "--disable-g722-codec"
            "--disable-g7221-codec"
            "--disable-speex-codec"
            "--disable-ilbc-codec"
            "--disable-opencore-amr"
            "--disable-silk"
            "--disable-sdl"
            "--disable-ffmpeg"
            "--disable-v4l2"
            "--disable-openh264"
            "--disable-resample"
            "--disable-libwebrtc"
            "--enable-ssl=gnutls"
            ;; This one deviates from the rules.mak file.
            "--with-external-srtp"
            ;; "--with-external-yuv"
            ;; Now back to following the rules.mak file.
            ,(let ((savoir-faire-linux-pjproject-cflags "-DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"))
               (string-append "CFLAGS="
                              savoir-faire-linux-pjproject-cflags)
               (string-append "CXXFLAGS="
                              savoir-faire-linux-pjproject-cflags
                              " -std=gnu++11")))
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'apply-patches
             (lambda* (#:key inputs #:allow-other-keys)
               ;; Comes from
               ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
               ;; We already asked
               ;; Ring to contribute
               ;; upstrea, please
               ;; see:
               ;; https://tuleap.ring.cx/plugins/tracker/?aid=1546.
               ;; NOTE These amount
               ;; for huge changes
               ;; in pjproject.
               ;; Particularly, they
               ;; add support for
               ;; GnuTLS.
               (let ((savoir-faire-linux-patches
                      '("endianness"
                        "gnutls"
                        "notestsapps"
                        "fix_base64"
                        "ipv6"
                        "ice_config"
                        "multiple_listeners"
                        "pj_ice_sess"
                        "fix_turn_fallback"
                        "fix_ioqueue_ipv6_sendto"
                        "add_dtls_transport"
                        "rfc6062"))
                     (patches-directory "savoir-faire-linux-patches"))
                 (mkdir patches-directory)
                 (for-each
                  (lambda (file)
                    (copy-file
                     (string-append (assoc-ref inputs "gnu-ring-release")
                                    "/ring-project/daemon/contrib/src/pjproject/" file ".patch")
                     (string-append patches-directory
                                    "/"
                                    file
                                    ".patch"))
                    (zero? (system* "patch" "-f" "-p1" "-i"
                                    (string-append patches-directory
                                                   "/"
                                                   file
                                                   ".patch"))))
                  savoir-faire-linux-patches))
               #t))
           (add-before 'build 'build-dependencies
             (lambda _
               (zero? (system* "make" "dep"))
               #t))
           (add-before 'patch-source-shebangs 'autoconf
             (lambda _
               (zero? (system* "autoconf" "-v" "-f" "-i" "-o"
                               "aconfigure" "aconfigure.ac"))
               #t))
           (add-before 'autoconf 'disable-some-tests
             ;; Three of the six test programs
             ;; fail due to missing network
             ;; access.
             (lambda _
               (substitute* "Makefile"
                 (("selftest: (pjlib-test pjlib-util-test) pjnath-test (pjmedia-test) pjsip-test pjsua-test" _ pjlib-tests pjmedia-test)
                  (string-append "selftest: "
                                 pjlib-tests
                                 " "
                                 pjmedia-test)))
               #t)))))
      (home-page "http://www.pjsip.org")
      (synopsis "Session Initiation Protocol (SIP) stack")
      (description "PJProject provides an implementation of the Session
Initiation Protocol (SIP) and a multimedia framework. This package is intended
for use with libring.  There are several custom patches, most notably the use
of gnutls instead of openssl for encryption.")
      ;; We should make the license only one, the one which is
      ;; effective as result of applying savoir-faire-linux-patches,
      ;; because we don't want to say that the whole package has two
      ;; licenses for which the user can "choose" from (dual licensing).
      ;; NEW pjproject is under GNU GPL 2+, not GPL 2 (only).
      ;; Last time we checked, the
      ;; Savoir-faire Linux patches were under
      ;; GNU GPL 3 (only). Is this still true?
      (license '(license:gpl2+
                 license:gpl3)))))

(define-public savoir-faire-linux-asio
  (let ((release "1.11.0")
	(revision 1)
	(commit "f5c570826d2ebf50eb38c44039181946a473148b"))
    (package
      (name "asio")
      (version (string-append release
                              (if (and (defined? 'revision)
                                       (not (zero? revision)))
                                  (string-append "-"
                                                 (number->string revision))
                                  "")
                              (if (defined? 'commit)
                                  (string-append "."
                                                 (string-take commit 7))
                                  "")))
      (source (origin
                (method url-fetch)
                (uri (string-append "https://github.com/chriskohlhoff/asio/archive/"
                                    commit ".tar.gz"))
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
                  "0p72rf547a3ik0x9adnbbxir9d7c9qbx5p410ca5i81f26qzr370"))))
      (build-system gnu-build-system)
      (inputs
       `(("boost" ,boost)))
      (native-inputs
       `(("autoconf" ,autoconf)
         ("automake" ,automake)
         ("gnu-ring-release" ,gnu-ring-release)))
      (arguments
       `(#:configure-flags
         `(,(string-append "--with-boost=\""
                           (assoc-ref %build-inputs "boost") "\""))
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'change-directory-and-apply-patches
             (lambda* (#:key inputs #:allow-other-keys)
               ;; We asked Ring to send
               ;; patches to their
               ;; upstream, status can be
               ;; seen at:
               ;; https://tuleap.ring.cx/plugins/tracker/?aid=1546.
               ;; These patches just
               ;; disable tests, examples
               ;; and revert some API
               ;; changes.  We should
               ;; convince Ring to send
               ;; these patches to their
               ;; upstream, asio.
               (let ((savoir-faire-linux-patches
                      '("revert_pthread_condattr_setclock"
                        "no_tests_examples"))
                     (patches-directory "savoir-faire-linux-patches"))
                 (chdir "asio")
                 (mkdir patches-directory)
                 (for-each
                  (lambda (file)
                    (copy-file
                     (string-append (assoc-ref inputs "gnu-ring-release")
                                    "/ring-project/daemon/contrib/src/asio/" file ".patch")
                     (string-append patches-directory
                                    "/"
                                    file
                                    ".patch"))
                    (zero? (system* "patch" "-f" "-p1" "-i"
                                    (string-append patches-directory
                                                   "/"
                                                   file
                                                   ".patch"))))
                  savoir-faire-linux-patches))
               #t))
           (add-before 'configure 'run-autogen
             (lambda _
               (zero? (system* "./autogen.sh"))
               #t)))))
      (synopsis "Asio C++ Library")
      (description "Asio is a cross-platform C++ library for network and
low-level I/O programming that provides developers with a consistent
asynchronous model using a modern C++ approach.")
      (home-page "https://github.com/chriskohlhoff/asio")
      ;; The "rules.mak" file that would be used to apply the patches
      ;; from GNU Ring has a license notice for GNU GPL 3+, should the
      ;; result be a GPL'd asio?
      (license '(license:boost1.0
                 ;; license:gpl3+
                 )))))

(define-public savoir-faire-linux-restbed
  (let ((release "4.6")
	(revision 1))
    (package
      (name "restbed")
      (version (string-append release
                              (if (and (defined? 'revision)
                                       (not (zero? revision)))
                                  (string-append "-"
                                                 (number->string revision))
                                  "")
                              (if (defined? 'commit)
                                  (string-append "."
                                                 (string-take commit 7))
                                  "")))
      (source (origin
                (method url-fetch)
                (uri (string-append "https://github.com/Corvusoft/restbed/archive/"
                                    release ".tar.gz"))
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
                  "1r572hpj1fpny0c6jx41n39gdp73y2f4njd9w6ingxlv28wmrdxj"))))
      (build-system cmake-build-system)
      (inputs
       `(("asio" ,savoir-faire-linux-asio)
         ("catch" ,catch-framework)
         ("glibc" ,glibc)
         ("kashmir" ,kashmir)))
      (native-inputs
       `(("gnu-ring-release" ,gnu-ring-release)))
      (arguments
       `(#:tests? #f
         ;; Comes from "ring-project/daemon/contrib/src/restbed/rules.mak".
         #:configure-flags
         `(,(string-append "-DCMAKE_INSTALL_LIBDIR="
                           (assoc-ref %outputs "out")
                           "/lib")
           "-DBUILD_TESTS=NO"
           "-DBUILD_EXAMPLES=NO"
           "-DBUILD_SSL=NO"
           "-DBUILD_SHARED=NO")
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'apply-patches-and-fix-paths
             (lambda* (#:key inputs #:allow-other-keys)
               (let ((asio (assoc-ref inputs "asio"))
                     (catch (assoc-ref inputs "catch"))
                     (glibc (assoc-ref inputs "glibc"))
                     (kashmir (assoc-ref inputs "kashmir"))
                     ;; We asked Ring to
                     ;; send patches
                     ;; upstream, status
                     ;; can be seen at:
                     ;; https://tuleap.ring.cx/plugins/tracker/?aid=1546.
                     ;; These patches deal
                     ;; with minor fixes.
                     ;; We should convince
                     ;; Ring upstream to
                     ;; send these patches
                     ;; to their upstream,
                     ;; restbed.
                     (savoir-faire-linux-patches
                      '("locale-fix"
                        "strand"))
                     (patches-directory "savoir-faire-linux-patches"))
                 (mkdir patches-directory)
                 (for-each
                  (lambda (file)
                    (copy-file
                     (string-append (assoc-ref inputs "gnu-ring-release")
                                    "/ring-project/daemon/contrib/src/restbed/" file ".patch")
                     (string-append patches-directory
                                    "/"
                                    file
                                    ".patch"))
                    (zero? (system* "patch" "-f" "-p1" "-i"
                                    (string-append patches-directory
                                                   "/"
                                                   file
                                                   ".patch"))))
                  savoir-faire-linux-patches)
                 (substitute* "cmake/modules/Findasio.cmake"
                   (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS )[^\n]*\n" _ begin)
                    (string-append begin
                                   "\""
                                   asio
                                   "/include\" )\n")))
                 (substitute* "cmake/modules/Findcatch.cmake"
                   (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS )[^\n]*\n" _ begin)
                    (string-append begin
                                   "\""
                                   catch
                                   "/include\" )\n")))
                 (substitute* "cmake/modules/Findkashmir.cmake"
                   (("(find_path\\( kashmir_INCLUDE kashmir HINTS )[^\n]*\n" _ begin)
                    (string-append begin
                                   "\""
                                   kashmir
                                   "/include/kashmir\" )\n")))
                 (substitute* "cmake/modules/Findsyslog.cmake"
                   (("(find_path\\( syslog_INCLUDE syslog\\.h HINTS )[^\n]*\n" _ begin)
                    (string-append begin
                                   "\""
                                   glibc
                                   "/include\" )\n"))))
               #t)))))
      (synopsis "Asynchronous RESTful functionality to C++11 applications")
      (description "Restbed is a comprehensive and consistent programming
model for building applications that require seamless and secure communication
over HTTP.")
      (home-page "https://github.com/Corvusoft/restbed")
      ;; The "rules.mak" file that would be used to apply the patches
      ;; from GNU Ring has a license notice for GNU GPL 3+, should the
      ;; result be a GPL'd asio?
      (license '(license:agpl3+
                 ;; license:gpl3+
                 )))))

;;; Based on
;;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01061.html>.
(define-public libring
  (package
    (inherit gnu-ring-release)
    (name "libring")
    (source (origin
              (inherit (package-source gnu-ring-release))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  (delete-file-recursively "daemon/contrib")
                  #t))))
    (build-system gnu-build-system)
    (inputs
     `(("alsa-lib" ,alsa-lib)
       ("boost" ,boost)
       ("dbus-c++" ,dbus-c++)
       ("eudev" ,eudev)
       ("ffmpeg" ,ffmpeg)
       ("flac" ,flac)
       ("gmp" ,gmp)
       ("gsm" ,gsm)
       ("jack" ,jack-1)
       ("jsoncpp" ,jsoncpp)
       ("libogg" ,libogg)
       ("libsamplerate" ,libsamplerate)
       ("libsndfile" ,libsndfile)
       ("libupnp" ,libupnp)
       ("libva" ,libva)
       ("libvdpau" ,libvdpau)
       ("libvorbis" ,libvorbis)
       ("libx11" ,libx11)
       ("libx264" ,libx264)
       ("opendht-with-msgpack-c++-11" ,opendht-with-msgpack-c++-11)
       ("opus" ,opus)
       ("pcre" ,pcre)
       ("pjproject" ,savoir-faire-linux-pjproject)
       ("pulseaudio" ,pulseaudio)
       ("python" ,python)
       ("python-wrapper" ,python-wrapper)
       ("restbed" ,savoir-faire-linux-restbed)
       ("secp256k1" ,secp256k1)
       ("speex" ,speex)
       ("speexdsp" ,speexdsp)
       ("yaml-cpp" ,yaml-cpp)
       ("zlib" ,zlib)))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("cppunit" ,cppunit)
       ("libtool" ,libtool)
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)))
    (arguments
     `(#:tests? #f ; FIXME The tests fail to compile due to missing headers.
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'change-directory
           (lambda _
             (chdir "daemon")
             #t))
         (add-before 'configure 'autoconf
           (lambda _
             (zero? (system* "autoreconf" "-vfi"))
             #t))
         (add-before 'build 'add-lib-dir
           (lambda _
             (mkdir "src/lib")
             #t)))))
    (description
     (string-append (package-description gnu-ring-release) "

This package provides a library and daemon implementing the Ring core
functionality."))))

;;; Based on
;;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01062.html>.
(define-public libringclient
  (package
    (inherit gnu-ring-release)
    (name "libringclient")
    (build-system cmake-build-system)
    (propagated-inputs
     `(("libring" ,libring) ; For 'dring'.
       ("qtbase" ,qtbase) ; Qt is included in several installed headers.
       ("qttools" ,qttools)))
    (arguments
     `(#:tests? #f ; There is no testsuite.
       #:configure-flags
       `(,(string-append "-DRING_BUILD_DIR="
                         (assoc-ref %build-inputs "libring") "/include"))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'change-directory
           (lambda _
             (chdir "lrc")
             #t))
         (add-before 'configure 'fix-dbus-interfaces-path
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "CMakeLists.txt"
               (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
                (string-append (assoc-ref inputs "libring")
                               dbus-interfaces-path-suffix)))
             #t)))))
    (description
     (string-append (package-description gnu-ring-release)
                    "\n\nThis package provides a library common to all Ring
clients."))))

;;; Based on
;;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg01063.html>.
(define-public ring-client-gnome
  (package
    (inherit gnu-ring-release)
    (name "ring-client-gnome")
    (build-system cmake-build-system)
    (inputs
     `(("libringclient" ,libringclient)
       ("gtk+" ,gtk+)
       ("glib:bin" ,glib "bin")
       ("qrencode" ,qrencode)
       ("libnotify" ,libnotify)
       ("clutter" ,clutter)
       ("clutter-gtk" ,clutter-gtk)
       ("gettext" ,gnu-gettext)
       ("webkitgtk" ,webkitgtk)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("doxygen" ,doxygen)))
    (propagated-inputs
     `(("libring" ,libring) ; This is needed to run dring.
       ("adwaita-icon-theme" ,adwaita-icon-theme)
       ("evolution-data-server" ,evolution-data-server)))
    (arguments
     `(#:tests? #f ; There is no testsuite.
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'change-directory
           (lambda _
             (chdir "client-gnome")
             #t)))))
    (description
     (string-append (package-description gnu-ring-release)
                    "\n\nThis package provides the Ring client for the Gnome
Desktop."))))

[-- Attachment #3: Type: text/plain, Size: 590 bytes --]


-- 
- https://libreplanet.org/wiki/User:Adfeno
- Palestrante e consultor sobre /software/ livre (não confundir com
  gratis).
- "WhatsApp"? Ele não é livre. Por favor, veja formas de se comunicar
  instantaneamente comigo no endereço abaixo.
- Contato: https://libreplanet.org/wiki/User:Adfeno#vCard
- Arquivos comuns aceitos (apenas sem DRM): Corel Draw, Microsoft
  Office, MP3, MP4, WMA, WMV.
- Arquivos comuns aceitos e enviados: CSV, GNU Dia, GNU Emacs Org, GNU
  GIMP, Inkscape SVG, JPG, LibreOffice (padrão ODF), OGG, OPUS, PDF
  (apenas sem DRM), PNG, TXT, WEBM.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [bug#30041] Issues with GNU Ring on licenses, bundling, configure/build flags and patches
  2018-01-09 13:12 [bug#30041] Issues with GNU Ring on licenses, bundling, configure/build flags and patches Adonay Felipe Nogueira
@ 2018-01-09 14:30 ` Adonay Felipe Nogueira
  2019-02-12 23:11   ` bug#30041: " Leo Famulari
  0 siblings, 1 reply; 3+ messages in thread
From: Adonay Felipe Nogueira @ 2018-01-09 14:30 UTC (permalink / raw)
  To: 30041

I have added the "help" tag because:

1. Due to time and other constraints (specially related to job-seeking)
   I no longer have as much time to work on this;

2. I don't know how to fix the issues, specially those related with
   customizations on configure/build flags ([1]) and with patches ([2]);

3. Some patches made by GNU Ring have been sent by me to some of their
   upstream projects but these only accept patches that come from the
   patch authors ([3]).

   An attempt was made to contact the patch authors but so far I got no
   replies ([2]) (perhaps because the authors don't seem to use their
   own issue tracker anymore?);

4. The lack of news and of native support for GnuTLS in pjproject/PJSIP
   ([4]) also makes things harder (because GNU Ring would have to
   maintain their patch to do so);

5. There's no confirmation that the Guix recipes can keep using these
   patches and configure/build flag customizations.


[1] <https://lists.gnu.org/archive/html/ring/2017-03/msg00005.html>.

[2] <https://tuleap.ring.cx/plugins/tracker/?aid=1546>.

[3]
<http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2017-June/020030.html>.

[4]
<http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2017-April/019937.html>.

2018-01-09T11:12:47-0200 Adonay Felipe Nogueira wrote:
> This bug/patch only moves [1] to here, so the progress can be tracked
> regardless of archive date.
>
> This is done because the patch might be an improvement to the list of
> packages available in GNU Guix.
>
> I have attached a set of recipes (not a patch!) related to GNU Ring and
> the dependencies. This attachment is more updated than [2].
>
> However, if you want to test GNU Ring in its unstable state, you must
> apply [3] (either directly on your copy of GNU Guix or by making your
> own recipes based on the patch) and then use the recipes attached in
> this message.
>
> [1]
> <https://lists.gnu.org/archive/cgi-bin/namazu.cgi?query=%2Bsubject%3A%7BContinuing+the+work+on+the+recipes+related+to+GNU+Ring%7D&submit=Search%21&idxname=guix-devel&max=20&result=normal&sort=date%3Alate>. Alternatively,
> see all messages in
> <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00550.html>
> and in
> <https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00416.html>.
>
> [2]
> <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00692.html>. An
> update I made, also in the discussion related to [1].
>
> [3] <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27475#16>.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#30041: Issues with GNU Ring on licenses, bundling, configure/build flags and patches
  2018-01-09 14:30 ` Adonay Felipe Nogueira
@ 2019-02-12 23:11   ` Leo Famulari
  0 siblings, 0 replies; 3+ messages in thread
From: Leo Famulari @ 2019-02-12 23:11 UTC (permalink / raw)
  To: Adonay Felipe Nogueira; +Cc: 30041-done

[-- Attachment #1: Type: text/plain, Size: 284 bytes --]

There is a new wip-ring branch in our Git repo on Savannah:

https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-ring

Considering this new effort to package Ring / Jami, and the fact that a
lot of time has passed without any activity on these patches, I'm
closing this bug ticket.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-02-12 23:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-09 13:12 [bug#30041] Issues with GNU Ring on licenses, bundling, configure/build flags and patches Adonay Felipe Nogueira
2018-01-09 14:30 ` Adonay Felipe Nogueira
2019-02-12 23:11   ` bug#30041: " Leo Famulari

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).