summaryrefslogtreecommitdiff
path: root/gnu/packages/man.scm
diff options
context:
space:
mode:
authorNicolas Goaziou <[email protected]>2025-02-27 01:15:09 +0100
committerNicolas Goaziou <[email protected]>2025-02-27 01:15:09 +0100
commitf9b9116aef228a4455a1112f5d935f5de792370f (patch)
treead1844761cd60f5c4119ebc36b40404ede6d20c1 /gnu/packages/man.scm
parent4f220482de742c9c03cf6378ab147026a330edd0 (diff)
gnu: Add stdman.
* gnu/packages/man.scm (stdman): New variable. Change-Id: I34a31f026ab38d37885411967fe268c637873035
Diffstat (limited to 'gnu/packages/man.scm')
-rw-r--r--gnu/packages/man.scm73
1 files changed, 72 insertions, 1 deletions
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 54e436a1eb..02ca7ba831 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -40,15 +40,17 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages flex)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages groff)
#:use-module (gnu packages less)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages linux)
+ #:use-module (gnu packages web-browsers)
#:use-module (gnu packages xml))
(define-public xmltoman
@@ -510,3 +512,72 @@ in C99.")
(synopsis "Convert text to man page")
(description "Txt2man converts flat ASCII text to man page format.")
(license license:gpl2+)))
+
+(define-public stdman
+ ;; Stdman generates the man files from "html-book-YYYYMMDD.tar.xz" asset in
+ ;; <https://github.com/PeterFeicht/cppreference-doc> repository, which is an
+ ;; unofficial archive of <https://en.cppreference.com>.
+ ;;
+ ;; There are therefore two versions to consider: one for the tool, and one
+ ;; for the source. Use the latter for the package as a whole, and let-bind
+ ;; the former.
+ (let ((stdman-version "2024.07.05"))
+ (package
+ (name "stdman")
+ (version "20240610")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jeaye/stdman")
+ (commit stdman-version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0h1gfw4sxic5gx073zmshg4qyz2g142ckgzyj30pk8j708mnl8pz"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #false ;no tests
+ #:configure-flags #~(list (string-append "--prefix=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'reproducible-build
+ ;; Out of the box, executable's "version" results from
+ ;; a call to `date'. Since the string is going to appear
+ ;; in every man page, refer to the documentation version.
+ (lambda _
+ (substitute* "Makefile.in"
+ (("(STDMAN_VERSION=).*" _ prefix)
+ (string-append prefix #$version "\n")))))
+ (add-after 'unpack 'unpack-html-source
+ (lambda _
+ (let ((reference
+ #$(this-package-native-input
+ (string-append "html-book-" version ".tar.xz"))))
+ (invoke "tar" "xvJf" reference))))
+ (replace 'build
+ (lambda _
+ ;; Elinks insists on creating its configuration in HOME.
+ (setenv "HOME" (getcwd))
+ (invoke "make" "generate"))))))
+ (native-inputs
+ (list curl
+ elinks
+ which
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://github.com/PeterFeicht/cppreference-doc/"
+ "releases/download/v" version "/"
+ "html-book-" version ".tar.xz"))
+ (file-name (string-append "html-book-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0qa7d2bida65c00z5awa99jrwr4gvxdpc3xp9r6hkxppxaji495w")))))
+ (home-page "https://github.com/jeaye/stdman")
+ (synopsis "Formatted C++ @code{stdlib} man pages from cppreference")
+ (description
+ "Stdman is a tool that provides C++ @code{stdlib} documentation
+archived from @url{https://en.cppreference.com, cppreference} as
+Groff-formated man pages, accessible from the @command{man} command.")
+ (license license:expat))))