diff mbox series

[bug#45954] Telegram-CLI (v6)

Message ID 5f1840a5-37b2-731d-b3fe-eff1f33e2550@raghavgururajan.name
State Accepted
Headers show
Series [bug#45954] Telegram-CLI (v6) | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Raghav Gururajan Jan. 31, 2021, 7:46 p.m. UTC
P.S. Just in case if v5 doesn't apply on current master.

Comments

Leo Prikler Feb. 1, 2021, 8:30 a.m. UTC | #1
Am Sonntag, den 31.01.2021, 14:46 -0500 schrieb Raghav Gururajan:
> +(define-public tgl
> +  (package
> +    (name "tgl")
> +    (version "2.0.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri
> +        (git-reference
> +         (url "https://github.com/vysheng/tgl.git")
> +         (commit "ffb04caca71de0cddf28cd33a4575922900a59ed")))
The commit does not match up with the version.  If this is intended,
use git-version instead.

> +         (replace 'install
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (bin-to (string-append out "/bin"))
> +                    (include-to (string-append out "/include"))
> +                    (lib-to (string-append out "/lib"))
> +                    (source (string-append (getenv "TEMP")
> "/source"))
> +                    (bin-from (string-append source "/bin"))
> +                    (lib-from (string-append source "/libs")))
> +               ;; Install executables.
> +               (with-directory-excursion bin-from
> +                 (for-each
> +                  (lambda (file)
> +                    (install-file file bin-to))
> +                  (list
> +                   "generate")))
> +               ;; Install headers.
> +               (with-directory-excursion source
> +                 (for-each
> +                  (lambda (file)
> +                    (install-file file (string-append include-to
> "/tgl/crypto"))
> +                    (delete-file file))
> +                  (find-files "crypto" "\\.h$"))
> +                 (for-each
> +                  (lambda (file)
> +                    (install-file file (string-append include-to
> "/tgl/auto"))
> +                    (delete-file file))
> +                  (find-files "auto" "\\.h$"))
> +                 (for-each
> +                  (lambda (file)
> +                    (install-file file (string-append include-to
> "/tgl"))
> +                    (delete-file file))
> +                  (find-files "." "\\.h$")))
> +               ;; Install libraries.
> +               (for-each
> +                (lambda (file)
> +                  (install-file file (string-append lib-to "/tgl")))
> +                (find-files lib-from "\\.(a|so)$")))
> +             #t)))))
You might want to write that in terms of copy-build-system.

> +         (replace 'install
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (source (string-append (getenv "TEMP")
> "/source")))
> +               ;; Install client.
> +               (install-file
> +                (string-append source "/bin/telegram-cli")
> +                (string-append out "/bin"))
> +               ;; Install daemon.
> +               (install-file
> +                (string-append source "/start-telegram-daemon")
> +                (string-append out "/bin"))
> +               ;; Install daemon script.
> +               (install-file
> +                (string-append source "/telegram-daemon")
> +                (string-append out "/etc/init.d"))
> +               ;; Install server public-key.
> +               (install-file
> +                (string-append source "/server.pub")
> +                (string-append out "/etc/telegram-cli")))
> +             #t))
Same here.  Also, I'm not sure if SysV init scripts are that compatible
with Guix running on Shepherd.  Is there a more direct way of launching
the daemon?

> +                   (("/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr
> /sbin:/usr/bin")
> +                    "$PATH")
Not that it makes much of a difference, as I doubt this file will still
be needed, but PATH=$PATH is a noop.  Perhaps you want (getenv "PATH")
instead?

Regards,
Leo
Raghav Gururajan Feb. 1, 2021, 10:18 p.m. UTC | #2
Hi Leo!

> The commit does not match up with the version.  If this is intended,
> use git-version instead.

Changed in v7.

> You might want to write that in terms of copy-build-system.

Hmm. I tried but couldn't come up with a way to do it like that. :(

> Same here.  Also, I'm not sure if SysV init scripts are that compatible
> with Guix running on Shepherd.  Is there a more direct way of launching
> the daemon?

Updated git-version in v7.

The script may only be used on foreign-distro for now. For guix system, 
we need to define a service for it.

Also, running telegram-cli doesn't require daemon, but vice-versa. The 
daemon is intended to be a complimentary feature to run telegram-cli on 
headless server.

> Not that it makes much of a difference, as I doubt this file will still
> be needed, but PATH=$PATH is a noop.  Perhaps you want (getenv "PATH")
> instead?

I don't think so. The file is a run-time script. So the script will use 
the value of env-var PATH provided by the system. Using (getenv "PATH") 
will instead use the value of PATH inside the build environment.

Regards,
RG.
diff mbox series

Patch

From 44b079fd0e89a106a4212adc38abb916222ecb5b Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <rg@raghavgururajan.name>
Date: Wed, 27 Jan 2021 19:56:23 -0500
Subject: [PATCH 3/3] gnu: Add telegram-cli.

* gnu/packages/telegram.scm (telegram-cli): New variable.
---
 gnu/packages/telegram.scm | 117 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 117 insertions(+)

diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index a5f04eab65..7b607476a8 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -43,14 +43,19 @@ 
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lxqt)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages telephony)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses) #:prefix license:)
@@ -701,3 +706,115 @@  a part of telegram-cli, but now being maintained separately.")
     (description "TGL is the telegram library for telegram-cli.")
     (home-page "https://github.com/vysheng/tgl")
     (license license:lgpl2.1+)))
