From patchwork Wed Nov 10 09:05:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Foo Chuan Wei X-Patchwork-Id: 34380 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 83A4E27BBE4; Wed, 10 Nov 2021 09:07:23 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, T_DKIM_INVALID,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 6CB6227BBE3 for ; Wed, 10 Nov 2021 09:07:21 +0000 (GMT) Received: from localhost ([::1]:34554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mkjZg-0001oK-D9 for patchwork@mira.cbaines.net; Wed, 10 Nov 2021 04:07:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43870) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mkjZO-0001o5-M8 for guix-patches@gnu.org; Wed, 10 Nov 2021 04:07:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:53663) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mkjZO-0000TW-DK for guix-patches@gnu.org; Wed, 10 Nov 2021 04:07:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mkjZO-0007GM-2O for guix-patches@gnu.org; Wed, 10 Nov 2021 04:07:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#51745] [PATCH 1/1] gnu: Add smlnj. References: In-Reply-To: Resent-From: Foo Chuan Wei Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 10 Nov 2021 09:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51745 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51745@debbugs.gnu.org Received: via spool by 51745-submit@debbugs.gnu.org id=B51745.163653518827865 (code B ref 51745); Wed, 10 Nov 2021 09:07:02 +0000 Received: (at 51745) by debbugs.gnu.org; 10 Nov 2021 09:06:28 +0000 Received: from localhost ([127.0.0.1]:36976 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mkjYf-0007FD-QH for submit@debbugs.gnu.org; Wed, 10 Nov 2021 04:06:28 -0500 Received: from mail-oln040092255095.outbound.protection.outlook.com ([40.92.255.95]:35855 helo=APC01-HK2-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mkjYZ-0007Ek-Ii for 51745@debbugs.gnu.org; Wed, 10 Nov 2021 04:06:16 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g+y2wgM4rfkhyfC/cnEFUTcn01H8oPfrW+M8YeqqjC+B38C7sCnDcZFVT+OaKdupL/x5Dj2yrH+l8A6v96Ka56dtcSQXfTPs6jAL2qMFmtvyJkMwmbIhGy8OgxFVpYAO0O4Z1P426TMOCLEHderhQNavPig4o0bntJxXxiCyMlEe72tvvrB0jjWERL6hQzry1hFQp2MDlOSdRgHnEQDVniKOjYpk6RKpFQG87F0csl/r/73zihnScfJ4EmTy99193nfEgnA08hxkoRLjPQCydbrcjfV6skJfoBJj+jJCbTmf8wCAneXVeFGhjigzcHBSRPShf5mcJKbV/PeSJmJ7PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EHpmMVpbEYSoWNfmw/VjLW4IzZgaFa9OPW4B/NRyPbs=; b=IRKd18/LSJoVhKtrmWHF++sYfcwjpyL1XHSlLnvHv7IqUZqtlGm4G4lpi3XHasWr/aFujrdkEN5Nxmh2VK0n1ommQ4C5BxxLcXKHeBcJiLvkwbZvha6M98lJz+EqG6v7CPG72x5uJL6W0CVvtv9bjmN834tQnYfK+3wlxyZbgiI5vr8ByAK/qMEPiunGYM4uT1p4+YCFmThRu8Aa05kJGlXWF8PnHmWPNXGwfS2w3mz0ZqHcDnFrXt27CqcNvvxYIArA7H2uITWfRay4UgMUo6iArNW8RkAhOOhQbizFMrxrwcsbxfa+2f/BqvjnArr3T28YuVUBq/3dB2RWhOcVmA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EHpmMVpbEYSoWNfmw/VjLW4IzZgaFa9OPW4B/NRyPbs=; b=WRSSKcM9+9J+bg8tQjqg6jdGljc4pWQUymiCdtywaac/gHORuFsZ9251QexvdcJaoHUv4kjkz2/Kl+wBms+bajq8WepPyyyM6RZ62mMp69rVRUSaZrr9TxeGVH8Ej+dSIrkoiyySvCPIhD7xUxC7leiNrM2fxhCYHjdusfgDO4lcJ+S2pspD3eocIq/OifP7GrvF2tjWKfwkSvKBx0KlzCBt4YqhYx+E8TbRU3tASjKZXCAbNMqhmERDImiYzQvrN2z+sc7nakSpMutItbZE0igrmPe1DRQPhvCCl/v4JqJVGmW45iLW7oGl/rJdtHCJNGUEjf7I+roCF+ZztJ3Hog== Received: from PU1PR01MB2155.apcprd01.prod.exchangelabs.com (2603:1096:803:1c::21) by PU1PR01MB1932.apcprd01.prod.exchangelabs.com (2603:1096:803:1b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Wed, 10 Nov 2021 09:06:02 +0000 Received: from PU1PR01MB2155.apcprd01.prod.exchangelabs.com ([fe80::258d:e124:fd3a:40ee]) by PU1PR01MB2155.apcprd01.prod.exchangelabs.com ([fe80::258d:e124:fd3a:40ee%7]) with mapi id 15.20.4669.016; Wed, 10 Nov 2021 09:06:02 +0000 Date: Wed, 10 Nov 2021 09:05:59 +0000 From: Foo Chuan Wei Message-ID: Content-Disposition: inline X-TMN: [azFEI7LVpWEfVRLosGu0gVsgdd7cUUd7] X-ClientProxiedBy: HK2PR02CA0222.apcprd02.prod.outlook.com (2603:1096:201:20::34) To PU1PR01MB2155.apcprd01.prod.exchangelabs.com (2603:1096:803:1c::21) X-Microsoft-Original-Message-ID: <20211110090559.wdugt2ign7p7qcd6@main> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from main (202.160.33.52) by HK2PR02CA0222.apcprd02.prod.outlook.com (2603:1096:201:20::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Wed, 10 Nov 2021 09:06:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 689ca1c1-9852-4267-c3c4-08d9a429519e X-MS-TrafficTypeDiagnostic: PU1PR01MB1932: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mbeEEaMUIFTzAGtf48i3MyFIxT5egOrm9sHwffAOdhADMp26tYfkXESMYE8/rRV1Rn2kKKmYSZsf2dKK2YHmWFVxMX0OfksT0W8EeZWG5RYcO1KPuQSiT4A7zgR6O+LFyQiv+kK5ZEpAnYZ4h+JjX9RLUlFv4a+2ZIkslA/SpWhyAd5Zi6T2196bAp7L9FBvMY1r4rszH35Q5+CAfp87zVWuVtWbrngEO/zW0tM1eSkEgo5clV/YjJPVxcLNzeW/D9Z5yr3QsMR0QMI0QhJyUWrqnrijx7J0I6egnZfmoj5SvvefHY5f+TAyPJ8ZZlZirjpiOK5oZt1ey3EuT3eDOkvRQaHzfvLt5n9lD0mOccaegLp2rLNsYgCPE1++QbfWgjkr+pgBTmRT3m3kQFqy4SSX+qRvcXN/fkBSXz+/yaT5Ug2p/iW4idlsB73SsCtWPXplDADSs92ZrkJk4cuAs7jYRHj5mxe3Lw4y9uH629GZs77hLeHgh1vEdwYI7nStp2mfTIODS90LBIVl5fl8lnFLnjSojMOjpPJTvwYRPfoj2QSAhpE/aZHQo0FfaF/BIVLhMCX9YXzZIg+4MrAwjw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 45H4jjGWv2Z2RNrVPh5EcNDYdKIEfPmmdo9ZiwtYpOSIujULOUoak8B5FUrwJREX1RRoIV2/BvGMses+HgfOyvusfj5xIZvyjHNljmgTGqy4FUM8khPLy+BR+1QhExaNDHUhpqA+vDx2FTafFsT7t/L7xBotvVyv9tjp75Ysd6gXTXQB80StBfPhjsDMi8QTYImIfbyN5d/8GD/bdPkLtGTRa/azi8vlHQ/kpaZ78M8FQpesdcle/pLbprAsChn1Oal1tY4wdtORJjhdra3a1kf5VX5KIdw2oLGkszdpfDGoM0uk+UMP6XTqmH/j4QC2FhLYXiolz4aTlhV4teVvFetCIMtCl9ArcDebI0LlzS9Aohi32tjt8i9DhFZy8Lhyr6xsmVGK4s5CrHCvWdSUF4LkijmlTk1tZ5M5pePuoJE3ddoXc/IfJiNNkpdylMvdfsDSFXNlB0sorzXUCUadAbI/48k4GmOkbS06LpAKKTfVDQPDIl7RCGtRF7ZkF2swT3CdbRa3lt6OFqprKMR07opRJ57sUbbDVbesC430wlOfaeKO0bx3bGh5qR/3o9/5+A0uPVhTJeZz/HK3GBJvb/STu1Nw54LQtsjFOas6oG7PRBC1zztInw2+30EaMEbwt+SXWjZd0aFhRj21NEx6ZAnQtjMm0ewVSyp1ASB2Y8lH+z21DcheyOQe58QmoIBgsKf63q/PgyrKpOOWwnMdig== X-OriginatorOrg: sct-15-20-3174-20-msonline-outlook-5c337.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 689ca1c1-9852-4267-c3c4-08d9a429519e X-MS-Exchange-CrossTenant-AuthSource: PU1PR01MB2155.apcprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2021 09:06:02.3087 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PU1PR01MB1932 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/packages/sml.scm (smlnj): New variable. --- gnu/packages/sml.scm | 261 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 260 insertions(+), 1 deletion(-) diff --git a/gnu/packages/sml.scm b/gnu/packages/sml.scm index b7e96f028c..c7e8da35e2 100644 --- a/gnu/packages/sml.scm +++ b/gnu/packages/sml.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017, 2021 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2019, 2020 Brett Gilio +;;; Copyright © 2021 Foo Chuan Wei ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +29,8 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages)) + #:use-module (guix packages) + #:use-module (guix utils)) (define-public polyml (package @@ -75,3 +77,260 @@ function interface, and a symbolic debugger.") (license (list license:lgpl2.1 license:lgpl2.1+)))) + +(define (smlnj-file version filename hash) + (origin + (method url-fetch) + (uri (string-append "http://smlnj.cs.uchicago.edu/dist/working/" + version "/" filename)) + (sha256 (base32 hash)))) + +(define-public smlnj + (package + (name "smlnj") + (version "110.99.2") + (source #f) ; Sources are passed as native-inputs. + (supported-systems '("x86_64-linux" "i686-linux")) + (build-system gnu-build-system) + (outputs '("out" "doc")) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (file) + (invoke "tar" "xvf" (assoc-ref inputs file))) + (list (if (string=? "i686-linux" ,(%current-system)) + "boot.x86-unix" + "boot.amd64-unix") + "config" + "cm" + "compiler" + "runtime" + "system" + "MLRISC" + "smlnj-lib" + "old-basis" + "ckit" + "nlffi" + "cml" + "eXene" + "ml-lpt" + "ml-lex" + "ml-yacc" + "ml-burg" + "pgraph" + "trace-debug-profile" + "heap2asm" + "smlnj-c" + "doc" + "asdl")) + ;; Same directory structure as what the config/unpack script + ;; would produce. + (mkdir "base") + (rename-file "runtime" "base/runtime") + (rename-file "compiler" "base/compiler") + (rename-file "cm" "base/cm") + (rename-file "old-basis" "base/old-basis") + (rename-file "system" "base/system") + #t)) + (delete 'configure) + (replace 'patch-source-shebangs + (lambda _ + ;; Fix paths to /bin/sh. + (substitute* (list "config/install.sh" + (if (string=? "i686-linux" ,(%current-system)) + "base/runtime/objs/mk.x86-linux" + "base/runtime/objs/mk.amd64-linux") + "asdl/configure" + "asdl/src/asdlgen/Makefile.in") + (("^SHELL[[:space:]]*=[[:space:]]*/bin/sh") + (string-append "SHELL=" (which "sh")))) + (substitute* "asdl/configure" + (("^SHELL=\\$\\{CONFIG_SHELL-/bin/sh\\}") + (string-append "SHELL=" (which "sh")))) + (substitute* (list "asdl/src/gen/fragments/mkfrags_sh.in" + "asdl/src/gen/fragments/mkmk_sh.in") + (("^#!/bin/sh") + (string-append "#!" (which "sh")))) + #t)) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "config/chk-global-names.sh" + (("^CC=.*") + (string-append "CC=" ,(cc-for-target)))) + + ;; /bin and /usr/bin do not exist in the build environment. + (substitute* "config/_arch-n-opsys" + (("^export PATH") "") + (("^PATH=\"/bin:/usr/bin\"") "") + (("uname") (which "uname"))) + (substitute* "base/runtime/config/gen-posix-names.sh" + (("^PATH=/bin:/usr/bin") "")) + + ;; The build process uses an SML Basis Library function + ;; `OS.Process.system`, which uses "/bin/sh" (this is hardcoded). + ;; However, /bin/sh does not exist in the Guix build environment. + ;; Solution: binary patch — replace "/bin/sh" with "/tmp/sh". + (symlink (which "sh") "/tmp/sh") + (invoke "sed" "-i" "s,/bin/sh,/tmp/sh," + (if (string=? "i686-linux" ,(%current-system)) + "sml.boot.x86-unix/SMLNJ-BASIS/.cm/x86-unix/basis-common.cm" + "sml.boot.amd64-unix/SMLNJ-BASIS/.cm/amd64-unix/basis-common.cm")) + + ;; Build. + (invoke "./config/install.sh" "-default" + (if (string=? "i686-linux" ,(%current-system)) + "32" + "64")) + + ;; Undo the binary patch. + (for-each + (lambda (file) + (invoke "sed" "-i" "s,/tmp/sh,/bin/sh," file)) + (if (string=? "i686-linux" ,(%current-system)) + '("bin/.heap/sml.x86-linux" + "lib/SMLNJ-BASIS/.cm/x86-unix/basis-common.cm") + '("bin/.heap/sml.amd64-linux" + "lib/SMLNJ-BASIS/.cm/amd64-unix/basis-common.cm"))) + + ;; Set SMLNJ_HOME in the bin/ files, so that `sml` is able to find + ;; the SML/NJ Library. + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (file) + (invoke "sed" "-i" + (string-append "2iSMLNJ_HOME=${SMLNJ_HOME:-" out "}") + file)) + '("bin/.link-sml" + "bin/.run-sml" + "bin/ml-build" + "bin/ml-makedepend"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (out-bin (string-append out "/bin/")) + (out-lib (string-append out "/lib/")) + (out-man (string-append out "/share/man/"))) + (copy-recursively "bin" out-bin) + (copy-recursively "lib" out-lib) + (copy-recursively "doc/man" out-man)) + #t)) + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "doc") + "/share/doc/smlnj"))) + (mkdir-p doc) + (copy-recursively "doc" doc)) + #t))))) + (native-inputs + `(,(if (string=? "i686-linux" (%current-system)) + `("boot.x86-unix" + ,(smlnj-file version + "boot.x86-unix.tgz" + "117dq1g387vcy1105dlpw770gzrg423jng89ynraiy6kiaalvbcq")) + `("boot.amd64-unix" + ,(smlnj-file version + "boot.amd64-unix.tgz" + "0cbaz8sxp30y2a4blm0pzk9aa1g9jj65d6d7kydvn0w7m22rjjff"))) + ("config" + ,(smlnj-file version + "config.tgz" + "1sq60frd66kv807bahsyxda355qq67zvvb4sr1d72cv6capv5nsg")) + ("cm" + ,(smlnj-file version + "cm.tgz" + "087yy9k9vyyvhb24rni6js7s8iqbs8vjm9kjd9s311swjd66qhjc")) + ("compiler" + ,(smlnj-file version + "compiler.tgz" + "149vrmiba0dqggr15axqqzzfmd0kx7kchlr49gii6hw5dal6vqnn")) + ("runtime" + ,(smlnj-file version + "runtime.tgz" + "0c3q7qr2i3r91sx9p3z1ar7gvyk6qsm5gcbpbyj6l67qzn192yc3")) + ("system" + ,(smlnj-file version + "system.tgz" + "0aflnqh9zi9f8vs9pjlxysxplrwl98aiaxx4n41sba4m1r30n0za")) + ("MLRISC" + ,(smlnj-file version + "MLRISC.tgz" + "1kkga7r7qnw09s8yhqbhrq8gxf6c8x0fiwsbwkr8ls6xwv48sp74")) + ("smlnj-lib" + ,(smlnj-file version + "smlnj-lib.tgz" + "14fvqgn580k3ylvfhbkwv4cw87ipggq548r7jzp8fzfn2h6wdl01")) + ("old-basis" + ,(smlnj-file version + "old-basis.tgz" + "11j7a0sxyd1kwxjvxnarab5vc3x43gl90m07wxm37fd4jbfd1fn1")) + ("ckit" + ,(smlnj-file version + "ckit.tgz" + "1fbfjb2fhr6zkcz5jhqh3888zska6vffndyqwvk6rpbcl7an8niq")) + ("nlffi" + ,(smlnj-file version + "nlffi.tgz" + "0p5z77x295xfh71481kbd5pwis52kv03vxpad4pzkpk0l6smcgmj")) + ("cml" + ,(smlnj-file version + "cml.tgz" + "13xchaamwanxhwklsgkn1rmkr044h9qsj0rbr9c7pm903yivdwcn")) + ("eXene" + ,(smlnj-file version + "eXene.tgz" + "0p4snql0a1a952h98ma9ybmp7z1q305mz859b0mxhsg3jdrzl9wb")) + ("ml-lpt" + ,(smlnj-file version + "ml-lpt.tgz" + "0m00vglg95apdpzsy6qv88izj5ai4ibylxni01an75xpnxyy5qbg")) + ("ml-lex" + ,(smlnj-file version + "ml-lex.tgz" + "1pmi5qwjcf1h5nfi7d4vvm7cf90g6dlk2mqikj0y9c464ia1l2jc")) + ("ml-yacc" + ,(smlnj-file version + "ml-yacc.tgz" + "1zla2m1rn8r8k85ps9r2mw38xkh276j7aqv9f69v55102hchx13p")) + ("ml-burg" + ,(smlnj-file version + "ml-burg.tgz" + "14cqasasa273x09phykzjgk1wl6vrkdcwrdi39hnacp443cilz7x")) + ("pgraph" + ,(smlnj-file version + "pgraph.tgz" + "183fv61xlac5kpxn5m4iqgdvc2xb1chlxy5ip4i25x589bh4b5k9")) + ("trace-debug-profile" + ,(smlnj-file version + "trace-debug-profile.tgz" + "1k0w581kr43mpjzm7778xgx1rpz45aq1h80jdr6jls5vz3k8ia18")) + ("heap2asm" + ,(smlnj-file version + "heap2asm.tgz" + "0p9s42acngxh0401wm6fqs3im3rzzw9sh448x38zhdi47h8h1m9n")) + ("smlnj-c" + ,(smlnj-file version + "smlnj-c.tgz" + "054b1nhg5yk2jj01p11k08qzq8zc9jzg4mbgkcmcqaq7axp1rnxm")) + ("doc" + ,(smlnj-file version + "doc.tgz" + "0s35zrxdj76wzdz7c1i8ij00n6lfll4vjnypsy2j17q1maw7fq8j")) + ("asdl" + ,(smlnj-file version + "asdl.tgz" + "0mad2df5pmkdsb69gflxma6m6i3gla6hdmjjnkzk76pagpr8zb0m")))) + (home-page "http://www.smlnj.org") + (synopsis "Standard ML of New Jersey interactive compiler") + (description + "SML/NJ is an implementation of the Standard ML programming language. +Standard ML has many features, including type safety, polymorphism, algebraic +data types with pattern matching, higher-order functions, and a sophisticated +module system. It is especially well-suited for writing compilers and other +language processors.") + (license (license:fsf-free + "https://www.smlnj.org/license.html" + "https://www.gnu.org/licenses/license-list#StandardMLofNJ"))))