;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2023 B. Wilson <elaexuotee@wilsonb.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 forth)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (gnu packages m4)
  #:use-module (gnu packages vim))

(define-public gforth
  (package
    (name "gforth")
    (version "0.7.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gforth/gforth-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "1c1bahc9ypmca8rv2dijiqbangm1d9av286904yw48ph7ciz4qig"))))
    (build-system gnu-build-system)
    (arguments
     '(#:parallel-build? #f             ; XXX: parallel build fails
       #:phases
       (modify-phases %standard-phases
         (add-after 'install 'install-gforth.el
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out           (assoc-ref outputs "out"))
                    (emacs-sitedir (string-append
                                    out "/share/emacs/site-lisp")))
               ;; TODO: compile and autoload it.
               (install-file "gforth.el" emacs-sitedir)
               #t))))))
    (native-inputs
     (list m4))
    (synopsis "Forth interpreter")
    (description
     "Gforth is a fast and portable implementation of the ANSI Forth language.
It includes an editing mode for Emacs and an interpreter featuring completion
and history.  A generic virtual machine environment, vmgen, is also
included.")
    (home-page "https://www.gnu.org/software/gforth/")
    (license license:gpl3+)))

(define-public smithforth
  (package
    (name "smithforth")
    (version "220711")
    (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dacvs.neocities.org/SF/SForth"
                            version "dmp.txt"))
        (sha256
          (base32 "0a39pv7529llsa3f48fmvwvlcp3f9v8qkn5ziw2l6kxf0qvli3lm"))))
    (build-system trivial-build-system)
    (native-inputs (list xxd
                         (origin
                           (method url-fetch)
                           (uri (string-append
                                 "https://dacvs.neocities.org/SF/system"
                                 version "fs.txt"))
                           (sha256
                            (base32
                             "17v1pp64s6n8q8w3kg48nd7zdcx2208y4svr5fpfms5lkyzg7z1m")))))
    (arguments
      (list
        #:modules '((guix build utils))
        #:builder
        #~(begin
            (use-modules (guix build utils)
                         (ice-9 textual-ports))
            (let* ((sforth.dmp #$(package-source this-package))
                   (system.fs  #$(this-package-native-input
                                  (string-append "system" version "fs.txt")))
                   (xxd        (string-append (assoc-ref %build-inputs "xxd")
                                              "/bin/xxd"))
                   (bin        (string-append (assoc-ref %outputs "out") "/bin")))
              (copy-file sforth.dmp "sforth.dmp")
              (substitute* "sforth.dmp" (("#.*$") "\n"))
              (with-output-to-file "sforth"
                (lambda _
                  (invoke xxd "-p" "-r" "sforth.dmp")
                  (call-with-input-file system.fs
                    (lambda (port) (display (get-string-all port)))))
                #:binary #t)
              (chmod "sforth" #o755)
              (install-file "sforth" bin)))))
    (home-page "https://dacvs.neocities.org/SF/")
    (synopsis "Forth programming language for x86-64 desktop computers")
    (description "SmithForth is an implementation of the Forth programming
language for x86-64 desktop computers. SmithForth is a text interpreter that
runs in a Linux text console.")
    (supported-systems '("x86_64-linux"))
    (license license:expat-0)))
58c3a23c9e7cd4a4a0583676b0909'>gnu: stepmania: Fix build flags non-Intel machines....* gnu/packages/games.scm (stepmania)[arguments]: Add a configure-flag on non-Intel machines to disable SSE2 optimizations. Efraim Flashner 2019-01-26gnu: maxima: Patch hardcoded paths....* gnu/packages/maths.scm: (maxima): Patch hardcoded paths. [arguments]: Add the phase 'patch-paths' to replace references to sed, dirname, and head with direct references to the store. [inputs]: Add sed. Kei Kebreau 2019-01-26gnu: xboing: Use INVOKE....* gnu/packages/games.scm (xboing)[arguments]: Use INVOKE in build phases. Do not replace "install" phase; add new "install-man-pages" phase instead. Ricardo Wurmus 2019-01-26gnu: cmatrix: Use INVOKE....* gnu/packages/games.scm (cmatrix)[arguments]: Use INVOKE. Ricardo Wurmus 2019-01-26gnu: cowsay: Use INVOKE....* gnu/packages/games.scm (cowsay)[arguments]: Use INVOKE in build phases. Ricardo Wurmus 2019-01-26gnu: python-django: Use INVOKE....* gnu/packages/django.scm (python-django)[arguments]: Use INVOKE. Ricardo Wurmus 2019-01-26gnu: ding: Use INVOKE....* gnu/packages/dictionaries.scm (ding)[arguments]: Use INVOKE. Ricardo Wurmus 2019-01-26gnu: uthash: Use INVOKE....* gnu/packages/datastructures.scm (uthash)[arguments]: Use INVOKE. Ricardo Wurmus 2019-01-26gnu: uthash: Fetch sources via git....* gnu/packages/datastructures.scm (uthash)[source]: Fetch source code via git. Ricardo Wurmus 2019-01-26gnu: make-u-boot-package: Use INVOKE....* gnu/packages/bootloaders.scm (make-u-boot-package)[arguments]: Use INVOKE in "configure" phase. Ricardo Wurmus 2019-01-26gnu: libksysguard: Use INVOKE....* gnu/packages/kde.scm (libksysguard)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: kdelibs4support: Use INVOKE....* gnu/packages/kde-frameworks.scm (kdelibs4support)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: baloo: Use INVOKE....* gnu/packages/kde-frameworks.scm (baloo)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: knotifications: Use INVOKE....* gnu/packages/kde-frameworks.scm (knotifications)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: kauth: Use INVOKE....* gnu/packages/kde-frameworks.scm (kauth)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: solid: Use INVOKE....* gnu/packages/kde-frameworks.scm (solid)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: networkmanager-qt: Use INVOKE....* gnu/packages/kde-frameworks.scm (networkmanager-qt)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: modemmanager-qt: Use INVOKE....* gnu/packages/kde-frameworks.scm (modemmanager-qt)[arguments]: Use INVOKE in "check" phase. Ricardo Wurmus 2019-01-26gnu: kdbusaddons: Use INVOKE....* gnu/packages/kde-frameworks.scm (kdbusaddons)[arguments]: Use INVOKE in check phase. Ricardo Wurmus 2019-01-26gnu: kcoreaddons: Disable broken test....* gnu/packages/kde-frameworks.scm (kcoreaddons)[arguments]: Disable benchNotifyWatcher test because it installs too many inotify watches and fails with ENOSPC. Ricardo Wurmus 2019-01-25gnu: Go: Update to 1.11.5 [fixes CVE-2019-6486]....* gnu/packages/golang.scm (go-1.11): Update to 1.11.5. [arguments]: Add a 'tarbomb-workaround' phase and adapt the 'chdir' phase for the tarbomb. Leo Famulari 2019-01-26gnu: musescore: Update to 3.0.1....* gnu/packages/music.scm (musescore): Update to 3.0.1. Nicolas Goaziou 2019-01-26gnu: guix: Remove 'guix-devel' variable....* gnu/packages/package-management.scm (guix-devel): Remove. Ludovic Courtès 2019-01-25gnu: pepr: Use PYPI-URI....* gnu/packages/bioinformatics.scm (pepr)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: python2-warpedlmm: Use PYPI-URI....* gnu/packages/bioinformatics.scm (python2-warpedlmm)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: attic: Use PYPI-URI....* gnu/packages/backup.scm (attic)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: graphios: Use PYPI-URI....* gnu/packages/admin.scm (graphios)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: python-sqlalchemy: Use PYPI-URI....* gnu/packages/databases.scm (python-sqlalchemy)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: python-pyaudio: Use PYPI-URI....* gnu/packages/audio.scm (python-pyaudio)[source]: Use PYPI-URI. Ricardo Wurmus 2019-01-25gnu: femtolisp: Use INVOKE....* gnu/packages/scheme.scm (femtolisp)[arguments]: Remove "bootstrap" phase; use INVOKE and return #T unconditionally. Ricardo Wurmus 2019-01-25gnu: linkchecker: Fix most test failures....Add a patch to skip more tests that require the network. Along with some other changes, this gets all but of one of the tests passing. The remaining test is broken due to a problem with the Python package in Guix, which is fixed by [1] which is currently on the core-updates branch. This patch doesn't work on core-updates due to python2-miniboa not being present. 1: d453b0e11d3f001a8160a7d126fdbf40e45d5042 * gnu/packages/python.scm (linkchecker)[source]: Add patch. [native-inputs]: Add more inputs required for the tests. [arguments]: Enable the tests, move the 'check phase after 'install. Test using the installed software, and use py.test. Christopher Baines 2019-01-25gnu: dealii-openmpi: Setup MPI for tests....* gnu/packages/maths.scm (dealii-openmpi)[arguments]: Add 'mpi-setup' phase. Eric Bavier 2019-01-25superlu-dist: Upgrade to 6.1.0....* gnu/packages/patches/superlu-dist-awpm-grid.patch: New file. * gnu/packages/maths.scm (superlu-dist)[source]: Upgrade to 6.0.0. Remove extraneous 'use-modules' in snippet. [build-system]: Change to cmake-build-system. [propagated-inputs]: Replace pt-scotch with pt-scotch32 to match integer sizes. Add "parmetis" input, from pt-scotch32. Move lapack to ... [inputs]: ...here. Add openblas and combinatorial-blas. [arguments]: Replace 'configure' phase with #:configure-flags. Add 'set-c++-standard' and 'omp-setup' phases. Remove 'create-install-directories, 'check', and 'install' phases, which are now handled by cmake. * gnu/local.mk (dist_patch_DATA): Add patch. Eric Bavier 2019-01-25scotch: Upgrade to 6.0.6....* gnu/packages/maths.scm (scotch): Upgrade to 6.0.6. [source]: Remove patches that have been fixed upstream. [arguments]: Add 'install-metis' phase. [outputs]: New field. (pt-scotch, pt-scotch32)[arguments]: Add 'mpi-setup' phase. Use 'invoke'. * gnu/packages/patches/scotch-graph-diam-64.patch, gnu/packages/patches/scotch-graph-induce-type-64.patch, gnu/packages/patches/scotch-test-threading.patch: Delete files. * gnu/packages/patches/scotch-integer-declarations.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust as necessary. Eric Bavier 2019-01-25gnu: Add Combinatorial BLAS....* gnu/packages/maths.scm (combinatorial-blas): New variable. * gnu/packages/patches/combinatorial-blas-awpm.patch, gnu/packages/patches/combinatorial-blas-io-fix.patch: New files * gnu/local.mk(dist_patch_DATA): Add them. Eric Bavier 2019-01-25linux-modules: module-soft-dependencies: Remove colon from section names....Follow-up to 1a5f46621b44aa1458ad7acd4eca5fe1d4574f92. * gnu/build/linux-modules.scm (module-soft-dependencies): Remove colon from section names. Danny Milosavljevic