aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (test-opam)
  #:use-module (guix import opam)
  #:use-module (guix base32)
  #:use-module (gcrypt hash)
  #:use-module (guix tests)
  #:use-module ((guix build syscalls) #:select (mkdtemp!))
  #:use-module ((guix build utils)
                #:select (delete-file-recursively mkdir-p which
                          call-with-temporary-output-file))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)
  #:use-module (web uri)
  #:use-module (ice-9 match)
  #:use-module (ice-9 peg))

(define test-opam-file
"opam-version: \"2.0\"
  version: \"1.0.0\"
maintainer: \"Alice Doe\"
authors: [
  \"Alice Doe\"
  \"John Doe\"
]
homepage: \"https://example.org/\"
bug-reports: \"https://example.org/bugs\"
dev-repo: \"https://example.org/git\"
build: [
  [\"ocaml\" \"pkg/pkg.ml\" \"build\" \"--pinned\" \"%{pinned}%\"]
]
build-test: [
  [\"ocaml\" \"pkg/pkg.ml\" \"build\" \"--pinned\" \"%{pinned}%\" \"--tests\" \"true\"]
]
depends: [
  \"alcotest\" {test & >= \"0.7.2\"}
  \"ocamlbuild\" {build & >= \"0.9.2\"}
  \"zarith\" {>= \"0.7\"}
]
synopsis: \"Some example package\"
description: \"\"\"
This package is just an example.\"\"\"
license: \"BSD-3-Clause\"
url {
  src: \"https://example.org/foo-1.0.0.tar.gz\"
  checksum: \"md5=74c6e897658e820006106f45f736381f\"
}")

(define test-source-hash
  "")

(define test-repo
  (mkdtemp! "/tmp/opam-repo.XXXXXX"))

(test-begin "opam")

(test-assert "opam->guix-package"
  (mock ((guix import opam) get-opam-repository
         (const test-repo))
        (mock ((guix import utils) url-fetch
               (lambda (url file-name)
                 (match url
                   ("https://example.org/foo-1.0.0.tar.gz"
                    (begin
                      (mkdir-p "foo-1.0.0")
                      (system* "tar" "czvf" file-name "foo-1.0.0/")
                      (delete-file-recursively "foo-1.0.0")
                      (set! test-source-hash
                            (call-with-input-file file-name port-sha256))))
                   (_ (error "Unexpected URL: " url)))))
              (let ((my-package (string-append test-repo
                                               "/packages/foo/foo.1.0.0")))
                (mkdir-p my-package)
                (with-output-to-file (string-append my-package "/opam")
                  (lambda _
                    (format #t "~a" test-opam-file))))
              (match (opam->guix-package "foo" #:repo (list test-repo))
                (`(package
                    (name "ocaml-foo")
                    (version "1.0.0")
                    (source (origin
                              (method url-fetch)
                              (uri "https://example.org/foo-1.0.0.tar.gz")
                              (sha256
                               (base32 ,(? string? hash)))))
                    (build-system ocaml-build-system)
                    (propagated-inputs (list ocaml-zarith))
                    (native-inputs
                     (list ocaml-alcotest ocamlbuild))
                    (home-page "https://example.org/")
                    (synopsis "Some example package")
                    (description "This package is just an example.")
                    (license license:bsd-3))
                 (string=? (bytevector->nix-base32-string
                            test-source-hash)
                           hash))
                (x
                 (pk 'fail x #f))))))

;; Test the opam file parser
;; We fold over some test cases. Each case is a pair of the string to parse and the
;; expected result.
(define (test-opam-syntax name pattern test-cases)
  (test-assert name
    (fold (lambda (test acc)
            (display test) (newline)
            (match test
              ((str . expected)
               (and acc
                    (let ((result (peg:tree (match-pattern pattern str))))
                      (if (equal? result expected)
                          #t
                          (pk 'fail (list str result expected) #f)))))))
          #t test-cases)))

(test-opam-syntax
  "parse-strings" string-pat
  '(("" . #f)
    ("\"hello\"" . (string-pat "hello"))
    ("\"hello world\"" . (string-pat "hello world"))
    ("\"The dreaded \\\"é\\\"\"" . (string-pat "The dreaded \"é\""))
    ("\"Have some \\\\\\\\ :)\"" . (string-pat "Have some \\\\ :)"))
    ("\"今日は\"" . (string-pat "今日は"))))

(test-opam-syntax
  "parse-multiline-strings" multiline-string
  '(("" . #f)
    ("\"\"\"hello\"\"\"" . (multiline-string "hello"))
    ("\"\"\"hello \"world\"!\"\"\"" . (multiline-string "hello \"world\"!"))
    ("\"\"\"hello \"\"world\"\"!\"\"\"" . (multiline-string "hello \"\"world\"\"!"))))

(test-opam-syntax
  "parse-lists" list-pat
  '(("" . #f)
    ("[]" . list-pat)
    ("[make]" . (list-pat (var "make")))
    ("[\"make\"]" . (list-pat (string-pat "make")))
    ("[\n  a\n  b\n  c]" . (list-pat (var "a") (var "b") (var "c")))
    ("[a   b     \"c\"]" . (list-pat (var "a") (var "b") (string-pat "c")))
    ;; complex lists
    ("[(a & b)]" . (list-pat (choice-pat (group-pat (var "a") (var "b")))))
    ("[(a | b & c)]" . (list-pat (choice-pat (var "a") (group-pat (var "b") (var "c")))))
    ("[a (b | c) d]" . (list-pat (var "a") (choice-pat (var "b") (var "c")) (var "d")))))

(test-opam-syntax
  "parse-dicts" dict
  '(("" . #f)
    ("{}" . dict)
    ("{a: \"b\"}" . (dict (record "a" (string-pat "b"))))
    ("{a: \"b\"\nc: \"d\"}" . (dict (record "a" (string-pat "b")) (record "c" (string-pat "d"))))))

(test-opam-syntax
  "parse-conditions" condition
  '(("" . #f)
    ("{}" . #f)
    ("{build}" . (condition-var "build"))
    ("{>= \"0.2.0\"}" . (condition-greater-or-equal
                          (condition-string "0.2.0")))
    ("{>= \"0.2.0\" & test}" . (condition-and
                                 (condition-greater-or-equal
                                   (condition-string "0.2.0"))
                                 (condition-var "test")))
    ("{>= \"0.2.0\" | build}" . (condition-or
                                 (condition-greater-or-equal
                                   (condition-string "0.2.0"))
                                 (condition-var "build")))
    ("{ = \"1.0+beta19\" }" . (condition-eq
                                (condition-string "1.0+beta19")))))

(test-opam-syntax
  "parse-comment" list-pat
  '(("" . #f)
    ("[#comment\n]" . list-pat)))

(test-end "opam")
r.scm?id=c5c69451e3082840e4e592d11215991cec23806e'>apr.scm4303logplainabout -rw-r--r--arcan.scm11296logplainabout -rw-r--r--aspell.scm20133logplainabout -rw-r--r--assembly.scm20398logplainabout -rw-r--r--astronomy.scm14705logplainabout -rw-r--r--attr.scm2879logplainabout -rw-r--r--audio.scm193588logplainabout -rw-r--r--augeas.scm2648logplainabout -rw-r--r--authentication.scm4898logplainabout -rw-r--r--autogen.scm3228logplainabout -rw-r--r--autotools.scm22161logplainabout d---------aux-files235logplain -rw-r--r--avahi.scm4851logplainabout -rw-r--r--avr.scm7792logplainabout -rw-r--r--axoloti.scm29532logplainabout -rw-r--r--backup.scm47325logplainabout -rw-r--r--base.scm61636logplainabout -rw-r--r--bash.scm19410logplainabout -rw-r--r--batik.scm8852logplainabout -rw-r--r--bdw-gc.scm5842logplainabout -rw-r--r--benchmark.scm11422logplainabout -rw-r--r--bioconductor.scm319848logplainabout -rw-r--r--bioinformatics.scm644449logplainabout -rw-r--r--bison.scm3561logplainabout -rw-r--r--bittorrent.scm22041logplainabout -rw-r--r--boost.scm16413logplainabout -rw-r--r--bootloaders.scm48636logplainabout -rw-r--r--bootstrap.scm36479logplainabout -rw-r--r--browser-extensions.scm4898logplainabout -rw-r--r--build-tools.scm18854logplainabout -rw-r--r--busybox.scm6870logplainabout -rw-r--r--c.scm22547logplainabout -rw-r--r--calcurse.scm3490logplainabout -rw-r--r--calendar.scm15370logplainabout -rw-r--r--ccache.scm2476logplainabout -rw-r--r--cdrom.scm42564logplainabout -rw-r--r--cedille.scm5517logplainabout -rw-r--r--certs.scm8921logplainabout -rw-r--r--check.scm107679logplainabout -rw-r--r--chemistry.scm19952logplainabout -rw-r--r--chez.scm27586logplainabout -rw-r--r--chicken.scm2767logplainabout -rw-r--r--chromium.scm41669logplainabout -rw-r--r--ci.scm8078logplainabout -rw-r--r--cinnamon.scm3114logplainabout -rw-r--r--clojure.scm14164logplainabout -rw-r--r--cluster.scm10117logplainabout -rw-r--r--cmake.scm20487logplainabout -rw-r--r--cobol.scm2997logplainabout -rw-r--r--code.scm38318logplainabout -rw-r--r--commencement.scm159995logplainabout -rw-r--r--compression.scm97538logplainabout -rw-r--r--compton.scm5982logplainabout -rw-r--r--configuration-management.scm5882logplainabout -rw-r--r--conky.scm3501logplainabout -rw-r--r--connman.scm7259logplainabout -rw-r--r--convmv.scm2300logplainabout -rw-r--r--cook.scm4102logplainabout -rw-r--r--coq.scm26097logplainabout -rw-r--r--cpio.scm1971logplainabout -rw-r--r--cpp.scm28796logplainabout -rw-r--r--cppi.scm1775logplainabout -rw-r--r--cran.scm882233logplainabout -rw-r--r--crates-graphics.scm79936logplainabout -rw-r--r--crates-gtk.scm22671logplainabout -rw-r--r--crates-io.scm1142179logplainabout -rw-r--r--cross-base.scm26497logplainabout -rw-r--r--crypto.scm55503logplainabout -rw-r--r--cryptsetup.scm6228logplainabout -rw-r--r--cups.scm40429logplainabout -rw-r--r--curl.scm13975logplainabout -rw-r--r--cvassistant.scm3640logplainabout -rw-r--r--cybersecurity.scm1791logplainabout -rw-r--r--cyrus-sasl.scm3457logplainabout -rw-r--r--databases.scm158270logplainabout -rw-r--r--datamash.scm1969logplainabout -rw-r--r--datastructures.scm15260logplainabout -rw-r--r--dav.scm7152logplainabout -rw-r--r--dbm.scm6354logplainabout -rw-r--r--dc.scm2233logplainabout -rw-r--r--debian.scm16205logplainabout -rw-r--r--debug.scm32284logplainabout -rw-r--r--dejagnu.scm3510logplainabout -rw-r--r--dhall.scm6289logplainabout -rw-r--r--dico.scm3614logplainabout -rw-r--r--dictionaries.scm16369logplainabout -rw-r--r--diffoscope.scm15031logplainabout -rw-r--r--digest.scm2614logplainabout -rw-r--r--direct-connect.scm2610logplainabout -rw-r--r--disk.scm43642logplainabout -rw-r--r--display-managers.scm14399logplainabout -rw-r--r--distributed.scm4117logplainabout -rw-r--r--django.scm50452logplainabout -rw-r--r--djvu.scm11932logplainabout -rw-r--r--dlang.scm17691logplainabout -rw-r--r--dns.scm53127logplainabout -rw-r--r--docbook.scm13076logplainabout -rw-r--r--docker.scm33114logplainabout -rw-r--r--documentation.scm14154logplainabout -rw-r--r--drones.scm7632logplainabout -rw-r--r--dunst.scm3744logplainabout -rw-r--r--dvtm.scm2311logplainabout -rw-r--r--easyrpg.scm4508logplainabout -rw-r--r--ebook.scm22538logplainabout -rw-r--r--ed.scm2378logplainabout -rw-r--r--education.scm42690logplainabout -rw-r--r--efi.scm8435logplainabout -rw-r--r--electronics.scm10712logplainabout -rw-r--r--elf.scm11087logplainabout -rw-r--r--elixir.scm5031logplainabout -rw-r--r--elm.scm3960logplainabout -rw-r--r--emacs-xyz.scm994421logplainabout -rw-r--r--emacs.scm23488logplainabout -rw-r--r--embedded.scm61705logplainabout -rw-r--r--emulators.scm83370logplainabout -rw-r--r--enchant.scm6536logplainabout -rw-r--r--engineering.scm118211logplainabout -rw-r--r--enlightenment.scm25129logplainabout -rw-r--r--entr.scm3347logplainabout -rw-r--r--erlang.scm10108logplainabout -rw-r--r--fabric-management.scm9621logplainabout -rw-r--r--fcitx.scm7240logplainabout -rw-r--r--figlet.scm1797logplainabout -rw-r--r--file-systems.scm42071logplainabout -rw-r--r--file.scm2273logplainabout -rw-r--r--finance.scm64484logplainabout -rw-r--r--firmware.scm25641logplainabout -rw-r--r--flashing-tools.scm18428logplainabout -rw-r--r--flex.scm3224logplainabout -rw-r--r--fltk.scm6093logplainabout -rw-r--r--fonts.scm84545logplainabout -rw-r--r--fontutils.scm39988logplainabout -rw-r--r--forth.scm2430logplainabout -rw-r--r--fpga.scm15311logplainabout -rw-r--r--freedesktop.scm89158logplainabout -rw-r--r--freeipmi.scm2148logplainabout -rw-r--r--fribidi.scm4068logplainabout -rw-r--r--ftp.scm11134logplainabout -rw-r--r--fvwm.scm3121logplainabout -rw-r--r--game-development.scm100311logplainabout -rw-r--r--games.scm491595logplainabout -rw-r--r--gawk.scm3785logplainabout -rw-r--r--gcal.scm2889logplainabout -rw-r--r--gcc.scm48310logplainabout -rw-r--r--gd.scm6392logplainabout -rw-r--r--gdb.scm7151logplainabout -rw-r--r--genealogy.scm4598logplainabout -rw-r--r--genimage.scm8389logplainabout -rw-r--r--geo.scm88022logplainabout -rw-r--r--gettext.scm11108logplainabout -rw-r--r--ghostscript.scm16882logplainabout -rw-r--r--gimp.scm21452logplainabout -rw-r--r--gkrellm.scm2449logplainabout -rw-r--r--gl.scm42794logplainabout -rw-r--r--glib.scm48530logplainabout -rw-r--r--gnome-xyz.scm27018logplainabout -rw-r--r--gnome.scm473226logplainabout -rw-r--r--gnu-doc.scm4109logplainabout -rw-r--r--gnu-pw-mgr.scm2636logplainabout -rw-r--r--gnucash.scm14613logplainabout -rw-r--r--gnunet.scm16871logplainabout -rw-r--r--gnupg.scm45352logplainabout -rw-r--r--gnustep.scm11894logplainabout -rw-r--r--gnuzilla.scm75321logplainabout -rw-r--r--gobby.scm7738logplainabout -rw-r--r--golang.scm246408logplainabout -rw-r--r--gperf.scm2354logplainabout -rw-r--r--gpodder.scm7686logplainabout -rw-r--r--gps.scm12066logplainabout -rw-r--r--graph.scm20153logplainabout -rw-r--r--graphics.scm72639logplainabout -rw-r--r--graphviz.scm15189logplainabout -rw-r--r--groff.scm11345logplainabout -rw-r--r--groovy.scm47226logplainabout -rw-r--r--gsasl.scm4354logplainabout -rw-r--r--gstreamer.scm34999logplainabout -rw-r--r--gtk.scm87722logplainabout -rw-r--r--guile-wm.scm9353logplainabout -rw-r--r--guile-xyz.scm166151logplainabout -rw-r--r--guile.scm33827logplainabout -rw-r--r--gv.scm3247logplainabout -rw-r--r--gxmessage.scm2352logplainabout -rw-r--r--hardware.scm20027logplainabout -rw-r--r--haskell-apps.scm37514logplainabout -rw-r--r--haskell-check.scm39649logplainabout -rw-r--r--haskell-crypto.scm33163logplainabout -rw-r--r--haskell-web.scm76132logplainabout -rw-r--r--haskell-xyz.scm577532logplainabout -rw-r--r--haskell.scm29623logplainabout -rw-r--r--heads.scm8325logplainabout -rw-r--r--hexedit.scm4680logplainabout -rw-r--r--hugs.scm3688logplainabout -rw-r--r--hurd.scm26879logplainabout -rw-r--r--hyperledger.scm8802logplainabout -rw-r--r--i2p.scm5314logplainabout -rw-r--r--ibus.scm30436logplainabout -rw-r--r--icu4c.scm7817logplainabout -rw-r--r--idris.scm13165logplainabout -rw-r--r--idutils.scm2817logplainabout -rw-r--r--image-processing.scm42487logplainabout -rw-r--r--image-viewers.scm27085logplainabout -rw-r--r--image.scm89211logplainabout -rw-r--r--imagemagick.scm9486logplainabout -rw-r--r--inklingreader.scm2239logplainabout -rw-r--r--inkscape.scm13339logplainabout -rw-r--r--installers.scm6869logplainabout -rw-r--r--ipfs.scm12751logplainabout -rw-r--r--irc.scm22443logplainabout -rw-r--r--iso-codes.scm4113logplainabout -rw-r--r--jami.scm19573logplainabout -rw-r--r--java-compression.scm13773logplainabout -rw-r--r--java-graphics.scm5224logplainabout -rw-r--r--java-maths.scm3603logplainabout -rw-r--r--java.scm561603logplainabout -rw-r--r--javascript.scm20508logplainabout -rw-r--r--jemalloc.scm3391logplainabout -rw-r--r--jose.scm1999logplainabout -rw-r--r--jrnl.scm2437logplainabout -rw-r--r--julia-xyz.scm1813logplainabout -rw-r--r--julia.scm20854logplainabout -rw-r--r--jupyter.scm7701logplainabout -rw-r--r--kawa.scm2553logplainabout -rw-r--r--kde-frameworks.scm151679logplainabout -rw-r--r--kde-internet.scm17742logplainabout -rw-r--r--kde-multimedia.scm27427logplainabout -rw-r--r--kde-pim.scm73719logplainabout -rw-r--r--kde-plasma.scm8430logplainabout -rw-r--r--kde-systemtools.scm11918logplainabout -rw-r--r--kde-utils.scm20419logplainabout -rw-r--r--kde.scm31314logplainabout -rw-r--r--kerberos.scm10177logplainabout -rw-r--r--key-mon.scm2121logplainabout -rw-r--r--kodi.scm21618logplainabout -rw-r--r--language.scm41351logplainabout -rw-r--r--ld-wrapper.in12323logplainabout -rw-r--r--lean.scm3159logplainabout -rw-r--r--lego.scm6641logplainabout -rw-r--r--less.scm4659logplainabout -rw-r--r--lesstif.scm1817logplainabout -rw-r--r--libbsd.scm2157logplainabout -rw-r--r--libcanberra.scm6168logplainabout -rw-r--r--libdaemon.scm3621logplainabout -rw-r--r--libedit.scm2839logplainabout -rw-r--r--libevent.scm9679logplainabout -rw-r--r--libffcall.scm1922logplainabout -rw-r--r--libffi.scm11807logplainabout -rw-r--r--libftdi.scm1943logplainabout -rw-r--r--libidn.scm3562logplainabout -rw-r--r--libphidget.scm1747logplainabout -rw-r--r--libreoffice.scm51141logplainabout -rw-r--r--libsigsegv.scm2731logplainabout -rw-r--r--libunistring.scm3159logplainabout -rw-r--r--libunwind.scm2318logplainabout -rw-r--r--libusb.scm25562logplainabout -rw-r--r--license.scm8410logplainabout -rw-r--r--lighting.scm3690logplainabout -rw-r--r--linphone.scm27227logplainabout -rw-r--r--linux.scm321082logplainabout -rw-r--r--lirc.scm6421logplainabout -rw-r--r--lisp-xyz.scm536146logplainabout -rw-r--r--lisp.scm46261logplainabout -rw-r--r--llvm.scm50970logplainabout -rw-r--r--logging.scm8787logplainabout -rw-r--r--logo.scm2829logplainabout -rw-r--r--loko.scm3390logplainabout -rw-r--r--lolcode.scm2420logplainabout -rw-r--r--lout.scm5633logplainabout -rw-r--r--lsof.scm4330logplainabout -rw-r--r--lua.scm43697logplainabout -rw-r--r--lxde.scm26923logplainabout -rw-r--r--lxqt.scm52541logplainabout -rw-r--r--m4.scm2700logplainabout -rw-r--r--machine-learning.scm89580logplainabout -rw-r--r--magic-wormhole.scm6604logplainabout -rw-r--r--mail.scm170103logplainabout -rw-r--r--make-bootstrap.scm38839logplainabout -rw-r--r--man.scm13557logplainabout -rw-r--r--markup.scm11033logplainabout -rw-r--r--marst.scm1763logplainabout -rw-r--r--mastodon.scm3972logplainabout -rw-r--r--mate.scm57344logplainabout -rw-r--r--maths.scm246694logplainabout -rw-r--r--matrix.scm5390logplainabout -rw-r--r--maven-parent-pom.scm20105logplainabout -rw-r--r--maven.scm162519logplainabout -rw-r--r--mc.scm4535logplainabout -rw-r--r--mcrypt.scm4639logplainabout -rw-r--r--medical.scm2420logplainabout -rw-r--r--mercury.scm11385logplainabout -rw-r--r--mes.scm13279logplainabout -rw-r--r--messaging.scm95525logplainabout -rw-r--r--microcom.scm2210logplainabout -rw-r--r--mingw.scm6090logplainabout -rw-r--r--moe.scm2223logplainabout -rw-r--r--monitoring.scm19853logplainabout -rw-r--r--mono.scm7119logplainabout -rw-r--r--moreutils.scm3240logplainabout -rw-r--r--motti.scm1669logplainabout -rw-r--r--mp3.scm23460logplainabout -rw-r--r--mpd.scm17567logplainabout -rw-r--r--mpi.scm22655logplainabout -rw-r--r--mtools.scm2851logplainabout -rw-r--r--multiprecision.scm17439logplainabout -rw-r--r--music.scm244237logplainabout -rw-r--r--musl.scm2189logplainabout -rw-r--r--nano.scm2146logplainabout -rw-r--r--ncdu.scm2137logplainabout -rw-r--r--ncurses.scm15825logplainabout -rw-r--r--netpbm.scm8373logplainabout -rw-r--r--nettle.scm4089logplainabout -rw-r--r--networking.scm155491logplainabout -rw-r--r--nfs.scm7491logplainabout -rw-r--r--nickle.scm2477logplainabout -rw-r--r--nicotine.scm2793logplainabout -rw-r--r--nim.scm3188logplainabout -rw-r--r--ninja.scm3180logplainabout -rw-r--r--node-xyz.scm10050logplainabout -rw-r--r--node.scm10410logplainabout -rw-r--r--noweb.scm5114logplainabout -rw-r--r--nss.scm13175logplainabout -rw-r--r--ntp.scm10918logplainabout -rw-r--r--nutrition.scm3245logplainabout -rw-r--r--nvi.scm4411logplainabout -rw-r--r--ocaml.scm227875logplainabout -rw-r--r--ocr.scm6164logplainabout -rw-r--r--onc-rpc.scm7362logplainabout -rw-r--r--openbox.scm3932logplainabout -rw-r--r--opencl.scm16397logplainabout -rw-r--r--opencog.scm12170logplainabout -rw-r--r--openkinect.scm5607logplainabout -rw-r--r--openldap.scm18081logplainabout -rw-r--r--openpgp.scm8067logplainabout -rw-r--r--openstack.scm31595logplainabout -rw-r--r--orpheus.scm4287logplainabout -rw-r--r--ots.scm3497logplainabout -rw-r--r--package-management.scm63265logplainabout -rw-r--r--pantheon.scm6228logplainabout -rw-r--r--parallel.scm12513logplainabout -rw-r--r--pascal.scm12845logplainabout -rw-r--r--password-utils.scm52389logplainabout d---------patches56607logplain -rw-r--r--patchutils.scm22256logplainabout -rw-r--r--pciutils.scm5124logplainabout -rw-r--r--pcre.scm5551logplainabout -rw-r--r--pdf.scm59395logplainabout -rw-r--r--pem.scm1795logplainabout -rw-r--r--pep.scm13633logplainabout -rw-r--r--perl-check.scm61209logplainabout -rw-r--r--perl-compression.scm8365logplainabout -rw-r--r--perl-web.scm4732logplainabout -rw-r--r--perl.scm452128logplainabout -rw-r--r--perl6.scm31244logplainabout -rw-r--r--phabricator.scm3672logplainabout -rw-r--r--photo.scm32811logplainabout -rw-r--r--php.scm19575logplainabout -rw-r--r--piet.scm7616logplainabout -rw-r--r--pkg-config.scm5695logplainabout -rw-r--r--plotutils.scm14244logplainabout -rw-r--r--poedit.scm3027logplainabout -rw-r--r--polkit.scm8396logplainabout -rw-r--r--popt.scm6532logplainabout -rw-r--r--presentation.scm3772logplainabout -rw-r--r--pretty-print.scm13464logplainabout -rw-r--r--printers.scm4915logplainabout -rw-r--r--profiling.scm17493logplainabout -rw-r--r--prolog.scm5478logplainabout -rw-r--r--protobuf.scm16431logplainabout -rw-r--r--pth.scm2338logplainabout -rw-r--r--pulseaudio.scm25315logplainabout -rw-r--r--pumpio.scm2812logplainabout -rw-r--r--pure.scm2668logplainabout -rw-r--r--purescript.scm5102logplainabout -rw-r--r--pv.scm1855logplainabout -rw-r--r--python-check.scm43291logplainabout -rw-r--r--python-compression.scm10552logplainabout -rw-r--r--python-crypto.scm64298logplainabout -rw-r--r--python-science.scm20761logplainabout -rw-r--r--python-web.scm207733logplainabout -rw-r--r--python-xyz.scm850110logplainabout -rw-r--r--python.scm41688logplainabout -rw-r--r--qt.scm119467logplainabout -rw-r--r--radio.scm41160logplainabout -rw-r--r--ragel.scm2112logplainabout -rw-r--r--rails.scm22802logplainabout -rw-r--r--raspberry-pi.scm9612logplainabout -rw-r--r--ratpoison.scm4030logplainabout -rw-r--r--rcm.scm2860logplainabout -rw-r--r--rdesktop.scm5582logplainabout -rw-r--r--rdf.scm17300logplainabout -rw-r--r--re2c.scm2046logplainabout -rw-r--r--readline.scm7125logplainabout -rw-r--r--rednotebook.scm4093logplainabout -rw-r--r--regex.scm4440logplainabout -rw-r--r--robotics.scm5450logplainabout -rw-r--r--rpc.scm9828logplainabout -rw-r--r--rrdtool.scm4002logplainabout -rw-r--r--rsync.scm4325logplainabout -rw-r--r--ruby.scm429418logplainabout -rw-r--r--rush.scm1834logplainabout -rw-r--r--rust-apps.scm19198logplainabout -rw-r--r--rust.scm61362logplainabout -rw-r--r--sagemath.scm16460logplainabout -rw-r--r--samba.scm20511logplainabout -rw-r--r--sawfish.scm7717logplainabout -rw-r--r--scanner.scm10919logplainabout -rw-r--r--scheme.scm51746logplainabout -rw-r--r--screen.scm7770logplainabout -rw-r--r--scribus.scm4849logplainabout -rw-r--r--scsi.scm2973logplainabout -rw-r--r--sdcc.scm3154logplainabout -rw-r--r--sdl.scm27231logplainabout -rw-r--r--search.scm17537logplainabout -rw-r--r--security-token.scm26867logplainabout -rw-r--r--selinux.scm18431logplainabout -rw-r--r--sequoia.scm7709logplainabout -rw-r--r--serialization.scm19056logplainabout -rw-r--r--serveez.scm2384logplainabout -rw-r--r--shells.scm38251logplainabout -rw-r--r--shellutils.scm13759logplainabout -rw-r--r--simh.scm3868logplainabout -rw-r--r--simulation.scm35194logplainabout -rw-r--r--skarnet.scm16087logplainabout -rw-r--r--skribilo.scm4170logplainabout -rw-r--r--slang.scm5920logplainabout -rw-r--r--smalltalk.scm5574logplainabout -rw-r--r--sml.scm3025logplainabout -rw-r--r--speech.scm26933logplainabout -rw-r--r--sphinx.scm25601logplainabout -rw-r--r--spice.scm15363logplainabout -rw-r--r--sqlite.scm6284logplainabout -rw-r--r--squirrel.scm3589logplainabout -rw-r--r--ssh.scm38174logplainabout -rw-r--r--sssd.scm7668logplainabout -rw-r--r--stalonetray.scm2012logplainabout -rw-r--r--statistics.scm211523logplainabout -rw-r--r--stb.scm4882logplainabout -rw-r--r--stenography.scm2459logplainabout -rw-r--r--storage.scm11350logplainabout -rw-r--r--suckless.scm27957logplainabout -rw-r--r--swig.scm3259logplainabout -rw-r--r--sync.scm15939logplainabout -rw-r--r--syncthing.scm49114logplainabout -rw-r--r--syndication.scm13265logplainabout -rw-r--r--synergy.scm3540logplainabout -rw-r--r--task-management.scm5029logplainabout -rw-r--r--tbb.scm4556logplainabout -rw-r--r--tcl.scm17162logplainabout -rw-r--r--telephony.scm39486logplainabout -rw-r--r--terminals.scm58996logplainabout -rw-r--r--terraform.scm2100logplainabout -rw-r--r--tex.scm340260logplainabout -rw-r--r--texinfo.scm12350logplainabout -rw-r--r--text-editors.scm42726logplainabout -rw-r--r--textutils.scm49749logplainabout -rw-r--r--time.scm17303logplainabout -rw-r--r--tls.scm44660logplainabout -rw-r--r--tmux.scm11426logplainabout -rw-r--r--tor.scm13649logplainabout -rw-r--r--toys.scm9152logplainabout -rw-r--r--tryton.scm35154logplainabout -rw-r--r--tv.scm2762logplainabout -rw-r--r--uml.scm3953logplainabout -rw-r--r--unicode.scm4906logplainabout -rw-r--r--unrtf.scm2003logplainabout -rw-r--r--upnp.scm6421logplainabout -rw-r--r--usb-modeswitch.scm7905logplainabout -rw-r--r--uucp.scm2250logplainabout -rw-r--r--valgrind.scm3697logplainabout -rw-r--r--version-control.scm123371logplainabout -rw-r--r--video.scm195697logplainabout -rw-r--r--vim.scm36851logplainabout -rw-r--r--virtualization.scm92229logplainabout -rw-r--r--visidata.scm2380logplainabout -rw-r--r--vlang.scm5682logplainabout -rw-r--r--vnc.scm12199logplainabout -rw-r--r--vpn.scm27652logplainabout -rw-r--r--vulkan.scm15596logplainabout -rw-r--r--w3m.scm3464logplainabout -rw-r--r--wdiff.scm2227logplainabout -rw-r--r--web-browsers.scm31501logplainabout -rw-r--r--web.scm311688logplainabout -rw-r--r--webkit.scm13671logplainabout -rw-r--r--wget.scm7070logplainabout -rw-r--r--wicd.scm9337logplainabout -rw-r--r--wine.scm29892logplainabout -rw-r--r--wireservice.scm10815logplainabout -rw-r--r--wm.scm80766logplainabout -rw-r--r--wordnet.scm4792logplainabout -rw-r--r--wv.scm2468logplainabout -rw-r--r--wxwidgets.scm13969logplainabout -rw-r--r--xdisorg.scm103597logplainabout -rw-r--r--xfce.scm80450logplainabout -rw-r--r--xfig.scm6046logplainabout -rw-r--r--xiph.scm19957logplainabout