GNU bug report logs - #66694
[PATCH] gnu: Add ani-cli

Previous Next

Package: guix-patches;

Reported by: Jaeme Sifat <jaeme <at> runbox.com>

Date: Mon, 23 Oct 2023 05:13:01 UTC

Severity: normal

Tags: patch

Merged with 66708

Done: Jaeme Sifat <jaeme <at> runbox.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 66694 in the body.
You can then email your comments to 66694 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Mon, 23 Oct 2023 05:13:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jaeme Sifat <jaeme <at> runbox.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 23 Oct 2023 05:13:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Jaeme Sifat <jaeme <at> runbox.com>
To: guix-patches <at> gnu.org
Cc: Jaeme Sifat <jaeme <at> runbox.com>
Subject: [PATCH] gnu: Add ani-cli
Date: Mon, 23 Oct 2023 01:10:55 -0400
Change-Id: I922b98d5a047760974a22499d7a299bdf932ef1a
---
 gnu/packages/video.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index b4dd7c27ae..e5166a3aa2 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -66,6 +66,7 @@
 ;;; Copyright © 2023 Ott Joon <oj <at> vern.cc>
 ;;; Copyright © 2023 Dominik Delgado Steuter <dds <at> disroot.org>
 ;;; Copyright © 2023 Saku Laesvuori <saku <at> laesvuori.fi>
+;;; Copyright © 2023 Jaeme Sifat <jaeme <at> runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,6 +117,7 @@ (define-module (gnu packages video)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages bittorrent)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
@@ -194,6 +196,7 @@ (define-module (gnu packages video)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -5721,3 +5724,34 @@ (define-public svtplay-dl
 broadcasters including SVT Play, Sveriges Radio, TV4 Play, along with many
 others.")
     (license license:expat)))
+
+(define-public ani-cli
+  (package
+    (name "ani-cli")
+    (version "4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pystardust/ani-cli")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan '(("ani-cli" "bin/")
+                        ("ani-cli.1" "share/man/man1/"))))
+    (home-page "https://github.com/pystardust/ani-cli")
+    (synopsis "CLI to browse and watch anime")
+    (description
+     "ani-cli is a shell script command-line tool for browsing and watching
+anime using allanime as a source.  It can stream at multiple resolutions and
+provides multiple interfaces such as rofi.")
+    (propagated-inputs (list mpv
+                             yt-dlp
+                             ffmpeg
+                             fzf
+                             curl
+                             aria2))
+    (license license:gpl3)))

base-commit: 56742f79c0d41e7a642154d9f04b9a344c47a6dc
-- 
2.34.1





Information forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Thu, 26 Oct 2023 20:39:01 GMT) Full text and rfc822 format available.

Message #8 received at 66694 <at> debbugs.gnu.org (full text, mbox):

