From unknown Sat Jun 21 10:45:58 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#75330] [PATCH] gnu: nim: Update to 2.2.0. Resent-From: ashish.is@lostca.se Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 03 Jan 2025 23:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 75330 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 75330@debbugs.gnu.org Cc: Ashish SHUKLA X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.173594766110788 (code B ref -1); Fri, 03 Jan 2025 23:41:02 +0000 Received: (at submit) by debbugs.gnu.org; 3 Jan 2025 23:41:01 +0000 Received: from localhost ([127.0.0.1]:52604 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tTrHo-0002nk-Cq for submit@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 ) id 1tTrHj-0002nR-HA for submit@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 ) id 1tTrHb-0005Ir-Sk for guix-patches@gnu.org; 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 ) id 1tTrHY-0005ro-W0 for guix-patches@gnu.org; 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@lostca.se Date: Fri, 3 Jan 2025 23:40:24 +0000 Message-ID: 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@lostca.se; 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-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: -0.1 (/) From: Ashish SHUKLA * 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 ;;; Copyright © 2022 Trevor Richards ;;; Copyright © 2023 Gruruya +;;; Copyright © 2025 Ashish SHUKLA ;;; ;;; 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 From unknown Sat Jun 21 10:45:58 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#75330] [PATCH] gnu: nim: Update to 2.2.0. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 23 Feb 2025 22:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 75330 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: ashish.is@lostca.se Cc: 75330@debbugs.gnu.org Received: via spool by 75330-submit@debbugs.gnu.org id=B75330.174035150926899 (code B ref 75330); Sun, 23 Feb 2025 22:59:01 +0000 Received: (at 75330) by debbugs.gnu.org; 23 Feb 2025 22:58:29 +0000 Received: from localhost ([127.0.0.1]:37288 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tmKvc-0006zn-Qo for submit@debbugs.gnu.org; Sun, 23 Feb 2025 17:58:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58588) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tmKvZ-0006zQ-AQ for 75330@debbugs.gnu.org; Sun, 23 Feb 2025 17:58:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmKvT-0002II-OJ; Sun, 23 Feb 2025 17:58:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=uIRW2C0WiTDMY2jQvJW8+9Xb+2ajD4HWt9sDsnluGKQ=; b=jlYA289oUG51g45m4yGT 2Y4NT3PnxJyhmoOVQUrK+6gz8us3OJ+eNKhqIF+WouwIf9arZIhLhnCMDLUuRB6L8dfy3qtZj71sG SliNvj3s0zdzBcMa9FOpGK0gwI9PUgQ7NrrH7cm2ADvI2fX7dCdfqQOm+himmBeWwzfpvEHXMIZX/ mRhm21wI5nqupL7Tu1Buvvo/H37Ug4fMxz4uKkoy4rActnz/UeU3DOmry7VMUDB0BK/+OzgfUkXIS RzAKhRmxPEmBHENl6MlzCOdHwzQUeRcbCh2QddF6BQPLAmVnK5XMe+uyx2FzzJ0Nx6wDUwsay3E7/ aM+zU+kD2SzNDw==; From: Ludovic =?UTF-8?Q?Court=C3=A8s?= In-Reply-To: (ashish is's message of "Fri, 3 Jan 2025 23:40:24 +0000") References: Date: Sun, 23 Feb 2025 23:58:00 +0100 Message-ID: <8734g4uv47.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) 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: -3.3 (---) Hi, ashish.is@lostca.se skribis: > From: Ashish SHUKLA > > * 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 [...] > +;; referenced in koch.nim > +(define %atlas-commit "5faec3e9a33afe99a7d22377dd1b45a5391f5504") > +(define %sat-commit "faf1617f44d7632ee9601ebc13887644925dcc01") Since there=E2=80=99s only one reference to each of these variables, I thin= k the commit ID can go directly in the =E2=80=98commit=E2=80=99 field, without de= fining these variables. > + (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))) Could you add a =E2=80=98file-name to =E2=80=98atlas=E2=80=99 and =E2=80=98= sat=E2=80=99, add the both to =E2=80=98inputs=E2=80=99 of this package, and then refer to them in this ph= ase like so: (copy-recursively #$(this-package-input "atlas-checkout") "dist/atlas" #:keep-permissions? #f) =E2=80=A6 where =E2=80=9Catlas-checkout=E2=80=9D must match the =E2=80=98fi= le-name=E2=80=99 field of =E2=80=98atlas=E2=80=99. That way, those inputs are visible to code the traverses the package graph. > + (add-after 'patch-source-shebangs 'patch-more-shebangs > + (lambda _ > + (use-modules (ice-9 rdelim)) > + (use-modules (ice-9 regex)) Please use the #:modules parameters instead of =E2=80=98use-modules=E2=80= =99 in the middle of the phase. > + (define sh (which "sh")) > + (define sh-len (string-length sh)) > + > + (define rx1 (make-regexp "^(.*NIM_CHAR data\\[)7(\\+1\\= ];.*)$" regexp/extended)) > + ;; } TM__HZdw8BhppcTQo8DIK46LSg_5 =3D { 7 | NIM_STRLIT_= FLAG, "/bin/sh" }; > + (define rx2 (make-regexp > + (string-append "^(\\} )" > + "([^[:space:]]+)" > + "( =3D \\{ )" > + "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))) I think this whole part could use some comments, at the very least for the cryptic =E2=80=98rx1=E2=80=99. > + (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))))) Please use =E2=80=98match=E2=80=99 instead of cdar & co. (info "(guix) Data= Types and Pattern Matching"). Apart from that LGTM. Could you send an updated patch? Thanks, Ludo=E2=80=99. From unknown Sat Jun 21 10:45:58 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#75330] [PATCH v2] gnu: nim: Update to 2.2.2 Resent-From: ashish.is@lostca.se Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Feb 2025 22:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 75330 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: ludo@gnu.org Cc: 75330@debbugs.gnu.org, Ashish SHUKLA Received: via spool by 75330-submit@debbugs.gnu.org id=B75330.17404361437866 (code B ref 75330); Mon, 24 Feb 2025 22:30:02 +0000 Received: (at 75330) by debbugs.gnu.org; 24 Feb 2025 22:29:03 +0000 Received: from localhost ([127.0.0.1]:43244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tmgwY-00022F-IK for submit@debbugs.gnu.org; Mon, 24 Feb 2025 17:29:03 -0500 Received: from anamika.lostca.se ([2a01:4f9:3b:505c::2]:36864) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tmgwU-00021v-Tp for 75330@debbugs.gnu.org; Mon, 24 Feb 2025 17:28:52 -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 A7B8EBED6; Mon, 24 Feb 2025 22:28:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lostca.se; s=anamika; t=1740436122; 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: in-reply-to:in-reply-to:references:references; bh=hIIkr6CEX7o40Wd9HqYKiH0AY+UyFqBzbyIz//Ekihc=; b=A9Ivlgsiq5RycdPVR7tq3dHqJRi2X/te3NcUU5QIGVcSyKoolkL6ppgjGobh2UH3Qn+Tb0 m1tWuHBBVaXYC/rnNBNCii00KcgypUgGAuM6zVyDTF3aipEHLSQucQniQhckI3nbYllnM2 n/xN+lam7HXgmG//0mVBzdwnVooqXRM= From: ashish.is@lostca.se Date: Mon, 24 Feb 2025 22:27:35 +0000 Message-ID: X-Mailer: git-send-email 2.48.1 In-Reply-To: <8734g4uv47.fsf@gnu.org> References: <8734g4uv47.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) 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 (-) From: Ashish SHUKLA * gnu/packages/nim.scm (atlas, sat): New variables. (nim): Update to 2.2.0. [arguments]: Use G-expressions. <#:modules> Import modules used by phases. <#:phases>: Add phase "copy-deps". Update phases "patch-installer", "patch-dynamic-libraries", and "patch-more-shebangs". Change-Id: I3f88dd6a3b78699e91e59b23ededf9f1923eb721 --- Hi, Thanks for the helpful review. I hope I addressed all of the concerns, and while here, I also updatd it to 2.2.2. gnu/packages/nim.scm | 285 ++++++++++++++++++++++++++++--------------- 1 file changed, 189 insertions(+), 96 deletions(-) diff --git a/gnu/packages/nim.scm b/gnu/packages/nim.scm index ebcff26c7b..90ce4a7134 100644 --- a/gnu/packages/nim.scm +++ b/gnu/packages/nim.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2022 (unmatched parenthesis ;;; Copyright © 2022 Trevor Richards ;;; Copyright © 2023 Gruruya +;;; Copyright © 2025 Ashish SHUKLA ;;; ;;; 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,120 +37,210 @@ (define-module (gnu packages nim) #:use-module (gnu packages sqlite) #:use-module (gnu packages tls)) +(define atlas + (origin + (method git-fetch) + (file-name "atlas-checkout") + (uri + (git-reference + (url "https://github.com/nim-lang/atlas.git") + ;; referenced in koch.nim + (commit "5faec3e9a33afe99a7d22377dd1b45a5391f5504"))) + (sha256 (base32 "1yd3pcg46blkxfkpcvymfln44wgryq9v1mcxblqjhgfi0rvdjm0v")))) + +(define sat + (origin + (method git-fetch) + (file-name "sat-checkout") + (uri + (git-reference + (url "https://github.com/nim-lang/sat.git") + ;; referenced in koch.nim + (commit "faf1617f44d7632ee9601ebc13887644925dcc01"))) + (sha256 (base32 "1dxbc41wbvkpdp6q3qz1r38lpn32447qkkgyh2s12ym6bx4ynni4")))) + (define-public nim (package (name "nim") - (version "1.6.12") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append "https://nim-lang.org/download/" name "-" version ".tar.xz")) (sha256 - (base32 "1hjd9dxhqzn2ifr988li8q7v6kxpxlcqbdllfd6lsq3knw50pvxc")))) + (base32 "07wazlsj3yby4vb008b2rairdkl0hhnnxhpxi6jaa2wwmj3rpk3z")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; TODO: Investigate tests failures. + #:modules + ((ice-9 rdelim) + (ice-9 regex) + (ice-9 match) + ,@%default-gnu-modules) #: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 #$(this-package-input "atlas-checkout") "dist/atlas" + #:keep-permissions? #f) + (copy-recursively #$(this-package-input "sat-checkout") "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") "/") + (("/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 _ + + (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" + ;; NI cap; NIM_CHAR data[(string-length (which "sh"))+1]; + (match:substring matches 1) ;; NI cap; NIM_CHAR data[ + sh-len ;; (string-length (which "sh") + (match:substring matches 2)) ;; +1]; + #f) + + (define (fixup-2 matches out) + (format out "~a~a~a~a~a~s~a\n" + ;; } TM__HZdw8BhppcTQo8DIK46LSg_5 = { (string-length (which "sh")) | NIM_STRLIT_FLAG, (which "sh") }; + (match:substring matches 1) ;; } + (match:substring matches 2) ;; TM__HZdw8BhppcTQo8DIK46LSg_5 + (match:substring matches 3) ;; = { + sh-len ;; (string-length (which "sh")) + (match:substring matches 4) ;; | NIM_STRLIT_FLAG, + sh ;; (which "sh") + (match:substring matches 5)) ;; }; + ;; return a reference to patch + (match:substring matches 2)) ;; TM__HZdw8BhppcTQo8DIK46LSg_5 + + (define fixups + (list (list rx1 fixup-1) + (list rx2 fixup-2))) + + (define (rx-match rx-list line in out) + (if (null? rx-list) + (begin + (format out "~a\n" line) + #f) + + (match rx-list + (((rx fixup) . rest) + (let ((matches (regexp-exec rx line))) + (if (regexp-match? matches) + (fixup matches out) + (rx-match rest 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")))))))) - (inputs (list libgc openssl pcre sqlite)) + + (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 atlas libgc openssl pcre sat sqlite)) (native-inputs (list nss-certs parallel)) (home-page "https://nim-lang.org") (synopsis "Statically-typed, imperative programming language") base-commit: e08dd8c33a38d692d7754c1061e30a24928e23a9 -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 24 17:30:40 2025 Received: (at control) by debbugs.gnu.org; 24 Feb 2025 22:30:40 +0000 Received: from localhost ([127.0.0.1]:43257 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tmgyB-0002DA-Nt for submit@debbugs.gnu.org; Mon, 24 Feb 2025 17:30:39 -0500 Received: from anamika.lostca.se ([65.21.75.227]:40300) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tmgy7-0002Cr-R9 for control@debbugs.gnu.org; Mon, 24 Feb 2025 17:30:33 -0500 Received: from localhost (unknown [IPv6:2a02:9140:3880:f200:c154:4db:394b:b080]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: abbe) by anamika.lostca.se (Postfix) with ESMTPSA id 6D95FBEDA; Mon, 24 Feb 2025 22:30:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lostca.se; s=anamika; t=1740436225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=LrsJ/Gm2pyvZkO6J+J+C40rnqVotgRCqkyHl2XtDgKI=; b=G3B8xz/ldQ2WC56U5NcH/c7NdvQ2407KxvvdOtEevng77rfctdHZJ2tJD4BpH9jNSUsk24 /tY+qbY1sdLBKyn24Pw4CAZQcGm0+K4PElGoA21obNfkAgc4H7j/LmqHN+vtLDy/Kzf0Kq ioOrEs9JVpwrVjWqA6CV5peF9Wp5PLo= Mime-Version: 1.0 Content-Type: multipart/signed; boundary=0aae02d7b761a0c7288a055c25ad3d42f866c47c53ad161939c0e12e1b37; micalg=pgp-sha512; protocol="application/pgp-signature" Date: Mon, 24 Feb 2025 23:30:23 +0100 Message-Id: Subject: retitle bug From: "Ashish SHUKLA" To: X-Mailer: aerc 0.18.2 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control 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 (-) --0aae02d7b761a0c7288a055c25ad3d42f866c47c53ad161939c0e12e1b37 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8; format=Flowed retitle 75330 [PATCH v2] gnu: nim: Update to 2.2.2 quit --0aae02d7b761a0c7288a055c25ad3d42f866c47c53ad161939c0e12e1b37 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQKTBAABCgB9FiEE9oLNzDncD+rhFiC2x0bPqedPpLAFAme88v9fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEY2 ODJDRENDMzlEQzBGRUFFMTE2MjBCNkM3NDZDRkE5RTc0RkE0QjAACgkQx0bPqedP pLBSJw//eTT6DQa2zTrXkobmVVwI6rr3TZr5gWzv5pi9zqbymHYHvyCxZz/s0pti gn7raQE2/thcY3F3e4+34wKnhPLtofbHicB8snUxgsGSxwJAGXmM0QLtcVKT1j56 YzYQesmS+QNITuira4G802CT5tClwGqj1Xn6i7t02kAVq4Suu5xFnj97HMg/nA9n nUZtVxD/ZKJmGHhF1xhq7vWOiDZPYcRSTUrqtuXSBE7tjmE2thJqYsMv8ec5RMQ6 eyhkXokyLOIaE+a+F1GJUDLtd5V599PYvZcYi6/aZac4xdHXQVFhjHqIqDOizPod l8ADPVJ4q44SQQfk+SpWdPUwtRp3EzgdCGTvYC8HLO/gfPU3/+KrlacILV2IZgx0 2BoTwpf1fIyCshMtPu+dg03mfsY+RhO1ZLKUFafCLpRZpBnh1xniy2m5SNL1y3/x RgIMux+PCaDV2FL87I1tU/5cl9ydC2buZt/3vEjXPnfKH2rq4dcSSlQY3FwelkdV m95tWhYgBzm0u5UngCKdDYUwcQLhgrtzyc7Fxg2xYvkLmJQdSulRthyXiLSB60PZ D5ZylF+23xjTG94dt+K5wVAC6SUtFfZX2g46sbEVm7TBi5/2ZI3Y40aqi02mmB0p ZvOHZPARXfbQoVCIVm2E4FXZej0Me2br/ADk/EhY1j2c9452A2k= =J/aX -----END PGP SIGNATURE----- --0aae02d7b761a0c7288a055c25ad3d42f866c47c53ad161939c0e12e1b37-- From unknown Sat Jun 21 10:45:58 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: ashish.is@lostca.se Subject: bug#75330: closed (Re: bug#75330: [PATCH v2] gnu: nim: Update to 2.2.2) Message-ID: References: <87msd7jx4f.fsf_-_@gnu.org> X-Gnu-PR-Message: they-closed 75330 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 75330@debbugs.gnu.org Date: Wed, 26 Mar 2025 21:34:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1743024842-908-1" This is a multi-part message in MIME format... ------------=_1743024842-908-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #75330: [PATCH v2] gnu: nim: Update to 2.2.2 which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 75330@debbugs.gnu.org. --=20 75330: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D75330 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1743024842-908-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 75330-done) by debbugs.gnu.org; 26 Mar 2025 21:33:17 +0000 Received: from localhost ([127.0.0.1]:44618 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1txYNB-0000Ci-0p for submit@debbugs.gnu.org; Wed, 26 Mar 2025 17:33:17 -0400 Received: from hera.aquilenet.fr ([185.233.100.1]:50804) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1txYN8-0000CQ-6r for 75330-done@debbugs.gnu.org; Wed, 26 Mar 2025 17:33:14 -0400 Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id 73F7AB29; Wed, 26 Mar 2025 22:33:07 +0100 (CET) Authentication-Results: hera.aquilenet.fr; none X-Virus-Scanned: Debian amavis at hera.aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavis, port 10024) with ESMTP id 4XWp7rUFMOXe; Wed, 26 Mar 2025 22:33:05 +0100 (CET) Received: from ribbon (91-160-117-201.subs.proxad.net [91.160.117.201]) by hera.aquilenet.fr (Postfix) with ESMTPSA id BD12E78; Wed, 26 Mar 2025 22:33:04 +0100 (CET) From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: ashish.is@lostca.se Subject: Re: bug#75330: [PATCH v2] gnu: nim: Update to 2.2.2 In-Reply-To: (ashish is's message of "Mon, 24 Feb 2025 22:27:35 +0000") References: <8734g4uv47.fsf@gnu.org> Date: Wed, 26 Mar 2025 22:33:04 +0100 Message-ID: <87msd7jx4f.fsf_-_@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: 73F7AB29 X-Spamd-Result: default: False [-6.10 / 15.00]; NEURAL_HAM(-3.00)[-1.000]; BAYES_HAM(-3.00)[99.99%]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; RCPT_COUNT_TWO(0.00)[2]; TO_DN_NONE(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_ALL(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; MID_RHS_MATCH_FROM(0.00)[] X-Rspamd-Action: no action X-Spamd-Bar: ------ X-Rspamd-Server: hera X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 75330-done Cc: 75330-done@debbugs.gnu.org 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: -0.0 (/) ashish.is@lostca.se skribis: > From: Ashish SHUKLA > > * gnu/packages/nim.scm (atlas, sat): New variables. > (nim): Update to 2.2.0. [arguments]: Use G-expressions. > <#:modules> Import modules used by phases. <#:phases>: > Add phase "copy-deps". Update phases "patch-installer", > "patch-dynamic-libraries", and "patch-more-shebangs". > > Change-Id: I3f88dd6a3b78699e91e59b23ededf9f1923eb721 > --- > Hi, > > Thanks for the helpful review. I hope I addressed all of the concerns, and while here, I also updatd it to 2.2.2. Yup. Applied, thanks! Ludo'. ------------=_1743024842-908-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 3 Jan 2025 23:41:01 +0000 Received: from localhost ([127.0.0.1]:52604 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tTrHo-0002nk-Cq for submit@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 ) id 1tTrHj-0002nR-HA for submit@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 ) id 1tTrHb-0005Ir-Sk for guix-patches@gnu.org; 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 ) id 1tTrHY-0005ro-W0 for guix-patches@gnu.org; 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@lostca.se To: guix-patches@gnu.org Subject: [PATCH] gnu: nim: Update to 2.2.0. Date: Fri, 3 Jan 2025 23:40:24 +0000 Message-ID: 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@lostca.se; 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 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: -0.1 (/) From: Ashish SHUKLA * 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 ;;; Copyright © 2022 Trevor Richards ;;; Copyright © 2023 Gruruya +;;; Copyright © 2025 Ashish SHUKLA ;;; ;;; 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 ------------=_1743024842-908-1--