<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/tests/gexp.scm, branch sysadmin-team</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>gexp: Allow gexp inputs when creating vectors using the read syntax.</title>
<updated>2026-08-09T17:09:28+00:00</updated>
<author>
<name>Hilton Chain</name>
<email>hako@ultrarare.space</email>
</author>
<published>2026-07-22T22:46:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=4dd120dc3cccb142d4a7f9e0bd059c3ee42c50a2'/>
<id>4dd120dc3cccb142d4a7f9e0bd059c3ee42c50a2</id>
<content type='text'>
* guix/gexp.scm (gexp) [collect-escapes, substitute-references]: Support vectors
created using the read syntax.
* tests/gexp.scm ("one input package, vector"): New test.

Merges: #10121
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/gexp.scm (gexp) [collect-escapes, substitute-references]: Support vectors
created using the read syntax.
* tests/gexp.scm ("one input package, vector"): New test.

Merges: #10121
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Fix gexp test involving ‘load*’.</title>
<updated>2026-06-18T14:46:52+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2026-06-04T21:54:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=c263c41668a4071e981fcfae3faa4b6ce741fb46'/>
<id>c263c41668a4071e981fcfae3faa4b6ce741fb46</id>
<content type='text'>
Fixes a regression introduced in 94ae360ab4039afc8c942e77ba495705850c1e65,
which left the test broken.

* tests/gexp.scm ("local-file, relative file name, within gexp, compiled"):
Remove reference to ‘module’ variable.  Adjust second argument to ‘load*’.

Change-Id: If7889645a0d5b0678a92e4c2e009ae0f54df6bee
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a regression introduced in 94ae360ab4039afc8c942e77ba495705850c1e65,
which left the test broken.

* tests/gexp.scm ("local-file, relative file name, within gexp, compiled"):
Remove reference to ‘module’ variable.  Adjust second argument to ‘load*’.

Change-Id: If7889645a0d5b0678a92e4c2e009ae0f54df6bee
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ui: ‘load*’ takes a list of modules to import.</title>
<updated>2026-05-10T15:01:07+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2026-02-24T14:15:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=94ae360ab4039afc8c942e77ba495705850c1e65'/>
<id>94ae360ab4039afc8c942e77ba495705850c1e65</id>
<content type='text'>
* guix/ui.scm (load*): Change ‘module’ to ‘imports’.  Define ‘user-module’.
* guix/scripts/build.scm (options-&gt;things-to-build): Update to new ‘load*’
calling convention.
* guix/scripts/deploy.scm (load-source-file): Likewise.
* guix/scripts/environment.scm (load-manifest)
(options/resolve-packages): Likewise.
* guix/scripts/home.scm (process-action): Likewise.
(%user-module): Rename to…
(%user-modules): … this, and change to a list of module names.
* guix/scripts/pack.scm (guix-pack): Update ‘load*’ calls.
* guix/scripts/package.scm (load-manifest, %options): Likewise.
* guix/scripts/pull.scm (channel-list): Likewise.
* guix/scripts/refresh.scm (packages-from-manifest): Likewise.
* guix/scripts/system.scm (%user-module): Rename to…
(%user-modules): … this, and change to a list of module names.
(read-operating-system): Adjust accordingly.
(process-action): Likewise.
* guix/scripts/weather.scm (load-manifest): Likewise.
* tests/gexp.scm ("local-file, relative file name, within gexp, compiled"):
Likewise.

Change-Id: Ic838e66719d89de556ac0872c3ce0c8ff6de8790
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/ui.scm (load*): Change ‘module’ to ‘imports’.  Define ‘user-module’.
* guix/scripts/build.scm (options-&gt;things-to-build): Update to new ‘load*’
calling convention.
* guix/scripts/deploy.scm (load-source-file): Likewise.
* guix/scripts/environment.scm (load-manifest)
(options/resolve-packages): Likewise.
* guix/scripts/home.scm (process-action): Likewise.
(%user-module): Rename to…
(%user-modules): … this, and change to a list of module names.
* guix/scripts/pack.scm (guix-pack): Update ‘load*’ calls.
* guix/scripts/package.scm (load-manifest, %options): Likewise.
* guix/scripts/pull.scm (channel-list): Likewise.
* guix/scripts/refresh.scm (packages-from-manifest): Likewise.
* guix/scripts/system.scm (%user-module): Rename to…
(%user-modules): … this, and change to a list of module names.
(read-operating-system): Adjust accordingly.
(process-action): Likewise.
* guix/scripts/weather.scm (load-manifest): Likewise.
* tests/gexp.scm ("local-file, relative file name, within gexp, compiled"):
Likewise.

