;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 ng0 ;;; ;;; 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 . (define-module (gnu packages pony) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages gcc) #:use-module (gnu packages pcre) #:use-module (gnu packages llvm) #:use-module (gnu packages bash) #:use-module (gnu packages ncurses) #:use-module (gnu packages tls)) (define-public ponyc (package (name "ponyc") (version "0.10.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/ponylang/ponyc/archive/" version ".tar.gz")) (patches (search-patches "ponyc-disable-tests.patch")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "0j87f7jk7ly96wm67smf4hia2cb4ivv4vrlp2297h2f3smifhjk9")))) ;; Only x86 and arm are supported with 32 and 64 bit variants. (supported-systems (fold delete %supported-systems '("mips64el-linux"))) (build-system gnu-build-system) (arguments `(#:test-target "test-ci" #:strip-binaries? #f #:phases (modify-phases %standard-phases (delete 'configure) (add-before 'build 'fix-tests (lambda _ (substitute* "packages/process/_test.pony" (("/bin/") "")) ; cat,date,echo (substitute* "Makefile" (("llvm-ar-3.8") "llvm-ar")) (substitute* "src/libponyc/pkg/package.c" (("/usr/local/lib") "") (("/opt/local/lib") "")) (substitute* '("packages/crypto/hash_fn.pony" "packages/crypto/digest.pony" "packages/net/ssl/_ssl_init.pony") (("/usr/local/opt/libressl/lib") (string-append (assoc-ref %build-inputs "libressl") "/lib"))) (substitute* "Makefile" (("PONYPATH=.") "PONYPATH=.:$(PONYPATH)")) (setenv "LLVM_CONFIG" (string-append (assoc-ref %build-inputs "llvm") "/bin/llvm-config")) (setenv "LTO_PLUGIN" (string-append (assoc-ref %build-inputs "gcc:lib") "/lib/LLVMgold.so")) (setenv "CC" "gcc"))) (replace 'build (lambda _ (zero? (system* "make" "config=release")))) (replace 'install (lambda _ (zero? (system* "make" "config=release" (string-append "prefix=" (assoc-ref %outputs "out")) "install")))) (add-before 'check 'set-pony-path (lambda _ (setenv "PONYPATH" (string-append (assoc-ref %outputs "out") "/lib" ":" (assoc-ref %build-inputs "pcre2") "/lib" ":" (assoc-ref %build-inputs "libressl") "/lib" ":" (which "ld")))))))) (inputs `(("pcre2" ,pcre2))) (native-inputs `(("llvm" ,llvm) ("gcc:lib" ,(canonical-package gcc) "lib") ("gcc" ,(canonical-package gcc)) ("ncurses" ,ncurses) ("libressl" ,libressl) ("bash" ,bash))) (synopsis "Actor model, capabilities-secure, high performance programming language") (description "What.") (home-page "http://www.ponylang.org/") (license license:bsd-2)))