summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Forster <jakecameron.forster@gmail.com>2025-06-09 00:42:48 +0930
committerSharlatan Hellseher <sharlatanus@gmail.com>2025-06-30 10:37:39 +0100
commit54b33b33dc289e2d55f62bd5109217b8e750b02f (patch)
tree163d3f4970dbfaf737e22a775831a6c0e350cafa
parent214aa26e5c281473d641fb026d2ad7d3b7515031 (diff)
gnu: Add orthanc-postgresql.
* gnu/packages/medical.scm (orthanc-postgresql): New variable. Change-Id: I27412daf588f4bb9d0ae35101c2586d2d3b7728b Modified-by: Sharlatan Hellseher <sharlatanus@gmail.com> Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
-rw-r--r--gnu/packages/medical.scm82
1 files changed, 81 insertions, 1 deletions
diff --git a/gnu/packages/medical.scm b/gnu/packages/medical.scm
index 8e344b6dd6..e0c200713b 100644
--- a/gnu/packages/medical.scm
+++ b/gnu/packages/medical.scm
@@ -20,14 +20,15 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages medical)
+ #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix build-system qt)
#:use-module (guix download)
#:use-module (guix gexp)
+ #:use-module (guix git-download)
#:use-module (guix hg-download)
- #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (gnu packages base)
#:use-module (gnu packages bash) ; wrap-program
@@ -213,3 +214,82 @@ Medicine} server")
Communications in Medicine} server with a RESTful API and plugin
mechanism for extending its functionality.")
(license license:gpl3+)))
+
+(define-public orthanc-postgresql
+ ;; No tags provided.
+ (let ((changeset "ddc98844d931")
+ (revision "0"))
+ (package
+ (name "orthanc-postgresql")
+ (version (git-version "7.2" revision changeset))
+ (source
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://orthanc.uclouvain.be/hg/orthanc-databases")
+ (changeset changeset)))
+ (file-name (hg-file-name name version))
+ (sha256
+ (base32 "1zv2lrj0f3fahmdyiwyj70ayv5ysa3cj33i58fbk7hy2zclrkjzf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list
+ ;; Don't try to download the Orthanc source code.
+ "-DORTHANC_FRAMEWORK_SOURCE=path"
+ (string-append "-DORTHANC_FRAMEWORK_ROOT="
+ #$(package-source (this-package-input "orthanc"))
+ "/OrthancFramework/Sources"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ ;; The PostgreSQL/ subdirectory contains the root
+ ;; CMakeLists.txt file.
+ (chdir "PostgreSQL")))
+ ;; There is no test target; simply run the binary.
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; The tests rely on a PostgreSQL test server
+ ;; being available.
+ (let ((pgdata "/tmp/pgdata")
+ (host "/tmp")
+ (port "5432")
+ ;; This username is hard-coded in tests.
+ (username "postgres")
+ (password "")
+ (database "orthanctest"))
+ (invoke "initdb" pgdata)
+ (invoke "pg_ctl" "-D" pgdata
+ "-o" (string-append "-k " host)
+ "start")
+ (invoke "createdb" "-h" host database)
+ (invoke "createuser" "-h" host username)
+ ;; The tests include managing Large Objects.
+ (invoke "psql" "-h" host "-d" database "-c"
+ (string-append "ALTER ROLE " username
+ " WITH SUPERUSER;"))
+ (invoke "./UnitTests" host port username password
+ database))))))))
+ (native-inputs
+ (list googletest
+ python))
+ (inputs
+ (list boost
+ jsoncpp
+ openssl
+ orthanc
+ postgresql
+ protobuf
+ unzip
+ (list util-linux "lib") ; <uuid.h>
+ zlib))
+ (home-page "https://orthanc-server.com")
+ (synopsis "PostgreSQL plugins for Orthanc")
+ (description
+ "This package provides plugins to use PostgreSQL as the database
+backend of an Orthanc @acronym{DICOM, Digital Imaging and Communications in
+Medicine} server instead of SQLite.")
+ (license license:agpl3+))))