diff options
author | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2021-05-07 17:12:29 +0100 |
---|---|---|
committer | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2021-05-07 17:12:29 +0100 |
commit | 370e98db644d9cd75172205e4e472978e68e0990 (patch) | |
tree | 28c009461e87ea94ebad5ad55c48e1cbdd74a63b /etc | |
parent | 9d255dd37a449f7661fd8a73f58ea6102269851d (diff) | |
download | midipix_build-370e98db644d9cd75172205e4e472978e68e0990.tar.bz2 midipix_build-370e98db644d9cd75172205e4e472978e68e0990.tar.xz |
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.
Diffstat (limited to 'etc')
-rw-r--r-- | etc/README.md | 137 | ||||
-rw-r--r-- | etc/build.usage | 39 | ||||
-rw-r--r-- | etc/build.usage.short | 17 |
3 files changed, 147 insertions, 46 deletions
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] - [[=]<group>|<variable name>=<variable override>[ ..]] + [-r [*[*[*]]]name[,..][:[^|<|<=|>|>=]step,..]] [-R] [-v[v[v[v]]]] + [--as-needed] [--debug-minipix] [--dump-on-abort] [--reset-state] + [--roar] [[=]<group>|<variable name>=<variable override>[ ..]] -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. <group>[ ..] 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 <dname> -M <dname>|-r|-s|-t] [-v] - [<variable name>=<variable override>[ ..]] 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 <dname> Setup package archives mirror in <dname> and/or - -M <dname> Setup Git repositories mirror in <dname> - -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] [[=]<group>|<variable name>=<variable override>[ ..]] + + -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. + <group>[ ..] 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. <variable name>=<variable override>[ ..] - 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)) diff --git a/etc/build.usage b/etc/build.usage index 1537bb33..aeb775b3 100644 --- a/etc/build.usage +++ b/etc/build.usage @@ -1,8 +1,8 @@ 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] - [[=]<group>|<variable name>=<variable override>[ ..]] + [-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] [[=]<group>|<variable name>=<variable override>[ ..]] -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. @@ -16,7 +16,7 @@ usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[, Force IPv4 (ipv4) or IPv6 (ipv6) when downloading package archives and/or Git repositories or don't download either at all (offline.) - -h Show this screen. + -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.) @@ -26,19 +26,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. + -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 w/ `*' to automatically include dependencies, `**' to - forcibly rebuild all dependencies, and `***` to forcibly rebuild - all packages that depend on the specified package(s). + 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.) @@ -49,6 +61,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. <group>[ ..] One of: dev_packages, dist, host_deps, host_deps_rpm, host_toolchain, host_tools, minipix, native_packages, native_runtime, native_toolchain, native_tools. diff --git a/etc/build.usage.short b/etc/build.usage.short new file mode 100644 index 00000000..f89b75ff --- /dev/null +++ b/etc/build.usage.short @@ -0,0 +1,17 @@ +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] [[=]<group>|<variable name>=<variable override>[ ..]] + + -h|--help Show short/full help screen, respectively. + -v[v[v[v]]] Be verbose; -vv: always print package logs; -vvv: set xtrace + + <group>[ ..] 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. + + <variable name>=<variable override>[ ..] + Override build or package variable. |