aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorBrett Gilio <brettg@gnu.org>2020-01-05 19:31:07 -0600
committerBrett Gilio <brettg@gnu.org>2020-01-05 19:31:07 -0600
commit1792a70655507625cbe654a0eec1428f210d2fd3 (patch)
tree2e5e7fd13775965c3bf17fd17885e00f2d4b4dc1 /gnu/packages
parent5a0d73911c93745391a687def9ba8c7d0d41be23 (diff)
downloadguix-1792a70655507625cbe654a0eec1428f210d2fd3.tar
guix-1792a70655507625cbe654a0eec1428f210d2fd3.tar.gz
gnu: libtgvoip: Fix failing build on i686-linux.
* gnu/local.mk (libtgvoip): Add patches for libtgvoip-disable-sse2.patch and libtgvoip-disable-webrtc.patch * gnu/packages/patches/libtgvoip-disable-sse2.patch: New file. * gnu/packages/patches/libtgvoip-disable-webrtc.patch: New file. * gnu/packages/telephony.scm (libtgvoip): Fix building on i686-linux. [source]: Reference patches for correcting failing build on i686-linux architecture. Reported-by: Diego Nicola Barbato <dnbarbato@posteo.de> Fixes <bugs.gnu.org/38944>.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/patches/libtgvoip-disable-sse2.patch51
-rw-r--r--gnu/packages/patches/libtgvoip-disable-webrtc.patch47
-rw-r--r--gnu/packages/telephony.scm6
3 files changed, 104 insertions, 0 deletions
diff --git a/gnu/packages/patches/libtgvoip-disable-sse2.patch b/gnu/packages/patches/libtgvoip-disable-sse2.patch
new file mode 100644
index 0000000000..0e4faeab26
--- /dev/null
+++ b/gnu/packages/patches/libtgvoip-disable-sse2.patch
@@ -0,0 +1,51 @@
+Copied from Debian.
+
+Description: Disable SSE2 code on i386
+ This patch is not complete. A high-graded solution may use automatic switching
+ between SSE2 and C++ implementations based on the results of runtime checks.
+ The webrtc code already provides for one of them inside its GetCPUInfo function.
+Bug-Debian: https://bugs.debian.org/892823
+Author: Nicholas Guriev <guriev-ns@ya.ru>
+Last-Update: Tue, 29 Jan 2019 23:26:38 +0300
+
+--- a/libtgvoip.gyp
++++ b/libtgvoip.gyp
+@@ -871,11 +871,7 @@
+ 'WEBRTC_POSIX',
+ ],
+ 'conditions': [
+- [ '"<!(uname -m)" == "i686"', {
+- 'cflags_cc': [
+- '-msse2',
+- ],
+- }], ['"<!(uname -s)" == "Linux"', {
++ [ '"<!(uname -s)" == "Linux"', {
+ 'defines': [
+ 'WEBRTC_LINUX',
+ ],
+--- a/webrtc_dsp/rtc_base/system/arch.h
++++ b/webrtc_dsp/rtc_base/system/arch.h
+@@ -28,7 +28,10 @@
+ #define WEBRTC_ARCH_64_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
+ #elif defined(_M_IX86) || defined(__i386__)
++#if defined(__SSE2__)
++// This macro is mostly used to detect SSE2 extension.
+ #define WEBRTC_ARCH_X86_FAMILY
++#endif
+ #define WEBRTC_ARCH_X86
+ #define WEBRTC_ARCH_32_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
+--- a/webrtc_dsp/typedefs.h
++++ b/webrtc_dsp/typedefs.h
+@@ -28,7 +28,10 @@
+ #define WEBRTC_ARCH_64_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
+ #elif defined(_M_IX86) || defined(__i386__)
++#if defined(__SSE2__)
++// This macro is mostly used to detect SSE2 extension.
+ #define WEBRTC_ARCH_X86_FAMILY
++#endif
+ #define WEBRTC_ARCH_X86
+ #define WEBRTC_ARCH_32_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
diff --git a/gnu/packages/patches/libtgvoip-disable-webrtc.patch b/gnu/packages/patches/libtgvoip-disable-webrtc.patch
new file mode 100644
index 0000000000..0ca532301c
--- /dev/null
+++ b/gnu/packages/patches/libtgvoip-disable-webrtc.patch
@@ -0,0 +1,47 @@
+Copied from Debian.
+
+Description: Fix build of WebRTC on non-Linux systems
+ * Define the WEBRTC_LINUX macro only on Linux, and not on GNU/Hurd or FreeBSD.
+ * Fix type cast in the CurrentThreadId function.
+Bug-Debian: https://bugs.debian.org/920851
+Author: Nicholas Guriev <guriev-ns@ya.ru>
+Last-Update: Tue, 29 Jan 2019 23:26:44 +0300
+
+--- a/libtgvoip.gyp
++++ b/libtgvoip.gyp
+@@ -869,20 +869,18 @@
+ '"<(OS)" == "linux"', {
+ 'defines': [
+ 'WEBRTC_POSIX',
+- 'WEBRTC_LINUX',
+ ],
+ 'conditions': [
+ [ '"<!(uname -m)" == "i686"', {
+ 'cflags_cc': [
+ '-msse2',
+ ],
++ }], ['"<!(uname -s)" == "Linux"', {
++ 'defines': [
++ 'WEBRTC_LINUX',
++ ],
+ }]
+ ],
+- 'direct_dependent_settings': {
+- 'libraries': [
+-
+- ],
+- },
+ },
+ ],
+ ],
+--- a/webrtc_dsp/rtc_base/platform_thread_types.cc
++++ b/webrtc_dsp/rtc_base/platform_thread_types.cc
+@@ -31,7 +31,7 @@ PlatformThreadId CurrentThreadId() {
+ return syscall(__NR_gettid);
+ #else
+ // Default implementation for nacl and solaris.
+- return reinterpret_cast<pid_t>(pthread_self());
++ return static_cast<pid_t>(pthread_self());
+ #endif
+ #endif // defined(WEBRTC_POSIX)
+ }
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 11eeeedce4..8e7384bf85 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -960,6 +960,12 @@ This package provides the Jami client for the GNOME desktop.")
(url "https://github.com/grishka/libtgvoip.git")
(commit version)))
(file-name (git-file-name name version))
+ ;; Fix compilation on i686-linux architecture.
+ ;; NOTE: Applying these patches is order-dependent!
+ ;; The patch for WebRTC /must/ precede the patch for SSE2.
+ (patches
+ (search-patches "libtgvoip-disable-webrtc.patch"
+ "libtgvoip-disable-sse2.patch"))
(sha256
(base32
"122kn3jx6v0kkldlzlpzvlwqxgp6pmzxsjhrhcxw12bx9c08sar5"))))