all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Tomasz Jeneralczyk <tj@schwi.pl>
To: 56803@debbugs.gnu.org
Cc: Tomasz Jeneralczyk <tj@schwi.pl>
Subject: [bug#56803] [PATCH 6/6] gnu: Add hydrus-network.
Date: Wed, 27 Jul 2022 21:00:28 +0200	[thread overview]
Message-ID: <9622a5d87b172e7f9ae838da45f15eb0ba95e374.1658946720.git.tj@schwi.pl> (raw)
In-Reply-To: <cover.1658946720.git.tj@schwi.pl>

Hydrus-network has a weekly release cycle and is meant to be used from its own
directory so I artificially spread it out to comply with guix's expectations.

Three binaries from inputs are copied into a directory hydrus knows about:
  * ffmpeg - works as expected
  * swftools - does not do anything neither on guix or Arch linux - possibly
  an unfinished feature, but I left it in, in case it gets fixed in a future version.
  * miniupnpc - times out on my system, but it should work otherwise.

I was not able to build the program's help files. Updating
python-pymdown-extensions to its latest version might be the solution, but
this would require also packaging its new build system that is not present in
guix yet. I decided to cut short there.

Also adds copyright and new used modules.

* gnu/packages/image-viewers.scm (hydrus-network): Add variable.
---
 gnu/packages/image-viewers.scm | 127 +++++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 8d4d2351c3..9574384761 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -24,6 +24,7 @@
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 dissent <disseminatedissent@protonmail.com>
 ;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,6 +55,7 @@ (define-module (gnu packages image-viewers)
   #:use-module (guix build-system qt)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages animation)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -84,14 +86,20 @@ (define-module (gnu packages image-viewers)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-compression)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages suckless)
   #:use-module (gnu packages terminals)
+  #:use-module (gnu packages upnp)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages))
 
@@ -973,3 +981,122 @@ (define-public xzgv
     (description
      "xzgv is a fast image viewer that provides extensive keyboard support.")
     (license license:gpl2+)))
+
+(define-public hydrus-network
+  (package
+    (name "hydrus-network")
+    (version "492")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hydrusnetwork/hydrus")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0cyc499is97r8wri0y86yw6kpfcvc0a1yslr8g8sk4vhlly8gnra"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      (with-imported-modules '((guix build utils))
+        #~(let ((bin-dir "/libexec/hydrus")
+                (static-dir "/share/hydrus/static"))
+            (modify-phases %standard-phases
+              ;; Hydrus is a python program but does not uses setup.py or any
+              ;; other build system to build itself - it's delivered ready to
+              ;; run from the source.
+              (replace 'check
+                (lambda _
+                  (setenv "DISPLAY" ":0")
+                  (setenv "XDG_CACHE_HOME" (getcwd))
+                  (setenv "HOME" (getcwd))
+                  (system "Xvfb &")
+                  (invoke "python" "test.py")))
+              (delete 'build)
+              (add-before 'install 'patch-variables
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let ((out (assoc-ref outputs "out")))
+                    (substitute* "hydrus/core/HydrusConstants.py"
+                      (("STATIC_DIR = (.*)\n")
+                       (string-append "STATIC_DIR = \"" out static-dir "\""))
+                      (("BIN_DIR = (.*)\n")
+                       (string-append "BIN_DIR = \"" out bin-dir "\"\n"))))))
+              (replace 'install
+                (lambda* (#:key outputs inputs #:allow-other-keys)
+                  (let* ((out (assoc-ref outputs "out"))
+                         (python (assoc-ref inputs "python"))
+                         (client-path (string-append out "/bin/hydrus"))
+                         (server-path (string-append out "/bin/hydrus-server")))
+                    (copy-recursively "static"
+                                      (string-append out static-dir))
+                    (copy-recursively "hydrus"
+                                      (string-append out
+                                                     "/lib/python"
+                                                     (python-version python)
+                                                     "/site-packages/hydrus"))
+                    (mkdir (string-append out "/bin"))
+                    (copy-file "client.py" client-path)
+                    (chmod client-path #o0555)
+                    (copy-file "server.py" server-path)
+                    (chmod server-path #o0555))))
+              ;; Hydrus searches for some binaries at bin-dir so it's important
+              ;; to put them there so it can find and use them.
+              (add-after 'install 'pupulate-libexec
+                (lambda* (#:key outputs inputs #:allow-other-keys)
+                  (let* ((out (assoc-ref outputs "out"))
+                         (out/bin-dir (string-append out bin-dir)))
+                    (mkdir-p out/bin-dir)
+                    (copy-file
+                     (string-append (assoc-ref inputs "swftools") "/bin/swfrender")
+                     (string-append out/bin-dir "/swfrender_linux"))
+                    (copy-file
+                     (string-append (assoc-ref inputs "ffmpeg") "/bin/ffmpeg")
+                     (string-append out/bin-dir "/ffmpeg"))
+                    (copy-file
+                     (string-append (assoc-ref inputs "miniupnpc") "/bin/upnpc")
+                     (string-append out/bin-dir "/miniupnpc"))))))))))
+    ;; All native-inputs are only needed for the the check phase
+    (native-inputs
+     (list
+      python-nose
+      python-mock
+      python-httmock
+      xorg-server-for-tests))
+    ;; All python packages were taken from static/build_files/linux/requirements.txt
+    (propagated-inputs
+     (list
+      python-beautifulsoup4
+      python-cbor2
+      python-chardet
+      python-cloudscraper
+      python-html5lib
+      python-lxml
+      python-lz4
+      python-numpy
+      opencv-with-python ; drop-in replacement for opencv-python-headless
+      python-pillow
+      python-psutil
+      python-pylzma
+      python-pyopenssl
+      python-pyside-2
+      python-pysocks
+      python-mpv
+      python-pyyaml
+      python-qtpy
+      python-requests
+      python-send2trash
+      python-service-identity
+      python-six
+      python-twisted))
+    (inputs (list swftools ffmpeg miniupnpc))
+    (synopsis "Organize your media with tags like a dektop booru")
+    (description
+     "The hydrus network client is an application written for
+internet-fluent media nerds who have large image/swf/webm collections.
+It browses with tags instead of folders, a little like a booru on your desktop.
+Advanced users can share tags and files anonymously through custom servers that
+any user may run.  Everything is free and privacy is the first concern.")
+    (home-page "https://hydrusnetwork.github.io/hydrus/")
+    (license license:wtfpl2)))
-- 
2.37.1





  parent reply	other threads:[~2022-07-27 19:03 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 18:57 [bug#56803] [PATCH 0/6] Add hydrus network and its dependencies Tomasz Jeneralczyk
2022-07-27 19:00 ` [bug#56803] [PATCH 1/6] gnu: Add swftools Tomasz Jeneralczyk
2022-07-27 19:00 ` [bug#56803] [PATCH 2/6] gnu: Add python-xvfbwrapper Tomasz Jeneralczyk
2022-07-27 19:00 ` [bug#56803] [PATCH 3/6] gnu: Add python-mpv Tomasz Jeneralczyk
2022-07-27 22:05   ` Maxime Devos
2022-07-28 14:58     ` Tomasz Jeneralczyk
2022-08-09 15:14       ` [bug#56803] [PATCH 0/6] Add hydrus network and its dependencies Ludovic Courtès
2022-08-13 14:34         ` Tomasz Jeneralczyk
2022-08-13 21:26           ` ( via Guix-patches via
2022-08-14 10:10             ` Tomasz Jeneralczyk
2022-08-14 10:11               ` ( via Guix-patches via
2022-08-09 16:59       ` [bug#56803] [PATCH 3/6] gnu: Add python-mpv Maxime Devos
2022-07-27 22:09   ` Maxime Devos
2022-07-27 19:00 ` [bug#56803] [PATCH 4/6] gnu: Add opencv-with-python Tomasz Jeneralczyk
2022-07-27 19:00 ` [bug#56803] [PATCH 5/6] gnu: Update python-cloudscraper Tomasz Jeneralczyk
2022-07-27 19:00 ` Tomasz Jeneralczyk [this message]
2022-08-09 15:09   ` [bug#56803] [PATCH 0/6] Add hydrus network and its dependencies Ludovic Courtès
2022-08-14 12:46 ` [bug#56803] [PATCH v2 1/6] gnu: Add swftools Tomasz Jeneralczyk
2022-08-14 12:46   ` [bug#56803] [PATCH v2 2/6] gnu: Add python-xvfbwrapper Tomasz Jeneralczyk
2022-08-14 12:46   ` [bug#56803] [PATCH v2 3/6] gnu: Add python-mpv Tomasz Jeneralczyk
2022-08-14 12:46   ` [bug#56803] [PATCH v2 4/6] gnu: Add support for python in opencv Tomasz Jeneralczyk
2022-08-14 12:46   ` [bug#56803] [PATCH v2 5/6] gnu: Update python-cloudscraper Tomasz Jeneralczyk
2022-08-14 12:46   ` [bug#56803] [PATCH v2 6/6] gnu: Add hydrus-network Tomasz Jeneralczyk
2022-08-29 22:46     ` bug#56803: [PATCH 0/6] Add hydrus network and its dependencies Ludovic Courtès

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=9622a5d87b172e7f9ae838da45f15eb0ba95e374.1658946720.git.tj@schwi.pl \
    --to=tj@schwi.pl \
    --cc=56803@debbugs.gnu.org \
    /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.