mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
Fixes guix/guix#1386 * gnu/packages/medical.scm (orthanc-mysql): [phases] {fix-mysql-include-path}: Swap to SEARCH-INPUT-DIRECTORY, see guix/guix#1385. Change-Id: I879001041733c03bd1e5dd8659c0e3c67fc8b6ee
433 lines
17 KiB
Scheme
433 lines
17 KiB
Scheme
;;; GNU Guix --- Functional package management for GNU
|
|
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
|
;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
|
|
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
|
|
;;; Copyright © 2025 Jake Forster <jakecameron.forster@gmail.com>
|
|
;;;
|
|
;;; 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 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 packages)
|
|
#:use-module (guix utils)
|
|
#:use-module (gnu packages base)
|
|
#:use-module (gnu packages bash) ; wrap-program
|
|
#:use-module (gnu packages boost)
|
|
#:use-module (gnu packages check)
|
|
#:use-module (gnu packages compression)
|
|
#:use-module (gnu packages curl)
|
|
#:use-module (gnu packages databases)
|
|
#:use-module (gnu packages documentation)
|
|
#:use-module (gnu packages image)
|
|
#:use-module (gnu packages image-processing)
|
|
#:use-module (gnu packages kde-frameworks) ; kirigami
|
|
#:use-module (gnu packages linux)
|
|
#:use-module (gnu packages lua)
|
|
#:use-module (gnu packages protobuf)
|
|
#:use-module (gnu packages python)
|
|
#:use-module (gnu packages python-build)
|
|
#:use-module (gnu packages python-crypto)
|
|
#:use-module (gnu packages python-web)
|
|
#:use-module (gnu packages python-xyz)
|
|
#:use-module (gnu packages qt)
|
|
#:use-module (gnu packages serialization)
|
|
#:use-module (gnu packages sqlite)
|
|
#:use-module (gnu packages tls)
|
|
#:use-module (gnu packages web)
|
|
#:use-module (gnu packages xml))
|
|
|
|
(define-public mygnuhealth
|
|
(package
|
|
(name "mygnuhealth")
|
|
(version "2.2.1")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (pypi-uri "MyGNUHealth" version))
|
|
(sha256
|
|
(base32
|
|
"1jcrriccqzb4jx7zayhiqmpvi3cvfy3bbf9zr3m83878f94yww8j"))))
|
|
(build-system python-build-system)
|
|
(arguments
|
|
(list
|
|
#:imported-modules `(,@%python-build-system-modules
|
|
,@%qt-build-system-modules)
|
|
#:modules `(((guix build qt-build-system) #:prefix qt:)
|
|
(guix build python-build-system)
|
|
(guix build utils))
|
|
#:phases #~(modify-phases %standard-phases
|
|
(add-after 'install 'qt-wrap
|
|
(assoc-ref qt:%standard-phases 'qt-wrap))
|
|
(add-before 'check 'env-setup
|
|
(lambda _
|
|
(mkdir-p "/tmp/mygh/")
|
|
(setenv "HOME" "/tmp"))))))
|
|
(native-inputs (list python-pyside-2))
|
|
(inputs (list bash-minimal
|
|
kirigami-5
|
|
python
|
|
python-bcrypt
|
|
python-matplotlib
|
|
python-requests
|
|
python-tinydb
|
|
qtbase-5
|
|
qtdeclarative-5
|
|
qtgraphicaleffects
|
|
qtquickcontrols-5
|
|
qtquickcontrols2-5
|
|
qtsvg-5))
|
|
(home-page "https://www.gnuhealth.org")
|
|
(synopsis "The GNU Health Personal Health Record")
|
|
(description
|
|
"This package provides GNUHealth Personal Health Record
|
|
application for desktop and mobile devices that integrates with the GNU
|
|
Health Federation.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public openmolar-1
|
|
(package
|
|
(name "openmolar")
|
|
(version "1.1.6-g81838c85")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append
|
|
"https://static.openmolar.com/om1/releases/openmolar-" version
|
|
".tar.gz"))
|
|
(sha256
|
|
(base32 "09vrfqn511vswnj2q9m7srlwdgz066qvqpmja6sg1yl1ibh3cbpr"))))
|
|
(build-system pyproject-build-system)
|
|
(arguments
|
|
(list
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(add-after 'unpack 'patch-/usr
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(substitute* '("setup.py"
|
|
"src/openmolar/settings/localsettings.py")
|
|
(("/usr") #$output))))
|
|
(add-after 'unpack 'set-acceptable-version
|
|
(lambda _
|
|
(substitute* "src/openmolar/settings/version.py"
|
|
((#$version) "1.1.6")))))))
|
|
(native-inputs
|
|
(list python-setuptools python-wheel))
|
|
(inputs (list python-pyqtwebengine
|
|
python-pyqt+qscintilla
|
|
python-mysqlclient
|
|
qscintilla))
|
|
(propagated-inputs (list qtwebengine-5))
|
|
(home-page "https://openmolar.com/om1")
|
|
(synopsis "Dental practice management software")
|
|
(description
|
|
"Openmolar is a dental practice management suite. Its
|
|
functionality includes appointments, patient records, treatment planning,
|
|
billing etc. It is a full featured, reliable and thoroughly tested
|
|
application and has been translated into many languages.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public orthanc
|
|
(package
|
|
(name "orthanc")
|
|
(version "1.12.7")
|
|
(source
|
|
(origin
|
|
(method hg-fetch)
|
|
(uri (hg-reference (url "https://orthanc.uclouvain.be/hg/orthanc")
|
|
(changeset "a30cc2fa7250")))
|
|
(file-name (hg-file-name name version))
|
|
(sha256
|
|
(base32 "1n8v0dh17g9ihny8cpq63qd6ai5l95i5h3sz9vwzfnd7q3qh0rb9"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
(list
|
|
#:configure-flags
|
|
#~(list (string-append "-DDCMTK_DICTIONARY_DIR="
|
|
#$(this-package-input "dcmtk") "/share/dcmtk-"
|
|
#$(package-version (this-package-input "dcmtk")))
|
|
;; Building Connectivity Checks plugin requires the network.
|
|
"-DBUILD_CONNECTIVITY_CHECKS=OFF"
|
|
;; Disable 4 tests that require the network.
|
|
"-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=OFF")
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(add-after 'unpack 'chdir
|
|
(lambda _
|
|
;; The OrthancServer/ subdirectory contains the root
|
|
;; CMakeLists.txt file.
|
|
(chdir "OrthancServer")))
|
|
(add-after 'unpack 'remove-localtime-requirement
|
|
(lambda _
|
|
;; /etc/localtime is not present in the build container;
|
|
;; don't let that stop the build.
|
|
(substitute* "OrthancFramework/Sources/Toolbox.cpp"
|
|
(("if \\(!SystemToolbox::IsExistingFile\\(LOCALTIME\\)\\)")
|
|
"if (false)"))))
|
|
;; There is no test target; simply run the binary.
|
|
(replace 'check
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
(when tests?
|
|
(invoke "./UnitTests")))))))
|
|
(native-inputs (list doxygen
|
|
glibc-utf8-locales ;for one test
|
|
googletest
|
|
python))
|
|
(inputs (list boost
|
|
civetweb
|
|
curl
|
|
dcmtk
|
|
jsoncpp
|
|
libjpeg-turbo
|
|
libpng
|
|
lua
|
|
openssl
|
|
protobuf
|
|
pugixml
|
|
`(,util-linux "lib") ;for uuid.h
|
|
sqlite
|
|
unzip))
|
|
(home-page "https://orthanc-server.com")
|
|
(synopsis
|
|
"Standalone @acronym{DICOM, Digital Imaging and Communications in
|
|
Medicine} server")
|
|
(description
|
|
"Orthanc is a standalone @acronym{DICOM, Digital Imaging and
|
|
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+))))
|
|
|
|
(define-public orthanc-mysql
|
|
;; No tags provided.
|
|
(let ((changeset "a6300ccf6683")
|
|
(revision "0"))
|
|
(package
|
|
(name "orthanc-mysql")
|
|
(version (git-version "5.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 "0hi3bawj117lk7lrxpa6h7vq4hx9jwqb3m5pwn3726hnf4kmp4jc"))))
|
|
(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 MySQL/ subdirectory contains the root CMakeLists.txt
|
|
;; file.
|
|
(chdir "MySQL")))
|
|
(add-after 'unpack 'fix-mysql-include-path
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
;; Help it find mysql.h, either from mysql in this package or
|
|
;; from mariadb:dev in orthanc-mariadb.
|
|
(substitute* "Resources/CMake/MariaDBConfiguration.cmake"
|
|
(("/usr/include/mysql")
|
|
(search-input-directory inputs "include/mysql")))))
|
|
;; There is no test target; simply run the binary.
|
|
(replace 'check
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
(when tests?
|
|
;; The tests rely on a MySQL or MariaDB test server
|
|
;; being available.
|
|
(let ((datadir "/tmp/mysql")
|
|
(socket "/tmp/mysql/mysqld.sock")
|
|
(username "root")
|
|
(password "")
|
|
(database "orthanctest"))
|
|
(invoke "mysqld" "--initialize-insecure"
|
|
(string-append "--datadir=" datadir))
|
|
(spawn "mysqld"
|
|
(list
|
|
"mysqld"
|
|
;; Respect '--datadir'.
|
|
"--no-defaults"
|
|
(string-append "--datadir=" datadir)
|
|
(string-append "--socket=" socket)
|
|
;; For one test.
|
|
"--max_allowed_packet=32m"))
|
|
(sleep 1)
|
|
(invoke "mysql"
|
|
(string-append "--socket=" socket)
|
|
"-u" username
|
|
"-e" "CREATE DATABASE orthanctest;")
|
|
(invoke "./UnitTests" socket username password
|
|
database))))))))
|
|
(native-inputs
|
|
(list googletest
|
|
python))
|
|
(inputs
|
|
(list boost
|
|
curl
|
|
jsoncpp
|
|
mysql
|
|
openssl
|
|
orthanc
|
|
protobuf
|
|
unzip
|
|
(list util-linux "lib") ; <uuid.h>
|
|
zlib))
|
|
(home-page "https://orthanc-server.com")
|
|
(synopsis "MySQL plugins for Orthanc")
|
|
(description
|
|
"This package provides plugins to use MySQL or MariaDB as the database
|
|
backend of an Orthanc @acronym{DICOM, Digital Imaging and Communications in
|
|
Medicine} server instead of SQLite.")
|
|
(license license:agpl3+))))
|
|
|
|
;; Provide this variant without MySQL to save MariaDB users ~340 MiB
|
|
;; of disk space.
|
|
(define-public orthanc-mariadb
|
|
(package/inherit orthanc-mysql
|
|
(name "orthanc-mariadb")
|
|
(arguments
|
|
(substitute-keyword-arguments (package-arguments orthanc-mysql)
|
|
((#:phases phases)
|
|
#~(modify-phases #$phases
|
|
(replace 'check
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
(when tests?
|
|
;; The tests rely on a MySQL or MariaDB test server
|
|
;; being available.
|
|
(let ((datadir "/tmp/mysql")
|
|
(socket "/tmp/mysql/mysqld.sock")
|
|
(username "root")
|
|
(password "")
|
|
(database "orthanctest"))
|
|
(invoke "mariadb-install-db"
|
|
(string-append "--datadir=" datadir)
|
|
"--auth-root-authentication-method=normal")
|
|
(spawn "mysqld"
|
|
(list
|
|
"mysqld"
|
|
;; Respect '--datadir'.
|
|
"--no-defaults"
|
|
(string-append "--datadir=" datadir)
|
|
(string-append "--socket=" socket)
|
|
;; For one test.
|
|
"--max-allowed-packet=32m"))
|
|
(sleep 1)
|
|
(invoke "mysql"
|
|
(string-append "--socket=" socket)
|
|
"-u" username
|
|
"-e" "CREATE DATABASE orthanctest;")
|
|
(invoke "./UnitTests" socket username password
|
|
database)))))))))
|
|
(native-inputs (modify-inputs (package-native-inputs orthanc-mysql)
|
|
(prepend mariadb))) ;for tests
|
|
(inputs (modify-inputs (package-inputs orthanc-mysql)
|
|
(delete "mysql")
|
|
(prepend `(,mariadb "dev")
|
|
`(,mariadb "lib"))))
|
|
(synopsis "MariaDB plugins for Orthanc")))
|