From: jaeme <jaeme <at> runbox.com>
To: 66694 <at> debbugs.gnu.org
Subject: Revised Patch
Date: Thu, 26 Oct 2023 16:36:59 -0400
[Message part 1 (text/plain, inline)]
I revised my patch to include gexps instead of inferior 
propagated-inputs as was advised to me in the guix IRC room.
[0001-gnu-Add-ani-cli.patch (text/x-patch, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Thu, 26 Oct 2023 23:50:02 GMT) Full text and rfc822 format available.

Message #11 received at 66694 <at> debbugs.gnu.org (full text, mbox):

From: jaeme <jaeme <at> runbox.com>
To: 66694 <at> debbugs.gnu.org
Date: Thu, 26 Oct 2023 19:48:51 -0400
[Message part 1 (text/plain, inline)]
Revised description field.


[0001-gnu-Add-ani-cli.patch (text/x-patch, attachment)]

Merged 66694 66708. Request was from Tobias Geerinckx-Rice <me <at> tobias.gr> to control <at> debbugs.gnu.org. (Sat, 28 Oct 2023 21:37:01 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Sat, 28 Oct 2023 23:15:02 GMT) Full text and rfc822 format available.

Message #16 received at 66694 <at> debbugs.gnu.org (full text, mbox):

From: Tobias Geerinckx-Rice <me <at> tobias.gr>
To: 66694 <at> debbugs.gnu.org
Subject: Re: [bug#66694] [PATCH] gnu: Add ani-cli 
Date: Sun, 29 Oct 2023 00:46:45 +0200
[Message part 1 (text/plain, inline)]
Hi Jaeme,

Thanks for submitting this package!  I've attached my revision 
below.

We don't sign off on our own patches in Guix.  Our Signed-off-by 
does not have the same DCO meaning as it does for, e.g., Linux. 
Ours is merely a stamp of approval by a committer.

+(define-public ani-cli
+  (package
+    (name "ani-cli")
+    (version "4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pystardust/ani-cli")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 
"1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+    (build-system copy-build-system)

So…  uhm.

Apparently the copy-build-system doesn't acknowledge the existence 
of cross compilation, like, at all?

This is a bug in Guix, not you, but here I switched to the 
gnu-build-system to avoid it.

+                       (wrap-program (string-append #$output 
"/bin/ani-cli")
+                         `("PATH" ":" prefix
+                           ,(map bin
+                                 (list "aria2c"
+                                       "curl"
+                                       "ffmpeg"
+                                       "fzf"
+                                       "grep"
+                                       "mpv"
+                                       "sed"
+                                       "uname"
+                                       "yt-dlp")))))))))

I added "tput" to this list.  While the script appears to be 
usable without it, it spits out ugly errors and might misbehave.

+    (home-page "https://github.com/pystardust/ani-cli")
+    (synopsis "CLI to browse and watch anime")
+    (description
+     "ani-cli is a command-line interface (CLI) to browse and 
watch anime.  It
+provides an easy way to stream shows using allanime as a source. 
There are
+different features such as episode browsing, history tracking, 
streaming at
+multiple resolutions and much more depending on what programs the 
user has
+installed.")

I took the liberty of rewriting this a bit, including my previous 
@uref suggestion.

+    (inputs (list aria2
+                  coreutils
+                  curl
+                  ffmpeg
+                  fzf
+                  mpv
+                  yt-dlp))

Besides ncurses for tput, I added grep and sed for the wrapper. 
This will matter when the package cross-builds: you don't want the 
script calling the build-time ‘native’ grep at run time.

I also added bash-minimal at ‘guix lint’'s suggestion.

We conventionally put fields in this order:

 source
 build-system
 arguments
 native-inputs
 inputs
 propagated-inputs
 home-page
 synopsis
 description
 license

This is not a hard rule and you'll find variants, but I moved the 
inputs to their conventional location above the Metadata Zone.

+    (license license:gpl3)))

As noted in #guix, I changed this to GPL3+ due to the ‘or (at your 
option) any later version’ wording.

Here's a random Deep Guix Thing that I'm too tired to explain 
further: because this script invokes curl, and to avoid 
propagating curl, I added a copy of one of our curl package's 
native-search-paths.  This makes the script work inside a --pure 
guix shell, as long as you include nss-certs.

I do wonder: just how legal is this script, and the one Web site 
to which it's tightly bound?

Kind regards,

T G-R

[0001-gnu-Add-ani-cli.patch (text/x-patch, inline)]
From e35b26790407b8019bee2f824f03f31c173e3507 Mon Sep 17 00:00:00 2001
Message-ID: <e35b26790407b8019bee2f824f03f31c173e3507.1697932801.git.me <at> tobias.gr>
From: jaeme <jaeme <at> runbox.com>
Date: Thu, 26 Oct 2023 19:48:51 -0400
Subject: [PATCH] gnu: Add ani-cli.

* gnu/packages/video.scm (ani-cli): New variable.

Signed-off-by: Tobias Geerinckx-Rice <me <at> tobias.gr>
Change-Id: I21ea258f164285dea0d46379dff120b105803dd0
---
 gnu/packages/video.scm | 75 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index b4dd7c27ae..cdce376d3e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -66,6 +66,7 @@
 ;;; Copyright © 2023 Ott Joon <oj <at> vern.cc>
 ;;; Copyright © 2023 Dominik Delgado Steuter <dds <at> disroot.org>
 ;;; Copyright © 2023 Saku Laesvuori <saku <at> laesvuori.fi>
+;;; Copyright © 2023 Jaeme Sifat <jaeme <at> runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,6 +117,7 @@ (define-module (gnu packages video)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages bittorrent)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
@@ -194,6 +196,7 @@ (define-module (gnu packages video)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -209,6 +212,78 @@ (define-module (gnu packages video)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
+(define-public ani-cli
+  (package
+    (name "ani-cli")
+    (version "4.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pystardust/ani-cli")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)           ;nothing to configure
+          (delete 'build)               ;nothing to build
+          (replace 'install
+            (lambda _
+              (install-file "ani-cli" (string-append #$output "/bin"))
+              (install-file "ani-cli.1"
+                            (string-append #$output "/share/man/man1"))))
+          (add-after 'install 'wrap
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define (bin command)
+                (dirname (search-input-file
+                          inputs (string-append "bin/" command))))
+              (wrap-program (string-append #$output "/bin/ani-cli")
+                `("PATH" ":" prefix
+                  ,(map bin (list "aria2c"
+                                  "curl"
+                                  "ffmpeg"
+                                  "fzf"
+                                  "grep"
+                                  "mpv"
+                                  "sed"
+                                  "tput"
+                                  "uname"
+                                  "yt-dlp")))))))))
+    (inputs (list aria2
+                  bash-minimal
+                  coreutils
+                  curl
+                  ffmpeg
+                  fzf
+                  grep
+                  mpv
+                  ncurses
+                  sed
+                  yt-dlp))
+    (native-search-paths
+     ;; This was copied from the curl package.
+     (list (search-path-specification
+            (variable "CURL_CA_BUNDLE")
+            (file-type 'regular)
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
+    (home-page "https://github.com/pystardust/ani-cli")
+    (synopsis "Browse and watch anime from the command line")
+    (description
+     "ani-cli is a @acronym{CLI, command-line interface} to browse and watch
+anime by streaming videos from @uref{https://allanime.to,All Anime}.
+
+There are different features such as episode browsing, history tracking,
+streaming at multiple resolutions, and much more, depending on what programs the
+user has installed.")
+    (license license:gpl3+)))
+
 (define-public transcode
   (package
     (name "transcode")

base-commit: 4dfbc536689b07e56aead3dd864b8af54613d091
prerequisite-patch-id: 0f2ea4144d953a8626c7a6aaede0a6797ec9c5f9
prerequisite-patch-id: 658b58a6e368317e83f8b511bebd9b3ae0b7b6f8
prerequisite-patch-id: 95d6d324d080671cb1ac94ff17e73109f54b7977
prerequisite-patch-id: 7e6e4ab87b52996e9bb6cd8595889f21ba87e9fe
prerequisite-patch-id: 6f86f2a54f77c0e8841b6f22953c2f748e358107
prerequisite-patch-id: 7c88071ffd6af8c9de9a44ef2e745e3b111d28e7
prerequisite-patch-id: dacf336396c4f629906e4689dc2868d437179a37
prerequisite-patch-id: 35641348fcba881313d08cb85da3722ba0891264
prerequisite-patch-id: ea98f949fde81f63a309e36405b87463dc07ac50
prerequisite-patch-id: a299994eb9a52db942a5cc3a038b8bc34529c799
prerequisite-patch-id: 9ffc6d3a9be37af59ec29bfce0543cf8371edacb
prerequisite-patch-id: c489fbc8af7d431f9372d0b8bc9e4c609703680e
prerequisite-patch-id: 471c932817cc1044fd03f56e1a1f84e4ce4029a9
prerequisite-patch-id: 88f3a5981ea62ce654a48c258df09315f24ba73e
prerequisite-patch-id: 62b7b8d8b26d642f524d45e910f7685a57345d76
prerequisite-patch-id: 6ad7cb518d3f48614c97e7ef851289a8f4375306
prerequisite-patch-id: 3fec7d86bd725207d19e77b38cba7f989af68ea3
prerequisite-patch-id: 3bd20d51aa3a07f86722c5894b85f58b96e1e798
prerequisite-patch-id: 1011132081c09cd02295c999c9af44d1191bc4b2
prerequisite-patch-id: 83ffbbea6cae29ccd11395332446c2a8eb88fd6c
prerequisite-patch-id: 760df26aee26e14249c412f32630ae6e71a3fa3e
prerequisite-patch-id: b89039b55bef0639c3679b1a5ba13b7a5593af5b
prerequisite-patch-id: 24fc8fdb82bb9287ed944673e2f922587bc49503
prerequisite-patch-id: 077e45c8081930192499bfa5c7391d882b1ad401
prerequisite-patch-id: f31368d6b77f811e4b1fba489492ac4d6cde0948
prerequisite-patch-id: fc4e5787813af14bc812bc61a18acd684bd319af
prerequisite-patch-id: 08f122a2c9dec498a089d665280f37191f96a1ba
prerequisite-patch-id: 6da0dcc6295b755538d7cb2ae4d7f290c3d14e98
prerequisite-patch-id: 7220d8204293754caa4db9ebe3c788ee336d8889
prerequisite-patch-id: 6462f9da097dee40814cf546412b47552f3911a7
prerequisite-patch-id: 9ba212fb95cb7eb4badf51ca677cf5109c2ed881
prerequisite-patch-id: 5ac9fa96627b4d3593429f55b391e66ccf8f14e2
prerequisite-patch-id: a43431df227168b9d0dbb627277ff668fc04c759
prerequisite-patch-id: d72ec36511b6a610072e24e051bbe859af3490fe
-- 
2.41.0

[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Sun, 29 Oct 2023 06:18:02 GMT) Full text and rfc822 format available.

Message #19 received at 66694 <at> debbugs.gnu.org (full text, mbox):

From: jaeme <jaeme <at> runbox.com>
To: 66694 <at> debbugs.gnu.org
Cc: me <at> tobias.gr
Subject: Re: [bug#66694] Revision
Date: Sun, 29 Oct 2023 02:16:03 -0400
Hello T,


T wrote:

> We don't sign off on our own patches in Guix. Our Signed-off-by does 
not have the same DCO meaning as it does for, e.g., Linux. Ours is 
merely a stamp of approval by a committer.

I see, I do wish I knew that earlier before sending my other patches. 
Maybe that should be written somewhere in the Contributing section of 
the Guix manual because I have my ~/.gitconfig automatically add the 
signed-off line to all my commits. Thank you for mentioning that.


T wrote:

> Apparently the copy-build-system doesn't acknowledge the existence of 
cross compilation, like, at all?

That not surprisingly went over my head. Can you tell me how you 
discovered that? I would like to know.


T wrote:

> ...you don't want the  script calling the build-time ‘native’ grep at 
run time.

Noted (still learning lots').


T wrote:

> I also added bash-minimal at ‘guix lint’'s suggestion.

I also saw that suggestion but I didn't add it since I already had 
coreutils which in my mind eclipsed bash-minimal.


T wrote:

> we conventionally put fields in this order:

Duly Noted.


T wrote:

> Here's a random Deep Guix Thing that I'm too tired to explain further:

I remember reading about 'search-native-paths' in a Guix blog, I'm glad 
the --pure situation is cleared up.


T wrote:

> I do wonder: just how legal is this script, and the one Web site to 
which it's tightly bound?

From looking at <https://repology.org/project/ani-cli/versions> for the 
other third-party packagers: Debian, Ubuntu, Gentoo as well as nixpkgs 
have this script in their repositories. In addition, disclaimer.md 
posits that ani-cli can be thought of as a browser/wrapper rather than 
being a direct source for copyrighted content. We don't know when the 
website(s) will stop working but we can assume that the script will be 
updated as well as it's fairly active and popular in the GNU/Linux 
world. But to offer a more principled rebuttal, yt-dlp also has this 
similar issue of relying on a nonfree, non-federated network service 
(google videos/YouTube). However, one of the niches of yt-dlp is that it 
offers a way for users to stream/download videos hosted on YouTube 
without having to load the proprietary JS through their web browser. 
This package could serve a similar purpose to guix users as it's much 
safer to stream content directly rather than having to connect to and 
load the website (if it is possible at all with GNU Icecat) via web 
browser.


On a side note, this is my first time interacting with a mailing 
list/submitting patches. I have a lot of growing pains to get through.


Thanks,

Jaeme








Information forwarded to guix-patches <at> gnu.org:
bug#66694; Package guix-patches. (Tue, 14 Nov 2023 18:02:01 GMT) Full text and rfc822 format available.

Message #22 received at 66694 <at> debbugs.gnu.org (full text, mbox):

From: Jaeme Sifat <jaeme <at> runbox.com>
To: 66694 <at> debbugs.gnu.org
Cc: me <at> tobias.gr
Subject: Update on ani-cli?
Date: Tue, 14 Nov 2023 13:00:49 -0500
[Message part 1 (text/plain, inline)]
Hi,

There hasn't been any activity on this issue for a while now and my 
patch hasn't been merged yet.

Respond Soon,

Jaeme
[0001-gnu-Add-ani-cli.patch (text/x-patch, attachment)]

bug closed, send any further explanations to 66694 <at> debbugs.gnu.org and Jaeme Sifat <jaeme <at> runbox.com> Request was from Jaeme Sifat <jaeme <at> runbox.com> to control <at> debbugs.gnu.org. (Tue, 28 Nov 2023 14:29:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 27 Dec 2023 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 134 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.