#!/usr/bin/env bash # Version: 2.7 # Date: 2023-05-22 # This bash script generates a CMSIS Software Pack: # set -o pipefail # Set version of gen pack library # For available versions see https://github.com/Open-CMSIS-Pack/gen-pack/tags. # Use the tag name without the prefix "v", e.g., 0.7.0 REQUIRED_GEN_PACK_LIB="0.8.4" # Set default command line arguments DEFAULT_ARGS=(-c "v") # Pack warehouse directory - destination # Default: ./output # # PACK_OUTPUT=./output # Temporary pack build directory, # Default: ./build # # PACK_BUILD=./build # Specify directory names to be added to pack base directory # An empty list defaults to all folders next to this script. # Default: empty (all folders) # PACK_DIRS=" benchmark documents os template " # Specify file names to be added to pack base directory # Default: empty # PACK_BASE_FILES=" LICENSE perf_counter.c perf_counter.h perfc_port_default.c perfc_port_default.h perfc_port_pmu.c perfc_port_pmu.h README.md systick_wrapper_gcc.S systick_wrapper_gnu.s systick_wrapper_ual.s " # Specify file names to be deleted from pack build directory # Default: empty # # PACK_DELETE_FILES=" # " # Specify patches to be applied # Default: empty # # PACK_PATCH_FILES=" # # " # Specify addition argument to packchk # Default: empty # # PACKCHK_ARGS=() # Specify additional dependencies for packchk # Default: empty # # PACKCHK_DEPS=" # # " # Optional: restrict fallback modes for changelog generation # Default: full # Values: # - full Tag annotations, release descriptions, or commit messages (in order) # - release Tag annotations, or release descriptions (in order) # - tag Tag annotations only # # PACK_CHANGELOG_MODE="" # # custom pre-processing steps # # usage: preprocess # The build folder # function preprocess() { # add custom steps here to be executed # before populating the pack build folder return 0 } # # custom post-processing steps # # usage: postprocess # The build folder # function postprocess() { # add custom steps here to be executed # after populating the pack build folder # but before archiving the pack into output folder return 0 } ############ DO NOT EDIT BELOW ########### function install_lib() { local URL="https://github.com/Open-CMSIS-Pack/gen-pack/archive/refs/tags/v$1.tar.gz" local STATUS=$(curl -sLI "${URL}" | grep "^HTTP" | tail -n 1 | cut -d' ' -f2 || echo "$((600+$?))") if [[ $STATUS -ge 400 ]]; then echo "Wrong/unavailable gen-pack lib version '$1'!" >&2 echo "Check REQUIRED_GEN_PACK_LIB variable." >&2 echo "For available versions see https://github.com/Open-CMSIS-Pack/gen-pack/tags." >&2 exit 1 fi echo "Downloading gen-pack lib version '$1' to '$2' ..." mkdir -p "$2" curl -L "${URL}" -s | tar -xzf - --strip-components 1 -C "$2" || exit 1 } function load_lib() { if [[ -d ${GEN_PACK_LIB} ]]; then . "${GEN_PACK_LIB}/gen-pack" return 0 fi local GLOBAL_LIB="/usr/local/share/gen-pack/${REQUIRED_GEN_PACK_LIB}" local USER_LIB="${HOME}/.local/share/gen-pack/${REQUIRED_GEN_PACK_LIB}" if [[ ! -d "${GLOBAL_LIB}" && ! -d "${USER_LIB}" ]]; then echo "Required gen_pack lib not found!" >&2 install_lib "${REQUIRED_GEN_PACK_LIB}" "${USER_LIB}" fi if [[ -d "${GLOBAL_LIB}" ]]; then . "${GLOBAL_LIB}/gen-pack" elif [[ -d "${USER_LIB}" ]]; then . "${USER_LIB}/gen-pack" else echo "Required gen-pack lib is not installed!" >&2 exit 1 fi } load_lib gen_pack "${DEFAULT_ARGS[@]}" "$@" exit 0