diff options
Diffstat (limited to 'noarch/package_api_defaults')
-rwxr-xr-x | noarch/package_api_defaults | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/noarch/package_api_defaults b/noarch/package_api_defaults new file mode 100755 index 0000000..b535ee3 --- /dev/null +++ b/noarch/package_api_defaults @@ -0,0 +1,262 @@ +# +# This file contains 'package' API defaults. +# +# NOTE: Tthis file must "sourced" (not executed). +# +# WARNING: This file depends on functions from "run_time_utils" file. +# + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# +# Old API +# +# mandatory +# +# Use something like: +# echo "package's human readable name" +# +human_readable_name() { + _abort_execution "'human_readable_name()' is mandatory and must be redefined in each 'package'" +} + +# +# Old API +# +# mandatory +# +# Use something like: +# echo "package_name" +# +package_name() { + _abort_execution "'package_name()' is mandatory and must be redefined in each 'package'" +} + +# +# Old API +# +# optional +# +# Acts as flag to differentiate "common" ("binaries") and "vendor-specific" +# ("script") packages. Shall be empty for "common" packages (will be installed +# into "${INSTALL_BASE_DIR}/smfp-common/" directory). Shall be non-empty for +# "vendor-specific" packages (will be installed into +# "${INSTALL_BASE_DIR}/${VENDOR}/" directory). +# +# Use something like: +# echo "-package_suffix" +# +package_suffix(){ + #echo "" + return +} + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# +# Existing packages don't fit into new API. For compatibility reasons there are +# two "init" functions "package_on_load()" and "package_init()". +# +# "package_on_load()" - new API. References to environment variables are not +# permitted. All communication to "external world" must be performed via API +# functions only. +# +# "package_init()" - old API. Various environment variables like "INSTALL_DIR", +# "VENDOR_LC", "DIST_DIR" are already made available. +# + +# +# New API +# +# It is expected that 'package manager' shall invoke this function prior to any +# other API function. Thus any package shall redefine this function to perform +# it's initialization here. +# +# optional +# +# Default implementation provides new API based on old API. +# +# Note: "INSTALL_BASE_DIR" and "VENDOR_LC" are initialized in +# "environment_init()" at the very beginning. +# +package_on_load() { + log_message "" + + # define "PACKAGE_NAME" and "PACKAGE_SUFFIX" + PACKAGE_NAME=$(package_name) + log_variable PACKAGE_NAME + PACKAGE_SUFFIX=$(package_suffix) + log_variable PACKAGE_SUFFIX + + # define "INSTALL_DIR" for "install_dir()" + INSTALL_DIR=$(_install_dir "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}") + log_variable INSTALL_DIR + + # define "VERSION" for "version()" + # _version_file( PACKAGE_NAME, PACKAGE_SUFFIX ) // ${INSTALL_BASE_DIR}, ${VENDOR_LC} + VERSION_FILE=$(_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}") + log_variable VERSION_FILE + VERSION=$(_load_version_from_file "${VERSION_FILE}") + log_variable VERSION + + # define "DIST_VERSION" for "dist_version()" + # _dist_version_file( PACKAGE_NAME, PACKAGE_SUFFIX ) // ${DIST_DIR} + DIST_VERSION_FILE=$(_dist_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}") + log_variable DIST_VERSION_FILE + DIST_VERSION=$(_load_version_from_file "${DIST_VERSION_FILE}") + log_variable DIST_VERSION + + return +} + +# +# Old API +# +package_init() { + log_message "" + return +} + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# +# optional +# +# Default implementation provides new API based on old API (see +# "package_on_load()" default implementation). New packages must provide +# alternative implementation. +# +# Depends on "package_on_load()" +# +install_dir() { + if [ -z "${INSTALL_DIR}" ] ; then _abort_execution "'INSTALL_DIR' is undefined" ; fi + echo "${INSTALL_DIR}" +} + +# +# optional +# +# Depends on "package_on_load()" +# +version() { + if [ -z "${VERSION}" ] ; then _abort_execution "'VERSION' is undefined" ; fi + echo "${VERSION}" +} + +# +# optional +# +# Depends on "package_on_load()" +# +dist_version() { + if [ -z "${DIST_VERSION}" ] ; then _abort_execution "'DIST_VERSION' is undefined" ; fi + echo "${DIST_VERSION}" +} + +# +# optional +# +# @return: +# "true" - if new version is greater than the old one or FORCE_INSTALL=1 +# "false" - if new version is less than or equal to the old one +# +isInstallNecessary() { + log_message "" + + log_variable FORCE_INSTALL + if [ -n "${FORCE_INSTALL}" ] ; then + echo "true" + return + fi + + local VERSION=$(version) + log_variable VERSION + if [ -z "${VERSION}" ] ; then _abort_execution "'version()' erroneously returns empty version" ; fi + + local DIST_VERSION=$(dist_version) + log_variable DIST_VERSION + if [ -z "${DIST_VERSION}" ] ; then _abort_execution "'dist_version()' erroneously returns empty version"; fi + + # Put '1' digit at the beginning to avoid implicit + # octal interpretation of numbers starting with 0 + local VERSION_DIGITS=1$(echo "${VERSION}" | tr -d -c "0-9") + log_variable VERSION_DIGITS + local DIST_VERSION_DIGITS=1$(echo "${DIST_VERSION}" | tr -d -c "0-9") + log_variable DIST_VERSION_DIGITS + + # If current version < dist version, do install + if [ $VERSION_DIGITS -lt $DIST_VERSION_DIGITS ] ; then + echo "true" + else + echo "false" + fi +} + +report_no_install_reason() { + log_message "" + return +} + +# +# ? optional +# +dependencies() { + log_message "" + return +} + +# +# ? optional +# +get_missing_requirements() { + log_message "" + return +} + +# +# ? optional +# +report_missing_requirements() { + if [ "$UNINSTALLMODE" ] ; then + return + fi + + local MISSING_COMPONENT="$1" + if [ -n "${MISSING_COMPONENT}" ] ; then + show_nls_message "**** component '\${MISSING_COMPONENT}' is missing" + exit 1 + fi +} + +# +# optional +# +do_install() { + log_message "installing '$(package_name)' package" + return +} + +# +# optional +# +do_uninstall() { + log_message "uninstalling '$(package_name)' package" + return +} + +# report end of install +after_install() { + log_message "" + return +} + +# report end of uninstall +after_uninstall() { + log_message "" + return +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +log_message "EOF" |