gnu: Add ephemeralpg.

This is a general utility, but I'm particularly interested in using this to
enable build time tests for the guix-data-service package.

* gnu/packages/databases.scm (ephemeralpg): New variable.
This commit is contained in:
Christopher Baines 2019-10-11 17:20:50 +01:00
parent e9d48bdad4
commit 6fc03fccd4
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577

View file

@ -216,6 +216,68 @@ (define-public go-gopkg.in-mgo.v2
(home-page "http://labix.org/mgo")
(license license:bsd-2)))
(define-public ephemeralpg
(package
(name "ephemeralpg")
(version "2.8")
(source
(origin
(method url-fetch)
(uri (string-append
"http://eradman.com/ephemeralpg/code/ephemeralpg-"
version ".tar.gz"))
(sha256
(base32 "1dpfxsd8a52psx3zlfbqkw53m35w28qwyb87a8anz143x6gnkkr4"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags (list "CC=gcc"
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'check
(lambda* (#:key inputs #:allow-other-keys)
;; The intention for one test is to test without PostgreSQL on
;; the $PATH, so replace the test $PATH with just the util-linux
;; bin, which contains getopt. It will hopefully be possible to
;; remove this for releases after 2.8.
(substitute* "test.rb"
(("/bin:/usr/bin")
(string-append (assoc-ref inputs "util-linux")
"/bin")))
;; Set the LC_ALL=C as some tests use sort, and the locale
;; affects the order. It will hopefully be possible to remove
;; this for releases after 2.8.
(setenv "LC_ALL" "C")
(invoke "ruby" "test.rb")
#t))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/pg_tmp")
`("PATH" ":" prefix
(,(string-append (assoc-ref inputs "util-linux")
"/bin")
,(string-append (assoc-ref inputs "postgresql")
"/bin")
;; For getsocket
,(string-append out "/bin")))))
#t)))))
(inputs
`(("postgresql" ,postgresql)
("util-linux" ,util-linux)))
(native-inputs
`(("ruby" ,ruby)))
(home-page "http://eradman.com/ephemeralpg/")
(synopsis "Run temporary PostgreSQL databases")
(description
"@code{pg_tmp} creates temporary PostgreSQL databases, suitable for tasks
like running software test suites. Temporary databases created with
@code{pg_tmp} have a limited shared memory footprint and are automatically
garbage-collected after a configurable number of seconds (the default is
60).")
(license license:isc)))
(define-public es-dump-restore
(package
(name "es-dump-restore")