Package: guix-patches;
Reported by: Zhu Zihao <all_but_last <at> 163.com>
Date: Fri, 25 Jun 2021 05:49:01 UTC
Severity: normal
Tags: patch
Done: Leo Prikler <leo.prikler <at> student.tugraz.at>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Leo Prikler <leo.prikler <at> student.tugraz.at> Cc: tracker <at> debbugs.gnu.org Subject: bug#49219: closed ([PATCH]: Update emacs-telega.) Date: Fri, 09 Jul 2021 13:16:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 09 Jul 2021 15:15:32 +0200 with message-id <bfdda94a54d2381836d8a5405949b73514f297ae.camel <at> student.tugraz.at> and subject line Re: [bug#49219] Acknowledgement ([PATCH]: Update emacs-telega.) has caused the debbugs.gnu.org bug report #49219, regarding [PATCH]: Update emacs-telega. to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 49219: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=49219 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Zhu Zihao <all_but_last <at> 163.com> To: guix-patches <at> gnu.org Subject: [PATCH]: Update emacs-telega. Date: Fri, 25 Jun 2021 13:48:20 +0800[Message part 3 (text/plain, inline)][signature.asc (application/pgp-signature, inline)][0001-gnu-Add-emacs-telega-server.patch (text/x-patch, inline)]From 32278ed29a5624efedab694c7c465a75f29c6725 Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last <at> 163.com> Date: Fri, 25 Jun 2021 13:25:05 +0800 Subject: [PATCH 1/3] gnu: Add emacs-telega-server. * gnu/packages/emacs-xyz.scm(emacs-telega-server): New variable. * gnu/packages/patches/emacs-telega-path-placeholder.patch: New file. * gnu/package/patches/emacs-telega-patch-server-functions.patch: Remove stale patch. * gnu/local.mk(dist_patch_DATA): Update corresponding entries. --- gnu/local.mk | 2 +- gnu/packages/emacs-xyz.scm | 54 ++++++++++++++++++- .../emacs-telega-patch-server-functions.patch | 31 ----------- .../emacs-telega-path-placeholder.patch | 44 +++++++++++++++ 4 files changed, 98 insertions(+), 33 deletions(-) delete mode 100644 gnu/packages/patches/emacs-telega-patch-server-functions.patch create mode 100644 gnu/packages/patches/emacs-telega-path-placeholder.patch diff --git a/gnu/local.mk b/gnu/local.mk index 509970f044..8f432ed326 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -989,7 +989,7 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-hyperbole-toggle-messaging.patch \ %D%/packages/patches/emacs-libgit-use-system-libgit2.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \ - %D%/packages/patches/emacs-telega-patch-server-functions.patch \ + %D%/packages/patches/emacs-telega-path-placeholder.patch \ %D%/packages/patches/emacs-telega-test-env.patch \ %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \ %D%/packages/patches/enjarify-setup-py.patch \ diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index b84c0d6622..c722ff62fe 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -81,7 +81,7 @@ ;;; Copyright © 2020, 2021 Niklas Eklund <niklas.eklund <at> posteo.net> ;;; Copyright © 2020 Marco Grassi <marco.au.grassi98 <at> protonmail.com> ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin <at> mailbox.org> -;;; Copyright © 2020 Zhu Zihao <all_but_last <at> 163.com> +;;; Copyright © 2020, 2021 Zhu Zihao <all_but_last <at> 163.com> ;;; Copyright © 2020 Adam Kandur <rndd <at> tuta.io> ;;; Copyright © 2020 Tim Howes <timhowes <at> lavabit.com> ;;; Copyright © 2020 Noah Landis <noahlandis <at> posteo.net> @@ -26011,6 +26011,58 @@ fish-completion. It can be used in both Eshell and M-x shell.") other @code{helm-type-file} sources such as @code{helm-locate}.") (license license:gpl3+))) +(define-public emacs-telega-server + (package + (name "emacs-telega-server") + (version "0.7.024") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zevlg/telega.el") + (commit (string-append "v" version)))) + (sha256 + (base32 "1ra04cp49zzx8vy8aswd00l46ixyc44sxh1s3nw880b4ywzxmc6j")) + (file-name (git-file-name "emacs-telega" version)) + (patches + (search-patches "emacs-telega-path-placeholder.patch" + "emacs-telega-test-env.patch")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'enter-subdirectory + (lambda _ (chdir "server") #t)) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("CC=cc") ,(string-append "CC=" (cc-for-target))) + (("^(INSTALL_PREFIX=).*$" _all prefix) + (string-append prefix out "/bin\n"))) + + (substitute* "run_tests.py" + (("^(TELEGA_SERVER = ).*$" _all prefix) + (string-append prefix + "\"" out "/bin/telega-server\"\n")))))) + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'install-license-files 'leave-subdirectory + (lambda _ (chdir "..") #t))) + #:test-target "test")) + (inputs + `(("tdlib" ,tdlib) + ("libappindicator" ,libappindicator))) + (native-inputs + `(("python" ,python) + ("pkg-config" ,pkg-config))) + (home-page "https://zevlg.github.io/telega.el/") + (synopsis "Server process of Telega") + (description "Telega-server is helper program to interact with Telegram +service, and connect it with Emacs via inter-process communication.") + (license license:gpl3+))) + (define-public emacs-telega ;; This package has versions newer than indicated on MELPA. ;; Get the current version from `telega-version` in telega.el. diff --git a/gnu/packages/patches/emacs-telega-patch-server-functions.patch b/gnu/packages/patches/emacs-telega-patch-server-functions.patch deleted file mode 100644 index e3d49278d0..0000000000 --- a/gnu/packages/patches/emacs-telega-patch-server-functions.patch +++ /dev/null @@ -1,31 +0,0 @@ -Remove interactive build for telega-server, as it fails on Guix. -Modify the `telega-server--find-bin' function to only use the version -of telega-server installed by Guix. - -Created by Brett Gilio <brettg <at> gnu.org> - ---- a/telega-server.el -+++ b/telega-server.el -@@ -113,7 +113,6 @@ If already deferring, then just executes the BODY." - If BUILD-FLAGS is specified, then rebuild server without any - queries using this flags for building, could be empty string. - Otherwise query user about building flags." -- (interactive) - (telega-test-env 'quiet) - (when (or build-flags - (y-or-n-p "Build `telega-server'? ")) -@@ -137,11 +136,8 @@ Otherwise query user about building flags." - (defun telega-server--find-bin () - "Find telega-server executable. - Raise error if not found." -- (let ((exec-path (cons telega-directory exec-path))) -- (or (executable-find "telega-server") -- (progn (telega-server-build) -- (executable-find "telega-server")) -- (error "`telega-server' not found in exec-path")))) -+ (or (executable-find "telega-server") -+ (error "`telega-server' not found in exec-path"))) - - (defun telega-server-version () - "Return telega-server version." - diff --git a/gnu/packages/patches/emacs-telega-path-placeholder.patch b/gnu/packages/patches/emacs-telega-path-placeholder.patch new file mode 100644 index 0000000000..c20be36712 --- /dev/null +++ b/gnu/packages/patches/emacs-telega-path-placeholder.patch @@ -0,0 +1,44 @@ +From 865b8c553722a971c68742c2e849e41eb0e2360c Mon Sep 17 00:00:00 2001 +From: Zhu Zihao <all_but_last <at> 163.com> +Date: Thu, 24 Jun 2021 23:43:50 +0800 +Subject: [PATCH] Replace code that search path with placeholder for + configuration. + +--- + telega-server.el | 6 +----- + telega-util.el | 2 +- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/telega-server.el b/telega-server.el +index 999125d..0fa0817 100644 +--- a/telega-server.el ++++ b/telega-server.el +@@ -142,11 +142,7 @@ Otherwise query user about building flags." + (defun telega-server--find-bin () + "Find telega-server executable. + Raise error if not found." +- (let ((exec-path (cons telega-directory exec-path))) +- (or (executable-find "telega-server") +- (progn (telega-server-build) +- (executable-find "telega-server")) +- (error "`telega-server' not found in exec-path")))) ++ "@TELEGA_SERVER_BIN@") + + (defun telega-server-version () + "Return telega-server version." +diff --git a/telega-util.el b/telega-util.el +index 73a46b1..f53e20a 100644 +--- a/telega-util.el ++++ b/telega-util.el +@@ -464,7 +464,7 @@ N can't be 0." + + (defun telega-etc-file (filename) + "Return absolute path to FILENAME from etc/ directory in telega." +- (expand-file-name (concat "etc/" filename) telega--lib-directory)) ++ (concat "@TELEGA_SHARE@" "/" filename)) + + (defun telega-link-props (link-type link-to &optional face) + "Generate props for link button openable with `telega-link--button-action'." +-- +2.32.0 + -- 2.32.0[0002-gnu-emacs-telega-Update-to-0.7.024.patch (text/x-patch, inline)]From 5157c45126650f1439d7fdf15b2a7c8ba19d6bdc Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last <at> 163.com> Date: Fri, 25 Jun 2021 13:26:51 +0800 Subject: [PATCH 2/3] gnu: emacs-telega: Update to 0.7.024. * gnu/packages/emacs-xyz.scm(emacs-telega): Update to 0.7.024. Rewrite build recipe. --- gnu/packages/emacs-xyz.scm | 169 +++++++++++-------------------------- 1 file changed, 50 insertions(+), 119 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c722ff62fe..c8540bbead 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -26064,125 +26064,56 @@ service, and connect it with Emacs via inter-process communication.") (license license:gpl3+))) (define-public emacs-telega - ;; This package has versions newer than indicated on MELPA. - ;; Get the current version from `telega-version` in telega.el. - ;; or by running M-x telega-version. - (let ((commit "1d28dc209e2acf1a3bf2852cc620b6e412ea73f9") - (revision "1") - (version "0.7.1")) - (package - (name "emacs-telega") - (version (git-version version revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/zevlg/telega.el") - (commit commit))) - (sha256 - (base32 - "0h6kj3r36x26v6p4gkzg5s6fv0brlvrf6ycsdwnz27fw5sdb99k7")) - (patches (search-patches - "emacs-telega-patch-server-functions.patch" - "emacs-telega-test-env.patch")) - (file-name (git-file-name name version)))) - (build-system gnu-build-system) - (arguments - `(#:modules ((guix build gnu-build-system) - ((guix build emacs-build-system) #:prefix emacs:) - (guix build utils) - (guix build emacs-utils)) - #:imported-modules (,@%gnu-build-system-modules - (guix build emacs-build-system) - (guix build emacs-utils)) - #:test-target "test" - ;; TODO: Currently tgVOIP is not functional, thus we have disabled it - ;; temporarily. - ;; #:make-flags (list "WITH_VOIP=t") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'prefix-patch - (lambda _ - (substitute* "server/Makefile" - (("CC=cc") - ,(string-append "CC=" (cc-for-target))) - (("INSTALL_PREFIX=\\$\\(HOME\\)/.telega") - (string-append "INSTALL_PREFIX=" (assoc-ref %outputs "out") - "/bin")) - ;; Manually invoke `run_tests.py` after install phase. - (("python3 run_tests.py") - "")) - #t)) - (add-after 'unpack 'expand-load-path - (assoc-ref emacs:%standard-phases 'expand-load-path)) - (add-after 'unpack 'patch-sources - (lambda* (#:key inputs #:allow-other-keys) - ;; Hard-code paths to `ffplay` and `ffmpeg`. - (let ((ffplay-bin (string-append (assoc-ref inputs "ffmpeg") - "/bin/ffplay")) - (ffmpeg-bin (string-append (assoc-ref inputs "ffmpeg") - "/bin/ffmpeg"))) - (substitute* "telega-ffplay.el" - (("\\(executable-find \"ffplay\"\\)") - (string-append - "(and (file-executable-p \"" ffplay-bin "\")" - "\"" ffplay-bin "\")")) - (("\\(executable-find \"ffmpeg\"\\)") - (string-append - "(and (file-executable-p \"" ffmpeg-bin "\")" - "\"" ffmpeg-bin "\")")))) - ;; This would push the "contrib" sources to the load path, - ;; but as contrib is not installed alongside telega, it does - ;; nothing. - (substitute* "telega.el" - (("\\(push .* load-path\\)") "")) - #t)) - ;; The server test suite has a hardcoded path. - ;; Reset this behavior to use the proper path. - (add-after 'unpack 'patch-test-suite - (lambda _ - (substitute* "server/run_tests.py" - (("~/.telega/telega-server") - (string-append (assoc-ref %outputs "out") - "/bin/telega-server"))) - #t)) - (add-after 'install 'run-server-suite - (lambda _ - (invoke "python3" "server/run_tests.py") - #t)) - (delete 'configure) - (add-after 'expand-load-path 'emacs-install - (lambda args - (apply (assoc-ref emacs:%standard-phases 'install) - #:include `("etc" ,@emacs:%default-include) - args))) - (add-after 'emacs-install 'emacs-build - (assoc-ref emacs:%standard-phases 'build)) - (add-after 'emacs-install 'emacs-make-autoloads - (assoc-ref emacs:%standard-phases 'make-autoloads))))) - (inputs - `(("ffmpeg" ,ffmpeg))) ; mp4/gif support. - (propagated-inputs - `(("emacs-visual-fill-column" ,emacs-visual-fill-column) - ("emacs-company" ,emacs-company) - ("emacs-rainbow-identifiers" - ,emacs-rainbow-identifiers) - ("libwebp" ,libwebp))) ; sticker support. - (native-inputs - `(("tdlib" ,tdlib) - ;; Use Emacs with wide ints on 32-bit architectures. - ("emacs" ,(match (%current-system) - ((or "i686-linux" "armhf-linux") - emacs-wide-int) - (_ - emacs))) - ("python" ,python))) - (synopsis "GNU Emacs client for the Telegram messenger") - (description - "Telega is a full-featured, unofficial GNU Emacs-based client for the -Telegram messaging platform.") - (home-page "https://zevlg.github.io/telega.el/") - (license license:gpl3+)))) + (package + (inherit emacs-telega-server) + (name "emacs-telega") + (build-system emacs-build-system) + (arguments + `(#:emacs ,(if (target-64bit?) + emacs-minimal + ;; Require wide-int support for 32-bit platform. + emacs-wide-int) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "telega-server.el" + (("@TELEGA_SERVER_BIN@") + (string-append (assoc-ref inputs "emacs-telega-server") + "/bin/telega-server"))) + (substitute* "telega-util.el" + (("@TELEGA_SHARE@") + (string-append (assoc-ref outputs "out") + "/share/emacs-telega"))))) + (add-after 'install 'install-share-files + (lambda* (#:key outputs #:allow-other-keys) + (define install-plan + '("langs" "sounds" "emojis.alist" + "verified.svg" "telega-logo.svg")) + + (define prefix (string-append (assoc-ref outputs "out") + "/share/emacs-telega")) + (with-directory-excursion "etc" + (for-each (lambda (file) + (if (file-is-directory? file) + (let ((dest (string-append prefix "/" file))) + (copy-recursively file dest)) + (install-file file prefix))) + install-plan)) + #t))))) + (inputs `(("emacs-telega-server" ,emacs-telega-server))) + (native-inputs '()) + (propagated-inputs + `(("emacs-visual-fill-column" ,emacs-visual-fill-column) + ("emacs-company" ,emacs-company) + ("emacs-rainbow-identifiers" ,emacs-rainbow-identifiers) + ;; TODO: embbed references of following package into source file. + ("ffmpeg" ,ffmpeg) ; GIF, video support. + ("libwebp" ,libwebp) ; sticker support. + )) + (synopsis "GNU Emacs client for the Telegram messenger") + (description "Telega is a full-featured, unofficial GNU Emacs-based client +for the Telegram messaging platform."))) (define-public emacs-telega-contrib (package/inherit emacs-telega -- 2.32.0[0003-gnu-emacs-telega-contrib-Update-to-0.7.024.patch (text/x-patch, inline)]From 84963cfc29a53cb6d31850bd3fc85de3d5a4c893 Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last <at> 163.com> Date: Fri, 25 Jun 2021 13:29:30 +0800 Subject: [PATCH 3/3] gnu: emacs-telega-contrib: Update to 0.7.024. * gnu/packages/emacs-xyz.scm(emacs-telega-contrib): Update to 0.7.024. [arguments]<phases>: Back to root directory of build before phase 'install-license-files' to properly install licenses. [propagated-inputs]: Add emacs-dashboard, emacs-transient. --- gnu/packages/emacs-xyz.scm | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c8540bbead..872f2253a0 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -26116,19 +26116,28 @@ service, and connect it with Emacs via inter-process communication.") for the Telegram messaging platform."))) (define-public emacs-telega-contrib - (package/inherit emacs-telega + (package + (inherit emacs-telega) (name "emacs-telega-contrib") - (build-system emacs-build-system) (arguments `(#:exclude '("telega-live-location.el") #:phases (modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ (chdir "contrib") #t))))) + (add-after 'unpack 'enter-subdirectory + (lambda _ (chdir "contrib") #t)) + (add-before 'install-license-files 'leave-subdirectory + (lambda _ (chdir "..") #t))))) + (inputs '()) + (native-inputs '()) (propagated-inputs - `(("emacs-telega" ,emacs-telega) - ("emacs-alert" ,emacs-alert) - ("emacs-all-the-icons" ,emacs-all-the-icons))))) + `(("emacs-alert" ,emacs-alert) + ("emacs-all-the-icons" ,emacs-all-the-icons) + ("emacs-dashboard" ,emacs-dashboard) + ("emacs-telega" ,emacs-telega) + ("emacs-transient" ,emacs-transient))) + (synopsis "Contributed packages to Telega") + (description "Telega-contrib is a collection of third-party +contributed packages to Telega."))) (define-public emacs-doom-modeline (package -- 2.32.0[Message part 8 (text/plain, inline)]Some questions that Guix maintainer may have interest in: 1. Why separate telega-server to a dedicated package? emacs-build-system is quite cumbersome due to the different install step than gnu-build-system, if we try to mix the build code of server into it via 'modify-phases', it'll be very hard to read and understand the logic of package code. Move telega-server to a dedicated package can also help us separate package, if there's a program uses telega-server, it doesn't have to add emacs-telega as input, they just add emacs-telega-server. 2. Why propagated ffmpeg. I check the source and found that telega use binaries from ffmpeg many different place in telega-ffplay.el and telega-vvnote.el. So it's better to propagated it because it's not easy to fix them all. 3. Why install resources to '<prefix>/share/emacs-telega'? I think it is closer to the flavor of FHS, and it's not hard to achieve it. -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao
[Message part 9 (message/rfc822, inline)]
From: Leo Prikler <leo.prikler <at> student.tugraz.at> To: Zhu Zihao <all_but_last <at> 163.com>, Giovanni Biscuolo <g <at> xelera.eu> Cc: 49219-done <at> debbugs.gnu.org Subject: Re: [bug#49219] Acknowledgement ([PATCH]: Update emacs-telega.) Date: Fri, 09 Jul 2021 15:15:32 +0200Am Freitag, den 09.07.2021, 13:27 +0200 schrieb Leo Prikler: > Am Freitag, den 09.07.2021, 18:36 +0800 schrieb Zhu Zihao: > > Giovanni Biscuolo writes: > > > > > Also, if you think it's useful in the future we could also add a > > > "emacs-telega-server-unstable" for testing bleading edge TDLib > > > features. > > > > > > WDYT? > > > > > > I'll give your patch series a try if I find some time this week. > > > > > > Thanks! Gio' > > > > > > > > > [1] > > > https://github.com/zevlg/telega.el/issues/297#issuecomment-868992025 > > > > I'm OK with it, maybe rename it to `emacs-telega-server-next`? > > > > But I'm not sure Guix maintainer would accept it or not. > This probably depends on how often we'd have to bump TDLib to make > this > meaningful. "Major" release sounds like a 1.0 → 2.0 version bump, > which if "unstable" telega only depended on stuff introduced e.g. in > 1.1 → 1.2 sounds a little too strict. However, if unstable telega > means tailing arbitrary TDLib commits, I'd rather avoid doing that. > > There's so far no precedent to worry about such things, though, so > I'd > rather push the existing patch after some testing or an altered one > if > problems are detected. I haven't gotten to testing things myself > either, but given that we are one stable telega release behind, now > sounds like a good time to start doing that. (Please pardon the > laziness on my part – I typically do lexical work before practical > one > to allow myself to work on other patches and projects as well.) > > Regards, > Leo After some testing, I've decided to push the current patch set, albeit with some changes. I redid my old hardcoding of ffmpeg and rephrased the commit messages to be more explicit. I also followed up with a bump to 0.7.025. There might still be some discussion to be had about versioning, but for now I will close this bug. Regards, Leo
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.