aboutsummaryrefslogtreecommitdiff
path: root/tests/gremlin.scm
blob: 77a5dc1998133d69e40996f1a1eb493da6ab79e5 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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-gremlin)
  #:use-module (guix elf)
  #:use-module ((guix utils) #:select (call-with-temporary-directory))
  #:use-module (guix build utils)
  #:use-module (guix build gremlin)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (srfi srfi-64)
  #:use-module (rnrs io ports)
  #:use-module (ice-9 popen)
  #:use-module (ice-9 match))

(define %guile-executable
  (match (false-if-exception (readlink "/proc/self/exe"))
    ((? string? program)
     (and (file-exists? program) (elf-file? program)
          program))
    (_
     #f)))

(define read-elf
  (compose parse-elf get-bytevector-all))

(define c-compiler
  (or (which "gcc") (which "cc") (which "g++")))


(test-begin "gremlin")

(unless %guile-executable (test-skip 1))
(test-assert "elf-dynamic-info-needed, executable"
  (let* ((elf     (call-with-input-file %guile-executable read-elf))
         (dyninfo (elf-dynamic-info elf)))
    (or (not dyninfo)                             ;static executable
        (lset<= string=?
                (list (string-append "libguile-" (effective-version))
                      "libgc" "libunistring" "libffi")
                (map (lambda (lib)
                       (string-take lib (string-contains lib ".so")))
                     (elf-dynamic-info-needed dyninfo))))))

(test-equal "expand-origin"
  '("OOO/../lib"
    "OOO"
    "../OOO/bar/OOO/baz"
    "ORIGIN/foo")
  (map (cut expand-origin <> "OOO")
       '("$ORIGIN/../lib"
         "${ORIGIN}"
         "../${ORIGIN}/bar/$ORIGIN/baz"
         "ORIGIN/foo")))

(unless c-compiler
  (test-skip 1))
(test-equal "strip-runpath"
  "hello\n"
  (call-with-temporary-directory
   (lambda (directory)
     (with-directory-excursion directory
       (call-with-output-file "t.c"
         (lambda (port)
           (display "int main () { puts(\"hello\"); }" port)))
       (invoke c-compiler "t.c"
               "-Wl,-rpath=/foo" "-Wl,-rpath=/bar")
       (let* ((dyninfo (elf-dynamic-info
                        (parse-elf (call-with-input-file "a.out"
                                     get-bytevector-all))))
              (old     (elf-dynamic-info-runpath dyninfo))
              (new     (strip-runpath "a.out"))
              (new*    (strip-runpath "a.out")))
         (validate-needed-in-runpath "a.out")
         (and (member "/foo" old) (member "/bar" old)
              (not (member "/foo" new))
              (not (member "/bar" new))
              (equal? new* new)
              (let* ((pipe (open-input-pipe "./a.out"))
                     (str  (get-string-all pipe)))
                (close-pipe pipe)
                str)))))))

(test-end "gremlin")
enSSL hash symlinks....* gnu/packages/certs.scm (le-certs)[arguments]: Run 'c_rehash' on the result. [native-inputs]: New fields. Ludovic Courtès 2017-07-28gnu: nss, nss-certs: Update to 3.32....This release includes minor code changes and many certificate updates: <https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.32_release_notes> * gnu/packages/certs.scm (nss-certs): Update to 3.32. * gnu/packages/gnuzilla.scm (nss): Update to 3.32. [arguments]: Prevent another test file from being installed. * gnu/packages/patches/nss-pkgconfig.patch: Adjust. Marius Bakke 2017-06-12gnu: nss, nss-certs: Update to 3.31....Release notes: <https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.31_release_notes> * gnu/packages/certs.scm (nss-certs): Update to 3.31. * gnu/packages/gnuzilla.scm (nss): Likewise. [source]<patches>: Remove upstream 'nss-disable-long-b64-tests' patch. [arguments]<#:phases>: Move armhf timeout substitution ... * gnu/packages/patches/nss-increase-test-timeout.patch: ... here. * gnu/packages/patches/nss-disable-long-b64-tests.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. Marius Bakke 2017-04-20gnu: nss-certs: Update to 3.30.2....* gnu/packages/certs.scm (nss-certs): Update to 3.30.2. Marius Bakke 2017-04-18Revert "gnu: nss, nss-certs: Update to 3.30.1."...This version fails to build on some architectures: https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00365.html https://bugzilla.mozilla.org/show_bug.cgi?id=1351459 This reverts commit 96e98d51a7057b443a1c1b32046f8be6a1987a2f. Marius Bakke 2017-04-09gnu: nss, nss-certs: Update to 3.30.1....* gnu/packages/certs.scm (nss-certs): Update to 3.30.1. * gnu/packages/gnuzilla.scm (nss): Update to 3.30.1. Marius Bakke