aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk5
-rw-r--r--gnu/packages/education.scm57
-rw-r--r--gnu/packages/lisp-xyz.scm140
-rw-r--r--gnu/packages/lisp.scm17
-rw-r--r--gnu/packages/maths.scm167
-rw-r--r--gnu/packages/patches/sbcl-riscv-Make-contribs-build-again.patch71
-rw-r--r--gnu/packages/patches/tipp10-disable-downloader.patch165
-rw-r--r--gnu/packages/patches/tipp10-fix-compiling.patch212
-rw-r--r--gnu/packages/patches/tipp10-qt5.patch69
-rw-r--r--gnu/packages/patches/tipp10-remove-license-code.patch332
10 files changed, 192 insertions, 1043 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 8d00180d01..ee9a509f1b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1950,7 +1950,6 @@ dist_patch_DATA = \
%D%/packages/patches/sbcl-clml-fix-types.patch \
%D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch \
%D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \
- %D%/packages/patches/sbcl-riscv-Make-contribs-build-again.patch \
%D%/packages/patches/scalapack-gcc-10-compilation.patch \
%D%/packages/patches/scheme48-tests.patch \
%D%/packages/patches/scons-test-environment.patch \
@@ -2020,10 +2019,6 @@ dist_patch_DATA = \
%D%/packages/patches/tidy-CVE-2015-5522+5523.patch \
%D%/packages/patches/timewarrior-time-sensitive-tests.patch \
%D%/packages/patches/tinyxml-use-stl.patch \
- %D%/packages/patches/tipp10-disable-downloader.patch \
- %D%/packages/patches/tipp10-fix-compiling.patch \
- %D%/packages/patches/tipp10-remove-license-code.patch \
- %D%/packages/patches/tipp10-qt5.patch \
%D%/packages/patches/tk-find-library.patch \
%D%/packages/patches/tla2tools-build-xml.patch \
%D%/packages/patches/tlf-support-hamlib-4.2+.patch \
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index d1e220ebcd..61fc9945fa 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com>
;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
+;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -266,47 +267,24 @@ frequently used words in American English.")
(define-public tipp10
(package
(name "tipp10")
- (version "2.1.0")
+ (version "3.3.0")
(source (origin
- (method url-fetch)
- ;; guix download is not able to handle the download links on the
- ;; home-page, which use '<meta http-equiv="refresh" …>'
- (uri (string-append "mirror://debian/pool/main/"
- "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
+ (method git-fetch)
+ ;; Use the community maintained Qt 6 fork of the project, as the
+ ;; original software is now developed as a web application. The
+ ;; latest official version was 2.1.0.
+ (uri (git-reference
+ (url "https://gitlab.com/tipp10/tipp10.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
- ;; Apply patches in the order determined by Debian
- (patches (search-patches "tipp10-fix-compiling.patch"
- "tipp10-remove-license-code.patch"
- "tipp10-disable-downloader.patch"
- "tipp10-qt5.patch"))))
- (build-system cmake-build-system)
- (arguments
- `(#:tests? #f ; packages has no tests
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-new-version-check
- (lambda _
- ;; Make new version check to default to false.
- ;; TODO: Remove the checkbox from the dialog and the check itself
- (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
- (("settings.value(\"check_new_version\", true)")
- "settings.value(\"check_new_version\", false)"))
- #t))
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Make program honor $PREFIX
- (substitute* "tipp10.pro"
- (("\\.path = /usr/") (string-append ".path = " out "/")))
- (substitute* "def/defines.h"
- (("\"/usr/") (string-append "\"" out "/")))
- ;; Recreate Makefile
- (invoke "qmake")))))))
- (inputs
- (list qtbase-5 qtmultimedia-5))
- (home-page "https://www.tipp10.com/")
+ "138xf55csnq53mlkhj50g9bacay8kxz6p9vnzd7jyv6rq1xch5nq"))))
+ (build-system qt-build-system)
+ (arguments (list #:qtbase qtbase ;qtbase 6
+ #:tests? #f)) ;packages has no tests
+ (inputs (list qtbase qtmultimedia))
+ (home-page "https://www.tipp10.com/en/")
(synopsis "Touch typing tutor")
(description "Tipp10 is a touch typing tutor. The ingenious thing about
the software is its intelligence feature: characters that are mistyped are
@@ -316,6 +294,9 @@ they can start practicing without a hitch.
Useful support functions and an extensive progress tracker, topical lessons
and the ability to create your own practice lessons make learning to type
easy.")
+ ;; XXX: The LICENSE file mentions 'or later', but the source license
+ ;; headers have been modified to mention only "either version 2 of the
+ ;; License", which is not quite clear.
(license license:gpl2)))
(define-public snap
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 752b777ed2..2751af4a85 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -1281,27 +1281,40 @@ timeouts.")
(define-public sbcl-bordeaux-threads
(package
(name "sbcl-bordeaux-threads")
- (version "0.8.8")
+ (version "0.9.2")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sionescu/bordeaux-threads")
(commit (string-append "v" version))))
(sha256
- (base32 "19i443fz3488v1pbbr9x24y8h8vlyhny9vj6c9jk5prm702awrp6"))
- (file-name
- (git-file-name "bordeaux-threads" version))))
- (inputs (list sbcl-alexandria))
+ (base32 "0d9sd7pm91yhln95z8nclhn6n4l5b2cp3pxpggpmpv7rsq84ssmh"))
+ (file-name (git-file-name "cl-bordeaux-threads" version))))
+ (inputs (list sbcl-alexandria
+ sbcl-global-vars
+ sbcl-trivial-features
+ sbcl-trivial-garbage))
(native-inputs (list sbcl-fiveam))
(build-system asdf-build-system/sbcl)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
+ (add-after 'unpack 'silence-deprecation-warning
+ (lambda _
+ ;; The deprecation warning for APIv1 makes the build of some
+ ;; of the dependents of bordeaux-threads fail because they
+ ;; interpret it as an error instead of a simple indication.
+ ;; Let's silence this warning for now.
+ (substitute* (cons* "apiv1/default-implementations.lisp"
+ (find-files "apiv1" "impl-.*\\.lisp"))
+ (("\\(warn \"Bordeaux-Threads APIv1 is deprecated\\. Please migrate to APIv2\\.\"\\)")
+ ""))))
(add-after 'unpack 'adjust-test-sleep
(lambda _
;; 0.001 is too short for some slower machines.
- (substitute* "test/bordeaux-threads-test.lisp"
+ (substitute* '("test/tests-v1.lisp"
+ "test/tests-v2.lisp")
(("sleep 0\\.001") "sleep 0.002")))))))
(synopsis "Portable shared-state concurrency library for Common Lisp")
(description "BORDEAUX-THREADS is a proposed standard for a minimal
@@ -22181,58 +22194,67 @@ fit together as required by any particular game.")
(sbcl-package->cl-source-package sbcl-trial))
(define-public sbcl-virality
- (package
- (name "sbcl-virality")
- (version "0.3.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/bufferswap/ViralityEngine")
- (commit (string-append "v" version))))
- (file-name (git-file-name "cl-virality" version))
- (sha256
- (base32 "0hvjcvyd628jh4if6swk1wrfb9qdlnpk9ax1y3jarr8ms7ghfcdb"))))
- (build-system asdf-build-system/sbcl)
- (arguments
- `(#:asd-systems '("virality"
- "vorigin"
- "vorigin.test"
- "vshadow"
- "vumbra"
- "vutils")
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'delete-examples
- (lambda _
- ;; Don't install the big "examples" directory.
- (delete-file-recursively "examples"))))))
- (inputs
- (list sbcl-3b-bmfont
- sbcl-babel
- sbcl-cl-cpus
- sbcl-cl-graph
- sbcl-cl-opengl
- sbcl-cl-ppcre
- sbcl-cl-slug
- sbcl-closer-mop
- sbcl-fast-io
- sbcl-global-vars
- sbcl-glsl-packing
- sbcl-jsown
- sbcl-lparallel
- sbcl-pngload
- sbcl-printv
- sbcl-queues
- sbcl-sdl2
- sbcl-serapeum
- sbcl-split-sequence
- sbcl-static-vectors
- sbcl-trivial-features
- sbcl-varjo))
- (home-page "https://github.com/bufferswap/ViralityEngine")
- (synopsis "Component-based game engine written in Common Lisp")
- (description
- "Virality Engine provides a system and workflow that helps describe the
+ (let ((commit "cdc19cca9b028f0c30d14ed8b3e51359dd46069a")
+ (revision "1"))
+ (package
+ (name "sbcl-virality")
+ (version (git-version "0.3.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bufferswap/ViralityEngine")
+ (commit commit)))
+ (file-name (git-file-name "cl-virality" version))
+ (sha256
+ (base32 "1s25aapkqcr8fxi0i9wjw0n4jax7r4a9d9wflpr3sqz2vgrg2lz6"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-systems '("virality"
+ "vorigin"
+ "vorigin.test"
+ "vshadow"
+ "vumbra"
+ "vutils")
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'delete-examples
+ (lambda _
+ ;; Don't install the big "examples" directory.
+ (delete-file-recursively "examples")
+ ;; Remove example asd files that cause issues during
+ ;; the 'copy-source' phase because they have the same
+ ;; names.
+ (for-each
+ delete-file
+ (find-files "."
+ "^xXx-SYSTEM-NAME-xXx\\.asd$")))))))
+ (inputs
+ (list sbcl-3b-bmfont
+ sbcl-babel
+ sbcl-cl-cpus
+ sbcl-cl-graph
+ sbcl-cl-opengl
+ sbcl-cl-ppcre
+ sbcl-cl-slug
+ sbcl-closer-mop
+ sbcl-fast-io
+ sbcl-global-vars
+ sbcl-glsl-packing
+ sbcl-jsown
+ sbcl-lparallel
+ sbcl-pngload
+ sbcl-printv
+ sbcl-queues
+ sbcl-sdl2
+ sbcl-serapeum
+ sbcl-split-sequence
+ sbcl-static-vectors
+ sbcl-trivial-features
+ sbcl-varjo))
+ (home-page "https://github.com/bufferswap/ViralityEngine")
+ (synopsis "Component-based game engine written in Common Lisp")
+ (description
+ "Virality Engine provides a system and workflow that helps describe the
elements needed to write 2D or 3D games. It was designed with several domain
specific languages that make it easier to describe, manipulate, and use assets
commonly found in game making. Such assets include (but are not limited to)
@@ -22246,7 +22268,7 @@ can be used with them. Components are added to Actors which represent game
concepts like players, scenery, effects, etc. We define a component protocol
invoked by Virality Engine to move your components to the next state and
render them each frame.")
- (license license:expat)))
+ (license license:expat))))
(define-public cl-virality
(sbcl-package->cl-source-package sbcl-virality))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 7abdbc8b6c..c54a9b4b3a 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2019-2023 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
-;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021, 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
;;; Copyright © 2022 Joeke de Graaf <joeke@posteo.net>
@@ -25,6 +25,7 @@
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
+;;; Copyright © 2023 Andrew Kravchuk <awkravchuk@gmail.com.
;;;
;;; This file is part of GNU Guix.
;;;
@@ -266,7 +267,7 @@ interface to the Tk widget system.")
(define-public ecl
(package
(name "ecl")
- (version "21.2.1")
+ (version "23.9.9")
(source
(origin
(method url-fetch)
@@ -274,7 +275,7 @@ interface to the Tk widget system.")
"https://ecl.common-lisp.dev/static/files/release/"
name "-" version ".tgz"))
(sha256
- (base32 "000906nnq25177bgsfndiw3iqqgrjc9spk10hzk653sbz3f7anmi"))))
+ (base32 "107q6gmxlsya4yv38r1x1axrgyyfgdrfkkz97zfp64bcrasdl6y5"))))
(build-system gnu-build-system)
;; src/configure uses 'which' to confirm the existence of 'gzip'.
(native-inputs
@@ -381,6 +382,10 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
(%current-target-system)))
'("CFLAGS=-falign-functions=4")
'())
+ ,@(if (target-x86-64?)
+ '("--enable-portability"
+ "--with-threads=POSIX_THREADS")
+ '())
"--with-dynamic-ffi"
"--with-dynamic-modules"
"--with-ffcall"
@@ -434,17 +439,15 @@ an interpreter, a compiler, a debugger, and much more.")
(define-public sbcl
(package
(name "sbcl")
- (version "2.3.5")
+ (version "2.3.7")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
- (base32 "11ji5n65l31249r0v7hm0wc0yk2ila0y746nj36xn1cxrwh0gjc9"))
+ (base32 "1xwr1pnwd3xj375ainlad7mm479rk2mrks8dc6d92cash3xl90b9"))
(modules '((guix build utils)))
- ;; backport from upstream.
- (patches (search-patches "sbcl-riscv-Make-contribs-build-again.patch"))
(snippet
'(begin
;; Don't force ARMv5.
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6141c09886..62d4adfbd1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -48,7 +48,7 @@
;;; Copyright © 2021, 2022 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
-;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021, 2023 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Pierre-Antoine Bouttier <pierre-antoine.bouttier@univ-grenoble-alpes.fr>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
@@ -4312,102 +4312,99 @@ to BMP, JPEG or PNG image formats.")
(define-public maxima
(package
(name "maxima")
- (version "5.46.0")
+ (version "5.47.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/maxima/Maxima-source/"
version "-source/" name "-" version ".tar.gz"))
(sha256
- (base32
- "01wbm8jj43p7gpdj4h55aij0b44bjydn4bwb7q1wjrfs91mz143k"))
+ (base32 "0yhgsi7s22bpblrmrj60x0jsjdz98b5hjdcq7b0fhlzx4hdh414i"))
(patches (search-patches "maxima-defsystem-mkdir.patch"))))
(build-system gnu-build-system)
(inputs
- `(("bash" ,bash-minimal)
- ("gnuplot" ,gnuplot) ;for plots
- ("sbcl" ,sbcl)
- ("sed" ,sed)
- ("tk" ,tk))) ;Tcl/Tk is used by 'xmaxima'
+ (list bash-minimal
+ gnuplot ;for plots
+ sbcl
+ sed
+ tk)) ;Tcl/Tk is used by 'xmaxima'
(native-inputs
(list texinfo perl python))
(arguments
- `(#:configure-flags
- ,#~(list "--enable-sbcl"
- (string-append "--with-sbcl=" #$sbcl "/bin/sbcl")
- (string-append "--with-posix-shell=" #$bash-minimal "/bin/sh")
- (string-append "--with-wish=" #$tk "/bin/wish"
- #$(version-major+minor (package-version tk))))
- ;; By default Maxima attempts to write temporary files to
- ;; '/tmp/nix-build-maxima-*', which won't exist at run time.
- ;; Work around that.
- #:make-flags (list "TMPDIR=/tmp")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let* ((sed (search-input-file inputs "/bin/sed"))
- (coreutils (assoc-ref inputs "coreutils"))
- (dirname (string-append coreutils "/bin/dirname"))
- (head (string-append coreutils "/bin/head"))
- (perl (search-input-file inputs "/bin/perl"))
- (python (search-input-file inputs "/bin/python3")))
- (substitute* "src/maxima.in"
- (("sed ") (string-append sed " "))
- (("dirname") dirname)
- (("head") head))
- (substitute* "doc/info/Makefile.in"
- (("/usr/bin/env perl") perl))
- (substitute* "doc/info/build_html.sh.in"
- (("python") python))
- #t)))
- (add-before 'check 'pre-check
- (lambda _
- (chmod "src/maxima" #o555)
- #t))
- (replace 'check
- (lambda _
- ;; This is derived from the testing code in the "debian/rules" file
- ;; of Debian's Maxima package.
- ;; If Maxima can successfully run this, the binary to be installed
- ;; should be fine.
- (invoke "sh" "-c"
- (string-append
- "./maxima-local "
- "--lisp=sbcl "
- "--batch-string=\"run_testsuite();\" "
- "| grep -q \"No unexpected errors found\""))))
- ;; Make sure the doc and emacs files are found in the
- ;; standard location. Also configure maxima to find gnuplot
- ;; without having it on the PATH.
- (add-after 'install 'post-install
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((gnuplot (assoc-ref inputs "gnuplot"))
- (out (assoc-ref outputs "out"))
- (datadir (string-append out "/share/maxima/" ,version))
- (binutils (dirname (search-input-file inputs "/bin/as"))))
- (with-directory-excursion out
- (mkdir-p "share/emacs")
- (mkdir-p "share/doc")
- (symlink
- (string-append datadir "/doc/")
- (string-append out "/share/doc/maxima"))
- (with-atomic-file-replacement
- (string-append datadir "/share/maxima-init.lisp")
- (lambda (in out)
- (format out "~a ~s~a~%"
- "(setf $gnuplot_command "
- (string-append gnuplot "/bin/gnuplot") ")")
- (dump-port in out))))
- ;; Ensure that Maxima will have access to the GNU binutils
- ;; components at runtime.
- (wrap-program (string-append out "/bin/maxima")
- `("PATH" prefix (,binutils))))
- #t))
- ;; The Maxima command ‘describe’ allows picking the relevant portions
- ;; from Maxima’s Texinfo docs. However it does not support reading
- ;; gzipped info files.
- (delete 'compress-documentation))))
+ (list
+ #:configure-flags
+ #~(list "--enable-sbcl"
+ (string-append "--with-sbcl=" #$sbcl "/bin/sbcl")
+ (string-append "--with-posix-shell=" #$bash-minimal "/bin/sh")
+ (string-append "--with-wish=" #$tk "/bin/wish"
+ #$(version-major+minor (package-version tk))))
+ ;; By default Maxima attempts to write temporary files to
+ ;; '/tmp/nix-build-maxima-*', which won't exist at run time.
+ ;; Work around that.
+ #:make-flags #~(list "TMPDIR=/tmp")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((sed (search-input-file inputs "/bin/sed"))
+ (coreutils (assoc-ref inputs "coreutils"))
+ (dirname (string-append coreutils "/bin/dirname"))
+ (head (string-append coreutils "/bin/head"))
+ (perl (search-input-file inputs "/bin/perl"))
+ (python (search-input-file inputs "/bin/python3")))
+ (substitute* "src/maxima.in"
+ (("sed ") (string-append sed " "))
+ (("dirname") dirname)
+ (("head") head))
+ (substitute* "doc/info/Makefile.in"
+ (("/usr/bin/env perl") perl))
+ (substitute* "doc/info/build_html.sh.in"
+ (("python") python)))))
+ (add-before 'check 'pre-check
+ (lambda _
+ (chmod "src/maxima" #o555)))
+ (replace 'check
+ (lambda _
+ ;; This is derived from the testing code in the "debian/rules" file
+ ;; of Debian's Maxima package.
+ ;; If Maxima can successfully run this, the binary to be installed
+ ;; should be fine.
+ (invoke "sh" "-c"
+ (string-append
+ "./maxima-local "
+ "--lisp=sbcl "
+ "--batch-string=\"run_testsuite();\" "
+ "| grep -q \"No unexpected errors found\""))))
+ ;; Make sure the doc and emacs files are found in the
+ ;; standard location. Also configure maxima to find gnuplot
+ ;; without having it on the PATH.
+ (add-after 'install 'post-install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((gnuplot (assoc-ref inputs "gnuplot"))
+ (out (assoc-ref outputs "out"))
+ (datadir (string-append out "/share/maxima/" #$version))
+ (binutils (dirname (search-input-file inputs "/bin/as"))))
+ (with-directory-excursion out
+ (mkdir-p "share/emacs")
+ (mkdir-p "share/doc")
+ (symlink
+ (string-append datadir "/doc/")
+ (string-append out "/share/doc/maxima"))
+ (with-atomic-file-replacement
+ (string-append datadir "/share/maxima-init.lisp")
+ (lambda (in out)
+ (format out "~a ~s~a~%"
+ "(setf $gnuplot_command "
+ (string-append gnuplot "/bin/gnuplot") ")")
+ (dump-port in out))))
+ ;; Ensure that Maxima will have access to the GNU binutils
+ ;; components at runtime.
+ (wrap-program (string-append out "/bin/maxima")
+ `("PATH" prefix (#$binutils))))))
+ ;; The Maxima command ‘describe’ allows picking the relevant portions
+ ;; from Maxima’s Texinfo docs. However it does not support reading
+ ;; gzipped info files.
+ (delete 'compress-documentation))))
(home-page "https://maxima.sourceforge.io")
(synopsis "Numeric and symbolic expression manipulation")
(description "Maxima is a system for the manipulation of symbolic and
diff --git a/gnu/packages/patches/sbcl-riscv-Make-contribs-build-again.patch b/gnu/packages/patches/sbcl-riscv-Make-contribs-build-again.patch
deleted file mode 100644
index 85b96e1b20..0000000000
--- a/gnu/packages/patches/sbcl-riscv-Make-contribs-build-again.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 8704f528f227f587d0e06dfd2f807aeca7a69a71 Mon Sep 17 00:00:00 2001
-From: Charles Zhang <charleszhang99@yahoo.com>
-Date: Thu, 1 Jun 2023 16:39:26 +0200
-Subject: [PATCH] riscv: Make contribs build again.
-
-The issue was that the LINKAGE_TEMP_REG being NL3 was a C argument
-register, so of course that caused clashing on C call-out, causing
-problems with run-program. Going back to NL7 didn't work either
-because it wasn't getting saved before entry into the trampoline. The
-code here used to have NL7 before the trampoline code was gutted and
-then restored, so I'm wondering how this ever worked before, because
-it definitely did. Pick LIP as the TEMP_REG now because not only does
-it get saved, it's also the least likely thing to get disturbed by
-clobbering.
-
-Fixes #lp2002930.
-
-Also remove assembly routine printing because it doesn't need to be
-part of the build script (unlike the other files in output/ which
-can't trivially be recovered from a built image), and because not all
-disassembler printers have been written on riscv yet.
----
- NEWS | 3 +++
- make-target-2-load.lisp | 4 ----
- src/runtime/riscv-arch.c | 2 +-
- 3 files changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index 17537ff92..5c0f7777b 100644
---- a/NEWS
-+++ b/NEWS
-@@ -1,5 +1,8 @@
- ;;;; -*- coding: utf-8; fill-column: 78 -*-
-
-+changes relative to sbcl-2.3.5:
-+ * bug fix: riscv can build contribs again.
-+
- changes in sbcl-2.3.5 relative to sbcl-2.3.4:
- * enhancement: Unicode support has been updated to support version 15.0.0 of
- the Unicode standard, including addition of characters and their collation
-diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
-index 885ebda74..b9a1a1e36 100644
---- a/make-target-2-load.lisp
-+++ b/make-target-2-load.lisp
-@@ -6,10 +6,6 @@
- (defvar *compile-files-p* nil)
- (load (merge-pathnames "src/cold/warm.lisp" *load-pathname*))
-
--(with-open-file (stream "output/asm-routines.txt" :direction :output
-- :if-does-not-exist :create :if-exists :supersede)
-- (sb-c:dis sb-fasl:*assembler-routines* stream))
--
- ;; sb-xref-for-internals is actively harmful to tree-shaking.
- ;; Remove some symbols to make the hide-packages test pass.
- #+sb-xref-for-internals
-diff --git a/src/runtime/riscv-arch.c b/src/runtime/riscv-arch.c
-index 6c1994829..062623899 100644
---- a/src/runtime/riscv-arch.c
-+++ b/src/runtime/riscv-arch.c
-@@ -159,7 +159,7 @@ arch_install_interrupt_handlers(void)
- * Linkage entry size is 8 or 20, because we need 2 instructions for the 32-bit case and we need 3 instructions and an 8 byte address in the 64-bit case.
- */
-
--#define LINKAGE_TEMP_REG reg_NL3
-+#define LINKAGE_TEMP_REG reg_LIP // Lisp needs to save before entry.
-
- void arch_write_linkage_table_entry(int index, void *target_addr, int datap)
- {
---
-2.40.1
-
diff --git a/gnu/packages/patches/tipp10-disable-downloader.patch b/gnu/packages/patches/tipp10-disable-downloader.patch
deleted file mode 100644
index 4917a927f9..0000000000
--- a/gnu/packages/patches/tipp10-disable-downloader.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-https://salsa.debian.org/debian/tipp10/-/raw/debian/2.1.0-5/debian/patches/disable_downloaders.patch
-
-Author: Reiner Herrmann <reiner@reiner-h.de>
-Description: Disable downloaders
- This makes porting to Qt5 much easier, as QHttp is no longer available.
- But the functionality was not enabled anyway or is no longer useful.
- .
- - checkversion.h/.cpp:
- At startup (while loading settings), Tipp10 "phones home" to do an
- update check (www.tipp10.com/update/version.tipp10v210).
- For a packaged software and one that is no longer being developed,
- this does not make much sense.
- - updatedialog.h/.cpp:
- Can download newer sqlite database (www.tipp10.com/update/sql.tipp10v210.utf),
- but this file is no longer available on the server (404).
- The update action has also not been enabled in the menu, so the update
- functionality was currently not active:
- widget/mainwindow.cpp:143: //fileMenu->addAction(updateAction);
- - downloaddialog.h/.cpp:
- Allows downloading lessons from user-specified location.
- But the action (widget/startwidget.cpp -> lessonDownload) has not been part
- of any menu, so it was also not in use.
-
---- a/tipp10.pro
-+++ b/tipp10.pro
-@@ -15,7 +15,6 @@
- INCLUDEPATH += .
- CONFIG += qt
- QT += sql
--QT += network
- RC_FILE += tipp10.rc
- RESOURCES += tipp10.qrc
- HEADERS += def/defines.h \
-@@ -36,15 +35,12 @@
- widget/settingspages.h \
- widget/lessondialog.h \
- widget/regexpdialog.h \
-- widget/downloaddialog.h \
- widget/lessonprintdialog.h \
- widget/lessonresult.h \
-- widget/updatedialog.h \
- widget/helpbrowser.h \
- widget/companylogo.h \
- widget/errormessage.h \
- widget/txtmessagedialog.h \
-- widget/checkversion.h \
- sql/connection.h \
- sql/lessontablesql.h \
- sql/chartablesql.h \
-@@ -70,15 +66,12 @@
- widget/settingspages.cpp \
- widget/lessondialog.cpp \
- widget/regexpdialog.cpp \
-- widget/downloaddialog.cpp \
- widget/lessonprintdialog.cpp \
- widget/lessonresult.cpp \
-- widget/updatedialog.cpp \
- widget/helpbrowser.cpp \
- widget/companylogo.cpp \
- widget/errormessage.cpp \
- widget/txtmessagedialog.cpp \
-- widget/checkversion.cpp \
- sql/lessontablesql.cpp \
- sql/chartablesql.cpp \
- sql/trainingsql.cpp \
---- a/widget/mainwindow.cpp
-+++ b/widget/mainwindow.cpp
-@@ -41,11 +41,9 @@
-
- #include "mainwindow.h"
- #include "settingsdialog.h"
--#include "updatedialog.h"
- #include "def/defines.h"
- #include "def/errordefines.h"
- #include "errormessage.h"
--#include "checkversion.h"
-
- MainWindow::MainWindow() {
- trainingStarted = false;
-@@ -214,8 +212,8 @@
- }
-
- void MainWindow::showUpdate() {
-- UpdateDialog updateDialog(this);
-- updateDialog.exec();
-+ //UpdateDialog updateDialog(this);
-+ //updateDialog.exec();
- // Fill lesson list after online update
- startWidget->fillLessonList(false);
- }
-@@ -486,6 +484,7 @@
- settings.endGroup();
-
- settings.beginGroup("general");
-+#if 0
- if (settings.value("check_new_version", true).toBool()) {
-
- QDate lastVersionCheck = settings.value("last_version_check").toDate();
-@@ -499,6 +498,7 @@
- }
- settings.setValue("last_version_check", today);
- }
-+#endif
- settings.endGroup();
- }
-
---- a/widget/settingspages.cpp
-+++ b/widget/settingspages.cpp
-@@ -581,7 +581,7 @@
-
- // Layout of group box vertical
- QVBoxLayout *layout = new QVBoxLayout;
-- layout->addWidget(checkNewVersion);
-+ //layout->addWidget(checkNewVersion);
- layout->addSpacing(1);
- layout->addWidget(checkNativeStyle);
- layout->setMargin(16);
-@@ -610,7 +610,6 @@
- checkIntelligence->setChecked(settings.value("check_toggle_intelligence", true).toBool());
- checkLimitLesson->setChecked(settings.value("check_limit_lesson", true).toBool());
- checkLessonPublish->setChecked(settings.value("check_lesson_publish", true).toBool());
-- checkNewVersion->setChecked(settings.value("check_new_version", true).toBool());
- checkNativeStyle->setChecked(settings.value("check_native_style", false).toBool());
- settings.endGroup();
- }
-@@ -636,7 +635,6 @@
- settings.setValue("check_limit_lesson", checkLimitLesson->isChecked());
- settings.setValue("check_lesson_publish", checkLessonPublish->isChecked());
- settings.setValue("check_native_style", checkNativeStyle->isChecked());
-- settings.setValue("check_new_version", checkNewVersion->isChecked());
- settings.endGroup();
-
- return requireRestart;
---- a/widget/startwidget.cpp
-+++ b/widget/startwidget.cpp
-@@ -43,12 +43,10 @@
-
- #include "startwidget.h"
- #include "sql/startsql.h"
--#include "updatedialog.h"
- #include "def/defines.h"
- #include "def/errordefines.h"
- #include "errormessage.h"
- #include "lessondialog.h"
--#include "downloaddialog.h"
- #include "illustrationdialog.h"
- #include "txtmessagedialog.h"
-
-@@ -1048,7 +1046,7 @@
- }
-
- void StartWidget::clickDownloadLesson() {
--
-+#if 0
- QStringList lessonData;
-
- DownloadDialog downloadDialog(&lessonData, this);
-@@ -1083,6 +1081,7 @@
- }
- }
- }
-+#endif
- }
-
- void StartWidget::clickEditLesson() {
diff --git a/gnu/packages/patches/tipp10-fix-compiling.patch b/gnu/packages/patches/tipp10-fix-compiling.patch
deleted file mode 100644
index 3a34a98b22..0000000000
--- a/gnu/packages/patches/tipp10-fix-compiling.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-Description: Debian patches to make tipp10 compile
-Author: Christoph Martin <chrism@debian.org>
-Last-Update: 2016-07-20
-
-https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0001-FixCompiling
-
---- a/widget/tickerboard.cpp
-+++ b/widget/tickerboard.cpp
-@@ -97,7 +97,8 @@ void TickerBoard::startTicker(bool wasPa
-
- if (tickerSpeed == 50) {
- scrollOffset = 290;
-- scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
-+ const QRect qr = QRect(10, 15, 590, 35);
-+ scroll(-290, 0, qr); //contentsRect());
- }
-
- startFlag = true;
-@@ -153,7 +154,8 @@ void TickerBoard::changeChar() {
- scrollOffset = 0;
- } else {
- scrollOffset = 290;
-- scroll(-290, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
-+ const QRect qr = QRect(10, 15, 590, 35);
-+ scroll(-290, 0, qr); //contentsRect());
- }
- splitLesson();
- }
-@@ -242,7 +244,8 @@ void TickerBoard::progress() {
-
- // Move ticker 1 pixel to left
- scrollOffset++;
-- scroll(-1, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
-+ const QRect qr = QRect(10, 15, 590, 35);
-+ scroll(-1, 0, qr); //contentsRect());
-
- if ((lessonOffset - scrollOffset) <= 30) {
- setSpeed(tickerSpeed);
-@@ -265,14 +268,16 @@ void TickerBoard::progress() {
- // 160 pixels overage (because the user must see at least the next word)
- if ((lessonOffset - scrollOffset) > 200) {
- scrollOffset += (lessonOffset - scrollOffset) - 200;
-- scroll(-((lessonOffset - scrollOffset) - 200), 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
-+ const QRect qr = QRect(10, 15, 590, 35);
-+ scroll(-((lessonOffset - scrollOffset) - 200), 0, qr); //contentsRect());
- }
- } else {
- // If the user types faster than the ticker, move ticker faster after
- // 160 pixels overage (because the user must see at least the next word)
- if ((lessonOffset - scrollOffset) > 280) {
- scrollOffset += 570;
-- scroll(-570, 0, QRect::QRect(10, 15, 590, 35)); //contentsRect());
-+ const QRect qr = QRect(10, 15, 590, 35);
-+ scroll(-570, 0, qr); //contentsRect());
- }
-
- }
---- a/widget/settingspages.cpp
-+++ b/widget/settingspages.cpp
-@@ -501,7 +501,7 @@ void DatabasePage::writeSettings() {
- QSettings settings;
- #endif
- settings.beginGroup("database");
-- settings.setValue("pathpro", lineDatabasePath->text() + "/" + QString::QString(APP_USER_DB));
-+ settings.setValue("pathpro", lineDatabasePath->text() + "/" + QString(APP_USER_DB));
- settings.endGroup();
- }
-
---- a/widget/lessondialog.cpp
-+++ b/widget/lessondialog.cpp
-@@ -89,7 +89,7 @@ void LessonDialog::updateContent() {
- *lessonData = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts);
- // Delete empty lines
- for (int i = 0; i < lessonData->size(); i++) {
-- if (QString::QString(lessonData->at(i).toLocal8Bit().constData()).simplified() == "") {
-+ if (QString(lessonData->at(i).toLocal8Bit().constData()).simplified() == "") {
- lessonData->removeAt(i);
- }
- }
-@@ -259,7 +259,7 @@ void LessonDialog::clickSave() {
- contentList = lineLessonContent->toPlainText().split("\n", QString::SkipEmptyParts);
- // Delete empty lines
- for (i = 0; i < contentList.size(); i++) {
-- if (QString::QString(contentList.at(i).toLocal8Bit().constData()).simplified() == "") {
-+ if (QString(contentList.at(i).toLocal8Bit().constData()).simplified() == "") {
- contentList.removeAt(i);
- }
- }
---- a/sql/chartablesql.cpp
-+++ b/sql/chartablesql.cpp
-@@ -57,7 +57,7 @@ QVariant CharSqlModel::data(const QModel
- // Read the unicode value
- unicode = value.toInt();
- // Convert unicode to a char
-- unicodeToChar = QString::QString(QChar(unicode)); //"\'" + QString::QString(QChar(unicode)) + "\'";
-+ unicodeToChar = QString(QChar(unicode)); //"\'" + QString::QString(QChar(unicode)) + "\'";
- return unicodeToChar;
- } else {
- // Last column (error weight)
---- a/sql/startsql.cpp
-+++ b/sql/startsql.cpp
-@@ -344,7 +344,7 @@ bool StartSql::updateOwnLesson(QString l
- for (i = 0; i < content.size(); i++) {
- //simplifiedContent = QString::QString(
- // content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive).simplified();
-- simplifiedContent = trim(QString::QString(
-+ simplifiedContent = trim(QString(
- content.at(i)).replace(QChar(0x27), "''", Qt::CaseSensitive));
-
- if (!query.exec("INSERT INTO own_content VALUES(NULL,'" +
---- a/def/defines.h
-+++ b/def/defines.h
-@@ -27,9 +27,9 @@ Foundation, Inc., 51 Franklin Street, Fi
- #define DEFINES_H
-
- // OS constants
--#define APP_WIN true
-+#define APP_WIN false
- #define APP_MAC false
--#define APP_X11 false
-+#define APP_X11 true
- #define APP_PORTABLE false //at least one of the 3 OS must be true too!
-
- // Languages
-@@ -47,6 +47,7 @@ Foundation, Inc., 51 Franklin Street, Fi
- #define APP_URL "http://www.tipp10.com"
- #define APP_DB "tipp10v2.template"
- #define APP_USER_DB "tipp10v2.db"
-+#define APP_SHARE_DIR "/usr/share/tipp10"
-
- // Update constants
- #define UPDATE_URL "www.tipp10.com"
---- a/tipp10.pro
-+++ b/tipp10.pro
-@@ -88,3 +88,15 @@ SOURCES += main.cpp \
- sql/startsql.cpp \
- games/abcrainwidget.cpp \
- games/charball.cpp
-+
-+target.path = /usr/bin/
-+INSTALLS += target
-+share.path = /usr/share/tipp10/
-+share.files = release/* *wav
-+INSTALLS += share
-+desktop.path = /usr/share/applications/
-+desktop.files = tipp10.desktop
-+INSTALLS += desktop
-+pixmap.path = /usr/share/pixmaps/
-+pixmap.files = tipp10.png
-+INSTALLS += pixmap
---- a/sql/connection.h
-+++ b/sql/connection.h
-@@ -179,11 +179,13 @@ static bool createConnection() {
- CANCEL_NO, "Betroffener Pfad:\n" + dbPath);*/
- // Try to create new databae in user path
- // Exist a database in the program dir?
-- if (QFile::exists(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate)) {
-+ // if (QFile::exists(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate)) {
-+ if (QFile::exists(QString(APP_SHARE_DIR) + "/" + dbNameTemplate)) {
- //if (QFile::exists(":/" + dbNameTemplate)) {
- // A database exist in the program dir
- // -> copy database to user home dir
-- QFile file(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate);
-+ // QFile file(QCoreApplication::applicationDirPath() + "/" + dbNameTemplate);
-+ QFile file(QString(APP_SHARE_DIR) + "/" + dbNameTemplate);
- //QFile file(":/" + dbNameTemplate);
- if (file.copy(dbPath)) {
- QFile::setPermissions(dbPath, QFile::permissions(dbPath) | QFile::WriteUser);
-@@ -229,7 +231,8 @@ static bool createConnection() {
- // Exist a database in user's home dir?
- if (!QFile::exists(dbPath)) {
- // Exist a database template in the program dir?
-- dbPath = QCoreApplication::applicationDirPath() + "/" + dbNameTemplate;
-+ // dbPath = QCoreApplication::applicationDirPath() + "/" + dbNameTemplate;
-+ dbPath = QString(APP_SHARE_DIR) + "/" + dbNameTemplate;
- //dbPath = ":/" + dbNameTemplate;
- if (QFile::exists(dbPath)) {
- // A database template exist in the program dir
---- a/widget/helpbrowser.cpp
-+++ b/widget/helpbrowser.cpp
-@@ -52,13 +52,15 @@ HelpBrowser::HelpBrowser(QString link, Q
- textBrowser->setOpenExternalLinks(true);
-
- textBrowser->setSource(QString("file:///") +
-- QCoreApplication::applicationDirPath() +
-+ // QCoreApplication::applicationDirPath() +
-+ APP_SHARE_DIR +
- QString("/help/") + language + QString("/index.html"));
-
- if (link != "") {
-
- textBrowser->setSource(QString("file:///") +
-- QCoreApplication::applicationDirPath() +
-+ // QCoreApplication::applicationDirPath() +
-+ APP_SHARE_DIR +
- QString("/help/") + language + QString("/content/") + link);
-
- }
---- a/tipp10.desktop
-+++ b/tipp10.desktop
-@@ -1,10 +1,10 @@
- [Desktop Entry]
--Encoding=UTF-8
- Name=TIPP10
- Comment=Touch Typing Tutor
- Comment[de]=10-Finger-Schreibtrainer
- Exec=tipp10
- Icon=tipp10.png
- Terminal=false
- Type=Application
- Categories=Education;
-+Keywords=learning;touchtyping
diff --git a/gnu/packages/patches/tipp10-qt5.patch b/gnu/packages/patches/tipp10-qt5.patch
deleted file mode 100644
index 34ad5cd708..0000000000
--- a/gnu/packages/patches/tipp10-qt5.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-https://salsa.debian.org/debian/tipp10/-/raw/debian/2.1.0-5/debian/patches/qt5.patch
-
-Author: Reiner Herrmann <reiner@reiner-h.de>
-Description: Port to Qt5
-Bug-Debian: https://bugs.debian.org/875207
-
---- a/tipp10.pro
-+++ b/tipp10.pro
-@@ -14,6 +14,7 @@
- DEPENDPATH += .
- INCLUDEPATH += .
- CONFIG += qt
-+QT += widgets multimedia printsupport
- QT += sql
- RC_FILE += tipp10.rc
- RESOURCES += tipp10.qrc
---- a/main.cpp
-+++ b/main.cpp
-@@ -24,7 +24,6 @@
- ****************************************************************/
-
- #include <QApplication>
--#include <QPlastiqueStyle>
- #include <QString>
- #include <QSettings>
- #include <QCoreApplication>
-@@ -212,7 +211,7 @@
-
- // Set windows style
- if (!useNativeStyle) {
-- app.setStyle("plastique");
-+ app.setStyle("fusion");
- }
-
- // Translation
---- a/games/abcrainwidget.cpp
-+++ b/games/abcrainwidget.cpp
-@@ -235,8 +235,7 @@
- charballs.last()->wind = (qrand() % 8) + 2;
- charballs.last()->rad = 0;
-
-- chartext.append(new QGraphicsTextItem(QString(characterTemp),
-- charballs.last(), scene));
-+ chartext.append(new QGraphicsTextItem(QString(characterTemp), charballs.last()));
- chartext.last()->setFont(QFont("Courier", 16, 100));
- chartext.last()->setPos(-(chartext.last()->boundingRect().width() / 2), -(chartext.last()->boundingRect().height() / 2));
-
---- a/sql/chartablesql.cpp
-+++ b/sql/chartablesql.cpp
-@@ -137,7 +137,7 @@
- sortColumn(4);
-
- headerview->setStretchLastSection(true);
-- headerview->setResizeMode(QHeaderView::Interactive);
-+ headerview->setSectionResizeMode(QHeaderView::Interactive);
- headerview->setSortIndicatorShown(true);
-
- // Resize the columns
---- a/sql/lessontablesql.cpp
-+++ b/sql/lessontablesql.cpp
-@@ -202,7 +202,7 @@
- sortColumn(-1);
-
- headerview->setStretchLastSection(true);
-- headerview->setResizeMode(QHeaderView::Interactive);
-+ headerview->setSectionResizeMode(QHeaderView::Interactive);
- headerview->setSortIndicatorShown(true);
-
- // Resize the columns
diff --git a/gnu/packages/patches/tipp10-remove-license-code.patch b/gnu/packages/patches/tipp10-remove-license-code.patch
deleted file mode 100644
index 4b7487e726..0000000000
--- a/gnu/packages/patches/tipp10-remove-license-code.patch
+++ /dev/null
@@ -1,332 +0,0 @@
-Description: Remove license dialog and license key checking
-
-https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0002-RemoveLicenseCode
-
---- a/main.cpp
-+++ b/main.cpp
-@@ -33,7 +33,6 @@ Foundation, Inc., 51 Franklin Street, Fi
- #include "def/defines.h"
- #include "sql/connection.h"
- #include "widget/mainwindow.h"
--#include "widget/licensedialog.h"
- #include "widget/illustrationdialog.h"
-
- int main(int argc, char *argv[]) {
-@@ -59,7 +58,7 @@ int main(int argc, char *argv[]) {
- QSettings settings;
- #endif
-
-- // Read/write language, license key and show illustration flag
-+ // Read/write language and show illustration flag
- settings.beginGroup("general");
- QString languageGui = settings.value("language_gui",
- QLocale::system().name()).toString();
-@@ -101,7 +100,6 @@ int main(int argc, char *argv[]) {
- QString languageLesson = settings.value("language_lesson",
- "").toString();
-
-- QString licenseKey = settings.value("licensekey", "").toString();
- bool showIllustration = settings.value("check_illustration", true).toBool();
- bool useNativeStyle = settings.value("check_native_style", false).toBool();
- settings.endGroup();
---- a/tipp10.pro
-+++ b/tipp10.pro
-@@ -43,7 +43,6 @@ HEADERS += def/defines.h \
- widget/helpbrowser.h \
- widget/companylogo.h \
- widget/errormessage.h \
-- widget/licensedialog.h \
- widget/txtmessagedialog.h \
- widget/checkversion.h \
- sql/connection.h \
-@@ -78,7 +77,6 @@ SOURCES += main.cpp \
- widget/helpbrowser.cpp \
- widget/companylogo.cpp \
- widget/errormessage.cpp \
-- widget/licensedialog.cpp \
- widget/txtmessagedialog.cpp \
- widget/checkversion.cpp \
- sql/lessontablesql.cpp \
---- a/widget/licensedialog.cpp
-+++ /dev/null
-@@ -1,168 +0,0 @@
--/*
--Copyright (c) 2006-2009, Tom Thielicke IT Solutions
--
--This program 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 2
--of the License.
--
--This program 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 this program; if not, write to the Free Software
--Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
--02110-1301, USA.
--*/
--
--/****************************************************************
--**
--** Implementation of the LicenseDialog class
--** File name: licensedialog.cpp
--**
--****************************************************************/
--
--#include <QHBoxLayout>
--#include <QVBoxLayout>
--#include <QMessageBox>
--#include <QSettings>
--#include <QCoreApplication>
--
--#include "licensedialog.h"
--#include "def/defines.h"
--
--LicenseDialog::LicenseDialog(QWidget *parent) : QDialog(parent) {
--
-- setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
--
-- setWindowTitle(tr("Lizenznummer"));
-- setWindowIcon(QIcon(":/img/" + QString(ICON_FILENAME)));
--
-- // Create texbox
-- createLineEdit();
--
-- // Create buttons
-- createButtons();
--
-- // Set the layout of all widgets created above
-- createLayout();
--
-- lineLicensing->setFocus();
--}
--
--void LicenseDialog::createButtons() {
-- //Buttons
-- buttonOk = new QPushButton(this);
-- buttonDemo = new QPushButton(this);
--
-- buttonOk->setText(tr("&Ok"));
-- buttonDemo->setText(tr("&Demo starten"));
-- buttonDemo->setToolTip(tr("Im Demo-Modus koennen pro Lektion nur\n"
-- "10 Schriftzeichen eingegeben werden"));
--
-- buttonOk->setDefault(true);
-- // Widget connections
-- connect(buttonOk, SIGNAL(clicked()), this, SLOT(clickOk()));
-- connect(buttonDemo, SIGNAL(clicked()), this, SLOT(clickDemo()));
--}
--
--void LicenseDialog::createLineEdit() {
--
-- lineLicensing = new QLineEdit();
-- lineLicensing->setInputMask(">NNNNNNNNNNNNNN");
--
-- labelLicensing = new QLabel(tr("Bitte geben Sie Ihre Lizenznummer "
-- "(ohne Leerzeichen) ein, "
-- "die Sie im Arbeitsbuch (Schulbuch) auf Seite 3 finden:"));
--
-- labelLicensing->setWordWrap(true);
--}
--
--void LicenseDialog::createLayout() {
-- // Button layout horizontal
-- QHBoxLayout *buttonLayoutHorizontal = new QHBoxLayout;
-- buttonLayoutHorizontal->addStretch(1);
-- buttonLayoutHorizontal->addWidget(buttonDemo);
-- buttonLayoutHorizontal->addWidget(buttonOk);
-- // Full layout of all widgets vertical
-- QVBoxLayout *mainLayout = new QVBoxLayout;
-- mainLayout->addSpacing(1);
-- mainLayout->addWidget(labelLicensing);
-- mainLayout->addSpacing(1);
-- mainLayout->addWidget(lineLicensing);
-- mainLayout->addSpacing(1);
-- mainLayout->addLayout(buttonLayoutHorizontal);
-- mainLayout->setMargin(15);
-- mainLayout->setSpacing(15);
-- // Pass layout to parent widget (this)
-- this->setLayout(mainLayout);
--}
--
--void LicenseDialog::clickOk() {
--
-- // Check license key
-- if (!checkLicenseKey(lineLicensing->text())) {
--
-- // License key is wrong
--
-- // Message to the user
-- QMessageBox::information(0, APP_NAME,
-- tr("Die eingegebene Lizenznummer ist leider nicht "
-- "korrekt.\nBitte ueberpruefen Sie die Schreibweise."));
--
-- lineLicensing->setFocus();
--
-- } else {
--
-- // License key is ok
-- writeSettings();
-- accept();
-- }
--}
--
--void LicenseDialog::clickDemo() {
-- accept();
--}
--
--bool LicenseDialog::checkLicenseKey(QString licenseKey) {
-- if (licenseKey.size() == 14 &&
-- licenseKey[0].isLetter() &&
-- licenseKey[1].isLetter() &&
-- (licenseKey.mid(2, 2) == "39" ||
-- licenseKey.mid(2, 2) == "41" ||
-- licenseKey.mid(2, 2) == "43" ||
-- licenseKey.mid(2, 2) == "49" ||
-- licenseKey.mid(2, 2) == "99") &&
-- licenseKey[4].isDigit() &&
-- licenseKey[5].isDigit() &&
-- licenseKey[6].isDigit() &&
-- licenseKey[7].isLetter() &&
-- licenseKey[8].isDigit() &&
-- licenseKey[9].isDigit() &&
-- licenseKey[10].isDigit() &&
-- licenseKey[11].isDigit() &&
-- licenseKey[12].isLetter() &&
-- licenseKey[13].isLetter()) {
--
-- return true;
-- }
-- return false;
--}
--
--void LicenseDialog::writeSettings() {
-- // Saves settings of the startwiget
-- // (uses the default constructor of QSettings, passing
-- // the application and company name see main function)
-- #if APP_PORTABLE
-- QSettings settings(QCoreApplication::applicationDirPath() +
-- "/portable/settings.ini", QSettings::IniFormat);
-- #else
-- QSettings settings;
-- #endif
--
-- settings.beginGroup("general");
-- settings.setValue("licensekey", lineLicensing->text());
-- settings.endGroup();
--}
---- a/widget/licensedialog.h
-+++ /dev/null
-@@ -1,85 +0,0 @@
--/*
--Copyright (c) 2006-2009, Tom Thielicke IT Solutions
--
--This program 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 2
--of the License.
--
--This program 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 this program; if not, write to the Free Software
--Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
--02110-1301, USA.
--*/
--
--/****************************************************************
--**
--** Definition of the LicenseDialog class
--** File name: licensedialog.h
--**
--****************************************************************/
--
--#ifndef LICENSEDIALOG_H
--#define LICENSEDIALOG_H
--
--#include <QDialog>
--#include <QWidget>
--#include <QPushButton>
--#include <QLabel>
--#include <QLineEdit>
--#include <QString>
--
--//! The LicenseDialog class provides a license input widget.
--/*!
-- The LicenseDialog class shows a dialog to enter a license key.
--
-- @author Tom Thielicke, s712715
-- @version 0.0.1
-- @date 09.09.2008
--*/
--class LicenseDialog : public QDialog {
-- Q_OBJECT
--
-- public:
--
-- //! Constructor, creates two table objects and provide it in two tabs.
-- LicenseDialog(QWidget *parent = 0);
--
-- bool checkLicenseKey(QString licenseKey);
--
-- public slots:
--
-- private slots:
--
-- //! Start button pressed
-- void clickOk();
--
-- //! Demo button pressed
-- void clickDemo();
--
-- private:
--
-- //! Creates a cancel and a ok button.
-- void createButtons();
--
-- //! Creates a textbox.
-- void createLineEdit();
--
-- //! Creates the layout of the complete class.
-- void createLayout();
--
-- //! Writes user settings
-- void writeSettings();
--
-- QPushButton *buttonOk;
-- QPushButton *buttonDemo;
-- QLabel *labelLicensing;
-- QLineEdit *lineLicensing;
--};
--
--#endif //LICENSEDIALOG_H
---- a/widget/mainwindow.cpp
-+++ b/widget/mainwindow.cpp
-@@ -116,11 +116,6 @@ void MainWindow::closeEvent(QCloseEvent
- }
- }
-
--bool MainWindow::checkLicenseKey(QString licenseKey) {
--
-- return false;
--}
--
- void MainWindow::createMenu() {
- //Mac-Version:
- //-----------
---- a/widget/mainwindow.h
-+++ b/widget/mainwindow.h
-@@ -39,7 +39,6 @@ Foundation, Inc., 51 Franklin Street, Fi
- #include "trainingwidget.h"
- #include "evaluationwidget.h"
- #include "illustrationdialog.h"
--#include "licensedialog.h"
- #include "games/abcrainwidget.h"
- #include "helpbrowser.h"
-