From: Hilton Chain via Guix-patches via <guix-patches@gnu.org>
To: 57655@debbugs.gnu.org
Subject: [bug#57655] [PATCH 2/5] gnu: webrtc-for-telegram-desktop: Update to a5fbc9.
Date: Thu, 08 Sep 2022 08:57:39 +0800 [thread overview]
Message-ID: <y76wnae8yyk.wl-hako@ultrarare.space> (raw)
In-Reply-To: <y76y1uu8yzr.wl-hako@ultrarare.space>
* gnu/packages/telegram.scm (webrtc-for-telegram-desktop):
Update to a5fbc9123e056e611e69acf0ceb4252ddd838adb.
Use abseil-cpp-for-webrtc-for-telegram-desktop for abseil-cpp.
[patches]:
Add missing <cstdint.h> header.
Add flag for disabling X11.
[snippet]:
Don't keep these files: openh264, usrsctp, libvpx.
Remove use of bundled openh264.
[#:configure-flags]: Comment out.
[#:phases]:
Drop bundled libvpx.
Copy crc32c.
Use cmake tool for compilation and installation (and use ninja).
[inputs]:
Simplify.
Drop unneeded inputs.
Add external-sources variable for managing recursive checkouts.
Add crc32c.
[native-inputs]:
Add ninja.
Drop perl.
[propagated-inputs]: Move libraries also needed by telegram-desktop here from
inputs.
[license]: Update according to source tree updates.
* gnu/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch:
New file.
* gnu/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch:
New file.
* gnu/local.mk: Add patches.
---
gnu/local.mk | 2 +
...telegram-desktop-add-missing-cstdint.patch | 21 +++
...telegram-desktop-allow-disabling-X11.patch | 123 +++++++++++++
gnu/packages/telegram.scm | 171 ++++++++++--------
4 files changed, 242 insertions(+), 75 deletions(-)
create mode 100644 gnu/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch
create mode 100644 gnu/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 19102113c9..d0e5aeb125 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1966,6 +1966,8 @@ dist_patch_DATA = \
%D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \
+ %D%/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch \
+ %D%/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch \
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
%D%/packages/patches/widelands-add-missing-map-include.patch \
%D%/packages/patches/widelands-system-wide_minizip.patch \
diff --git a/gnu/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch b/gnu/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch
new file mode 100644
index 0000000000..9dee9cf8e3
--- /dev/null
+++ b/gnu/packages/patches/webrtc-for-telegram-desktop-add-missing-cstdint.patch
@@ -0,0 +1,21 @@
+From 86d2bcd7afb8706663d29e30f65863de5a626142 Mon Sep 17 00:00:00 2001
+From: Xiretza <xiretza@xiretza.xyz>
+Date: Sun, 15 May 2022 12:47:41 +0200
+Subject: [PATCH] fix(h265_pps_parser): fix missing cstdint include
+
+---
+ src/common_video/h265/h265_pps_parser.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/common_video/h265/h265_pps_parser.h b/src/common_video/h265/h265_pps_parser.h
+index 28c95ea9..c180b1b9 100644
+--- a/src/common_video/h265/h265_pps_parser.h
++++ b/src/common_video/h265/h265_pps_parser.h
+@@ -12,6 +12,7 @@
+ #define COMMON_VIDEO_H265_PPS_PARSER_H_
+
+ #include "absl/types/optional.h"
++#include <cstdint>
+
+ namespace rtc {
+ class BitBuffer;
diff --git a/gnu/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch b/gnu/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch
new file mode 100644
index 0000000000..977f72475f
--- /dev/null
+++ b/gnu/packages/patches/webrtc-for-telegram-desktop-allow-disabling-X11.patch
@@ -0,0 +1,123 @@
+Add -DTG_OWT_USE_X11
+
+Allows disabling X11 desktop capturing independently of pipewire support, for
+the few people that run wayland without any X11 support whatsoever.
+
+This setup is untested, but supported by the GNI build system, see:
+* src/modules/desktop_capture/BUILD.gn (option rtc_use_x11_extensions)
+
+Toggling the WEBRTC_USE_X11 define also affects some files under
+src/modules/audio_device, but that falls under "X11 support", regardless...
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2e081ae7..c269177b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -24,13 +24,14 @@ endif()
+
+ option(BUILD_SHARED_LIBS "Builds shared libraries instead of static." OFF)
+ option(TG_OWT_USE_PROTOBUF "Use protobuf to generate additional headers. Useful for packaged build." ${BUILD_SHARED_LIBS})
++cmake_dependent_option(TG_OWT_USE_X11 "Use X11 for desktop capture on non-Apple Unix." ON "UNIX; NOT APPLE" OFF)
+ cmake_dependent_option(TG_OWT_USE_PIPEWIRE "Use pipewire for desktop capture." ON "UNIX; NOT APPLE" OFF)
+ cmake_dependent_option(TG_OWT_DLOPEN_PIPEWIRE "dlopen pipewire for desktop capture." ${not_packaged_build} TG_OWT_USE_PIPEWIRE OFF)
+ option(TG_OWT_BUILD_AUDIO_BACKENDS "Build webrtc audio backends." OFF)
+
+ if (BUILD_SHARED_LIBS)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+- message(WARNING
++ message(DEBUG
+ "tg_owt is a fork of Google's webrtc library and is developed by them as a static library without stable ABI in mind."
+ "The feature of building tg_owt as a shared library is community maintained, it may and will break at any time without guarantee to work again."
+ "Please reconsider your decision. Good luck."
+@@ -96,6 +97,10 @@ endif()
+ add_library(tg_owt)
+ init_target(tg_owt)
+
++if (TG_OWT_USE_X11)
++ link_x11(tg_owt)
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ if (TG_OWT_DLOPEN_PIPEWIRE)
+ include(cmake/generate_stubs.cmake)
+@@ -188,10 +193,6 @@ endif()
+ include(cmake/libwebrtcbuild.cmake)
+ target_link_libraries(tg_owt PUBLIC tg_owt::libwebrtcbuild)
+
+-if (UNIX AND NOT APPLE)
+- link_x11(tg_owt)
+-endif()
+-
+ function(add_sublibrary postfix)
+ add_library(tg_owt_${postfix} OBJECT)
+ init_feature_target(tg_owt_${postfix} ${postfix})
+@@ -2369,6 +2370,39 @@ if (NOT TG_OWT_USE_PROTOBUF)
+ )
+ endif()
+
++if (NOT TG_OWT_USE_X11)
++ remove_target_sources(tg_owt ${webrtc_loc}
++ # src/modules/desktop_capture/BUILD.gn (rtc_use_x11_extensions)
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.cc
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.h
++ modules/desktop_capture/linux/x11/screen_capturer_x11.cc
++ modules/desktop_capture/linux/x11/screen_capturer_x11.h
++ modules/desktop_capture/linux/x11/shared_x_display.cc
++ modules/desktop_capture/linux/x11/shared_x_display.h
++ modules/desktop_capture/linux/x11/window_capturer_x11.cc
++ modules/desktop_capture/linux/x11/window_capturer_x11.h
++ modules/desktop_capture/linux/x11/window_finder_x11.cc
++ modules/desktop_capture/linux/x11/window_finder_x11.h
++ modules/desktop_capture/linux/x11/window_list_utils.cc
++ modules/desktop_capture/linux/x11/window_list_utils.h
++ modules/desktop_capture/linux/x11/x_atom_cache.cc
++ modules/desktop_capture/linux/x11/x_atom_cache.h
++ modules/desktop_capture/linux/x11/x_error_trap.cc
++ modules/desktop_capture/linux/x11/x_error_trap.h
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.cc
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.h
++ modules/desktop_capture/linux/x11/x_window_property.cc
++ modules/desktop_capture/linux/x11/x_window_property.h
++
++ # screen_drawer_linux.cc depends on x11, rest are revdeps
++ modules/desktop_capture/screen_drawer.cc
++ modules/desktop_capture/screen_drawer.h
++ modules/desktop_capture/screen_drawer_linux.cc
++ modules/desktop_capture/screen_drawer_lock_posix.cc
++ modules/desktop_capture/screen_drawer_lock_posix.h
++ )
++endif()
++
+ if (NOT TG_OWT_USE_PIPEWIRE)
+ remove_target_sources(tg_owt ${webrtc_loc}
+ modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
+diff --git a/cmake/libwebrtcbuild.cmake b/cmake/libwebrtcbuild.cmake
+index 4d037f4b..388b7aa9 100644
+--- a/cmake/libwebrtcbuild.cmake
++++ b/cmake/libwebrtcbuild.cmake
+@@ -29,6 +29,13 @@ INTERFACE
+ BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0
+ )
+
++if (TG_OWT_USE_X11)
++ target_compile_definitions(libwebrtcbuild
++ INTERFACE
++ WEBRTC_USE_X11
++ )
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ target_compile_definitions(libwebrtcbuild
+ INTERFACE
+@@ -65,11 +72,6 @@ else()
+ INTERFACE
+ WEBRTC_MAC
+ )
+- else()
+- target_compile_definitions(libwebrtcbuild
+- INTERFACE
+- WEBRTC_USE_X11
+- )
+ endif()
+
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 25d6a3e226..d339bae017 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -30,6 +30,7 @@ (define-module (gnu packages telegram)
#:use-module (gnu packages digest)
#:use-module (gnu packages fcitx)
#:use-module (gnu packages fcitx5)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
@@ -43,6 +44,7 @@ (define-module (gnu packages telegram)
#:use-module (gnu packages linux)
#:use-module (gnu packages lxqt)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages ninja)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
@@ -58,11 +60,13 @@ (define-module (gnu packages telegram)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
+ #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xorg)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
@@ -83,9 +87,12 @@ (define-public abseil-cpp-for-webrtc-for-telegram-desktop
((#:configure-flags flags)
`(cons* "-DCMAKE_CXX_STANDARD=17" ,flags))))))))
+;; NOTE: Here's Telegram Desktop's official build guide.
+;; https://github.com/telegramdesktop/tdesktop/wiki/The-Packaged-Building-Mode
(define-public webrtc-for-telegram-desktop
- (let ((commit "91d836dc84a16584c6ac52b36c04c0de504d9c34")
- (revision "166"))
+ (let ((abseil-cpp abseil-cpp-for-webrtc-for-telegram-desktop)
+ (commit "a5fbc9123e056e611e69acf0ceb4252ddd838adb")
+ (revision "167"))
(hidden-package
(package
(name "webrtc-for-telegram-desktop")
@@ -96,94 +103,110 @@ (define-public webrtc-for-telegram-desktop
(method git-fetch)
(uri
(git-reference
- (url "https://github.com/desktop-app/tg_owt.git")
+ (url "https://github.com/desktop-app/tg_owt")
(commit commit)))
(file-name
(git-file-name name version))
(sha256
- (base32 "0plwdp6xgxi27hif5j7kpq425cidxyxbbga3z2f64dsninwy5p1x"))
+ (base32 "12qirihhabv46vn27dpw7dz0smlngb7wqjpypa9fm6k2zvf5py32"))
(modules '((guix build utils)
(ice-9 ftw)
(srfi srfi-1)))
+ (patches
+ (search-patches
+ ;; https://github.com/desktop-app/tg_owt/pull/101
+ "webrtc-for-telegram-desktop-add-missing-cstdint.patch"
+ ;; Picked from Gentoo's repository.
+ ;; TODO: There's also a patch for using standalone crc32c, we can
+ ;; grab that patch once crc32c's been packaged.
+ "webrtc-for-telegram-desktop-allow-disabling-X11.patch"))
(snippet
`(begin
(let ((keep
- '( ;; Custom forks which are incompatible with the ones in Guix.
- "abseil-cpp" "libsrtp" "openh264" "rnnoise"
+ '(;; Custom forks which are incompatible with the ones in Guix.
+ "abseil-cpp" "libsrtp" "rnnoise"
;; Not available in Guix.
- "pffft" "usrsctp"
- ;; Has cmake support files for libvpx input.
- "libvpx")))
+ "pffft")))
(with-directory-excursion "src/third_party"
(for-each delete-file-recursively
(lset-difference string=?
(scandir ".")
- (cons* "." ".." keep))))
- #t)))))
+ (cons* "." ".." keep)))))
+ ;; Force using standalone openh264.
+ (substitute* "CMakeLists.txt"
+ (("\\include\\(cmake\\/libopenh264\\.cmake\\)")""))))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; No target
- #:configure-flags
- (list
- "-DCMAKE_C_FLAGS=-fPIC"
- "-DCMAKE_CXX_FLAGS=-fPIC")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'copy-inputs
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((libvpx-from (assoc-ref inputs "libvpx"))
- (libyuv-from (assoc-ref inputs "libyuv"))
- (libvpx-to (string-append (getcwd)
- "/src/third_party/libvpx/source/libvpx"))
- (libyuv-to (string-append (getcwd)
- "/src/third_party/libyuv")))
- (copy-recursively libvpx-from libvpx-to)
- (copy-recursively libyuv-from libyuv-to))
- #t)))))
- (native-inputs
- `(("perl" ,perl)
- ("pkg-config" ,pkg-config)
- ("python" ,python-wrapper)
- ("yasm" ,yasm)))
+ (list #:tests? #f ; No target
+ ;; NOTE: Options commented are default values.
+ ;; See also: comments in inputs.
+ ;; #:configure-flags
+ ;; #~'("-DTG_OWT_USE_PIPEWIRE=ON"
+ ;; "-DTG_OWT_USE_X11=ON"
+ ;; "-DTG_OWT_USE_PROTOBUF=ON")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'copy-inputs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((libyuv-from (assoc-ref inputs "libyuv"))
+ (crc32c-from (assoc-ref inputs "crc32c"))
+ (libyuv-to (string-append (getcwd)
+ "/src/third_party/libyuv"))
+ (crc32c-to (string-append (getcwd)
+ "/src/third_party/crc32c/src")))
+ (copy-recursively libyuv-from libyuv-to)
+ (copy-recursively crc32c-from crc32c-to))))
+ (replace 'build
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ (apply invoke "cmake" "--build" "."
+ `(,@(if parallel-build?
+ `("-j" ,(number->string (parallel-job-count)))
+ '())
+ ,@make-flags))))
+ (replace 'install
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "cmake" "--install" "." make-flags))))))
(inputs
- `(("alsa" ,alsa-lib)
- ("ffmpeg" ,ffmpeg)
- ("libjpeg" ,libjpeg-turbo)
- ("glib" ,glib)
- ("libvpx"
- ,(origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://chromium.googlesource.com/webm/libvpx")
- (commit "5b63f0f821e94f8072eb483014cfc33b05978bb9")))
- (file-name
- (git-file-name "libvpx-for-webrtc-for-telegram-desktop" version))
- (sha256
- (base32 "1psvxaddihlw1k5n0anxif3qli6zyw2sa2ywn6mkb8six9myrp68"))))
- ("libyuv"
- ,(origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://chromium.googlesource.com/libyuv/libyuv")
- (commit "ad890067f661dc747a975bc55ba3767fe30d4452")))
- (file-name
- (git-file-name "libyuv-for-webrtc-for-telegram-desktop" version))
- (sha256
- (base32 "01knnk4h247rq536097n9n3s3brxlbby3nv3ppdgsqfda3k159ll"))))
- ("libxcomposite" ,libxcomposite)
- ("libxdamage" ,libxdamage)
- ("libxrender" ,libxrender)
- ("libxrandr" ,libxrandr)
- ("openssl" ,openssl)
- ("opus" ,opus)
- ("pipewire" ,pipewire)
- ("protobuf" ,protobuf)
- ("pulseaudio" ,pulseaudio)
- ("x11" ,libx11)
- ("xext" ,libxext)
- ("xtst" ,libxtst)))
+ (let ((external-sources
+ `(("libyuv"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://chromium.googlesource.com/libyuv/libyuv")
+ (commit "ad890067f661dc747a975bc55ba3767fe30d4452")))
+ (file-name
+ (git-file-name "libyuv-for-webrtc-for-telegram-desktop" version))
+ (sha256
+ (base32 "01knnk4h247rq536097n9n3s3brxlbby3nv3ppdgsqfda3k159ll"))))
+ ("crc32c"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/crc32c")
+ (commit "21fc8ef30415a635e7351ffa0e5d5367943d4a94")))
+ (file-name
+ (git-file-name "crc32c-for-webrtc-for-telegram-desktop" version))
+ (sha256
+ (base32 "0cddf8z7v33gfb2k60lkzwa97g20m1v81cnvllm3q9ylpnx8g6f4")))))))
+ (modify-inputs external-sources
+ (prepend openh264 ;Required
+ protobuf ;TG_OWT_USE_PROTOBUF
+ glib ;TG_OWT_USE_PIPEWIRE
+ libdrm
+ libglvnd
+ mesa
+ pipewire-0.3
+ libxcomposite ;TG_OWT_USE_X11
+ libxdamage
+ libxext
+ libxfixes
+ libxrandr
+ libxrender
+ libxtst))))
+ (native-inputs (list ninja python-wrapper pkg-config yasm))
+ (propagated-inputs
+ (list abseil-cpp ffmpeg libjpeg-turbo libvpx openssl opus))
(synopsis "WebRTC support for Telegram Desktop")
(description "WebRTC-for-Telegram-Desktop is a custom WebRTC fork by
Telegram project, for its use in telegram desktop client.")
@@ -194,13 +217,11 @@ (define-public webrtc-for-telegram-desktop
license:asl2.0
;; LibYuv
(license:non-copyleft "file:///src/third_party/libyuv/LICENSE")
- ;; OpenH264
- license:bsd-2
;; PFFFT
(license:non-copyleft "file:///src/third_party/pffft/LICENSE")
;; RnNoise
license:gpl3
- ;; LibSRTP, LibVPx, UsrSCTP and Others
+ ;; LibSRTP, Crc32c and Others
license:bsd-3))))))
(define-public rlottie-for-telegram-desktop
--
2.37.2
next prev parent reply other threads:[~2022-09-08 0:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-08 0:54 [bug#57655] [PATCH 0/5] gnu: telegram-desktop: Update to 4.1.1 Hilton Chain via Guix-patches via
2022-09-08 0:56 ` [bug#57655] [PATCH 1/5] gnu: Add abseil-cpp-for-webrtc-for-telegram-desktop Hilton Chain via Guix-patches via
2022-09-08 0:57 ` Hilton Chain via Guix-patches via [this message]
2022-09-08 0:58 ` [bug#57655] [PATCH 3/5] gnu: Remove rlottie-for-telegram-desktop Hilton Chain via Guix-patches via
2022-09-08 0:58 ` [bug#57655] [PATCH 4/5] gnu: Remove libtgvoip-for-telegram-desktop Hilton Chain via Guix-patches via
2022-09-08 0:59 ` [bug#57655] [PATCH 5/5] gnu: telegram-desktop: Update to 4.1.1 Hilton Chain via Guix-patches via
2022-09-08 3:10 ` [bug#57655] [PATCH 5/5 RESEND UNTABIFIED] " Hilton Chain via Guix-patches via
2022-09-08 3:29 ` Hilton Chain via Guix-patches via
2022-09-08 4:40 ` bug#57655: " Hilton Chain via Guix-patches via
2022-09-08 14:54 ` [bug#57655] [PATCH 5/5] " Liliana Marie Prikler
2022-09-08 15:28 ` Hilton Chain via Guix-patches via
2022-09-08 16:17 ` Liliana Marie Prikler
2022-09-08 14:16 ` [bug#57655] [PATCH 4/5] gnu: Remove libtgvoip-for-telegram-desktop Liliana Marie Prikler
2022-09-08 14:16 ` [bug#57655] [PATCH 3/5] gnu: Remove rlottie-for-telegram-desktop Liliana Marie Prikler
2022-09-08 14:29 ` [bug#57655] [PATCH 2/5] gnu: webrtc-for-telegram-desktop: Update to a5fbc9 Liliana Marie Prikler
2022-09-08 14:15 ` [bug#57655] [PATCH 1/5] gnu: Add abseil-cpp-for-webrtc-for-telegram-desktop Liliana Marie Prikler
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=y76wnae8yyk.wl-hako@ultrarare.space \
--to=guix-patches@gnu.org \
--cc=57655@debbugs.gnu.org \
--cc=hako@ultrarare.space \
/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.