(define-module (gnu packages bqn) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix utils) #:use-module (guix deprecation) #:use-module (gnu packages) #:use-module (gnu packages libffi) #:use-module (gnu packages base) #:use-module (gnu packages pkg-config) #:use-module (gnu packages llvm) #:use-module (gnu packages java)) ;; Currently this package is non-deterministic due to random generation in ;; some of the primitives. This is marked as a TODO in the source code, but ;; per the maintainer this package almost solely exists for the purpose of ;; building CBQN at this point, and therefore is not a high priority. Git ;; reports this here: ;; ;; src/BQN/types/callable/builtins/fns/EpsBuiltin.java:45:71: ;; … // TODO these (and in ⊐) shouldn't be random numbers ;; ;; Reported Upstream Here: https://github.com/dzaima/BQN/issues/14 ;; ;; This issue therefore means that none of the packages for bqn can be checked ;; for non-determinism at this time, as dbqn is a prerequisite for all of ;; them. (define-public dbqn (let* ((tag "0.2.1") (revision "1") (commit "0bbe096fc07d278b679a8479318f1722d096a03e") (hash "1kxzxz2hrd1871281s4rsi569qk314aqfmng9pkqn8gv9nqhmph0") (version (git-version tag revision commit))) (package (name "dbqn") (version version) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/dzaima/BQN") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 hash)))) (outputs '("out")) (build-system gnu-build-system) (arguments (list #:tests? #f ;While there is a "test" directory, there is no ;; mechanism to run the tests other than to feed the files into the ;; binary and check for an error. This is outside the scope of a ;; packaging workflow, and would need to be fixed upstream ;; instead. Issue Reported: https://github.com/dzaima/BQN/issues/12 ;; Maintainer says many of the tests fail, and so they will remain off ;; until this is sorted out. #:phases #~(modify-phases %standard-phases (delete 'configure) (replace 'build (lambda* _ (invoke "./build"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (dest-bin (string-append out "/bin")) (dest-jar (string-append out "/share/java"))) (mkdir-p dest-bin) (mkdir-p dest-jar) (copy-recursively "BQN" (string-append dest-bin "/dbqn")) (chmod (string-append dest-bin "/dbqn") 493) (install-file "BQN.jar" dest-jar)))) (add-after 'install 'subjars (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (dest-bin (string-append out "/bin")) (dest-jar (string-append out "/share/java"))) (substitute* (string-append dest-bin "/dbqn") (("BQN.jar") (string-append dest-jar "/BQN.jar"))))))))) (native-inputs (list `(,openjdk17 "jdk") coreutils)) (synopsis "BQN implementation based on dzaima/APL") (description "BQN implementation based on dzaima/APL.") (home-page "https://github.com/dzaima/BQN") (license license:expat)))) (define bqn-bytecode-sources (let* ((tag "0") (revision "1") (commit "e219af48401473a7bac49bdd8b89d69082cf5dd8") (hash "0r6pa9lscl2395g4xlvmg90vpdsjzhin4f1r0s7brymmpvmns2yc") (version (git-version tag revision commit))) (package (name "bqn-bytecode-sources") (version version) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mlochbaum/BQN") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 hash)))) (outputs '("out")) (build-system copy-build-system) ;This package pulls down needed source ;; files for CBQN's build process. They ;; will be compiled during that build; ;; none of them are prebuilt binaries. (arguments (list #:install-plan '(list (list "src/" "share/src" #:exclude '("README.txt" "doc/")) (list "test/" "share/test" #:exclude '("README.txt"))))) (synopsis "Official BQN sources in BQN") (description "The collection of sources needed for building a BQN-based BQN implementation. These are included here for bootstrapping purposes.") (home-page "https://github.com/mlochbaum/BQN.git") (license license:gpl3))))