"Ashish SHUKLA" <ashish.is@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 75330) by debbugs.gnu.org; 24 Feb 2025 22:29:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 24 17:29:03 2025 Received: from localhost ([127.0.0.1]:43244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tmgwY-00022F-IK for submit <at> 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 <ashish.is@HIDDEN>) id 1tmgwU-00021v-Tp for 75330 <at> 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@HIDDEN To: ludo@HIDDEN Subject: [PATCH v2] gnu: nim: Update to 2.2.2 Date: Mon, 24 Feb 2025 22:27:35 +0000 Message-ID: <e3b8f44478acd7d48dc00933a5add937cb146563.1740436054.git.ashish.is@HIDDEN> X-Mailer: git-send-email 2.48.1 In-Reply-To: <8734g4uv47.fsf@HIDDEN> References: <8734g4uv47.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 75330 Cc: 75330 <at> debbugs.gnu.org, 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: -1.0 (-) From: Ashish SHUKLA <ashish.is@HIDDEN> * 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 <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,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
guix-patches@HIDDEN
:bug#75330
; Package guix-patches
.
Full text available.Received: (at 75330) by debbugs.gnu.org; 23 Feb 2025 22:58:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 23 17:58:29 2025 Received: from localhost ([127.0.0.1]:37288 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tmKvc-0006zn-Qo for submit <at> 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 <ludo@HIDDEN>) id 1tmKvZ-0006zQ-AQ for 75330 <at> 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 <ludo@HIDDEN>) 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: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: ashish.is@HIDDEN Subject: Re: [bug#75330] [PATCH] gnu: nim: Update to 2.2.0. In-Reply-To: <dd724ba8a4e2c3938ad5b4ada563dfc711638650.1735947624.git.ashish.is@HIDDEN> (ashish is's message of "Fri, 3 Jan 2025 23:40:24 +0000") References: <dd724ba8a4e2c3938ad5b4ada563dfc711638650.1735947624.git.ashish.is@HIDDEN> Date: Sun, 23 Feb 2025 23:58:00 +0100 Message-ID: <8734g4uv47.fsf@HIDDEN> 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-Debbugs-Envelope-To: 75330 Cc: 75330 <at> debbugs.gnu.org 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: -3.3 (---) Hi, ashish.is@HIDDEN skribis: > 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 [...] > +;; 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.
guix-patches@HIDDEN
:bug#75330
; Package guix-patches
.
Full text available.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.