Change-Id: Ic838e66719d89de556ac0872c3ce0c8ff6de8790
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: gexp: Fix test shadowing replacement field.</title>
<updated>2026-04-22T14:51:07+00:00</updated>
<author>
<name>Roman Scherer</name>
<email>roman@burningswell.com</email>
</author>
<published>2026-04-12T10:38:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=6a5005d62eaf1938e104276986e61548ea3b1afc'/>
<id>6a5005d62eaf1938e104276986e61548ea3b1afc</id>
<content type='text'>
Fixes a regression introduced in a7c8e68dc51144a6d3981b770aca9c4897fc7c0c.

* tests/gexp.scm (gexp): Rename replacement binding to replacement-pkg in
order to not shadow the replacement field of the package record.

Change-Id: I70ceafc92f52e588b3cac8f74bffa274bf0da352
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #7846
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a regression introduced in a7c8e68dc51144a6d3981b770aca9c4897fc7c0c.

* tests/gexp.scm (gexp): Rename replacement binding to replacement-pkg in
order to not shadow the replacement field of the package record.

Change-Id: I70ceafc92f52e588b3cac8f74bffa274bf0da352
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #7846
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: improve &amp;gexp-input-error with &amp;error-location.</title>
<updated>2026-03-29T20:11:38+00:00</updated>
<author>
<name>Yarl Baudig</name>
<email>yarl-baudig@mailoo.org</email>
</author>
<published>2026-03-28T11:19:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=785f4c6ed9b3e7a8ff31fe7a719848b7b14ad5dc'/>
<id>785f4c6ed9b3e7a8ff31fe7a719848b7b14ad5dc</id>
<content type='text'>
* guix/gexp.scm (gexp-&gt;sexp): raise &amp;error-location along &amp;gexp-input-error.
* guix/ui.scm (call-with-error-handling): use this.
* tests/gexp.scm (lower-gexp, invalid input location): New test.

Change-Id: Iee761e5f99502065182d9e6fc8d21399e99ec6c3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #7538
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/gexp.scm (gexp-&gt;sexp): raise &amp;error-location along &amp;gexp-input-error.
* guix/ui.scm (call-with-error-handling): use this.
* tests/gexp.scm (lower-gexp, invalid input location): New test.

Change-Id: Iee761e5f99502065182d9e6fc8d21399e99ec6c3
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #7538
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: Add 'delayed-object'.</title>
<updated>2026-02-10T22:46:34+00:00</updated>
<author>
<name>David Elsing</name>
<email>david.elsing@posteo.net</email>
</author>
<published>2026-02-03T20:33:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=96bd7262777f7f67cdd83c28171425f6bbcf3d50'/>
<id>96bd7262777f7f67cdd83c28171425f6bbcf3d50</id>
<content type='text'>
* guix/gexp.scm (&lt;delayed-object&gt;): New record type.
(delayed-object): New macro.
(delayed-object-compiler): New gexp compiler.
* tests/gexp.scm ("delayed-object"): New test.
* doc/guix.texi (G-Expressions): Document it.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/gexp.scm (&lt;delayed-object&gt;): New record type.
(delayed-object): New macro.
(delayed-object-compiler): New gexp compiler.
* tests/gexp.scm ("delayed-object"): New test.
* doc/guix.texi (G-Expressions): Document it.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: Make 'local-file' follow symlinks.</title>
<updated>2025-10-23T10:59:08+00:00</updated>
<author>
<name>Nigko Yerden</name>
<email>nigko.yerden@gmail.com</email>
</author>
<published>2024-09-26T07:07:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=930ea819a5512c9c55a41eb6eb4ce66c8d3c62d1'/>
<id>930ea819a5512c9c55a41eb6eb4ce66c8d3c62d1</id>
<content type='text'>
Fix &lt;https://lists.gnu.org/archive/html/guix-devel/2024-08/msg00047.html&gt;
via making 'current-source-directory' always follow symlinks.

* guix/utils.scm (absolute-dirname, current-source-directory): Make
them follow symlinks.
* tests/gexp.scm ("local-file, load through symlink"): New test.

Fixes: guix/guix#3523
Change-Id: Ieb30101275deb56b7436df444f9bc21d240fba59
Signed-off-by: Florian Pelz &lt;pelzflorian@pelzflorian.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix &lt;https://lists.gnu.org/archive/html/guix-devel/2024-08/msg00047.html&gt;
via making 'current-source-directory' always follow symlinks.

* guix/utils.scm (absolute-dirname, current-source-directory): Make
them follow symlinks.
* tests/gexp.scm ("local-file, load through symlink"): New test.

