From 142f8713ab647ecb8833dcf9eb98e3bdc62cd44a Mon Sep 17 00:00:00 2001 From: Leo Prikler Date: Wed, 16 Dec 2020 18:50:00 +0100 Subject: [PATCH] gnu: Add shakespeare-spl. * gnu/packages/patches/shakespeare-spl-fix-grammar.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it here. * gnu/packages/esolangs.scm (shakespeare-spl): New variable. --- gnu/local.mk | 1 + gnu/packages/esolangs.scm | 45 +++++++++++++++++++ .../patches/shakespeare-spl-fix-grammar.patch | 16 +++++++ 3 files changed, 62 insertions(+) create mode 100644 gnu/packages/patches/shakespeare-spl-fix-grammar.patch diff --git a/gnu/local.mk b/gnu/local.mk index 204850c4e6..2402b1e349 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1613,6 +1613,7 @@ dist_patch_DATA = \ %D%/packages/patches/seed-webkit.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ %D%/packages/patches/serf-python3.patch \ + %D%/packages/patches/shakespeare-spl-fix-grammar.patch \ %D%/packages/patches/sharutils-CVE-2018-1000097.patch \ %D%/packages/patches/shadow-hurd-pctrl.patch \ %D%/packages/patches/shishi-fix-libgcrypt-detection.patch \ diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm index 3986562d57..676b355e65 100644 --- a/gnu/packages/esolangs.scm +++ b/gnu/packages/esolangs.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Hendursaga +;;; Copyright © 2020 Leo Prikler ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,8 +18,13 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages esolangs) + #:use-module (gnu packages) + #:use-module (gnu packages bison) + #:use-module (gnu packages flex) #:use-module (gnu packages ncurses) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) + #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) @@ -49,3 +55,42 @@ written in C. It supports several @dfn{fingerprints} (opt-in language extensions identified by unique ID codes).") (license license:gpl3))) + +(define-public shakespeare-spl + (package + (name "shakespeare-spl") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/shakespearelang/spl-" + version ".tar.gz")) + (sha256 + (base32 + "1lxpfhv01kcwy4l4xgx7j765g8g0v74jns0cr908nfw55h5fy1hj")) + (patches + (search-patches + "shakespeare-spl-fix-grammar.patch")))) + (build-system copy-build-system) + (arguments + `(#:imported-modules (,@%gnu-build-system-modules + (guix build copy-build-system)) + #:modules ((guix build copy-build-system) + ((guix build gnu-build-system) #:prefix gnu:) + (guix build utils)) + #:install-plan '(("spl/bin" "bin") + ("spl/lib" "lib") + ("spl/include" "include")) + #:phases + (modify-phases %standard-phases + (add-before 'install 'build + (assoc-ref gnu:%standard-phases 'build))))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (home-page "http://shakespearelang.sourceforge.net/") + (synopsis "Write programs like Shakespearean plays") + (description "Shakespeare is a programming language with the design goal +of making programs read like plays. The characters in the play are variables. +If you want to assign a character, let's say Juliet, a positive value, you put +her and another character on the stage and let that character praise Juliet.") + (license license:gpl2+))) diff --git a/gnu/packages/patches/shakespeare-spl-fix-grammar.patch b/gnu/packages/patches/shakespeare-spl-fix-grammar.patch new file mode 100644 index 0000000000..737c0eb8c1 --- /dev/null +++ b/gnu/packages/patches/shakespeare-spl-fix-grammar.patch @@ -0,0 +1,16 @@ +ROMAN_HUNDREDS, ROMAN_TENS and ROMAN_ONES seem to use syntax, that is not +recognized (any longer?) by flex, so let's expand their definitions. + +Index: spl-1.2.1/include/roman_numbers.metaflex +=================================================================== +--- spl-1.2.1.orig/include/roman_numbers.metaflex ++++ spl-1.2.1/include/roman_numbers.metaflex +@@ -1,5 +1,5 @@ + ROMAN_THOUSANDS m+ +-ROMAN_HUNDREDS (c(d|m)|dc{0,3}|c{1,3}) +-ROMAN_TENS (x(l|c)|lx{0,3}|x{1,3}) +-ROMAN_ONES (i(v|x)|vi{0,3}|i{1,3}) ++ROMAN_HUNDREDS (c(d|m|c?c?)|dc?c?c?) ++ROMAN_TENS (x(l|c|x?x?)|lx?x?x?) ++ROMAN_ONES (i(v|x|i?i?)|vi?i?i?) + ROMAN_NUMBER {ROMAN_ONES}|{ROMAN_TENS}{ROMAN_ONES}?|{ROMAN_HUNDREDS}{ROMAN_TENS}?{ROMAN_ONES}?|{ROMAN_THOUSANDS}{ROMAN_HUNDREDS}?{ROMAN_TENS}?{ROMAN_ONES}? -- 2.20.1