diff --git a/rex.project/x86_64/components/backup/offer_backup.bash b/rex.project/x86_64/components/backup/offer_backup.bash index 6bbd7b5..f8d9ef4 100755 --- a/rex.project/x86_64/components/backup/offer_backup.bash +++ b/rex.project/x86_64/components/backup/offer_backup.bash @@ -1,5 +1,6 @@ #!/bin/bash # move this to the makefile as a dedicated target +set -u APPNAME="Offer Backup" diff --git a/rex.project/x86_64/components/stage4/cracklib.bash b/rex.project/x86_64/components/stage4/cracklib.bash deleted file mode 100755 index 3d00ecf..0000000 --- a/rex.project/x86_64/components/stage4/cracklib.bash +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/bash -# desc: -# stages, builds, installs -# NOTE: requires autoreconf -- dont use -# make variables persist in subprocesses for logging function -set -a - -# ---------------------------------------------------------------------- -# Configuration: -# ---------------------------------------------------------------------- -# the name of this application -APPNAME="cracklib" - -# the version of this application -VERSION="2.9.8" - -# ---------------------------------------------------------------------- -# Variables and functions sourced from Environment: -# ---------------------------------------------------------------------- -# assert_zero() -# Checks if $1 is 0. If non-0 value, halts the execution of the script. -# -# LOGS_ROOT -# The parent directory where logs from this project will go. -# -# TEMP_STAGE_DIR -# The parent directory of where source archives are extracted to. - -# register mode selections -ARGUMENT_LIST=( - "stage" - "build" - "install" - "all" - "help" -) - -# modes to associate with switches -# assumes you want nothing done unless you ask for it. -MODE_STAGE=false -MODE_BUILD=false -MODE_INSTALL=false -MODE_ALL=false -MODE_HELP=false - -# the file to log to -LOGFILE="${APPNAME}.log" - -# ISO 8601 variation -TIMESTAMP="$(date +%Y-%m-%d_%H:%M:%S)" - -# the path where logs are written to -# note: LOGS_ROOT is sourced from environment -LOG_DIR="${LOGS_ROOT}/${APPNAME}-${TIMESTAMP}" - -# the path where the source will be located when complete -# note: TEMP_STAGE_DIR is sourced from environment -T_SOURCE_DIR="${TEMP_STAGE_DIR}/${APPNAME}" - -# read defined arguments -opts=$(getopt \ - --longoptions "$(printf "%s," "${ARGUMENT_LIST[@]}")" \ - --name "$APPNAME" \ - --options "" \ - -- "$@" -) - -# process supplied arguments into flags that enable execution modes -eval set --$opts -while [[ $# -gt 0 ]]; do - case "$1" in - --stage) - MODE_STAGE=true - shift 1 - ;; - --build) - MODE_BUILD=true - shift 1 - ;; - --install) - MODE_INSTALL=true - shift 1 - ;; - --all) - MODE_ALL=true - shift 1 - ;; - --help) - MODE_HELP=true - shift 1 - ;; - *) - break - ;; - esac -done - -# print to stdout, print to log -logprint() { - mkdir -p "${LOG_DIR}" - echo "[$(date +%Y-%m-%d_%H:%M:%S)] [${APPNAME}] $1" \ - | tee -a "${LOG_DIR}/${LOGFILE}" -} - -# Tell the user we're alive... -logprint "Initializing the ${APPNAME} utility..." - -# when the stage mode is enabled, this will execute -mode_stage() { - logprint "Starting stage of ${APPNAME}..." - - logprint "Removing any pre-existing staging for ${APPNAME}." - rm -Rf "${T_SOURCE_DIR}"* - - logprint "Extracting ${APPNAME}-${VERSION} source archive to ${TEMP_STAGE_DIR}" - tar xf "${SOURCES_DIR}/${APPNAME}-${VERSION}.tar."* -C "${TEMP_STAGE_DIR}" - assert_zero $? - - # conditionally rename if it needs it - stat "${T_SOURCE_DIR}-"* && mv "${T_SOURCE_DIR}-"* "${T_SOURCE_DIR}" - - logprint "Staging operation complete." -} - -# when the build_pass1 mode is enabled, this will execute -mode_build() { - - # patch, configure and build - logprint "Starting build of ${APPNAME}..." - - logprint "Entering build dir." - pushd "${T_SOURCE_DIR}" - assert_zero $? - - logprint "Pre-work" - autoreconf -fiv - - logprint "Configuring ${APPNAME}..." - CC=gcc ./configure \ - --prefix=/usr \ - -G \ - -O3 \ - -r - assert_zero $? - - logprint "Compiling..." - make - assert_zero $? - - logprint "Checking" - make test - logprint "Checks exited with '$?'. " - - logprint "Build operation complete." -} - -mode_install() { - logprint "Starting install of ${APPNAME}..." - pushd "${T_SOURCE_DIR}" - assert_zero $? - - logprint "Installing..." - make install - assert_zero $? - - logprint "Install operation complete." -} - - -mode_help() { - echo "${APPNAME} [ --stage ] [ --build_temp ] [ --install_temp ] [ --all_temp ] [ --help ]" - exit 1 -} - -if [ "$MODE_ALL" = "true" ]; then - MODE_STAGE=true - MODE_BUILD=true - MODE_INSTALL=true -fi - -# if no options were selected, then show help and exit -if \ - [ "$MODE_HELP" != "true" ] && \ - [ "$MODE_STAGE" != "true" ] && \ - [ "$MODE_BUILD" != "true" ] && \ - [ "$MODE_INSTALL" != "true" ] -then - logprint "No option selected during execution." - mode_help -fi - -# if help was supplied at all, show help and exit -if [ "$MODE_HELP" = "true" ]; then - logprint "Help option selected. Printing options and exiting." - mode_help -fi - -if [ "$MODE_STAGE" = "true" ]; then - logprint "Staging option selected." - mode_stage - assert_zero $? -fi - -if [ "$MODE_BUILD" = "true" ]; then - logprint "Build of ${APPNAME} selected." - mode_build - assert_zero $? -fi - -if [ "$MODE_INSTALL" = "true" ]; then - logprint "Install of ${APPNAME} selected." - mode_install - assert_zero $? -fi - -logprint "Execution of ${APPNAME} completed." diff --git a/rex.project/x86_64/environments/stage4.env.bash b/rex.project/x86_64/environments/stage4.env.bash index 7d1d31d..d514b27 100755 --- a/rex.project/x86_64/environments/stage4.env.bash +++ b/rex.project/x86_64/environments/stage4.env.bash @@ -1,4 +1,6 @@ set -a +set -u + # We now do paths relative to / since we are INSIDE $T_SYSROOT TERM=xterm-256color diff --git a/rex.project/x86_64/plans/master.plan b/rex.project/x86_64/plans/master.plan index e267ac9..802b554 100644 --- a/rex.project/x86_64/plans/master.plan +++ b/rex.project/x86_64/plans/master.plan @@ -5,6 +5,36 @@ "name": "welcome master", "dependencies": [ null ], "comment": "greet the user" + }, + { + "name": "pkg-config", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.27" + }, + { + "name": "ncurses pass 2", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.28" + } + { + "name": "ncurses legacy", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.28" + } + { + "name": "sed pass 2", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.29" + }, + { + "name": "psmisc", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.30" + }, + { + "name": "gettext pass 2", + "dependencies": [ null ], + "comment": "LFS 11.3-systemd-rc1 Ch. 8.31" } ] } diff --git a/rex.project/x86_64/units/master.units b/rex.project/x86_64/units/master.units index 897884b..37bcdf3 100644 --- a/rex.project/x86_64/units/master.units +++ b/rex.project/x86_64/units/master.units @@ -17,6 +17,114 @@ "group": "root", "supply_environment": true, "environment": "environments/stage4.env.bash" + }, + { + "name": "pkg-config", + "target": "components/stage4/pkg-config.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" + }, + { + "name": "ncurses pass 2", + "target": "components/stage4/ncurses.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" + }, + { + "name": "ncurses legacy", + "target": "components/stage4/ncurses-legacy.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" + }, + { + "name": "sed pass 2", + "target": "components/stage4/sed.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" + }, + { + "name": "psmisc", + "target": "components/stage4/psmisc.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" + }, + { + "name": "gettext pass 2", + "target": "components/stage4/gettext.bash --all", + "is_shell_command": true, + "shell_definition": "bash", + "force_pty": true, + "set_working_directory": false, + "working_directory": "", + "rectify": false, + "rectifier": "", + "active": true, + "required": true, + "set_user_context": true, + "user": "root", + "group": "root", + "supply_environment": true, + "environment": "environments/stage4.env.bash" } ] }