all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Raghav Gururajan" <raghavgururajan@disroot.org>
To: 40264@debbugs.gnu.org
Subject: [bug#40264] Linphone: 14-add-linphoneqt-v6
Date: Fri, 03 Apr 2020 23:47:51 +0000	[thread overview]
Message-ID: <c1a8272fa04d13d0bf8d4754f24cc33e@disroot.org> (raw)
In-Reply-To: <a3c3755c86e0d25ca3c4672b8865a9ed@disroot.org>

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



[-- Attachment #2: 14-add-linphoneqt-v6.patch --]
[-- Type: application/octet-stream, Size: 9012 bytes --]

From 08461b68154402e9fd26cc5e13b9b7b24c35a812 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <raghavgururajan@disroot.org>
Date: Fri, 3 Apr 2020 19:42:33 -0400
Subject: [PATCH 17/17] gnu: Add linphone-desktop

* gnu/packages/linphone.scm (linphone-desktop): New variable.
* gnu/packages/patches/linphone-desktop-mutex.patch: New patch file.
---
 gnu/packages/linphone.scm                     |  60 +++++++++
 .../patches/linphone-desktop-mutex.patch      | 127 ++++++++++++++++++
 2 files changed, 187 insertions(+)
 create mode 100644 gnu/packages/patches/linphone-desktop-mutex.patch

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index b881a820ae..65ae41d361 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -24,6 +24,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -34,6 +35,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -439,3 +441,61 @@ Linphone application is based on, and that anyone can use to add audio
 and video calls or instant messaging capabilities to an application.")
     (home-page "https://gitlab.linphone.org/BC/public/liblinphone")
     (license license:gpl2+)))
