From: Tomasz Jeneralczyk <tj@schwi.pl>
To: 56803@debbugs.gnu.org
Cc: Tomasz Jeneralczyk <tj@schwi.pl>
Subject: [bug#56803] [PATCH v2 6/6] gnu: Add hydrus-network.
Date: Sun, 14 Aug 2022 14:46:23 +0200 [thread overview]
Message-ID: <2a7e6f4b11784ab9dc680e1fe3255f6e15333e32.1660481045.git.tj@schwi.pl> (raw)
In-Reply-To: <458d155cb6f630e0e8aea1793a4c97b3d76520e6.1660481045.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.
I was not able to build the program's help files. Fixing it would probably
mean packaging a whole new build system for guix - more info in source
comments.
Also adds copyright and new used modules.
* gnu/packages/image-viewers.scm (hydrus-network): Add variable.
---
gnu/packages/image-viewers.scm | 133 +++++++++++++++++++++++++++++++++
1 file changed, 133 insertions(+)
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 88dbba866b..7878fe1048 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,128 @@ (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 "495") ; upstream has a weekly release cycle.
+ (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
+ "03zhrcmjzbk37sl9nwjahfmr8aflss84c4xhg5ci5b8jvbbqmr1j"))))
+ (build-system python-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(let ((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))
+ (invoke "xvfb-run" "python" "test.py")))
+ ;; 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.
+ (delete 'build)
+ (add-before 'install 'patch-variables
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let ((ffmpeg (search-input-file inputs "/bin/ffmpeg"))
+ (swfrender (search-input-file inputs "/bin/swfrender"))
+ (upnpc (search-input-file inputs "/bin/upnpc"))
+ (out (assoc-ref outputs "out")))
+ (with-directory-excursion "hydrus"
+ ;; Without this the program would incorrectly assume
+ ;; that it uses user's ffmpeg binary when it isn't.
+ (substitute* "client/ClientController.py"
+ (("if (HydrusVideoHandling\\.FFMPEG_PATH).*" _ var)
+ (string-append "if " var " == \"" ffmpeg "\":\n")))
+ (with-directory-excursion "core"
+ (substitute* "HydrusConstants.py"
+ (("STATIC_DIR = .*")
+ (string-append "STATIC_DIR = \"" out static-dir "\"\n")))
+ (substitute* "HydrusFlashHandling.py"
+ (("SWFRENDER_PATH = .*\n")
+ (string-append "SWFRENDER_PATH = \"" swfrender "\"\n")))
+ (substitute* "HydrusVideoHandling.py"
+ (("FFMPEG_PATH = .*\n")
+ (string-append "FFMPEG_PATH = \"" ffmpeg "\"\n")))
+ (substitute* "networking/HydrusNATPunch.py"
+ (("UPNPC_PATH = .*\n")
+ (string-append "UPNPC_PATH = \"" upnpc "\"\n"))))))))
+ ;; Since everything lives in hydrus's root directory, it needs to
+ ;; be spread out to comply with guix's expectations.
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (client (string-append out "/bin/hydrus"))
+ (server (string-append out "/bin/hydrus-server")))
+ (copy-recursively "static"
+ (string-append out static-dir))
+ (copy-recursively "hydrus"
+ (string-append out
+ "/lib/python"
+ (python-version
+ #$(this-package-input "python"))
+ "/site-packages/hydrus"))
+ (mkdir (string-append out "/bin"))
+ (copy-file "client.py" client)
+ (chmod client #o0555)
+ (copy-file "server.py" server)
+ (chmod server #o0555))))))))
+ ;; All native-inputs are only needed for the the check phase
+ (native-inputs
+ (list
+ xvfb-run
+ python-nose
+ python-mock
+ python-httmock))
+ ;; 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 ; its python bindings are a drop-in replacement for opencv-python-headless
+ python-pillow
+ python-psutil
+ python-pylzma
+ python-pyopenssl
+ ;; since hydrus' version 494 it supports python-pyside-6 but it's not yet
+ ;; in guix. pyside-2 is still supported as a fallback.
+ 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 python))
+ (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
next prev parent reply other threads:[~2022-08-14 12:49 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 ` [bug#56803] [PATCH 6/6] gnu: Add hydrus-network Tomasz Jeneralczyk
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 ` Tomasz Jeneralczyk [this message]
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2a7e6f4b11784ab9dc680e1fe3255f6e15333e32.1660481045.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 public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).