Received: (at submit) by debbugs.gnu.org; 3 Jan 2025 23:41:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 03 18:41:01 2025 Received: from localhost ([127.0.0.1]:52604 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tTrHo-0002nk-Cq for submit <at> debbugs.gnu.org; Fri, 03 Jan 2025 18:41:01 -0500 Received: from lists.gnu.org ([2001:470:142::17]:56746) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ashish.is@HIDDEN>) id 1tTrHj-0002nR-HA for submit <at> debbugs.gnu.org; Fri, 03 Jan 2025 18:40:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ashish.is@HIDDEN>) id 1tTrHb-0005Ir-Sk for guix-patches@HIDDEN; Fri, 03 Jan 2025 18:40:48 -0500 Received: from anamika.lostca.se ([65.21.75.227]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <ashish.is@HIDDEN>) id 1tTrHY-0005ro-W0 for guix-patches@HIDDEN; Fri, 03 Jan 2025 18:40:47 -0500 Received: from borboleta.inet6.in (unknown [IPv6:2a01:4f9:3070:1aea::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: abbe) by anamika.lostca.se (Postfix) with ESMTPSA id 6C65945C12; Fri, 3 Jan 2025 23:40:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lostca.se; s=anamika; t=1735947641; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=puMqjraij+iJTUXzbdGSpDGwffZwA9eR8Xc9/pZ4qB0=; b=aL5lZApptalswnKz6Ty1wJKph1S7NtCMwvR86xO73eVRlIWaceMMSOtGF4QBiJaamdMvKA MUT6Nfbwx3XWB8D6pCV0aCFaUUfD39aKnDuH6/uR0JL8BnGE67DxOfxhy9shabBTfikrZ0 fw5zSuHouHj3zvd3F1NQmX/Wm3KVJtI= From: ashish.is@HIDDEN To: guix-patches@HIDDEN Subject: [PATCH] gnu: nim: Update to 2.2.0. Date: Fri, 3 Jan 2025 23:40:24 +0000 Message-ID: <dd724ba8a4e2c3938ad5b4ada563dfc711638650.1735947624.git.ashish.is@HIDDEN> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=65.21.75.227; envelope-from=ashish.is@HIDDEN; helo=anamika.lostca.se X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit Cc: Ashish SHUKLA <ashish.is@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.1 (/) From: Ashish SHUKLA <ashish.is@HIDDEN> * gnu/packages/nim.scm (%atlas-commit, %sat-commit, atlas, sat): New variables. (nim): Update to 2.2.0. [arguments]: Use G-expressions. <#:phases>: Add phase "copy-deps". Update phases "patch-installer", "patch-dynamic-libraries", and "patch-more-shebangs". Change-Id: Ibd8fdaf7f033755ada3e4638a9f3a9295cd5e3b2 --- gnu/packages/nim.scm | 275 ++++++++++++++++++++++++++++--------------- 1 file changed, 180 insertions(+), 95 deletions(-) diff --git a/gnu/packages/nim.scm b/gnu/packages/nim.scm index ebcff26c7b..af2b8234a2 100644 --- a/gnu/packages/nim.scm +++ b/gnu/packages/nim.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2022 (unmatched parenthesis <paren@HIDDEN> ;;; Copyright © 2022 Trevor Richards <trev@HIDDEN> ;;; Copyright © 2023 Gruruya <greytest@HIDDEN> +;;; Copyright © 2025 Ashish SHUKLA <ashish.is@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,8 @@ (define-module (gnu packages nim) #:use-module (guix build-system gnu) #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (gnu packages bdw-gc) @@ -34,119 +37,201 @@ (define-module (gnu packages nim) #:use-module (gnu packages sqlite) #:use-module (gnu packages tls)) +;; referenced in koch.nim +(define %atlas-commit "5faec3e9a33afe99a7d22377dd1b45a5391f5504") +(define %sat-commit "faf1617f44d7632ee9601ebc13887644925dcc01") + +(define atlas + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/nim-lang/atlas.git") + (commit %atlas-commit))) + (sha256 (base32 "1yd3pcg46blkxfkpcvymfln44wgryq9v1mcxblqjhgfi0rvdjm0v")))) + +(define sat + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/nim-lang/sat.git") + (commit %sat-commit))) + (sha256 (base32 "1dxbc41wbvkpdp6q3qz1r38lpn32447qkkgyh2s12ym6bx4ynni4")))) + (define-public nim (package (name "nim") - (version "1.6.12") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://nim-lang.org/download/" name "-" version ".tar.xz")) (sha256 - (base32 "1hjd9dxhqzn2ifr988li8q7v6kxpxlcqbdllfd6lsq3knw50pvxc")))) + (base32 "0g498iv2bbkjghf401g6zb548a0ggkgxl76xxj3y8q4pkj24566f")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; TODO: Investigate tests failures. #:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure script - (add-after 'unpack 'patch-installer - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "install.sh" - (("/usr/local") out) - (("/lib/nim") "/lib") - (("/opt/nimble") (string-append out "/share/nimble")) - (("configdir=/etc/nim") - (string-append "configdir=" out "/etc/nim")))))) - (add-after 'unpack 'patch-dynamic-libraries - (lambda* (#:key inputs native-inputs #:allow-other-keys) - ;(substitute* "compiler/nodejs.nim" - ; (("nodejs") - ; (search-input-file (or native-inputs inputs) - ; "/bin/nodejs")) - ; (("node") - ; (search-input-file (or native-inputs inputs) - ; "/bin/node"))) - (substitute* "lib/system.nim" - (("libgc\\.so") - (search-input-file (or native-inputs inputs) - "/lib/libgc.so"))) - ;(substitute* "lib/wrappers/mysql.nim" - ; (("\(libmysqlclient|libmariadbclient\)\\.so") - ; (search-input-file (or native-inputs inputs) - ; "/lib/libmariadbclient.so"))) - (substitute* "lib/wrappers/openssl.nim" - (("libssl\\.so") - (search-input-file (or native-inputs inputs) - "/lib/libssl.so")) - (("libcrypto\\.so") - (search-input-file (or native-inputs inputs) - "/lib/libcrypto.so"))) - (substitute* "lib/wrappers/pcre.nim" - (("libpcre\\.so") - (search-input-file (or native-inputs inputs) - "/lib/libpcre.so"))) - ;(substitute* "lib/wrappers/postgres.nim" - ; (("libpg\\.so") - ; (search-input-file (or native-inputs inputs) - ; "/lib/libpg.so"))) - (substitute* "lib/wrappers/sqlite3.nim" - (("libsqlite3\\.so") - (search-input-file (or native-inputs inputs) - "/lib/libsqlite3.so"))))) - (add-after 'patch-source-shebangs 'patch-more-shebangs - (lambda _ - (let ((sh (which "sh"))) + ,#~(modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'unpack 'copy-deps:www + (lambda _ + (copy-recursively #$atlas "dist/atlas" + #:keep-permissions? #f) + (copy-recursively #$sat "dist/atlas/dist/sat" + #:keep-permissions? #f))) + (add-after 'unpack 'patch-installer + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "install.sh" + (("/usr/local") out) + (("/lib/nim") "/lib") + (("/opt/nimble") (string-append out "/share/nimble")) + (("configdir=\"/etc/nim\"") + (string-append "configdir=\"" out "/etc/nim\"")))))) + (add-after 'unpack 'patch-dynamic-libraries + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (substitute* "lib/system.nim" + (("libgc\\.so") + (search-input-file (or native-inputs inputs) + "/lib/libgc.so"))) + (substitute* "lib/wrappers/openssl.nim" + (("libssl\\.so") + (search-input-file (or native-inputs inputs) + "/lib/libssl.so")) + (("libcrypto\\.so") + (search-input-file (or native-inputs inputs) + "/lib/libcrypto.so"))) + (substitute* "lib/wrappers/pcre.nim" + (("libpcre\\.so") + (search-input-file (or native-inputs inputs) + "/lib/libpcre.so"))))) + (add-after 'patch-source-shebangs 'patch-more-shebangs + (lambda _ + (use-modules (ice-9 rdelim)) + (use-modules (ice-9 regex)) + + (define sh (which "sh")) + (define sh-len (string-length sh)) + + (define rx1 (make-regexp "^(.*NIM_CHAR data\\[)7(\\+1\\];.*)$" regexp/extended)) + ;; } TM__HZdw8BhppcTQo8DIK46LSg_5 = { 7 | NIM_STRLIT_FLAG, "/bin/sh" }; + (define rx2 (make-regexp + (string-append "^(\\} )" + "([^[:space:]]+)" + "( = \\{ )" + "7" + "( [|] NIM_STRLIT_FLAG, )" + "\"/bin/sh\"" + "(.*)$") + regexp/extended)) + + (define (fixup-1 matches out) + (format out "~a~a~a\n" + (match:substring matches 1) + sh-len + (match:substring matches 2)) + #f) + + (define (fixup-2 matches out) + (format out "~a~a~a~a~a~s~a\n" + (match:substring matches 1) + (match:substring matches 2) + (match:substring matches 3) + sh-len + (match:substring matches 4) + sh + (match:substring matches 5)) + (match:substring matches 2)) + + (define fixups + (list (cons rx1 fixup-1) + (cons rx2 fixup-2))) + + (define (rx-match rx line in out) + (if (null? rx) + (begin + (format out "~a\n" line) + #f) + + (let ((matches (regexp-exec (caar rx) line))) + (if (regexp-match? matches) + ((cdar rx) matches out) + (rx-match (cdr rx) line in out))))) + + (define (fixup-bin-sh-references in out) + (let loop ((line (read-line in)) + (flagged #f)) + (let* ((pat (and (string? flagged) + (format #f "{7, (NimStrPayload*)&~a};" flagged))) + (pat-len (if (string? pat) (string-length pat) 0))) + (unless (eof-object? line) + (if (and (string? pat) (string-suffix? pat line)) + (begin + (format out + "~a{~a, (NimStrPayload*)&~a};\n" + (substring line 0 + (- (string-length line) pat-len)) + sh-len + flagged) + (loop (read-line in) flagged)) + + (loop (read-line in) + (rx-match fixups line in out))))))) + (substitute* '("tests/stdlib/tosprocterminate.nim" "tests/stdlib/tstrscans.nim" "lib/pure/osproc.nim" "lib/pure/strscans.nim") (("/bin/sh") sh)) - (substitute* (find-files "c_code" "@m\\.\\.@slib@spure@sosproc\\.nim\\.c") - (("\"/bin/sh\", 7") (format #f "~s, ~s" sh (string-length sh))))))) - (replace 'build - (lambda* (#:key (parallel-build? #t) #:allow-other-keys) - (setenv "XDG_CACHE_HOME" "./cache-home") - (setenv "HOME" "./cache-home") - (mkdir-p "./cache-home") - (invoke "sh" "build.sh" - "--parallel" - (if parallel-build? - (number->string (parallel-job-count)) - "1")) - (sleep 5) ; Wait for the parallel builds to finish. - (invoke "./bin/nim" "c" "-d:release" "koch") - (invoke "./koch" "boot" "-d:release") - (invoke "./koch" "tools"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "./koch" "tests")))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) - (mkdir-p bin) - (invoke "./install.sh" bin) - (for-each (lambda (file) - (install-file file bin)) - (delete "testament" (find-files "bin")))))) - (add-after 'install 'install-completions - (lambda* (#:key outputs #:allow-other-keys) - (let* ((share (string-append (assoc-ref outputs "out") "/share")) - (bash (string-append share "/bash-completion/completions")) - (zsh (string-append share "/zsh/vendor_completions"))) - (mkdir-p bash) - (mkdir-p zsh) - (copy-file "tools/nim.bash-completion" - (string-append bash "/nim")) - (copy-file "dist/nimble/nimble.bash-completion" - (string-append bash "/nimble")) - (copy-file "tools/nim.zsh-completion" - (string-append zsh "/_nim")) - (copy-file "dist/nimble/nimble.bash-completion" - (string-append zsh "/_nimble")))))))) + + (for-each (lambda (f) + (with-atomic-file-replacement f fixup-bin-sh-references)) + (find-files "c_code" "@m\\.\\.@slib@spure@sosproc\\.nim\\.c")))) + (replace 'build + (lambda* (#:key (parallel-build? #t) #:allow-other-keys) + (setenv "XDG_CACHE_HOME" "./cache-home") + (setenv "HOME" "./cache-home") + (setenv "SHELL" (which "sh")) + (mkdir-p "./cache-home") + (invoke "sh" "build.sh" + "--parallel" + (if parallel-build? + (number->string (parallel-job-count)) + "1")) + (sleep 5) ; Wait for the parallel builds to finish. + (invoke "./bin/nim" "c" "-d:release" "koch") + (invoke "./koch" "boot" "-d:release") + (invoke "./koch" "tools"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "./koch" "tests")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (invoke "./install.sh" bin) + (for-each (lambda (file) + (install-file file bin)) + (delete "testament" (find-files "bin")))))) + (add-after 'install 'install-completions + (lambda* (#:key outputs #:allow-other-keys) + (let* ((share (string-append (assoc-ref outputs "out") "/share")) + (bash (string-append share "/bash-completion/completions")) + (zsh (string-append share "/zsh/vendor_completions"))) + (mkdir-p bash) + (mkdir-p zsh) + (copy-file "tools/nim.bash-completion" + (string-append bash "/nim")) + (copy-file "dist/nimble/nimble.bash-completion" + (string-append bash "/nimble")) + (copy-file "tools/nim.zsh-completion" + (string-append zsh "/_nim")) + (copy-file "dist/nimble/nimble.bash-completion" + (string-append zsh "/_nimble")))))))) (inputs (list libgc openssl pcre sqlite)) (native-inputs (list nss-certs parallel)) (home-page "https://nim-lang.org") base-commit: 851c550290ee39ea8beeded60730f2da82b32e1c -- 2.47.1
ashish.is@HIDDEN
:guix-patches@HIDDEN
.
Full text available.guix-patches@HIDDEN
:bug#75330
; Package guix-patches
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.