From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 10 04:06:28 2021 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 To: 51745@debbugs.gnu.org Subject: [PATCH 1/1] gnu: Add smlnj. Message-ID: Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit 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-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * 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 Ge [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [40.92.255.95 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.92.255.95 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (chuanwei.foo[at]hotmail.com) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.3 URI_DOTEDU Has .edu URI X-Debbugs-Envelope-To: 51745 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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")))) -- 2.25.1