From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:42874) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ifyb6-0004Yx-AM for guix-patches@gnu.org; Fri, 13 Dec 2019 23:00:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ifyb4-00075Q-LA for guix-patches@gnu.org; Fri, 13 Dec 2019 23:00:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:57104) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ifyb4-00074G-FJ for guix-patches@gnu.org; Fri, 13 Dec 2019 23:00:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ifyb4-0005gl-EZ for guix-patches@gnu.org; Fri, 13 Dec 2019 23:00:02 -0500 Subject: [bug#38605] [WIP MLton 1/1] gnu: Add mlton. References: <877e2z7e3x.fsf@posteo.net> In-Reply-To: <877e2z7e3x.fsf@posteo.net> Resent-Message-ID: From: Brett Gilio Date: Fri, 13 Dec 2019 21:59:32 -0600 Message-ID: <874ky37e1n.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/x-patch Content-Disposition: inline; filename=0001-gnu-Add-mlton.patch Content-Description: [WIP MLton 1/1] gnu: Add mlton. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38605@debbugs.gnu.org >From d6e94b0a04bf71e51d29b7228bd4233bf763eaaa Mon Sep 17 00:00:00 2001 From: Brett Gilio Date: Fri, 13 Dec 2019 21:54:13 -0600 Subject: [WIP MLton 1/1] gnu: Add mlton. * gnu/packages/sml.scm (mlton-no-gcc): New variable. --- gnu/packages/sml.scm | 138 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/gnu/packages/sml.scm b/gnu/packages/sml.scm index 30ee58c498..e45ce4c59c 100644 --- a/gnu/packages/sml.scm +++ b/gnu/packages/sml.scm @@ -75,3 +75,141 @@ function interface, and a symbolic debugger.") (license (list license:lgpl2.1 license:lgpl2.1+)))) + +(define-private mlton-reduced + (package + (name "mlton") + (version "20180207") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/MLton/" name + "/releases/download/on-" version + "-release/" name "-" version + "-1.amd64-linux.tgz")) + (sha256 + (base32 + "0f4q575yfm5dpg4a2wsnqn4l2zrar96p6rlsk0dw10ggyfwvsjlf")))) + (build-system trivial-build-system) + ;; TODO: The build arguments can be much more programmatic. + (arguments + '(#:modules + ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* + ((out (assoc-ref %outputs "out")) + (source (assoc-ref %build-inputs "source")) + (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar")) + (patchelf (string-append (assoc-ref %build-inputs "patchelf") "/bin/patchelf")) + (ld (string-append (assoc-ref %build-inputs "glibc") "/lib/ld-linux-x86-64.so.2")) + (gmp (string-append (assoc-ref %build-inputs "gmp") "/lib")) + (bash (string-append (assoc-ref %build-inputs "bash") "/bin/bash")) + (rm (string-append (assoc-ref %build-inputs "coreutils") "/bin/rm")) + (PATH + (string-append + (assoc-ref %build-inputs "gzip") "/bin" + ":" + (assoc-ref %build-inputs "tar") "/bin"))) + (mkdir-p out) + (mkdir-p (string-append out "/bin")) + (with-directory-excursion out + (setenv "PATH" PATH) + (system* tar "xf" source "--strip-components=1") + ;; PATCHES FOR /LIB/MLTON/MLTON-COMPILE + (system* patchelf + "--set-interpreter" + ld + (string-append out "/lib/mlton/mlton-compile")) + (system* patchelf + "--set-rpath" + gmp + (string-append out "/lib/mlton/mlton-compile")) + ;; PATCHES FOR /BIN/MLLEX + (system* patchelf + "--set-interpreter" + ld + (string-append out "/bin/mllex")) + (system* patchelf + "--set-rpath" + gmp + (string-append out "/bin/mllex")) + ;; PATCHES FOR /BIN/MLYACC + (system* patchelf + "--set-interpreter" + ld + (string-append out "/bin/mlyacc")) + (system* patchelf + "--set-rpath" + gmp + (string-append out "/bin/mlyacc")) + ;; DELETE ALL UNNEEDED COMPONENTS + (system* rm "-rf" + "bin/mlprof" + "bin/mlnlffigen" + "LICENSE" + "Makefile" + "CHANGELOG.adoc" + "README.adoc" + "share") + ;; PATCH SHEBANG FOR BIN/MLTON + (substitute* "bin/mlton" + (("/usr/bin/env bash") + bash))))))) + (native-inputs `(("glibc" ,glibc) + ("patchelf" ,patchelf) + ("tar" ,tar) + ("bash" ,bash) + ("coreutils" ,coreutils) + ("gzip" ,gzip) + ("gmp" ,gmp))) + (supported-systems '("x86_64-linux")) + (synopsis #f) + (description #f) + (home-page #f) + (license #f))) + +(define-public mlton-no-gcc + (package + (name "mlton-no-gcc") + (version "20180207") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/MLton/" name + "/archive/on-" version + "-release.tar.gz")) + (sha256 + (base32 + "1l1flhxx8hr4n3mf87m02231r3m2f3sh28zfxma3g41jscmj21zi")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f ; See: https://github.com/MLton/mlton/issues/348 + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda _ + (invoke "make" + (string-append "PREFIX=" (assoc-ref %outputs "out")) + "install")))))) + (native-inputs + `(("mlton" ,mlton-reduced) + ("which" ,which))) + (propagated-inputs + `(("gmp" ,gmp))) + (supported-systems '("x86_64-linux")) + (synopsis "Whole-program, optimizing Standard ML compiler") + (description "MLton is a whole-program optimizing compiler for Standard ML. +MLton generates standalone executables with excellent runtime performance, is +SML '97 compliant, and has a complete basis library. MLton has source-level +profiling, a fast C FFI, an interface to the GNU multiprecision library, and +lots of useful libraries.") + (home-page "http://mlton.org/") + (license license:hpnd))) + +(define-public mlton + (package (inherit mlton-no-gcc) + (name "mlton") + (propagated-inputs + `(("gcc-toolchain" ,gcc-toolchain) + ,@(package-propagated-inputs mlton-no-gcc))))) -- 2.24.1