diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/polyml')
4 files changed, 170 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/polyml/5.6.nix b/nixpkgs/pkgs/development/compilers/polyml/5.6.nix new file mode 100644 index 000000000000..bcd52380701a --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/polyml/5.6.nix @@ -0,0 +1,42 @@ +{lib, stdenv, fetchurl, autoreconfHook, fetchpatch }: + +let + version = "5.6"; +in + +stdenv.mkDerivation { + pname = "polyml"; + inherit version; + + prePatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace configure.ac --replace stdc++ c++ + ''; + + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch"; + sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby"; + }) + ]; + + nativeBuildInputs = lib.optional stdenv.isDarwin autoreconfHook; + + src = fetchurl { + url = "mirror://sourceforge/polyml/polyml.${version}.tar.gz"; + sha256 = "05d6l2a5m9jf32a8kahwg2p2ph4x9rjf1nsl83331q3gwn5bkmr0"; + }; + + meta = { + description = "Standard ML compiler and interpreter"; + longDescription = '' + Poly/ML is a full implementation of Standard ML. + ''; + homepage = "https://www.polyml.org/"; + license = lib.licenses.lgpl21; + platforms = with lib.platforms; linux; + maintainers = [ #Add your name here! + lib.maintainers.maggesi + ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch b/nixpkgs/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch new file mode 100644 index 000000000000..c5c9846300f1 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/polyml/5.7-new-libffi-FFI_SYSV.patch @@ -0,0 +1,34 @@ +For 5.7 the copyright header is different. + +From ad32de7f181acaffaba78d5c3d9e5aa6b84a741c Mon Sep 17 00:00:00 2001 +From: David Matthews <dm@prolingua.co.uk> +Date: Sun, 7 Apr 2019 13:41:33 +0100 +Subject: [PATCH] Remove FFI_SYSV from abi table for X86/64 Unix. It appears + that this has been removed in upstream versions of libffi and causes problems + when building using the system libffi. + +--- + libpolyml/polyffi.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/libpolyml/polyffi.cpp b/libpolyml/polyffi.cpp +index 5424dd84..3dc9cc7c 100644 +--- a/libpolyml/polyffi.cpp ++++ b/libpolyml/polyffi.cpp +@@ -1,7 +1,7 @@ + /* + Title: New Foreign Function Interface + +- Copyright (c) 2015 David C.J. Matthews ++ Copyright (c) 2015, 2019 David C.J. Matthews + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public +@@ -109,7 +109,6 @@ static struct _abiTable { const char *abiName; ffi_abi abiCode; } abiTable[] = + #elif defined(X86_WIN64) + {"win64", FFI_WIN64}, + #elif defined(X86_ANY) +- {"sysv", FFI_SYSV}, + {"unix64", FFI_UNIX64}, + #endif + { "default", FFI_DEFAULT_ABI} diff --git a/nixpkgs/pkgs/development/compilers/polyml/5.7.nix b/nixpkgs/pkgs/development/compilers/polyml/5.7.nix new file mode 100644 index 000000000000..f48377e0e0ac --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/polyml/5.7.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi, fetchpatch }: + +stdenv.mkDerivation rec { + pname = "polyml"; + version = "5.7.1"; + + prePatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace configure.ac --replace stdc++ c++ + ''; + + patches = [ + ./5.7-new-libffi-FFI_SYSV.patch + + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch"; + sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby"; + }) + ]; + + buildInputs = [ libffi gmp ]; + + nativeBuildInputs = lib.optional stdenv.isDarwin autoreconfHook; + + configureFlags = [ + "--enable-shared" + "--with-system-libffi" + "--with-gmp" + ]; + + src = fetchFromGitHub { + owner = "polyml"; + repo = "polyml"; + rev = "v${version}"; + sha256 = "0j0wv3ijfrjkfngy7dswm4k1dchk3jak9chl5735dl8yrl8mq755"; + }; + + meta = with lib; { + description = "Standard ML compiler and interpreter"; + longDescription = '' + Poly/ML is a full implementation of Standard ML. + ''; + homepage = "https://www.polyml.org/"; + license = licenses.lgpl21; + platforms = with platforms; (linux ++ darwin); + maintainers = with maintainers; [ maggesi ]; + # never built on aarch64-darwin since first introduction in nixpkgs + broken = stdenv.isDarwin && stdenv.isAarch64; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/polyml/default.nix b/nixpkgs/pkgs/development/compilers/polyml/default.nix new file mode 100644 index 000000000000..2f22f8cd616b --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/polyml/default.nix @@ -0,0 +1,44 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, gmp +, libffi +}: + +stdenv.mkDerivation rec { + pname = "polyml"; + version = "5.9"; + + prePatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace configure.ac --replace stdc++ c++ + ''; + + buildInputs = [ libffi gmp ]; + + nativeBuildInputs = lib.optional stdenv.isDarwin autoreconfHook; + + configureFlags = [ + "--enable-shared" + "--with-system-libffi" + "--with-gmp" + ]; + + src = fetchFromGitHub { + owner = "polyml"; + repo = "polyml"; + rev = "v${version}"; + sha256 = "sha256-4oo4AB54CivhS99RuZVTP9+Ic0CDpsBb+OiHvOhmZnM="; + }; + + meta = with lib; { + description = "Standard ML compiler and interpreter"; + longDescription = '' + Poly/ML is a full implementation of Standard ML. + ''; + homepage = "https://www.polyml.org/"; + license = licenses.lgpl21; + platforms = with platforms; (linux ++ darwin); + maintainers = with maintainers; [ maggesi kovirobi ]; + }; +} |