From 370e98db644d9cd75172205e4e472978e68e0990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Fri, 7 May 2021 17:12:29 +0100 Subject: Implements extended -r syntax. build.sh:buildp_ast(): only reset package build step state if ${ARG_RESET_PKG} is 1. etc/{build.usage,README.md}: updated. etc/build.usage.short, subr/build_init.subr: implement short help screen. midipix.env: correctly escape multi-line variable assignment expressions. subr.rtl/rtl_list.subr: updated. subr.rtl/rtl_state.subr:rtl_state_set(): correctly implement invalidation. subr.rtl/rtl_state.subr:rtl_state_test(): honour `LAST'. subr/build_init.subr:buildp_init_getopts(): implements --reset-pkg. subr/build_init.subr:buildp_{expand_restart_{at,recursive},process_restart_spec}(): initial implementation. subr/ex_pkg_{dispatch,env}.subr: updated. subr/ex_pkg_exec.subr:ex_pkg_exec(): honour `ALL' and `LAST'. vars/gcc.vars: updated. --- etc/README.md | 137 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 104 insertions(+), 33 deletions(-) (limited to 'etc/README.md') diff --git a/etc/README.md b/etc/README.md index 06e205f7..582a5da6 100644 --- a/etc/README.md +++ b/etc/README.md @@ -210,6 +210,12 @@ Rebuild set of packages in isolation: ./build.sh [ ... ] -r mc,zsh ``` +Restart the ``@install`` (shorthand alias) step, with implicit ``finish``, of the +``mc`` and ``zsh`` packages. +```shell +./build.sh [ ... ] -r mc,zsh:@install +``` + Rebuild set of packages along w/ their dependencies, if any, as needed, or forcibly, respectively: ```shell @@ -222,10 +228,10 @@ Forcibly rebuild all reverse dependencies of a set of packages: ./build.sh [ ... ] -r \*\*\*glib,libflac ``` -Restart the ``configure``, ``build``, and ``install`` steps of the ``coreutils`` -package: +Restart the ``@configure``, ``@build``, and ``@install`` (shorthand alias) steps of the +``coreutils`` package: ```shell -./build.sh -r coreutils:configure,build,install +./build.sh -r coreutils:@configure,@build,@install ``` Rebuild entire build groups including or excluding group dependencies, respectively: @@ -243,9 +249,9 @@ Rebuild entire build groups including or excluding group dependencies, respectiv ``` usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[,..]] [-F ipv4|ipv6|offline] [-h] [-p jobs] [-P] [-r ALL|LAST] - [-r [*[*[*]]]name[,..][:step,..]] [-R] [-v[v[v[v]]]] [--as-needed] - [--debug-minipix] [--dump-on-abort] [--roar] - [[=]|=[ ..]] + [-r [*[*[*]]]name[,..][:[^|<|<=|>|>=]step,..]] [-R] [-v[v[v[v]]]] + [--as-needed] [--debug-minipix] [--dump-on-abort] [--reset-state] + [--roar] [[=]|=[ ..]] -a nt32|nt64 Selects 32-bit or 64-bit architecture; defaults to nt64. -b debug|release Selects debug or release build kind; defaults to debug. @@ -269,19 +275,31 @@ usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[, -r ALL|LAST Restart all packages or the last failed package and resume build, resp. - -r [*[*[*]]]name[,..][:step,..] - Restart the specified comma-separated package(s) completely or - at optionally specified comma-separated list of build steps. - - Prepend w/ `*' to automatically include dependencies, `**' to - forcibly rebuild all dependencies, and `***` to forcibly rebuild - all packages that depend on the specified package(s). + -r [*[*[*]]]name[,..][:ALL|LAST|[^|<|<=|>|>=]step,..] + Restart the specified comma-separated package(s) w/ inhibition + of package build step state resetting completely (`ALL',) starting + at the resp. last successfully executed build steps (`LAST',) or the + specified comma-separated list of build steps, optionally subject + concerning package name(s) and/or build step(s) to the below modifiers: + + Prepend name w/ `*' to automatically include dependencies, `**' + to forcibly rebuild all dependencies, and `***` to forcibly + rebuild all packages that depend on the specified package(s). + + Prepend step w/ `^' to filter build steps with, `<' or `<=' + to constrain build steps to below or below or equal with, resp., + `>' or `>=' to constrain build steps to above or above or equal + with, resp. Currently defined build steps are: - fetch_wget, fetch_git, fetch_extract, configure_patch_pre, + fetch_download, fetch_extract, configure_patch_pre, configure_autotools, configure_patch, configure, build, install_subdirs, install_make, install_files, install_libs, - install, and install_rpm. + install, install_rpm, and clean. + + Additionally, the following shorthand aliases and pseudo-steps are provided: + @fetch, @configure, @build, @install, and @clean, and + start and finish. -R Ignore build failures, skip printing package logs, and continue building (relaxed mode.) @@ -292,6 +310,7 @@ usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[, --debug-minipix Don't strip(1) minipix binaries to facilitate debugging minipix. --dump-on-abort Produce package environment dump files on build failure to be used in conjuction with pkg_shell.sh script (excludes -R.) + --reset-state Reset package build step state on exit. [ ..] One of: dev_packages, dist, host_deps, host_deps_rpm, host_toolchain, host_tools, minipix, native_packages, native_runtime, native_toolchain, native_tools. @@ -384,26 +403,78 @@ for a list of package build steps and how they are overriden. ## 3.5. ``pkgtool.sh`` ``` -usage: ./pkgtool.sh [-a nt32|nt64] [-b debug|release] [-i|-m -M |-r|-s|-t] [-v] - [=[ ..]] name - - -a nt32|nt64 Selects 32-bit or 64-bit architecture; defaults to nt64. - -b debug|release Selects debug or release build kind; defaults to debug. - -i List package variables and dependencies of single named package. - -m Setup package archives mirror in and/or - -M Setup Git repositories mirror in - -r List reverse dependencies of single named package. - -s Enter interactive package build shell environment for single - named package; requires a package dump file. If the package - has not been built yet or built successfully, it will be rebuilt - at build steps up until, by default, the `build' build step and - forcibly aborted and dumped prior to enterting the shell. - -t Produce tarball of package build root directory and build log - file for the purpose of distribution given build failure. - -v Increase verbosity. +usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[,..]] + [-F ipv4|ipv6|offline] [-h|--help| [-p jobs] [-P] [-r ALL|LAST] + [-r [*[*[*]]]name[,..][:[^|<|<=|>|>=]step,..]] [-R] [-v[v[v[v]]]] + [--as-needed] [--debug-minipix] [--dump-on-abort] [--reset-state] + [--roar] [[=]|=[ ..]] + + -a nt32|nt64 Selects 32-bit or 64-bit architecture; defaults to nt64. + -b debug|release Selects debug or release build kind; defaults to debug. + -C dir[,..] Clean build directory (build,) ${PREFIX} before processing build + scripts (prefix,) source directory (src,) and/or destination + directory (dest) after successful package builds. + -D kind[,..] Produce minimal midipix distribution directory (minipix,) RPM + binary packages (rpm,) and/or deployable distribution ZIP + archive (zipdist.) zipdist implies minipix. + -F ipv4|ipv6|offline + Force IPv4 (ipv4) or IPv6 (ipv6) when downloading package + archives and/or Git repositories or don't download either at all + (offline.) + -h|--help Show short/full help screen, respectively. + -p jobs Enables parallelisation at group-level, whenever applicable. + -P The maximum count of jobs defaults to the number of logical + processors on the host system divided by two (2.) + + If -R is not specified and at least one (1) package fails to + build, all remaining package builds will be forcibly aborted. + + -r ALL|LAST Restart all packages or the last failed package and resume + build, resp. + -r [*[*[*]]]name[,..][:ALL|LAST|[^|<|<=|>|>=]step,..] + Restart the specified comma-separated package(s) w/ inhibition + of package build step state resetting completely (`ALL',) starting + at the resp. last successfully executed build steps (`LAST',) or the + specified comma-separated list of build steps, optionally subject + concerning package name(s) and/or build step(s) to the below modifiers: + + Prepend name w/ `*' to automatically include dependencies, `**' + to forcibly rebuild all dependencies, and `***` to forcibly + rebuild all packages that depend on the specified package(s). + + Prepend step w/ `^' to filter build steps with, `<' or `<=' + to constrain build steps to below or below or equal with, resp., + `>' or `>=' to constrain build steps to above or above or equal + with, resp. + + Currently defined build steps are: + fetch_download, fetch_extract, configure_patch_pre, + configure_autotools, configure_patch, configure, build, + install_subdirs, install_make, install_files, install_libs, + install, install_rpm, and clean. + + Additionally, the following shorthand aliases and pseudo-steps are provided: + @fetch, @configure, @build, @install, and @clean, and + start and finish. + + -R Ignore build failures, skip printing package logs, and continue + building (relaxed mode.) + -v[v[v[v]]] Be verbose; -vv: always print package logs; -vvv: set xtrace + during package builds; -vvvv: logs fileops. + --as-needed Don't build unless the midipix_build repository has received + new commits. + --debug-minipix Don't strip(1) minipix binaries to facilitate debugging minipix. + --dump-on-abort Produce package environment dump files on build failure to be + used in conjuction with pkg_shell.sh script (excludes -R.) + --reset-state Reset package build step state on exit. + [ ..] One of: dev_packages, dist, host_deps, host_deps_rpm, + host_toolchain, host_tools, minipix, native_packages, + native_runtime, native_toolchain, native_tools. + + Prepend w/ `=' to inhibit group-group dependency expansion. =[ ..] - Override build variable. + Override build or package variable. ``` > N.B. When using ``pkgtool.sh`` on a build w/ build variables (see section [4](#4-build-variables)) -- cgit v1.2.3