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>.master
parent
5a0d73911c
commit
1792a70655
|
@ -1113,6 +1113,8 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/libsndfile-CVE-2017-8362.patch \
|
%D%/packages/patches/libsndfile-CVE-2017-8362.patch \
|
||||||
%D%/packages/patches/libsndfile-CVE-2017-12562.patch \
|
%D%/packages/patches/libsndfile-CVE-2017-12562.patch \
|
||||||
%D%/packages/patches/libtar-CVE-2013-4420.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/libtheora-config-guess.patch \
|
||||||
%D%/packages/patches/libtommath-fix-linkage.patch \
|
%D%/packages/patches/libtommath-fix-linkage.patch \
|
||||||
%D%/packages/patches/libtool-skip-tests2.patch \
|
%D%/packages/patches/libtool-skip-tests2.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
|
|
@ -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)
|
||||||
|
}
|
|
@ -960,6 +960,12 @@ This package provides the Jami client for the GNOME desktop.")
|
||||||
(url "https://github.com/grishka/libtgvoip.git")
|
(url "https://github.com/grishka/libtgvoip.git")
|
||||||
(commit version)))
|
(commit version)))
|
||||||
(file-name (git-file-name name 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
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"122kn3jx6v0kkldlzlpzvlwqxgp6pmzxsjhrhcxw12bx9c08sar5"))))
|
"122kn3jx6v0kkldlzlpzvlwqxgp6pmzxsjhrhcxw12bx9c08sar5"))))
|
||||||
|
|
Reference in New Issue