From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Thompson Subject: Re: [PATCH 2/3] gnu: Add man-db Date: Tue, 08 Apr 2014 07:46:24 -0400 Message-ID: <87fvlo82nj.fsf@labrys.i-did-not-set--mail-host-address--so-tickle-me> References: <877g72ezqb.fsf@labrys.i-did-not-set--mail-host-address--so-tickle-me> <874n26ezp0.fsf@labrys.i-did-not-set--mail-host-address--so-tickle-me> <871txaeznu.fsf@labrys.i-did-not-set--mail-host-address--so-tickle-me> <87vbulsox9.fsf@yeeloong.lan> <87txa59xvw.fsf@labrys.i-did-not-set--mail-host-address--so-tickle-me> <87d2gssi4h.fsf@yeeloong.lan> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49340) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXUUC-0004Xv-B5 for guix-devel@gnu.org; Tue, 08 Apr 2014 07:46:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WXUU7-00040A-1f for guix-devel@gnu.org; Tue, 08 Apr 2014 07:46:40 -0400 Received: from na3sys009aog116.obsmtp.com ([74.125.149.240]:37252) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXUU6-0003zR-Ml for guix-devel@gnu.org; Tue, 08 Apr 2014 07:46:34 -0400 Received: by mail-qc0-f177.google.com with SMTP id w7so763467qcr.8 for ; Tue, 08 Apr 2014 04:46:27 -0700 (PDT) In-Reply-To: <87d2gssi4h.fsf@yeeloong.lan> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Mark H Weaver Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain Mark H Weaver writes: > David Thompson writes: > >>> Why is 'lynx' an input? I remember you mentioning on IRC that if PAGER >>> is not set, it launched a web browser by default. I wonder: if you >>> included 'less' and not 'lynx', would it use 'less' by default >>> instead? >> >> My system seems to be doing weird things and insisting on w3m for some >> reason. > > That might be because the '.bash_profile' file I showed you set PAGER to > w3m. I found that if I unset PAGER, this man-db uses 'less' by default, > which I think is sensible. Can't believe I didn't notice the PAGER variable there. I was staring right at it. > >> + (propagated-inputs >> + `(("groff" ,groff) >> + ("less" ,less))) > > Instead of making these propagated inputs, how about arranging for > man-db to invoke the programs directly from the store? There are a > number of ./configure options that should probably be specified with > absolute pathnames: > > --with-pager > --with-nroff > --with-eqn > --with-neqn > --with-tbl > --with-refer > --with-pic > --with-gzip > --with-bzip2 > --with-xz > > You could pass add these to the #:configure-flags. The goal should be > for 'man' to work properly without having to look up any of its > dependent programs from $PATH and with PAGER unset. > > From the #:configure-flags code, %build-inputs can be looked up for the > input paths. So you could do something like (untested): > > --8<---------------cut here---------------start------------->8--- > `(#:configure-flags > (let ((groff (assoc-ref %build-inputs "groff")) > (less (assoc-ref %build-inputs "less")) > (gzip (assoc-ref %build-inputs "gzip")) > ...) > (append (list (string-append "--with-pager=" less "/bin/less") > (string-append "--with-gzip=" gzip "/bin/gzip") > ...) > (map (lambda (prog) > (string-append "--with-" prog "=" groff "/bin/" prog)) > '("nroff" "eqn" "neqn" "tbl" "refer" "pic"))))) > --8<---------------cut here---------------end--------------->8--- > > Thanks! > Mark Wow, this worked perfectly. Now man uses less by default even when I have no PAGER variable set and less is uninstalled. The same thing goes for groff, gzip, etc. I've attached the updated patch. Thanks for your help. This is the most complicated package I've tried to write so far. - Dave --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-gnu-Add-man-db.patch >From a0269a3830dfc2dd9cc6b8402a571a7efd90e717 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 6 Apr 2014 20:25:01 -0400 Subject: [PATCH 2/3] gnu: Add man-db. * gnu/packages.man.scm (man-db): New variable. --- gnu/packages/man.scm | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index e68b1f2..5457037 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -20,7 +20,13 @@ #:use-module (guix licenses) #:use-module (guix download) #:use-module (guix packages) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages flex) + #:use-module (gnu packages gdbm) + #:use-module (gnu packages groff) + #:use-module (gnu packages less) + #:use-module (gnu packages lynx) + #:use-module (gnu packages pkg-config)) (define-public libpipeline (package @@ -41,3 +47,64 @@ "libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way.") (license gpl3+))) + +(define-public man-db + (package + (name "man-db") + (version "2.6.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://download.savannah.gnu.org/releases/man-db/man-db-" + version ".tar.xz")) + (sha256 + (base32 + "1hv6byj6sg6cp3jyf08gbmdm4pwhvd5hzmb94xl0w7prin6hzabx")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (alist-cons-after + 'patch-source-shebangs 'patch-test-shebangs + (lambda* (#:key outputs #:allow-other-keys) + ;; Patch shebangs in test scripts. + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (file) + (substitute* file + (("#! /bin/sh") + (string-append "#!" (which "sh"))))) + (remove file-is-directory? + (find-files "src/tests" ".*"))))) + %standard-phases) + #:configure-flags + (let ((groff (assoc-ref %build-inputs "groff")) + (less (assoc-ref %build-inputs "less")) + (gzip (assoc-ref %build-inputs "gzip")) + (bzip2 (assoc-ref %build-inputs "bzip2")) + (xz (assoc-ref %build-inputs "xz"))) + ;; Invoke groff, less, gzip, bzip2, and xz directly from the store. + (append (list "--disable-setuid" ;; Disable setuid man user. + (string-append "--with-pager=" less "/bin/less") + (string-append "--with-gzip=" gzip "/bin/gzip") + (string-append "--with-bzip2=" bzip2 "/bin/gzip") + (string-append "--with-xz=" xz "/bin/xz")) + (map (lambda (prog) + (string-append "--with-" prog "=" groff "/bin/" prog)) + '("nroff" "eqn" "neqn" "tbl" "refer" "pic")))) + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("flex" ,flex) + ("gdbm" ,gdbm) + ("groff" ,groff) + ("less" ,less) + ("libpipeline" ,libpipeline))) + (home-page "http://man-db.nongnu.org/") + (synopsis "Standard Unix documentation system") + (description + "Man-db is an implementation of the standard Unix documentation system +accessed using the man command. It uses a Berkeley DB database in place of +the traditional flat-text whatis databases.") + (license gpl2+))) -- 1.8.4 --=-=-=--