+
+(define-public telegram-cli
+  (package
+    (name "telegram-cli")
+    (version "1.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/vysheng/tg.git")
+         (commit "6547c0b21b977b327b3c5e8142963f4bc246187a")))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "0c1w7jgska71jjbvg1y09v52549pwa4zkdjly18yxywn7gayd2p6"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:configure-flags
+       (list
+        ;; Use gcrypt instead of openssl.
+        "--disable-openssl")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'trigger-bootstrap
+           (lambda _
+             (delete-file "configure")
+             #t))
+         (add-after 'trigger-bootstrap 'patch-tgl-and-tlparser
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each delete-file
+                       (list
+                        "Makefile.tgl"
+                        "Makefile.tl-parser"))
+             (substitute* "Makefile.in"
+               (("include \\$\\{srcdir\\}/Makefile\\.tl-parser")
+                "")
+               (("include \\$\\{srcdir\\}/Makefile\\.tgl")
+                "")
+               (("-I\\$\\{srcdir\\}/tgl")
+                (string-append "-I" (assoc-ref inputs "tgl")
+                               "/include/tgl"))
+               (("AUTO=auto")
+                (string-append "AUTO=" (assoc-ref inputs "tgl")
+                               "/include/tgl/auto"))
+               (("LIB=libs")
+                (string-append "LIB=" (assoc-ref inputs "tgl")
+                               "/lib/tgl")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (source (string-append (getenv "TEMP") "/source")))
+               ;; Install client.
+               (install-file
+                (string-append source "/bin/telegram-cli")
+                (string-append out "/bin"))
+               ;; Install daemon.
+               (install-file
+                (string-append source "/start-telegram-daemon")
+                (string-append out "/bin"))
+               ;; Install daemon script.
+               (install-file
+                (string-append source "/telegram-daemon")
+                (string-append out "/etc/init.d"))
+               ;; Install server public-key.
+               (install-file
+                (string-append source "/server.pub")
+                (string-append out "/etc/telegram-cli")))
+             #t))
+         (add-after 'install 'patch-daemon-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 (substitute* "etc/init.d/telegram-daemon"
+                   (("KOT\\'s meta engine")
+                    "Telegram Messaging System")
+                   (("/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin")
+                    "$PATH")
+                   (("\\$ROOT/usr/share/telegram-daemon/bin")
+                    (string-append out "/bin"))
+                   (("/etc/init\\.d")
+                    (string-append out "/etc/init.d")))
+                 (substitute* "bin/start-telegram-daemon"
+                   (("msg-search-engine")
+                    "telegram-cli")
+                   (("\\$root/usr/share/telegram-daemon/bin")
+                    (string-append out "/bin")))))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("jansson" ,jansson)
+       ("libconfig" ,libconfig)
+       ("libevent" ,libevent)
+       ("libgcrypt" ,libgcrypt)
+       ("lua" ,lua)
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("python" ,python)
+       ("readline" ,readline)
+       ("tgl" ,tgl)
+       ("tl-parser" ,tl-parser)
+       ("zlib" ,zlib)))
+    (synopsis "Telegram Messenger CLI")
+    (description "TG is the command-line interface for Telegram Messenger.")
+    (home-page "https://github.com/vysheng/tg")
+    (license license:gpl2+)))
-- 
2.30.0