summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/contributing.texi35
1 files changed, 35 insertions, 0 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi
index f210a3fc761..2ae4844f717 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -1099,6 +1099,7 @@ needed is to review and apply the patch.
1099* Synopses and Descriptions:: Helping users find the right package. 1099* Synopses and Descriptions:: Helping users find the right package.
1100* Snippets versus Phases:: Whether to use a snippet, or a build phase. 1100* Snippets versus Phases:: Whether to use a snippet, or a build phase.
1101* Cyclic Module Dependencies:: Going full circle. 1101* Cyclic Module Dependencies:: Going full circle.
1102* Bulk updates:: This Little Maneuver's Gonna Cost Us 51 Years
1102* Emacs Packages:: Your Elisp fix. 1103* Emacs Packages:: Your Elisp fix.
1103* Python Modules:: A touch of British comedy. 1104* Python Modules:: A touch of British comedy.
1104* Perl Modules:: Little pearls. 1105* Perl Modules:: Little pearls.
@@ -1425,6 +1426,40 @@ Care would need to be taken to ensure the above procedure is only ever
1425used in a package delayed fields or within another procedure also not 1426used in a package delayed fields or within another procedure also not
1426called at the top level. 1427called at the top level.
1427 1428
1429@node Bulk updates
1430@subsection Bulk updates
1431
1432@cindex packaging, maintenance
1433Sometimes you may need to update a monotonic collection of grouped
1434packages, in particular module e.g. @code{(gnu packages astronomy)} - it
1435would require refreshing package versions, creating commits following
1436guidelines and test them. Let's say there are 200+ packages which have
1437fresh versions, you may deal with that task by applying the following
1438technique.
1439
1440Enter a development shell in your local Guix checkout, assuming you
1441already run @code{bootstrap} and @code{configer}:
1442
1443@example
1444~$ guix shell --development guix
1445[env: /gnu/store/lzxbi1ps43msyw7m5wblziy8mj6hw5kw-profile]
1446> ./pre-inst-env guix refresh --select=module:astronomy --update
1447> ./pre-inst-env etc/commiter.scm
1448@end example
1449
1450The first command will update all packages in @code{(gnu packages
1451astronomy)} to the latest versions and write changes back to the file.
1452The second will invoke @code{etc/commiter.scm} script, a helper script
1453aiming exactly for larger scale updates; it will identify each package
1454diff and create corresponding commits with correct style.
1455
1456If your machine is powerful enough you may check that the whole
1457collection has no regression and still can be built successfully:
1458@example
1459[env: /gnu/store/lzxbi1ps43msyw7m5wblziy8mj6hw5kw-profile]
1460> ./pre-inst-env guix build $(./pre-inst-env guix package -A | awk '/astronomy.scm/{print $1"@"$2}')
1461@end example
1462
1428@node Emacs Packages 1463@node Emacs Packages
1429@subsection Emacs Packages 1464@subsection Emacs Packages
1430 1465