diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 2 | ||||
-rw-r--r-- | gnu/packages/patches/libtgvoip-disable-sse2.patch | 51 | ||||
-rw-r--r-- | gnu/packages/patches/libtgvoip-disable-webrtc.patch | 47 | ||||
-rw-r--r-- | gnu/packages/telephony.scm | 6 |
4 files changed, 106 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 83bba6b644..b7fa503257 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1113,6 +1113,8 @@ dist_patch_DATA = \ %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ %D%/packages/patches/libsndfile-CVE-2017-12562.patch \ %D%/packages/patches/libtar-CVE-2013-4420.patch \ + %D%/packages/patches/libtgvoip-disable-sse2.patch \ + %D%/packages/patches/libtgvoip-disable-webrtc.patch \ %D%/packages/patches/libtheora-config-guess.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ 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")))) |