skarnet.scm 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2015 Claes Wallin <claes.wallin@greatsinodevelopment.com>
  3. ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
  4. ;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn>
  5. ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  6. ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
  7. ;;;
  8. ;;; This file is part of GNU Guix.
  9. ;;;
  10. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  11. ;;; under the terms of the GNU General Public License as published by
  12. ;;; the Free Software Foundation; either version 3 of the License, or (at
  13. ;;; your option) any later version.
  14. ;;;
  15. ;;; GNU Guix is distributed in the hope that it will be useful, but
  16. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  17. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. ;;; GNU General Public License for more details.
  19. ;;;
  20. ;;; You should have received a copy of the GNU General Public License
  21. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  22. (define-module (gnu packages skarnet)
  23. #:use-module (gnu packages)
  24. #:use-module (guix licenses)
  25. #:use-module (guix packages)
  26. #:use-module (guix download)
  27. #:use-module (guix build-system gnu))
  28. (define-public skalibs
  29. (package
  30. (name "skalibs")
  31. (version "2.10.0.3")
  32. (source
  33. (origin
  34. (method url-fetch)
  35. (uri (string-append "https://skarnet.org/software/skalibs/skalibs-"
  36. version ".tar.gz"))
  37. (sha256
  38. (base32 "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p"))))
  39. (build-system gnu-build-system)
  40. (arguments
  41. '(#:tests? #f ; no tests exist
  42. #:phases (modify-phases %standard-phases
  43. (add-after 'unpack 'reproducible
  44. (lambda _
  45. ;; Sort source files deterministically so that the *.a
  46. ;; and *.so files are reproducible.
  47. (substitute* "Makefile"
  48. (("\\$\\(wildcard src/lib\\*/\\*.c\\)")
  49. "$(sort $(wildcard src/lib*/*.c))"))
  50. #t)))))
  51. (home-page "https://skarnet.org/software/skalibs/")
  52. (synopsis "Platform abstraction libraries for skarnet.org software")
  53. (description
  54. "This package provides lightweight C libraries isolating the developer
  55. from portability issues, providing a unified systems API on all platforms,
  56. including primitive data types, cryptography, and POSIX concepts like sockets
  57. and file system operations. It is used by all skarnet.org software.")
  58. (license isc)))
  59. (define-public execline
  60. (package
  61. (name "execline")
  62. (version "2.8.0.1")
  63. (source
  64. (origin
  65. (method url-fetch)
  66. (uri (string-append "https://skarnet.org/software/execline/execline-"
  67. version ".tar.gz"))
  68. (sha256
  69. (base32 "1v9swmhw2rcrr9fmkmd7qh8qq0kslhmvxwz2a3bhan9ksabz8wx3"))))
  70. (build-system gnu-build-system)
  71. (inputs `(("skalibs" ,skalibs)))
  72. (arguments
  73. '(#:configure-flags (list
  74. (string-append "--with-lib="
  75. (assoc-ref %build-inputs "skalibs")
  76. "/lib/skalibs")
  77. (string-append "--with-sysdeps="
  78. (assoc-ref %build-inputs "skalibs")
  79. "/lib/skalibs/sysdeps"))
  80. #:phases (modify-phases %standard-phases
  81. (add-after
  82. 'install 'post-install
  83. (lambda* (#:key inputs outputs #:allow-other-keys)
  84. (let* ((out (assoc-ref outputs "out"))
  85. (bin (string-append out "/bin")))
  86. (wrap-program (string-append bin "/execlineb")
  87. `("PATH" ":" prefix (,bin)))))))
  88. #:tests? #f)) ; no tests exist
  89. (home-page "https://skarnet.org/software/execline/")
  90. (license isc)
  91. (synopsis "Non-interactive shell-like language with minimal overhead")
  92. (description
  93. "Execline is a (non-interactive) scripting language, separated into a
  94. parser (execlineb) and a set of commands meant to execute one another in a
  95. chain-execution fashion, storing the whole script in the argument array.
  96. It features conditional loops, getopt-style option handling, file name
  97. globbing, redirection and other shell concepts, expressed as discrete commands
  98. rather than in special syntax, minimizing runtime footprint and
  99. complexity.")))
  100. (define-public s6
  101. (package
  102. (name "s6")
  103. (version "2.10.0.3")
  104. (source
  105. (origin
  106. (method url-fetch)
  107. (uri (string-append "https://skarnet.org/software/s6/s6-"
  108. version ".tar.gz"))
  109. (sha256
  110. (base32 "0mw7blp8dwr09z58m9mrxwmmvvpnjzq9klcf1vgm0hbha4qkf88x"))))
  111. (build-system gnu-build-system)
  112. (inputs `(("skalibs" ,skalibs)
  113. ("execline" ,execline)))
  114. (arguments
  115. `(#:configure-flags (list
  116. (string-append "--with-lib="
  117. (assoc-ref %build-inputs "skalibs")
  118. "/lib/skalibs")
  119. (string-append "--with-lib="
  120. (assoc-ref %build-inputs "execline")
  121. "/lib/execline")
  122. (string-append "--with-sysdeps="
  123. (assoc-ref %build-inputs "skalibs")
  124. "/lib/skalibs/sysdeps"))
  125. #:tests? #f ; no tests exist
  126. #:phases
  127. (modify-phases %standard-phases
  128. (add-after 'install 'install-doc
  129. (lambda* (#:key outputs #:allow-other-keys)
  130. (let* ((out (assoc-ref outputs "out"))
  131. (doc (string-append out "/share/doc/s6-" ,version)))
  132. (copy-recursively "doc" doc)
  133. #t))))))
  134. (home-page "https://skarnet.org/software/s6")
  135. (license isc)
  136. (synopsis "Small suite of programs for process supervision")
  137. (description
  138. "s6 is a small suite of programs for UNIX, designed to allow process
  139. supervision (a.k.a. service supervision), in the line of daemontools and
  140. runit, as well as various operations on processes and daemons. It is meant to
  141. be a toolbox for low-level process and service administration, providing
  142. different sets of independent tools that can be used within or without the
  143. framework, and that can be assembled together to achieve powerful
  144. functionality with a very small amount of code.")))
  145. (define-public s6-dns
  146. (package
  147. (name "s6-dns")
  148. (version "2.3.5.1")
  149. (source
  150. (origin
  151. (method url-fetch)
  152. (uri (string-append "https://skarnet.org/software/s6-dns/s6-dns-"
  153. version ".tar.gz"))
  154. (sha256
  155. (base32 "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c"))))
  156. (build-system gnu-build-system)
  157. (inputs `(("skalibs" ,skalibs)))
  158. (arguments
  159. '(#:configure-flags (list
  160. (string-append "--with-lib="
  161. (assoc-ref %build-inputs "skalibs")
  162. "/lib/skalibs")
  163. (string-append "--with-sysdeps="
  164. (assoc-ref %build-inputs "skalibs")
  165. "/lib/skalibs/sysdeps"))
  166. #:tests? #f)) ; no tests exist
  167. (home-page "https://skarnet.org/software/s6-dns")
  168. (license isc)
  169. (synopsis "Suite of DNS client programs")
  170. (description
  171. "s6-dns is a suite of DNS client programs and libraries for Unix systems,
  172. as an alternative to the BIND, djbdns or other DNS clients.")))
  173. (define-public s6-networking
  174. (package
  175. (name "s6-networking")
  176. (version "2.4.1.1")
  177. (source
  178. (origin
  179. (method url-fetch)
  180. (uri (string-append "https://skarnet.org/software/s6-networking/"
  181. "s6-networking-" version ".tar.gz"))
  182. (sha256
  183. (base32 "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3"))))
  184. (build-system gnu-build-system)
  185. (inputs `(("skalibs" ,skalibs)
  186. ("execline" ,execline)
  187. ("s6" ,s6)
  188. ("s6-dns" ,s6-dns)))
  189. (arguments
  190. '(#:configure-flags (list
  191. (string-append "--with-lib="
  192. (assoc-ref %build-inputs "skalibs")
  193. "/lib/skalibs")
  194. (string-append "--with-lib="
  195. (assoc-ref %build-inputs "execline")
  196. "/lib/execline")
  197. (string-append "--with-lib="
  198. (assoc-ref %build-inputs "s6")
  199. "/lib/s6")
  200. (string-append "--with-lib="
  201. (assoc-ref %build-inputs "s6-dns")
  202. "/lib/s6-dns")
  203. (string-append "--with-sysdeps="
  204. (assoc-ref %build-inputs "skalibs")
  205. "/lib/skalibs/sysdeps"))
  206. #:tests? #f)) ; no tests exist
  207. (home-page "https://skarnet.org/software/s6-networking")
  208. (license isc)
  209. (synopsis "Suite of network utilities for Unix systems")
  210. (description
  211. "s6-networking is a suite of small networking utilities for Unix systems.
  212. It includes command-line client and server management, TCP access control,
  213. privilege escalation across UNIX domain sockets, IDENT protocol management and
  214. clock synchronization.")))
  215. (define-public s6-rc
  216. (package
  217. (name "s6-rc")
  218. (version "0.5.2.2")
  219. (source
  220. (origin
  221. (method url-fetch)
  222. (uri (string-append "https://skarnet.org/software/s6-rc/s6-rc-"
  223. version ".tar.gz"))
  224. (sha256
  225. (base32 "12bzc483jpd16xmhfsfrib84daj1k3kwy5s5nc18ap60apa1r39a"))))
  226. (build-system gnu-build-system)
  227. (inputs `(("skalibs" ,skalibs)
  228. ("execline" ,execline)
  229. ("s6" ,s6)))
  230. (arguments
  231. '(#:configure-flags (list
  232. (string-append "--with-lib="
  233. (assoc-ref %build-inputs "skalibs")
  234. "/lib/skalibs")
  235. (string-append "--with-lib="
  236. (assoc-ref %build-inputs "execline")
  237. "/lib/execline")
  238. (string-append "--with-lib="
  239. (assoc-ref %build-inputs "s6")
  240. "/lib/s6")
  241. (string-append "--with-sysdeps="
  242. (assoc-ref %build-inputs "skalibs")
  243. "/lib/skalibs/sysdeps"))
  244. #:tests? #f)) ; no tests exist
  245. (home-page "https://skarnet.org/software/s6-rc")
  246. (license isc)
  247. (synopsis "Service manager for s6-based systems")
  248. (description
  249. "s6-rc is a service manager for s6-based systems, i.e. a suite of
  250. programs that can start and stop services, both long-running daemons and
  251. one-time initialization scripts, in the proper order according to a dependency
  252. tree. It ensures that long-running daemons are supervised by the s6
  253. infrastructure, and that one-time scripts are also run in a controlled
  254. environment.")))
  255. (define-public s6-portable-utils
  256. (package
  257. (name "s6-portable-utils")
  258. (version "2.2.3.2")
  259. (source
  260. (origin
  261. (method url-fetch)
  262. (uri (string-append
  263. "https://skarnet.org/software/s6-portable-utils/s6-portable-utils-"
  264. version ".tar.gz"))
  265. (sha256
  266. (base32 "173nmygkp7ky3093dg4rx3ahvyl7ll86z8qj6pl3jd96xb9s49v6"))))
  267. (build-system gnu-build-system)
  268. (inputs `(("skalibs" ,skalibs)))
  269. (arguments
  270. '(#:configure-flags (list
  271. (string-append "--with-lib="
  272. (assoc-ref %build-inputs "skalibs")
  273. "/lib/skalibs")
  274. (string-append "--with-sysdeps="
  275. (assoc-ref %build-inputs "skalibs")
  276. "/lib/skalibs/sysdeps"))
  277. #:tests? #f)) ; no tests exist
  278. (home-page "https://skarnet.org/software/s6-portable-utils")
  279. (license isc)
  280. (synopsis "Tiny command-line Unix utilities")
  281. (description
  282. "s6-portable-utils is a set of tiny general Unix utilities, often
  283. performing well-known tasks such as @command{cut} and @command{grep}, but
  284. optimized for simplicity and small size. They were designed for embedded
  285. systems and other constrained environments, but they work everywhere.")))
  286. (define-public s6-linux-init
  287. (package
  288. (name "s6-linux-init")
  289. (version "1.0.6.3")
  290. (source
  291. (origin
  292. (method url-fetch)
  293. (uri (string-append
  294. "https://skarnet.org/software/s6-linux-init/s6-linux-init-"
  295. version ".tar.gz"))
  296. (sha256
  297. (base32 "1idqjcxhl5wgff8yrsvx2812wahjri2hcs7qs6k62g0sdd8niqr9"))))
  298. (build-system gnu-build-system)
  299. (inputs
  300. `(("execline" ,execline)
  301. ("s6" ,s6)
  302. ("skalibs" ,skalibs)))
  303. (arguments
  304. '(#:configure-flags
  305. (list
  306. "--disable-static"
  307. (string-append "--with-lib="
  308. (assoc-ref %build-inputs "skalibs")
  309. "/lib/skalibs")
  310. (string-append "--with-lib="
  311. (assoc-ref %build-inputs "execline")
  312. "/lib/execline")
  313. (string-append "--with-lib="
  314. (assoc-ref %build-inputs "s6")
  315. "/lib/s6")
  316. (string-append "--with-sysdeps="
  317. (assoc-ref %build-inputs "skalibs")
  318. "/lib/skalibs/sysdeps"))
  319. #:tests? #f)) ; no tests exist
  320. (home-page "https://skarnet.org/software/s6-linux-init")
  321. (license isc)
  322. (synopsis "Minimalistic tools to create an s6-based init system on Linux")
  323. (description
  324. "s6-linux-init is a set of minimalistic tools to create a s6-based init
  325. system, including an @command{/sbin/init} binary, on a Linux kernel.
  326. It is meant to automate creation of scripts revolving around the use of other
  327. skarnet.org tools, especially s6, in order to provide a complete booting
  328. environment with integrated supervision and logging without having to hand-craft
  329. all the details.")))
  330. (define-public s6-linux-utils
  331. (package
  332. (name "s6-linux-utils")
  333. (version "2.5.1.5")
  334. (source
  335. (origin
  336. (method url-fetch)
  337. (uri (string-append
  338. "https://skarnet.org/software/s6-linux-utils/s6-linux-utils-"
  339. version ".tar.gz"))
  340. (sha256
  341. (base32 "1fj5ldlrc6bx40pphg29rp3byd6fal6869v85kw86c2kdgrxn063"))))
  342. (build-system gnu-build-system)
  343. (inputs `(("skalibs" ,skalibs)))
  344. (arguments
  345. '(#:configure-flags (list
  346. (string-append "--with-lib="
  347. (assoc-ref %build-inputs "skalibs")
  348. "/lib/skalibs")
  349. (string-append "--with-sysdeps="
  350. (assoc-ref %build-inputs "skalibs")
  351. "/lib/skalibs/sysdeps"))
  352. #:tests? #f)) ; no tests exist
  353. (home-page "https://skarnet.org/software/s6-linux-utils")
  354. (license isc)
  355. (synopsis "Set of minimalistic Linux-specific system utilities")
  356. (description
  357. "s6-linux-utils is a set of minimalistic Linux-specific system utilities,
  358. such as @command{mount}, @command{umount}, and @command{chroot} commands,
  359. Linux uevent listeners, a @command{devd} device hotplug daemon, and more.")))