summaryrefslogtreecommitdiffhomepage
path: root/etc
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2021-05-07 17:12:29 +0100
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2021-05-07 17:12:29 +0100
commit370e98db644d9cd75172205e4e472978e68e0990 (patch)
tree28c009461e87ea94ebad5ad55c48e1cbdd74a63b /etc
parent9d255dd37a449f7661fd8a73f58ea6102269851d (diff)
downloadmidipix_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.md137
-rw-r--r--etc/build.usage39
-rw-r--r--etc/build.usage.short17
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.