;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Csepp ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages ocaml-mirage) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system dune) #:use-module (gnu packages ocaml) #:use-module ((guix licenses) #:prefix license:)) (define-public ocaml-domain-name (package (name "ocaml-domain-name") (version "0.4.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/hannesm/domain-name/") (commit (string-append "v" version)))) (file-name name) (sha256 (base32 "1a669zz1pc7sqbi1c13jsnp8algcph2b8gr5fjrjhyh3p232770k")))) (arguments '(#:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? ;; TODO -j ncpu equivalent (invoke "dune" "runtest" "-p" "domain-name"))))))) (build-system dune-build-system) (native-inputs (list ocaml-alcotest)) (home-page "https://github.com/hannesm/domain-name") (synopsis "RFC 1035 Internet domain name data structure and parser") (description "Parses and constructs RFC compliant domain names. The invariants on the length of domain names are preserved throughout the module.") (license license:isc))) (define (ipaddr-arguments pkg) `(#:package ,pkg #:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? ;; no separate tests directory (invoke "dune" "runtest" "-p" ,pkg))))))) (define-public ocaml-macaddr (package (name "ocaml-macaddr") (version "5.3.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mirage/ocaml-ipaddr/") (commit (string-append "v" version)))) (file-name name) (sha256 (base32 "1zgwx0ms3l4k4dzwnkrwq4zzqjrddjsvqn66mbd0rm6aq1ib019d")))) (build-system dune-build-system) (arguments (ipaddr-arguments "macaddr")) (propagated-inputs (list ocaml-cstruct)) (native-inputs (list ocaml-ounit2 ocaml-ppx-sexp-conv)) (home-page "https://github.com/mirage/ocaml-ipaddr") (synopsis "OCaml library for manipulation of MAC address representations") (description "@itemize @item MAC-48 (Ethernet) address support @item `Macaddr` is a @code{Map.OrderedType} @item All types have sexplib serializers/deserializers optionally via the `Macaddr_sexp` library @end itemize") (license license:isc))) (define-public ocaml-ipaddr ;; same repo and versions as ocaml-macaddr (package (inherit ocaml-macaddr) (name "ocaml-ipaddr") (arguments (ipaddr-arguments "macaddr")) (propagated-inputs (list ocaml-macaddr ocaml-domain-name)) (synopsis "Library for manipulation of IP (and MAC) address representations") (description "IP address types with serialization, supporting a wide range of RFCs.") (license license:isc)))