doc: Document bulk updates.

* doc/contributing.texi (Bulk updates): New section describing update
technique for collection of packages.

Change-Id: Ic67978a6c8e0140980a0ede968f7e411faf23a1d
Signed-off-by: jgart <jgart@dismail.de>
This commit is contained in:
Sharlatan Hellseher 2025-06-19 19:43:14 +01:00 committed by jgart
parent ddb9278847
commit 0cd9eef15d
No known key found for this signature in database
GPG key ID: A52AA2B477B6DD35

View file

@ -1099,6 +1099,7 @@ needed is to review and apply the patch.
* Synopses and Descriptions:: Helping users find the right package.
* Snippets versus Phases:: Whether to use a snippet, or a build phase.
* Cyclic Module Dependencies:: Going full circle.
* Bulk updates:: This Little Maneuver's Gonna Cost Us 51 Years
* Emacs Packages:: Your Elisp fix.
* Python Modules:: A touch of British comedy.
* Perl Modules:: Little pearls.
@ -1425,6 +1426,40 @@ Care would need to be taken to ensure the above procedure is only ever
used in a package delayed fields or within another procedure also not
called at the top level.
@node Bulk updates
@subsection Bulk updates
@cindex packaging, maintenance
Sometimes you may need to update a monotonic collection of grouped
packages, in particular module e.g. @code{(gnu packages astronomy)} - it
would require refreshing package versions, creating commits following
guidelines and test them. Let's say there are 200+ packages which have
fresh versions, you may deal with that task by applying the following
technique.
Enter a development shell in your local Guix checkout, assuming you
already run @code{bootstrap} and @code{configer}:
@example
~$ guix shell --development guix
[env: /gnu/store/lzxbi1ps43msyw7m5wblziy8mj6hw5kw-profile]
> ./pre-inst-env guix refresh --select=module:astronomy --update
> ./pre-inst-env etc/commiter.scm
@end example
The first command will update all packages in @code{(gnu packages
astronomy)} to the latest versions and write changes back to the file.
The second will invoke @code{etc/commiter.scm} script, a helper script
aiming exactly for larger scale updates; it will identify each package
diff and create corresponding commits with correct style.
If your machine is powerful enough you may check that the whole
collection has no regression and still can be built successfully:
@example
[env: /gnu/store/lzxbi1ps43msyw7m5wblziy8mj6hw5kw-profile]
> ./pre-inst-env guix build $(./pre-inst-env guix package -A | awk '/astronomy.scm/{print $1"@"$2}')
@end example
@node Emacs Packages
@subsection Emacs Packages