;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Andreas Enge ;;; Copyright © 2015 Mark H Weaver ;;; ;;; 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 mit-krb5) #:use-module (gnu packages) #:use-module (gnu packages bison) #:use-module (gnu packages perl) #:use-module (gnu packages gcc) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu)) (define-public mit-krb5 (package (name "mit-krb5") (version "1.13.2") (source (origin (method url-fetch) (uri (string-append "http://web.mit.edu/kerberos/www/dist/krb5/" (version-major+minor version) "/krb5-" version "-signed.tar")) (sha256 (base32 "1qbdzyrws7d0q4filsibh28z54pd5l987jr0ygv43iq9085w6a75")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ("perl" ,perl) ;; Include the patches as native-inputs. ,@(map (lambda (label) (let ((input-name (string-append "patch/" label)) (file-name (string-append name "-" label ".patch"))) `(,input-name ,(search-patch file-name)))) '("CVE-2015-2695-pt1" "CVE-2015-2695-pt2" "CVE-2015-2696" "CVE-2015-2697" "CVE-2015-2698-pt1" "CVE-2015-2698-pt2")))) (arguments `(#:modules ((ice-9 ftw) (ice-9 match) (srfi srfi-1) ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases (replace 'unpack (lambda* (#:key source #:allow-other-keys) (define (sub-directory? name) (and (not (member name '("." ".."))) (equal? (stat:type (stat name)) 'directory))) (and (zero? (system* "tar" "xvf" source)) (match (find-files "." "\\.tar\\.gz$") ((inner-tar-file) (zero? (system* "tar" "xvf" inner-tar-file)))) (match (scandir "." sub-directory?) ((directory) (chdir directory) #t))))) (add-after 'unpack 'apply-patches (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((patches (filter (match-lambda ((name . file) (string-prefix? "patch/" name))) (or native-inputs inputs)))) (every (match-lambda ((name . file) (format (current-error-port) "applying '~a'...~%" name) (zero? (system* "patch" "-p1" "--force" "-i" file)))) patches)))) (add-after 'apply-patches 'enter-source-directory (lambda _ (chdir "src") #t)) (add-before 'check 'pre-check (lambda* (#:key inputs #:allow-other-keys) (let ((perl (assoc-ref inputs "perl"))) (substitute* "plugins/kdb/db2/libdb2/test/run.test" (("/bin/cat") (string-append perl "/bin/perl")) (("D/bin/sh") (string-append "D" (which "bash"))) (("bindir=/bin/.") (string-append "bindir=" perl "/bin")))) ;; avoid service names since /etc/services is unavailable (substitute* "tests/resolve/Makefile" (("-p telnet") "-p 23")) #t))))) (synopsis "MIT Kerberos 5") (description "Massachusetts Institute of Technology implementation of Kerberos. Kerberos is a network authentication protocol designed to provide strong authentication for client/server applications by using secret-key cryptography.") (license (non-copyleft "file://NOTICE" "See NOTICE in the distribution.")) (home-page "http://web.mit.edu/kerberos/")))