summaryrefslogtreecommitdiff
path: root/doc/contributing.texi
diff options
context:
space:
mode:
authorSharlatan Hellseher <sharlatanus@gmail.com>2025-06-19 19:43:14 +0100
committerjgart <jgart@dismail.de>2025-06-23 11:07:07 -0400
commit0cd9eef15d5189e3d67b4fd3232bc4c31018342d (patch)
treed54e666883e06fbaed56ee5c47461abeca9f8195 /doc/contributing.texi
parentddb9278847f06b43d073fbbd5d99d3246ebf99d3 (diff)
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>
Diffstat (limited to 'doc/contributing.texi')
-rw-r--r--doc/contributing.texi35
1 files changed, 35 insertions, 0 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi
index f210a3fc76..2ae4844f71 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -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