aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.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 lego)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix packages)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages bison)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages qt))

(define-public nqc
  (package
    (name "nqc")
    (version "3.1.r6")
    (source (origin
              ;; XXX Using url-fetch/tarbomb results in failure:
              ;; Error: could not create compiler/rcx1_nqh.h
              (method url-fetch)
              (uri (string-append "http://bricxcc.sourceforge.net/nqc/release/"
                                  "nqc-" version ".tgz"))
              (sha256
               (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 "https://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 "23.03")
    (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
                "0sihx2g06mxaahqdh361xfqf7fkzzyhlr58qlzyr4c8jd2pnd3r1"))))
    (build-system gnu-build-system)
    (native-inputs
     (list qttools-5))           ; 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+)))
9654259f88b3a727ac78593435801d5fad72db'>gnu: go-github-com-chmduquesne-rollinghash: Move to golang-crypto....* gnu/packages/syncthing.scm (go-github-com-chmduquesne-rollinghash): Move from here ... * gnu/packages/golang-crypto.scm: ... to here. Change-Id: I61a942c07655f51a61e198613eeaa3eb240b8df9 Sharlatan Hellseher 2024-06-27gnu: go-github-com-thejerf-suture: Move to golang-xyz....* gnu/packages/syncthing.scm (go-github-com-thejerf-suture): Move from here ... * gnu/packages/golang-xyz.scm: ... to here. Change-Id: I532608ed163ee60588131c34621e031b5935eacf Sharlatan Hellseher 2024-06-27gnu: go-github-com-oschwald-geoip2-golang: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-oschwald-geoip2-golang): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: Ie95d3630ec98cd2f60139914959a82dc3313ea05 Sharlatan Hellseher 2024-06-27gnu: go-github-com-oschwald-maxminddb-golang: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-oschwald-maxminddb-golang): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: I88e887ccaeecb5c165bff920515dbdef9f8b85ad Sharlatan Hellseher 2024-06-27gnu: go-github-com-jackpal-gateway: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-jackpal-gateway): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: Ibc24eb85c76df4cea60749eaca55eb7ae7cb3cf5 Sharlatan Hellseher 2024-06-27gnu: go-github-com-ccding-go-stun: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-ccding-go-stun): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: I0713418f7d0b00d3aa7ab4289765556e68b8246d Sharlatan Hellseher 2024-06-27gnu: go-github-com-go-ldap-ldap: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-go-ldap-ldap): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: Ica9883664d11b621d0bd4ce896d217eb82abd0ce Sharlatan Hellseher 2024-06-27gnu: go-github-com-go-asn1-ber-asn1-ber: Move to golang-crypto....* gnu/packages/syncthing.scm (go-github-com-go-asn1-ber-asn1-ber): Move from here ... * gnu/packages/golang-crypto.scm: ... to here. Change-Id: Ib146ac76bbd2d7c34c315dc4f424d05ced597011 Sharlatan Hellseher 2024-06-27gnu: go-github-com-azure-go-ntlmssp: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-azure-go-ntlmssp): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: I9c8397996470d84f57a4472717ebd0d06d06bb4c Sharlatan Hellseher 2024-06-27gnu: go-github-com-audriusbutkevicius-recli: Move to golang-xyz....* gnu/packages/syncthing.scm (go-github-com-audriusbutkevicius-recli): Move from here ... * gnu/packages/golang-xyz.scm: ... to here. Change-Id: I1494e60367873ba5ddbfe0725cd8a0ed02d8cb9e Sharlatan Hellseher 2024-06-27gnu: go-github-com-audriusbutkevicius-pfilter: Move to golang-web....* gnu/packages/syncthing.scm (go-github-com-audriusbutkevicius-pfilter): Move from here ... * gnu/packages/golang-web.scm: ... to here. Change-Id: Ie148e31dde805b79956553988431153159598acc Sharlatan Hellseher 2024-06-27gnu: Remove go-github-com-bkaradzic-go-lz4....* gnu/packages/syncthing.scm (go-github-com-bkaradzic-go-lz4): Delete variable. Change-Id: Idb01a1909d4fe3d4360350e891fd97349db05a6f Sharlatan Hellseher 2024-06-27gnu: go-github-com-sasha-s-go-deadlock: Move to golang-check....* gnu/packages/syncthing.scm (go-github-com-sasha-s-go-deadlock): Move from here ... * gnu/packages/golang-check.scm: ... to here. Change-Id: Id3d101897b4ac056cfe48a52289dd3e4f51402d8 Sharlatan Hellseher 2024-06-27gnu: go-github-com-petermattis-goid: Move to golang-check....* gnu/packages/syncthing.scm (go-github-com-petermattis-goid): Move from here ... * gnu/packages/golang-check.scm: ... to here. Change-Id: I68182d8131afdcb346076d4f1e69ccf680b48cdb Sharlatan Hellseher