aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/hugs.scm
blob: c9915e4cd6b12912a05a3e9ac6e3dbc84d17825c (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; 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 hugs)
  #:use-module (guix licenses)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages gcc))

(define-public hugs
  (package
    (name "hugs")
    (version "Sep2006")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://www.haskell.org/hugs/downloads/2006-09/"
                          name "98-plus-" version ".tar.gz"))
      (sha256
       (base32
        "1mdy4aq4campgmnpc2qwq7bsbfhaxfsqdghbyyz2wms4lnfcmyma"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-before 'configure 'fix-sh-n-cp
           (lambda _
             (substitute*
                 '("configure"
                   "libraries/configure"
                   "packages/time/configure"
                   "packages/base/configure"
                   "packages/X11/configure"
                   "packages/HGL/configure"
                   "packages/OpenAL/configure"
                   "packages/OpenGL/configure"
                   "packages/network/configure"
                   "packages/unix/configure"
                   "packages/Cabal/tests/HSQL/configure"
                   "packages/ALUT/configure"
                   "packages/GLUT/configure"
                   "packages/base/cbits/execvpe.c"
                   "packages/base/System/Process/Internals.hs"
                   "packages/Cabal/Distribution/attic"
                   "packages/Cabal/Distribution/Simple/Register.hs"
                   "packages/Cabal/Distribution/Simple/Hugs.hs"
                   "tools/hugs-hc"
                   "src/machdep.c"
                   "libraries/Makefile.in")
               (("/bin/sh") (which "sh")))
             (substitute* '("demos/Makefile.in"
                            "libraries/Makefile.in")
               (("/bin/cp") (which "cp")))
             #t)))
       #:tests? #f)) ; no test target
    ;; FIXME: Fails to build with GCC 5.
    (native-inputs (list gcc-4.9))
    (home-page "https://www.haskell.org/hugs/")
    (synopsis "Functional programming system based on Haskell 98")
    (description
     "Hugs 98 is an interpreter and programming environment for developing
Haskell programs.  It provides an almost complete implementation of Haskell
98, which includes expression and pattern syntax, primitives for monadic I/O,
with support for simple interactive programs, handle-based I/O, and exception
handling.  Hugs has a nearly complete implementation of the Haskell module
system and supports a number of advanced extensions.")
   (license (non-copyleft "file://License"
                          "See License in the distribution."))))
56 (base32 "0rp7pzr8xrdxpv75c2mi8zszzz2ypli4vvzxiic7mbrryrafdmdz")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ("flex" ,flex) ("add-usb-tcp-support.patch" ,(origin (method url-fetch) (uri (string-append "https://sourceforge.net/p/bricxcc/patches/" "_discuss/thread/00b427dc/b84b/attachment/" "nqc-01-Linux_usb_and_tcp.diff")) (sha256 (base32 "0z5gx55ra1kamhhqxz08lvvwslfl36pbmwdd566rhmbgmyhlykbr")))) ("debian-writable-swap-inst-len.patch" ,(origin (method url-fetch) (uri (string-append "https://sources.debian.org/data/main/n/nqc/" "3.1.r6-7/debian/patches/" "writable-swap-inst-len.patch")) (sha256 (base32 "1kr7j057aa5i0kxmlfpbfcsif5yq2lrmjw4sljn400ijaq4mys3v")))))) (arguments '(#:tests? #f ;no tests #:make-flags (list (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure) (add-before 'build 'rm-generated ;; Regenerating compiler/lexer.cpp avoids an 'undefined ;; reference to `isatty(int)'' error. (lambda _ (for-each delete-file '("compiler/lexer.cpp" "compiler/parse.cpp")) #t)) (add-after 'unpack 'deal-with-tarbomb (lambda _ (chdir "..") ;tarbomb #t)) (add-after 'deal-with-tarbomb 'patch (lambda* (#:key inputs #:allow-other-keys) (for-each (lambda (patch) (invoke "patch" "-Np1" "-i" (assoc-ref inputs patch))) (list "add-usb-tcp-support.patch" "debian-writable-swap-inst-len.patch"))))))) (home-page "http://bricxcc.sourceforge.net/nqc/") (synopsis "C-like language for Lego's MINDSTORMS") (description "Not Quite C (NQC) is a simple language for programming several Lego MINDSTORMS products. The preprocessor and control structures of NQC are very similar to C. NQC is not a general purpose language -- there are many restrictions that stem from limitations of the standard RCX firmware.") (license license:mpl1.0))) (define-public leocad (package (name "leocad") (version "21.06") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/leozide/leocad") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1ifbxngkbmg6d8vv08amxbnfvlyjdwzykrjp98lbwvgb0b843ygq")))) (build-system gnu-build-system) (native-inputs (list qttools)) ; for lrelease (inputs (list mesa qtbase-5 zlib)) (arguments '(#:tests? #f #:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs inputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (invoke "qmake" (string-append "INSTALL_PREFIX=" out) ;; Otherwise looks for lrelease-qt4. "QMAKE_LRELEASE=lrelease" ;; Don't pester users about updates. "DISABLE_UPDATE_CHECK=1") #t))) (add-after 'configure 'reset-resource-timestamps (lambda _ ;; The contents of build/release/.qrc/qrc_leocad.cpp generated by ;; qt's rcc tool depends on the timestamps in resources/*, in ;; particular the leocad_*.qm files that are created by qmake ;; above. So reset those timestamps for a reproducible build. (with-directory-excursion "resources" (for-each (lambda (file) (let* ((base (basename file ".qm")) (src (string-append base ".ts")) (st (stat src))) (set-file-time file st))) (find-files "." "leocad_.*\\.qm"))) #t))))) (home-page "https://www.leocad.org") (synopsis "Create virtual Lego models") (description "LeoCAD is a program for creating virtual LEGO models. It has an intuitive interface, designed to allow new users to start creating new models without having to spend too much time learning the application. LeoCAD is fully compatible with the LDraw Standard and related tools.") (license license:gpl2+)))