From b1d432e5fcdabfe5e5bbded8961eb7dfba48a5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Thu, 26 Aug 2021 19:03:25 +0200 Subject: Implements logging tags, tag sets, and themes. subr/pkgtool_init.subr:pkgtoolp_init_args(): set ${BUILD_HNAME}. --- etc/README.md | 159 +++++++++++++++++++++++++++----------------------- etc/build.theme | 84 ++++++++++++++++++++++++++ etc/build.usage | 159 +++++++++++++++++++++++++++----------------------- etc/build.usage.short | 31 ++++------ etc/pkgtool.theme | 56 ++++++++++++++++++ 5 files changed, 324 insertions(+), 165 deletions(-) create mode 100644 etc/build.theme create mode 100644 etc/pkgtool.theme (limited to 'etc') diff --git a/etc/README.md b/etc/README.md index b3a62709..9cce5684 100644 --- a/etc/README.md +++ b/etc/README.md @@ -496,87 +496,100 @@ env ARCH=nt64 BUILD_KIND=release PREFIX_ROOT="${HOME}/midipix_tmp" ./build.sh -D 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[,..][:ALL|LAST|[^|<|<=|>|>=]step,..]] [-R] - [-v[v]] [-V {notice,verbose,build,fileops,install,xtrace}] [-x] + [-v] [-V [+]tag|pat[,..]] [--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. + -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|-P Enables parallelisation at group-level, whenever applicable. - 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. + 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|-P Enables parallelisation at group-level, whenever applicable. + 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_clean, fetch_download, fetch_extract, configure_clean, - configure_patch_pre, configure_autotools, configure_patch, - configure, build_clean, build, install_clean, install_subdirs, - install_make, install_files, install_libs, install, install_rpm, - and clean. - - Additionally, the following virtual steps are provided: - @fetch, @configure, @build, @install, @clean, and finish. - - -R Ignore build failures, skip printing package logs, and continue - building (relaxed mode.) - - -v[v] -v: log at info, notice, -vv: log at info, notice, verbose level. - -V level[,..] Be verbose concerning any of: - notice...: log at info, notice level (-v,) - verbose..: log at info, notice, verbose level (implies notice) (-vv,) - build....: always print package build logs (implies notice,) - fileops..: log RTL file operations (implies notice,) - install..: log RTL installation DSL operations (implies notice,) - xtrace...: set xtrace during package builds (implies notice) (-x.) - -x Set xtrace during package builds. - - --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. + 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_clean, fetch_download, fetch_extract, configure_clean, + configure_patch_pre, configure_autotools, configure_patch, + configure, build_clean, build, install_clean, install_subdirs, + install_make, install_files, install_libs, install, install_rpm, + and clean. + + Additionally, the following virtual steps are provided: + @fetch, @configure, @build, @install, @clean, and finish. + + -R Ignore build failures, skip printing package logs, and continue + building (relaxed mode.) + + -v Increase logging verbosity. + -V [+]tag|pat[,..] Enable logging for messages with tag or pattern matching tags of: + + (prefix)..: initialise tags with normal verbosity (implies normal) (see etc/build.theme,) + all.........: log everything (see etc/build.theme,) + clear|none..: log nothing, + normal......: log at normal verbosity (see etc/build.theme,) + verbose.....: log at increased verbosity (implies normal) (see etc/build.theme) (-v,) + + build.......: log package build logs, + fileops.....: log RTL file operations, + install.....: log RTL installation DSL operations, + zipdist.....: log deployable distribution ZIP archive operations, + xtrace......: set xtrace during package builds, + + fatal.......: fatal, unrecoverable errors, + info........: informational messages, + verbose.....: verbose informational messages, + warning.....: warning messages possibly relating to imminent fatal, unrecoverable errors, + + build_*.....: general build messages (viz.: begin, finish, finish_time, vars,) + group_*.....: build group messages (viz.: begin, finish,) + pkg_*.......: package build messages (viz.: begin, faildump, finish, msg, skip, step, strip.) + + --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 or package variable. + Override build or package variable. ``` [Back to top](#table-of-contents) diff --git a/etc/build.theme b/etc/build.theme new file mode 100644 index 00000000..5485a368 --- /dev/null +++ b/etc/build.theme @@ -0,0 +1,84 @@ +# +# Theme file for build.sh +# + +# +# {{{ ANSI attributes reference +# +# Attribute Name Note +# 0 Reset or normal All attributes off +# 1 Bold or increased intensity As with faint, the color change is a PC (SCO / CGA) invention.[30][better source needed] +# 2 Faint, decreased intensity, or dim May be implemented as a light font weight like bold.[31] +# 4 Underline Style extensions exist for Kitty, VTE, mintty and iTerm2.[32][33] +# 7 Reverse video or invert Swap foreground and background colors; inconsistent emulation[34] +# +# FG BG Colour name +# 30 40 Black +# 31 41 Red +# 32 42 Green +# 33 43 Yellow +# 34 44 Blue +# 35 45 Magenta +# 36 46 Cyan +# 37 47 White +# 90 100 Bright Black (Gray) +# 91 101 Bright Red +# 92 102 Bright Green +# 93 103 Bright Yellow +# 94 104 Bright Blue +# 95 105 Bright Magenta +# 96 106 Bright Cyan +# 97 107 Bright White +# }}} +# + +# +# Tag sets +# +LOG_TAGS_all="build,fileop,install,zipdist,xtrace,fatal,info,verbose,warning,build_begin,build_finish,build_finish_time,build_vars,group_begin,group_finish,pkg_begin,pkg_faildump,pkg_finish,pkg_msg,pkg_skip,pkg_step,pkg_strip"; +LOG_TAGS_normal="fatal,info,warning,build_begin,build_finish,build_finish_time,pkg_begin,pkg_faildump,pkg_finish,pkg_msg"; +LOG_TAGS_verbose="${LOG_TAGS_normal:+${LOG_TAGS_normal},}verbose,build_vars,group_begin,group_finish,pkg_skip,pkg_step,pkg_strip"; + +# +# Subsystem tags +# +LOG_TAG_build=""; # (UNUSED) +LOG_TAG_fileop=36; # Cyan +LOG_TAG_install=36; # Cyan +LOG_TAG_zipdist=93; # Bright yellow +LOG_TAG_xtrace=""; # (UNUSED) + +# +# General level tags +# +LOG_TAG_fatal=91; # Bright red +LOG_TAG_info=93; # Bright yellow +LOG_TAG_verbose=96; # Bright cyan +LOG_TAG_warning=31; # Dark red + +# +# General build tags +# +LOG_TAG_build_begin=93; # Bright yellow +LOG_TAG_build_finish=93; # Bright yellow +LOG_TAG_build_finish_time=93; # Bright yellow +LOG_TAG_build_vars=33; # Dark yellow + +# +# Build group tags +# +LOG_TAG_group_begin=33; # Dark yellow +LOG_TAG_group_finish=32; # Dark green + +# +# Package build tags +# +LOG_TAG_pkg_begin=93; # Bright yellow +LOG_TAG_pkg_faildump=93; # Bright yellow +LOG_TAG_pkg_finish=92; # Bright green +LOG_TAG_pkg_msg=90; # Dark grey +LOG_TAG_pkg_skip=90; # Dark grey +LOG_TAG_pkg_step=90; # Dark grey +LOG_TAG_pkg_strip=93; # Bright yellow + +# vim:foldmethod=marker ft=sh diff --git a/etc/build.usage b/etc/build.usage index 8bc7bdf6..218343d7 100644 --- a/etc/build.usage +++ b/etc/build.usage @@ -1,84 +1,97 @@ 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[,..][:ALL|LAST|[^|<|<=|>|>=]step,..]] [-R] - [-v[v]] [-V {notice,verbose,build,fileops,install,xtrace}] [-x] + [-v] [-V [+]tag|pat[,..]] [--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. + -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|-P Enables parallelisation at group-level, whenever applicable. - 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. + 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|-P Enables parallelisation at group-level, whenever applicable. + 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_clean, fetch_download, fetch_extract, configure_clean, - configure_patch_pre, configure_autotools, configure_patch, - configure, build_clean, build, install_clean, install_subdirs, - install_make, install_files, install_libs, install, install_rpm, - and clean. - - Additionally, the following virtual steps are provided: - @fetch, @configure, @build, @install, @clean, and finish. - - -R Ignore build failures, skip printing package logs, and continue - building (relaxed mode.) - - -v[v] -v: log at info, notice, -vv: log at info, notice, verbose level. - -V level[,..] Be verbose concerning any of: - notice...: log at info, notice level (-v,) - verbose..: log at info, notice, verbose level (implies notice) (-vv,) - build....: always print package build logs (implies notice,) - fileops..: log RTL file operations (implies notice,) - install..: log RTL installation DSL operations (implies notice,) - xtrace...: set xtrace during package builds (implies notice) (-x.) - -x Set xtrace during package builds. - - --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. + 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_clean, fetch_download, fetch_extract, configure_clean, + configure_patch_pre, configure_autotools, configure_patch, + configure, build_clean, build, install_clean, install_subdirs, + install_make, install_files, install_libs, install, install_rpm, + and clean. + + Additionally, the following virtual steps are provided: + @fetch, @configure, @build, @install, @clean, and finish. + + -R Ignore build failures, skip printing package logs, and continue + building (relaxed mode.) + + -v Increase logging verbosity. + -V [+]tag|pat[,..] Enable logging for messages with tag or pattern matching tags of: + + (prefix)..: initialise tags with normal verbosity (implies normal) (see etc/build.theme,) + all.........: log everything (see etc/build.theme,) + clear|none..: log nothing, + normal......: log at normal verbosity (see etc/build.theme,) + verbose.....: log at increased verbosity (implies normal) (see etc/build.theme) (-v,) + + build.......: log package build logs, + fileops.....: log RTL file operations, + install.....: log RTL installation DSL operations, + zipdist.....: log deployable distribution ZIP archive operations, + xtrace......: set xtrace during package builds, + + fatal.......: fatal, unrecoverable errors, + info........: informational messages, + verbose.....: verbose informational messages, + warning.....: warning messages possibly relating to imminent fatal, unrecoverable errors, + + build_*.....: general build messages (viz.: begin, finish, finish_time, vars,) + group_*.....: build group messages (viz.: begin, finish,) + pkg_*.......: package build messages (viz.: begin, faildump, finish, msg, skip, step, strip.) + + --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 or package variable. + Override build or package variable. diff --git a/etc/build.usage.short b/etc/build.usage.short index 3a529ecc..7e58f8b5 100644 --- a/etc/build.usage.short +++ b/etc/build.usage.short @@ -1,31 +1,24 @@ 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[,..][:ALL|LAST|[^|<|<=|>|>=]step,..]] [-R] - [-v[v]] [-V {notice,verbose,build,fileops,install,xtrace}] [-x] + [-v] [-V [+]tag|pat[,..]] [--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. - -h|--help Show short/full help screen, respectively. - -p jobs|-P Enables parallelisation at group-level, whenever applicable. - -r ALL|LAST Restart all/the last failed/the specified comma-separated package(s). + -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. + -h|--help Show short/full help screen, respectively. + -p jobs|-P Enables parallelisation at group-level, whenever applicable. + -r ALL|LAST Restart all/the last failed/the specified comma-separated package(s). -r [*[*[*]]]name[,..][:ALL|LAST|[^|<|<=|>|>=]step,..] - -v[v] -v: log at info, notice, -vv: log at info, notice, verbose level. - -V level[,..] Be verbose concerning any of: - notice...: log at info, notice level (-v,) - verbose..: log at info, notice, verbose level (implies notice) (-vv,) - build....: always print package build logs (implies notice,) - fileops..: log RTL file operations (implies notice,) - install..: log RTL installation DSL operations (implies notice,) - xtrace...: set xtrace during package builds (implies notice) (-x.) + -v Increase logging verbosity. - <group>[ ..] One of: dev_packages, dist, host_deps, host_deps_rpm, - host_toolchain, host_tools, minipix, native_packages, - native_runtime, native_toolchain, native_tools. + <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. + Prepend w/ `=' to inhibit group-group dependency expansion. <variable name>=<variable override>[ ..] - Override build or package variable. + Override build or package variable. diff --git a/etc/pkgtool.theme b/etc/pkgtool.theme new file mode 100644 index 00000000..31ea331e --- /dev/null +++ b/etc/pkgtool.theme @@ -0,0 +1,56 @@ +# +# Theme file for pkgtool.sh +# + +# +# {{{ ANSI attributes reference +# +# Attribute Name Note +# 0 Reset or normal All attributes off +# 1 Bold or increased intensity As with faint, the color change is a PC (SCO / CGA) invention.[30][better source needed] +# 2 Faint, decreased intensity, or dim May be implemented as a light font weight like bold.[31] +# 4 Underline Style extensions exist for Kitty, VTE, mintty and iTerm2.[32][33] +# 7 Reverse video or invert Swap foreground and background colors; inconsistent emulation[34] +# +# FG BG Colour name +# 30 40 Black +# 31 41 Red +# 32 42 Green +# 33 43 Yellow +# 34 44 Blue +# 35 45 Magenta +# 36 46 Cyan +# 37 47 White +# 90 100 Bright Black (Gray) +# 91 101 Bright Red +# 92 102 Bright Green +# 93 103 Bright Yellow +# 94 104 Bright Blue +# 95 105 Bright Magenta +# 96 106 Bright Cyan +# 97 107 Bright White +# }}} +# + +# +# Tag sets +# +LOG_TAGS_all="fileop,install,fatal,info,verbose,warning"; +LOG_TAGS_normal="fatal,info,warning"; +LOG_TAGS_verbose="${LOG_TAGS_normal:+${LOG_TAGS_normal},}verbose"; + +# +# Subsystem tags +# +LOG_TAG_fileop=36; # Cyan +LOG_TAG_install=36; # Cyan + +# +# General level tags +# +LOG_TAG_fatal=91; # Bright red +LOG_TAG_info=93; # Bright yellow +LOG_TAG_verbose=96; # Bright cyan +LOG_TAG_warning=31; # Dark red + +# vim:foldmethod=marker ft=sh -- cgit v1.2.3