aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 (gnu packages digest)
  #:use-module (guix gexp)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system pyproject)
  #:use-module (guix build-system python)
  #:use-module (guix build-system trivial)
  #:use-module (guix utils)
  #:use-module (gnu packages python-build)
  #:use-module (ice-9 match))

(define-public wyhash
  (package
    (name "wyhash")
    (version "5")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/wangyi-fudan/wyhash")
                    (commit (string-append "wyhash_v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32 "03ljs5iw9zrm3bydwggjvpwrcwmsd75h3dv1j4am4hw3h22cjdjc"))))
    (build-system trivial-build-system) ;; source-only package
    (arguments
     `(#:modules ((guix build utils))
       #:builder
       (begin
         (use-modules (guix build utils))
         (let* ((out (string-append (assoc-ref %outputs "out")))
                (include (string-append out "/include"))
                (doc (string-append out "/share/doc/" ,name "-" ,version))
                (source (assoc-ref %build-inputs "source")))
           (with-directory-excursion source
             (install-file "wyhash.h" include)
             (install-file "LICENSE" doc)
             (install-file "README.md" doc))
           #t))))
    (home-page "https://github.com/wangyi-fudan/wyhash")
    (synopsis "Embeddable hash function and random number generator")
    (description "This package provides a portable hash function and random
number generator suitable for use in data structures.  Provided by default in
Zig, V, and Nim programming language standard libraries.")
    (license license:unlicense)))

(define-public xxhash
  (package
    (name "xxhash")
    (version "0.8.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/Cyan4973/xxHash")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1ljsmxcxfyxzxzk435qnjiyy441bgrxirn285lymyvv39nrwz1wj"))))
    (build-system gnu-build-system)
    (arguments
     (list #:make-flags
           #~(list #$(string-append "CC=" (cc-for-target))
                   #$(match (or (%current-target-system)
                                (%current-system))
                       ;; Detect vector instruction set at run time.
                       ((or "i686-linux" "x86_64-linux") "DISPATCH=1")
                       (_ "DISPATCH=0"))
                   "XXH_FORCE_MEMORY_ACCESS=1" ; improved performance with GCC
                   (string-append "prefix=" (assoc-ref %outputs "out")))
           #:phases
           #~(modify-phases %standard-phases
               (delete 'configure))))         ; no configure script
    (home-page "https://cyan4973.github.io/xxHash/")
    (synopsis "Extremely fast hash algorithm")
    (description
     "xxHash is an extremely fast non-cryptographic hash algorithm.  It works
at speeds close to RAM limits, and comes in both 32- and 64-bit flavours.
The code is highly portable, and hashes of the same length are identical on all
platforms (both big and little endian).")
    (license (list license:bsd-2        ; xxhash library (xxhash.[ch])
                   license:gpl2+))))    ; xxhsum.c

(define-public python-xxhash
  (package
    (name "python-xxhash")
    (version "3.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "xxhash" version))
       (sha256
        (base32
         "1hdxcscry59gh0znlm71ya23mm9rfmvz8lvvlplzxzf63pib28dc"))))
    (build-system pyproject-build-system)
    ;; Needed to embed the correct version string
    (native-inputs (list python-setuptools-scm))
    (home-page "https://github.com/ifduyue/python-xxhash")
    (synopsis "Python binding for xxHash")
    (description "This package provides Python bindings for the xxHash hash
algorithm.")
    (license license:bsd-3)))
scm?id=b0e7b6992f3f845e83cfbca4d700b51dba50b4d5'>gnu: Remove ".git" from "https://github/…/….git"....Until now, 'lookup-origin' and thus 'lookup-origin-revision' in (guix swh) would sometimes return #f for these because the ".git" URLs are redirects to the non-".git" URLs. Consequently, 'guix lint -c archival' would keep saying "scheduled Software Heritage archival"; likewise, the fallback download code would fail. * gnu/packages/ada.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès 2020-07-11gnu: gperftools: Update to 2.8....* gnu/packages/cpp.scm (gperftools): Update to 2.8. Tobias Geerinckx-Rice 2020-05-30gnu: abseil-cpp: Update to 20200225.2....* gnu/packages/cpp.scm (abseil-cpp): Update to 20200225.2. Tobias Geerinckx-Rice 2020-05-20gnu: ccls: Update to 0.20190823.6....* gnu/packages/cpp.scm (ccls): Update to 0.20190823.6. Tobias Geerinckx-Rice 2020-05-09gnu: cpplint: Update to 1.4.5....Fix build and update to 1.4.5. * gnu/packages/cpp.scm (cpplint): Update to 1.4.5, [native-inputs]: add python-pytest, python-pytest-cov, python-pytest-runner, [arguments]: add a new 'use-later-pytest phase to remove pytest version requirement. Mathieu Othacehe 2020-05-07gnu: Add pegtl....* gnu/packages/cpp.scm (pegtl): New variable. Brice Waegeneire 2020-04-10gnu: libzen: Update to 0.4.38....* gnu/packages/cpp.scm (libzen): Update to 0.4.38. [source]: Hard-code NAME. Tobias Geerinckx-Rice 2020-03-29gnu: xtl: Update to 0.6.13....* gnu/packages/cpp.scm (xtl): Update to 0.6.13. Tobias Geerinckx-Rice 2020-03-25gnu: abseil-cpp: Update to 20200225.1....* gnu/packages/cpp.scm (abseil-cpp): Update to 20200225.1. Ricardo Wurmus 2020-03-06Do not record store file name in cpp.scm....* gnu/packages/cpp.scm (abseil-cpp): Replace full store file name with '...' Vagrant Cascadian 2020-03-04gnu: Add abseil-cpp....* gnu/packages/cpp.scm (abseil-cpp): New variable. Signed-off-by: Pierre Neidhardt <mail@ambrevar.xyz> Roel Janssen 2020-02-23gnu: Add tweeny....* gnu/packages/cpp.scm (tweeny): New variable. nixo 2019-12-19gnu: catch-framework2: Update to 2.1.2....* gnu/packages/check.scm (catch-framework2): Update to 2.1.2. (catch-framework2-1): New variable. * gnu/packages/cpp.scm (fifo-map)[native-inputs]: Use catch-framework2-1. Ricardo Wurmus 2019-12-16Revert "gnu: ccls: Configure using -isystem for header files."...This reverts commit 2c82d4ad10de8e0ba462d81401385c5e7499f6e2. Brett Gilio 2019-12-16Revert "gnu: ccls: Adjust indentation"...This reverts commit 3c80b07a0b4a2f1c2702acd6896f94892c516709. Brett Gilio 2019-12-16gnu: ccls: Adjust indentation...* gnu/packages/cpp.scm (ccls): Adjust indentation. Brett Gilio 2019-12-16gnu: ccls: Configure using -isystem for header files....* gnu/packages/cpp.scm (ccls): Configure using -isystem for header files. [arguments]: Use GCC as a build input for preprocessing and searching GCC subdirectories, this provides better support for header file completion on runtime. [inputs]: Add ncurses for command-line support. Remove LLVM, it is not needed. [native-inputs]: Move rapidjson from inputs to native-inputs, add GCC. Brett Gilio 2019-12-04gnu: Remove duplicate nlohmann-json-cpp package....* gnu/packages/serialization.scm (nlohmann-json-cpp): Move variable ... * gnu/packages/cpp.scm (nlohmann-json-cpp): ... here. Mark as deprecated by JSON-MODERN-CXX. * gnu/packages/jupyter.scm (xeus)[inputs]: Change NLOHMANN-JSON-CPP to JSON-MODERN-CXX. * gnu/packages/video.scm (mkvtoolnix)[inputs]: Likewise. Marius Bakke 2019-12-02gnu: ccls: Update to 0.20190823.5....* gnu/packages/cpp.scm (ccls): Update to 0.20190823.5. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Brett Gilio 2019-12-01gnu: Add sobjectizer....* gnu/packages/cpp.scm (sobjectizer): New variable. Jan Wielkiewicz 2019-11-21gnu: json-modern-cxx: Update to 3.7.3....* gnu/packages/cpp.scm (json-modern-cxx): Update to 3.7.3. Marius Bakke 2019-11-15gnu: Add cpplint....* gnu/packages/cpp.scm (cpplint): New variable. Mathieu Othacehe 2019-11-03gnu: xtl: Update to 0.6.8....* gnu/packages/cpp.scm (xtl): Update to 0.6.8. Tobias Geerinckx-Rice 2019-10-22gnu: Add gperftools....* gnu/packages/cpp.scm (gperftools): New variable. Pierre Neidhardt 2019-10-12gnu: json-modern-cxx: Update to 3.7.0....* gnu/packages/cpp.scm (json-modern-cxx): Update to 3.7.0. [source](snippet): Adjust for new doctest requirement. [native-inputs]: Add DOCTEST. [inputs]: Remove CATCH-FRAMEWORK2. Marius Bakke 2019-10-01Merge branch 'master' into core-updatesLudovic Courtès 2019-09-28gnu: xtl: Update to 0.6.7....* gnu/packages/cpp.scm (xtl): Update to 0.6.7. Tobias Geerinckx-Rice 2019-09-26gnu: Add ccls....* gnu/packages/cpp.scm (ccls): New variable. Mathieu Othacehe