Fixes: guix/guix#3523
Change-Id: Ieb30101275deb56b7436df444f9bc21d240fba59
Signed-off-by: Florian Pelz &lt;pelzflorian@pelzflorian.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: ‘local-file’ expands its argument only once.</title>
<updated>2025-04-06T09:23:07+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2025-04-05T21:22:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=21221710f247b755f00f851ba7acedbef9bd7def'/>
<id>21221710f247b755f00f851ba7acedbef9bd7def</id>
<content type='text'>
Fixes a bug whereby (local-file (in-vicinity (getcwd) "xyz")) would
point to different files depending on the current working directory at
the time it is lowered.

* guix/gexp.scm (local-file): Expand FILE only once.
* tests/gexp.scm ("local-file, capture at the right time"): New test.

Change-Id: I2cc23296de3799e68f7d8b7be6061be3043e1176
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a bug whereby (local-file (in-vicinity (getcwd) "xyz")) would
point to different files depending on the current working directory at
the time it is lowered.

* guix/gexp.scm (local-file): Expand FILE only once.
* tests/gexp.scm ("local-file, capture at the right time"): New test.

Change-Id: I2cc23296de3799e68f7d8b7be6061be3043e1176
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: ‘with-parameters’ properly handles ‘%graft?’.</title>
<updated>2025-03-04T23:28:49+00:00</updated>
<author>
<name>David Elsing</name>
<email>david.elsing@posteo.net</email>
</author>
<published>2025-03-04T20:33:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=30e51cb6b42e86f9f94d6380f69a1020ee99ff39'/>
<id>30e51cb6b42e86f9f94d6380f69a1020ee99ff39</id>
<content type='text'>
Fixes &lt;https://issues.guix.gnu.org/75879&gt;.

* .dir-locals.el (scheme-mode): Remove mparameterize indentation rules.
Add state-parameterize and store-parameterize indentation rules.
* etc/manifests/system-tests.scm (test-for-current-guix): Replace
mparameterize with store-parameterize.
* etc/manifests/time-travel.scm (guix-instance-compiler): Likewise.
* gnu/tests.scm (compile-system-test): Likewise.
* guix/gexp.scm (compile-parameterized): Use state-call-with-parameters.
* guix/monads.scm (mparameterize): Remove macro.
(state-call-with-parameters): New procedure.
(state-parameterize): New macro.
* guix/store.scm (store-parameterize): New macro.
* tests/gexp.scm ("with-parameters for %graft?"): New test.
* tests/monads.scm ("mparameterize"): Remove test.
("state-parameterize"): New test.

Co-authored-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Change-Id: I0c74066ca3f37072815b073fb3039925488a9645
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes &lt;https://issues.guix.gnu.org/75879&gt;.

* .dir-locals.el (scheme-mode): Remove mparameterize indentation rules.
Add state-parameterize and store-parameterize indentation rules.
* etc/manifests/system-tests.scm (test-for-current-guix): Replace
mparameterize with store-parameterize.
* etc/manifests/time-travel.scm (guix-instance-compiler): Likewise.
* gnu/tests.scm (compile-system-test): Likewise.
* guix/gexp.scm (compile-parameterized): Use state-call-with-parameters.
* guix/monads.scm (mparameterize): Remove macro.
(state-call-with-parameters): New procedure.
(state-parameterize): New macro.
* guix/store.scm (store-parameterize): New macro.
* tests/gexp.scm ("with-parameters for %graft?"): New test.
* tests/monads.scm ("mparameterize"): Remove test.
("state-parameterize"): New test.

Co-authored-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Change-Id: I0c74066ca3f37072815b073fb3039925488a9645
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gexp: ‘with-parameters’ accepts plain store items in its body.</title>
<updated>2025-01-28T13:56:14+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2025-01-28T13:51:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=3ad2d21671ad56e61c779da253d4396435658198'/>
<id>3ad2d21671ad56e61c779da253d4396435658198</id>
<content type='text'>
* guix/gexp.scm (compile-parameterized): Return ‘obj’ as-is when it’s
not a struct.
* tests/gexp.scm ("with-parameters + store item"): New test.

Change-Id: I5b5348b98bce923d07f6fa39b2f0948723011db8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* guix/gexp.scm (compile-parameterized): Return ‘obj’ as-is when it’s
not a struct.
* tests/gexp.scm ("with-parameters + store item"): New test.

Change-Id: I5b5348b98bce923d07f6fa39b2f0948723011db8
</pre>
</div>
</content>
</entry>
</feed>
