Commit | Line | Data |
---|---|---|
938081b9 AE |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> | |
b6ea329a | 3 | ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> |
518b21e0 | 4 | ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> |
d70478da | 5 | ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> |
938081b9 AE |
6 | ;;; |
7 | ;;; This file is part of GNU Guix. | |
8 | ;;; | |
9 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
10 | ;;; under the terms of the GNU General Public License as published by | |
11 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
12 | ;;; your option) any later version. | |
13 | ;;; | |
14 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
15 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | ;;; GNU General Public License for more details. | |
18 | ;;; | |
19 | ;;; You should have received a copy of the GNU General Public License | |
20 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
21 | ||
22 | (define-module (gnu packages lsof) | |
b5b73a82 | 23 | #:use-module ((guix licenses) #:prefix license:) |
938081b9 | 24 | #:use-module (guix packages) |
518b21e0 | 25 | #:use-module (guix git-download) |
938081b9 | 26 | #:use-module (guix build-system gnu) |
f942c09b | 27 | #:use-module (guix utils) |
2bf50213 | 28 | #:use-module (gnu packages) |
518b21e0 | 29 | #:use-module (gnu packages groff) |
938081b9 AE |
30 | #:use-module (gnu packages perl)) |
31 | ||
32 | (define-public lsof | |
33 | (package | |
34 | (name "lsof") | |
518b21e0 | 35 | (version "4.94.0") |
cb443e55 TGR |
36 | (source |
37 | (origin | |
518b21e0 TGR |
38 | (method git-fetch) |
39 | (uri (git-reference | |
40 | (url "https://github.com/lsof-org/lsof") | |
41 | (commit version))) | |
42 | (file-name (git-file-name name version)) | |
cb443e55 | 43 | (sha256 |
2bf50213 TGR |
44 | (base32 "0yxv2jg6rnzys49lyrz9yjb4knamah4xvlqj596y6ix3vm4k3chp")) |
45 | (patches (search-patches "lsof-fatal-test-failures.patch")))) | |
938081b9 | 46 | (build-system gnu-build-system) |
518b21e0 TGR |
47 | (native-inputs |
48 | `(("groff" ,groff) ; for soelim | |
49 | ("perl" ,perl))) | |
938081b9 | 50 | (arguments |
16cb3b8f | 51 | `(#:phases |
b6ea329a | 52 | (modify-phases %standard-phases |
b6ea329a EF |
53 | (replace 'configure |
54 | (lambda _ | |
f942c09b | 55 | (setenv "LSOF_CC" ,(cc-for-target)) |
b6ea329a | 56 | (setenv "LSOF_MAKE" "make") |
d70478da LC |
57 | |
58 | ;; By default, the makefile captures the output of 'uname -a'. | |
59 | ;; Provide a fixed output instead to make builds reproducible. | |
60 | (setenv "LSOF_SYSINFO" | |
61 | (string-append "GNU/" (utsname:sysname (uname)) | |
62 | " (GNU Guix)")) | |
63 | ||
b7fd3e96 TGR |
64 | (invoke "./Configure" "linux") |
65 | #t)) | |
c2799070 TGR |
66 | (add-after 'configure 'patch-timestamps |
67 | (lambda _ | |
68 | (substitute* "Makefile" | |
6f6f9ef0 MB |
69 | (("`date`") "`date --date=@1`")) |
70 | #t)) | |
518b21e0 TGR |
71 | (add-after 'build 'build-man-page |
72 | (lambda _ | |
73 | (with-output-to-file "lsof.8" | |
74 | (lambda _ (invoke "soelim" "Lsof.8"))) | |
75 | #t)) | |
16cb3b8f TGR |
76 | (add-before 'check 'disable-failing-tests |
77 | (lambda _ | |
78 | (substitute* "tests/Makefile" | |
79 | ;; Fails with ‘ERROR!!! client gethostbyaddr() failure’. | |
80 | (("(STDTST=.*) LTsock" _ prefix) prefix) | |
81 | ;; Fails without access to a remote NFS server. | |
6f6f9ef0 MB |
82 | (("(OPTTST=.*) LTnfs" _ prefix) prefix)) |
83 | #t)) | |
16cb3b8f | 84 | (replace 'check |
70303d07 TGR |
85 | (lambda* (#:key tests? #:allow-other-keys) |
86 | (when tests? | |
87 | (with-directory-excursion "tests" | |
88 | ;; Tests refuse to run on ‘unvalidated’ platforms. | |
89 | (make-file-writable "TestDB") | |
90 | (invoke "./Add2TestDB") | |
16cb3b8f | 91 | |
70303d07 TGR |
92 | ;; The ‘standard’ tests suggest running ‘optional’ ones as well. |
93 | (invoke "make" "standard" "optional"))) | |
94 | #t)) | |
b6ea329a EF |
95 | (replace 'install |
96 | (lambda* (#:key outputs #:allow-other-keys) | |
97 | (let ((out (assoc-ref outputs "out"))) | |
4ae3549f EF |
98 | (install-file "lsof" (string-append out "/bin")) |
99 | (install-file "lsof.8" (string-append out "/share/man/man8"))) | |
100 | #t))))) | |
35b9e423 | 101 | (synopsis "Display information about open files") |
938081b9 AE |
102 | (description |
103 | "Lsof stands for LiSt Open Files, and it does just that. | |
104 | It lists information about files that are open by the processes running | |
105 | on the system.") | |
106 | (license (license:fsf-free | |
107 | "file://00FAQ" | |
108 | "License inspired by zlib, see point 1.9 of 00FAQ in the distribution.")) | |
3720a6f8 | 109 | (home-page "https://people.freebsd.org/~abe/"))) |