aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/prolog.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/prolog.scm')
-rw-r--r--gnu/packages/prolog.scm152
1 files changed, 152 insertions, 0 deletions
diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm
new file mode 100644
index 0000000000..ca280f77fa
--- /dev/null
+++ b/gnu/packages/prolog.scm
@@ -0,0 +1,152 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2020 Brett Gilio <brettg@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 (gnu packages prolog)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages backup)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages libunwind)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages xorg)
+ #:use-module (srfi srfi-1))
+
+(define-public gprolog
+ (package
+ (name "gprolog")
+ (version "1.4.5")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Recent versions are not hosted on the GNU mirrors.
+ (uri (list (string-append "http://gprolog.org/gprolog-" version
+ ".tar.gz")
+ (string-append "mirror://gnu/gprolog/gprolog-" version
+ ".tar.gz")))
+ (sha256
+ (base32
+ "0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append
+ "--with-install-dir=" %output "/share/gprolog"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'change-dir-n-fix-shells
+ (lambda _
+ (chdir "src")
+ (substitute* "configure"
+ (("-/bin/sh") (string-append "-" (which "sh")))
+ (("= /bin/sh") (string-append "= " (which "sh"))))
+ #t)))))
+ (home-page "https://www.gnu.org/software/gprolog/")
+ (synopsis "Prolog compiler")
+ (description
+ "GNU Prolog is a standards-compliant Prolog compiler with constraint
+solving over finite domains. It accepts Prolog+ constraint programs and
+produces a compiled, native binary which can function in a stand-alone
+manner. It also features an interactive interpreter.")
+ (license (list license:gpl2+
+ license:lgpl3+))
+
+ ;; See 'configure' for the list of supported architectures.
+ (supported-systems (fold delete
+ %supported-systems
+ '("armhf-linux" "mips64el-linux")))))
+
+(define-public swi-prolog
+ (package
+ (name "swi-prolog")
+ (version "8.1.20")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/SWI-Prolog/swipl-devel.git")
+ (recursive? #t) ; TODO: Determine if this can be split out.
+ (commit (string-append "V" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0blpw5g0gszi83wmvyhlh7pk4wlyx00vgaj6qr3ris36cdl8j10a"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:parallel-build? #t
+ #:tests? #t
+ #:configure-flags
+ (list "-DINSTALL_DOCUMENTATION=ON"
+ "-DSWIPL_INSTALL_IN_LIB=OFF") ; FIXME: Breaks RUNPATH validation.
+ #:phases
+ (modify-phases %standard-phases
+ ;; XXX: Delete a variety of tests which fail either attempting to
+ ;; establish a network connection, or attempts to write to the
+ ;; immutable store. Phases marked *-pre are disabled /before/ building.
+ ;; Phases marked *-post are disabled /after/ building.
+ (add-after 'unpack 'delete-failing-tests-pre
+ (lambda _
+ (substitute* "src/CMakeLists.txt"
+ ((" save") ""))
+ (substitute* "src/test.pl"
+ (("testdir\\('Tests/save'\\).") ""))
+ (with-directory-excursion "src/Tests"
+ (for-each delete-file-recursively
+ '("save")))
+ #t))
+ (add-before 'check 'delete-failing-tests-post
+ (lambda _
+ (with-directory-excursion "packages"
+ (for-each delete-file-recursively
+ '("http"
+ "pengines"
+ "RDF"
+ "semweb"
+ "ssl")))
+ #t)))))
+ (native-inputs
+ `(("zlib" ,zlib)
+ ("gmp" ,gmp)
+ ("readline" ,readline)
+ ("texinfo" ,texinfo)
+ ("libarchive" ,libarchive)
+ ("libunwind" ,libunwind)
+ ("libjpeg", libjpeg)
+ ("libxft" ,libxft)
+ ("fontconfig" ,fontconfig)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("openssl" ,openssl)))
+ (home-page "https://www.swi-prolog.org/")
+ (synopsis "ISO/Edinburgh-style Prolog interpreter")
+ (description "SWI-Prolog is a fast and powerful ISO/Edinburgh-style Prolog
+compiler with a rich set of built-in predicates. It offers a fast, robust and
+small environment which enables substantial applications to be developed with
+it.")
+ (license license:bsd-2)))