+
+(define-public linphone-desktop
+  (package
+    (name "linphoneqt")
+    (version "4.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://www.linphone.org/releases/sources/" name
+                       "/" name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1g2zrr9li0g1hgs6vys06vr98h5dx36z22hx7a6ry231536c002a"))
+       (patches
+        (list
+         ;; For fixing errors with signal handling.
+         (origin
+           (method url-fetch)
+           (uri
+            (string-append "https://gitlab.linphone.org/BC/public/linphone-desktop/commit/"
+                           "9cf08623e3092fa19366e5c07fbe06898a59f039.diff"))
+           (file-name "linphone-desktop-socket.patch")
+           (sha256
+            (base32 "0cnn63n3rs5m0dbi1yzn33zpp38llh5lz286f2nraadnh7kddfm5")))
+         ;; For fixing errors with crash handling.
+         (search-patch "linphone-desktop-mutex.patch")))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; No test target
+       #:phases
+       ;; For replacing undeclared variable.
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* "src/app/AppController.cpp"
+               (("LINPHONE_QT_GIT_VERSION")
+                "\"4.1.1\""))
+             #t)))))
+    (native-inputs
+     `(("gcc" ,gcc-5)))                 ; Required for libstd.h
+    (inputs
+     `(("bctoolbox" ,bctoolbox)
+       ("belcard" ,belcard)
+       ("bellesip" ,belle-sip)
+       ("linphone" ,liblinphone)
+       ("mediastreamer2" ,mediastreamer)))
+    (propagated-inputs
+     `(("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtsvg" ,qtsvg)
+       ("qttools" ,qttools)))
+    (synopsis "Belledonne Communications Softphone Application")
+    (description "Linphone is a softphone for voice and video over IP calling
+and instant messaging.  It is fully SIP-based, for all calling, presence
+and IM features.")
+    (home-page "https://gitlab.linphone.org/BC/public/linphone-desktop")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/linphone-desktop-mutex.patch b/gnu/packages/patches/linphone-desktop-mutex.patch
new file mode 100644
index 0000000000..29aef4b713
--- /dev/null
+++ b/gnu/packages/patches/linphone-desktop-mutex.patch
@@ -0,0 +1,127 @@
+From 03bed40d638d09f36deb9e0ec3ad1fe1d10e139f Mon Sep 17 00:00:00 2001
+From: Raghav Gururajan <raghavgururajan@disroot.org>
+Date: Fri, 3 Apr 2020 17:13:20 -0400
+Subject: [PATCH] test 2
+
+---
+ .../single-application/SingleApplication.cpp  | 63 ++-----------------
+ .../SingleApplicationPrivate.hpp              |  3 -
+ 2 files changed, 5 insertions(+), 61 deletions(-)
+
+diff --git a/src/app/single-application/SingleApplication.cpp b/src/app/single-application/SingleApplication.cpp
+index 29538ae3..1e6ab396 100644
+--- a/src/app/single-application/SingleApplication.cpp
++++ b/src/app/single-application/SingleApplication.cpp
+@@ -35,7 +35,6 @@
+ 
+ #ifdef Q_OS_UNIX
+   #include <signal.h>
+-  #include <unistd.h>
+ #endif // ifdef Q_OS_UNIX
+ 
+ #ifdef Q_OS_WIN
+@@ -135,10 +134,9 @@ void SingleApplicationPrivate::genBlockServerName (int timeout) {
+ 
+ void SingleApplicationPrivate::startPrimary (bool resetMemory) {
+   #ifdef Q_OS_UNIX
+-    // Handle any further termination signals to ensure the
+-    // QSharedMemory block is deleted even if the process crashes
+-    crashHandler();
++    signal(SIGINT, SingleApplicationPrivate::terminate);
+   #endif // ifdef Q_OS_UNIX
++
+   // Successful creation means that no main process exists
+   // So we start a QLocalServer to listen for connections
+   QLocalServer::removeServer(blockServerName);
+@@ -178,9 +176,7 @@ void SingleApplicationPrivate::startPrimary (bool resetMemory) {
+ 
+ void SingleApplicationPrivate::startSecondary () {
+   #ifdef Q_OS_UNIX
+-    // Handle any further termination signals to ensure the
+-    // QSharedMemory block is deleted even if the process crashes
+-    crashHandler();
++    signal(SIGINT, SingleApplicationPrivate::terminate);
+   #endif // ifdef Q_OS_UNIX
+ }
+ 
+@@ -222,60 +218,11 @@ void SingleApplicationPrivate::connectToPrimary (int msecs, char connectionType)
+ }
+ 
+ #ifdef Q_OS_UNIX
+-  void SingleApplicationPrivate::crashHandler () {
+-    // This guarantees the program will work even with multiple
+-    // instances of SingleApplication in different threads.
+-    // Which in my opinion is idiotic, but lets handle that too.
+-    {
+-      sharedMemMutex.lock();
+-      sharedMem.append(this);
+-      sharedMemMutex.unlock();
+-    }
+-
+-    // Handle any further termination signals to ensure the
+-    // QSharedMemory block is deleted even if the process crashes
+-    signal(SIGHUP, SingleApplicationPrivate::terminate);        // 1
+-    signal(SIGINT, SingleApplicationPrivate::terminate);        // 2
+-    signal(SIGQUIT, SingleApplicationPrivate::terminate);       // 3
+-    signal(SIGILL, SingleApplicationPrivate::terminate);        // 4
+-    signal(SIGABRT, SingleApplicationPrivate::terminate);       // 6
+-    signal(SIGFPE, SingleApplicationPrivate::terminate);        // 8
+-    signal(SIGBUS, SingleApplicationPrivate::terminate);        // 10
+-    signal(SIGSEGV, SingleApplicationPrivate::terminate);       // 11
+-    signal(SIGSYS, SingleApplicationPrivate::terminate);        // 12
+-    signal(SIGPIPE, SingleApplicationPrivate::terminate);       // 13
+-    signal(SIGALRM, SingleApplicationPrivate::terminate);       // 14
+-    signal(SIGTERM, SingleApplicationPrivate::terminate);       // 15
+-    signal(SIGXCPU, SingleApplicationPrivate::terminate);       // 24
+-    signal(SIGXFSZ, SingleApplicationPrivate::terminate);       // 25
+-  }
+ 
+   void SingleApplicationPrivate::terminate (int signum) {
+-    if (signum == SIGINT) {
+-      SingleApplication::instance()->quit();
+-      return;
+-    }
+-
+-    // Dangerous signals. Exit directly after shared memory destruction.
+-    // Don't touch sockets => avoid dead locks.
+-    for (int crashSig : { SIGABRT, SIGBUS, SIGSEGV })
+-      if (signum == crashSig) {
+-        for (SingleApplicationPrivate *d : sharedMem)
+-          delete d->memory;
+-        goto forceExit;
+-      }
+-
+-    while (!sharedMem.empty()) {
+-      delete sharedMem.back();
+-      sharedMem.pop_back();
+-    }
+-
+-  forceExit:
+-    ::exit(128 + signum);
++    Q_UNUSED(signum);
++    SingleApplication::instance()->quit();
+   }
+-
+-  QList<SingleApplicationPrivate *> SingleApplicationPrivate::sharedMem;
+-  QMutex SingleApplicationPrivate::sharedMemMutex;
+ #endif // ifdef Q_OS_UNIX
+ 
+ /**
+diff --git a/src/app/single-application/SingleApplicationPrivate.hpp b/src/app/single-application/SingleApplicationPrivate.hpp
+index d0dfc10e..db2d8cf5 100644
+--- a/src/app/single-application/SingleApplicationPrivate.hpp
++++ b/src/app/single-application/SingleApplicationPrivate.hpp
+@@ -59,10 +59,7 @@ public:
+   void connectToPrimary (int msecs, char connectionType);
+ 
+   #ifdef Q_OS_UNIX
+-    void crashHandler ();
+     static void terminate (int signum);
+-    static QList<SingleApplicationPrivate *> sharedMem;
+-    static QMutex sharedMemMutex;
+   #endif // ifdef Q_OS_UNIX
+ 
+   QSharedMemory *memory;
+-- 
+2.17.1
+
-- 
2.26.0


  parent reply	other threads:[~2020-04-03 23:48 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-27 23:10 [bug#40264] Linphone Raghav Gururajan
2020-03-27 23:13 ` [bug#40264] Linphone: 1-create-linphone-module Raghav Gururajan
2020-03-27 23:14 ` [bug#40264] Linphone: 2-update-linphone-module Raghav Gururajan
2020-03-27 23:15 ` [bug#40264] Linphone: 3-add-bcunit Raghav Gururajan
2020-04-01  2:46   ` Maxim Cournoyer
2020-03-27 23:21 ` [bug#40264] Linphone: 4-add-bctoolbox Raghav Gururajan
2020-03-28 18:40 ` [bug#40264] Linphone: 5-add-belr Raghav Gururajan
2020-03-28 19:40 ` [bug#40264] Linphone: 6-add-belcard Raghav Gururajan
2020-03-28 21:22 ` [bug#40264] Linphone: 7-add-bcmatroska2 Raghav Gururajan
2020-03-28 21:35 ` [bug#40264] Linphone: 8-add-bcg729 Raghav Gururajan
2020-03-28 22:14 ` [bug#40264] Linphone: 9-add-ortp Raghav Gururajan
2020-03-28 22:36 ` [bug#40264] Linphone: 10-add-bzrtp Raghav Gururajan
2020-03-29  8:58 ` [bug#40264] Linphone: 11-add-mediastreamer Raghav Gururajan
2020-03-30  2:45 ` [bug#40264] Linphone: 12-add-belle-sip Raghav Gururajan
2020-03-30 20:45   ` Danny Milosavljevic
2020-03-31 16:32   ` Raghav Gururajan
2020-04-01  2:38     ` Maxim Cournoyer
2020-03-30  9:47 ` [bug#40264] Linphone: 13-add-linphone Raghav Gururajan
2020-03-30 16:50 ` [bug#40264] Linphone: 14-add-linphoneqt Raghav Gururajan
2020-03-31 13:44 ` [bug#40264] Linphone: 15-add-msamr Raghav Gururajan
2020-03-31 14:12 ` [bug#40264] Linphone: 16-add-openh264 Raghav Gururajan
2020-03-31 14:31 ` [bug#40264] Linphone: 17-add-mssilk Raghav Gururajan
2020-03-31 14:50 ` [bug#40264] Linphone: 18-add-mswebrtc Raghav Gururajan
2020-04-01 20:21 ` [bug#40264] Linphone: 3-add-bcunit-v2 Raghav Gururajan
2020-04-03 10:51   ` Danny Milosavljevic
2020-04-01 22:13 ` [bug#40264] Linphone: 4-add-bctoolbox-v2 Raghav Gururajan
2020-04-03 10:52   ` Danny Milosavljevic
2020-04-01 22:20 ` [bug#40264] Linphone: 5-add-belr-v2 Raghav Gururajan
2020-04-03 10:52   ` Danny Milosavljevic
2020-04-01 22:32 ` [bug#40264] Linphone: 6-add-belcard-v2 Raghav Gururajan
2020-04-03 10:51   ` Danny Milosavljevic
2020-04-01 22:40 ` [bug#40264] Linphone: 7-add-bcmatroska2-v2 Raghav Gururajan
2020-04-03 10:52   ` Danny Milosavljevic
2020-04-01 22:46 ` [bug#40264] Linphone: 8-add-bcg729-v2 Raghav Gururajan
2020-04-03 11:01   ` Danny Milosavljevic
2020-04-01 22:56 ` [bug#40264] Linphone: 9-add-ortp-v2 Raghav Gururajan
2020-04-03 11:02   ` Danny Milosavljevic
2020-04-01 23:04 ` [bug#40264] Linphone: 10-add-bzrtp-v2 Raghav Gururajan
2020-04-03 11:09   ` Danny Milosavljevic
2020-04-02  0:20 ` [bug#40264] Linphone: 11-add-mediastreamer-v2 Raghav Gururajan
2020-04-03 11:38   ` Danny Milosavljevic
2020-04-03 14:30   ` Raghav Gururajan
2020-04-05  4:08     ` maxim.cournoyer
2020-04-05  4:16   ` maxim.cournoyer
2020-04-05  7:29   ` Raghav Gururajan
2020-04-02  0:44 ` [bug#40264] Linphone: 12-add-belle-sip-v2 Raghav Gururajan
2020-04-02 11:24   ` Danny Milosavljevic
2020-04-02 16:33   ` Raghav Gururajan
2020-04-02 17:19   ` Raghav Gururajan
2020-04-03 11:34     ` Danny Milosavljevic
2020-04-04 17:36       ` Maxim Cournoyer
2020-04-04 18:18       ` Raghav Gururajan
2020-04-05  4:18         ` maxim.cournoyer
2020-04-05 19:06       ` Danny Milosavljevic
2020-04-02  1:20 ` [bug#40264] Linphone: 13-add-linphone-v2 Raghav Gururajan
2020-04-05 19:49   ` Danny Milosavljevic
2020-04-05 19:57   ` Danny Milosavljevic
2020-04-05 22:54   ` Raghav Gururajan
2020-04-05 22:55   ` Raghav Gururajan
2020-04-02  1:47 ` [bug#40264] Linphone: 14-add-linphoneqt-v2 Raghav Gururajan
2020-04-02  2:06 ` [bug#40264] Linohone: 15-add-msamr-v2 Raghav Gururajan
2020-04-06  0:03   ` Danny Milosavljevic
2020-04-02  2:55 ` [bug#40264] Linphone: 16-add-msopenh264-v2 Raghav Gururajan
2020-04-05 23:05   ` Danny Milosavljevic
2020-04-02  3:00 ` [bug#40264] Linphone: 17-add-mssilk-v2 Raghav Gururajan
2020-04-05 23:06   ` Danny Milosavljevic
2020-04-02  3:06 ` [bug#40264] Linphone: 18-add-mswebrtc-v2 Raghav Gururajan
2020-04-05 23:06   ` Danny Milosavljevic
2020-04-02  8:56 ` [bug#40264] Linphone: 14-add-linphoneqt-v3 Raghav Gururajan
2020-04-02 16:27   ` Raghav Gururajan
2020-04-02 20:56   ` Raghav Gururajan
2020-04-03 23:50   ` Raghav Gururajan
2020-04-02 20:53 ` [bug#40264] Linphone: 14-add-linphoneqt-v4 Raghav Gururajan
2020-04-02 23:19 ` [bug#40264] Linphone: 13-add-linphone-v3 Raghav Gururajan
2020-04-05 20:05   ` Danny Milosavljevic
2020-04-03  0:24 ` [bug#40264] Linphone: 14-add-linphoneqt-v5 Raghav Gururajan
2020-04-03 23:47 ` Raghav Gururajan [this message]
2020-04-05 20:19   ` [bug#40264] Linphone: 14-add-linphoneqt-v6 Danny Milosavljevic
2020-04-06  3:01   ` Raghav Gururajan
2020-04-06  5:56   ` Raghav Gururajan
2020-04-05  7:28 ` [bug#40264] Linphone: 11-add-mediastreamer-v3 Raghav Gururajan
2020-04-05 15:02   ` maxim.cournoyer
2020-04-05 18:29   ` Danny Milosavljevic
2020-04-05 19:41     ` Danny Milosavljevic
2020-04-05 22:52     ` Raghav Gururajan
2020-04-06  0:14       ` Danny Milosavljevic
2020-04-06  0:28       ` Raghav Gururajan
2020-04-06  2:40         ` maxim.cournoyer
2020-04-06  4:04 ` [bug#40264] Linphone: 14-add-linphoneqt-v7 Raghav Gururajan
2020-04-10 21:47   ` Danny Milosavljevic
2020-04-10 23:50   ` Danny Milosavljevic
2020-04-15  2:50     ` Maxim Cournoyer
2020-04-15  4:36       ` Maxim Cournoyer
2020-04-15  6:13         ` Maxim Cournoyer
2020-04-12  3:55   ` Raghav Gururajan
2020-04-08  7:01 ` [bug#40264] Replace source URI with mirror Raghav Gururajan
2020-04-08  7:29   ` [bug#40264] Mirror and Formatting Raghav Gururajan
2020-04-16  4:49     ` bug#40264: " maxim.cournoyer
2020-04-15  2:07   ` [bug#40264] Replace source URI with mirror Maxim Cournoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c1a8272fa04d13d0bf8d4754f24cc33e@disroot.org \
    --to=raghavgururajan@disroot.org \
    --cc=40264@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.