dep

Package manager for embedded C libraries
git clone git://git.finwo.net/app/dep
Log | Files | Refs | README | LICENSE

commit 5bb9c79aa3fffe7422599349a72f11c3389f4a7e
parent 9c6a1ca8d23178e8bb4a8395c8d3a7f0787fa59f
Author: finwo <finwo@pm.me>
Date:   Fri, 27 Jan 2023 21:24:20 +0100

Implemented downloading src by dependency's package.ini

Diffstat:
M.gitignore | 1+
Mpackage.ini | 2+-
Msrc/command/install.sh | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Msrc/main.sh | 5+----
Msrc/util/ini.sh | 2+-
5 files changed, 72 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,3 +1,4 @@ /bak/ /util/ /dep +/lib/ diff --git a/package.ini b/package.ini @@ -3,4 +3,4 @@ name=dep deps=lib [dependencies] -bashpp=https://github.com/iwonbigbro/bashpp/archive/refs/heads/master.tar.gz +antirez/linenoise=https://raw.githubusercontent.com/finwo/dep-repository/master/antirez/linenoise/package.ini diff --git a/src/command/install.sh b/src/command/install.sh @@ -21,7 +21,7 @@ function cmd_install { exit 1 fi - ini_foreach cmd_install_parse_ini "${PACKAGE_PATH}" + ini_foreach cmd_install_parse_ini_main "${PACKAGE_PATH}" cmd_install_execute } @@ -31,7 +31,7 @@ cmds[${#cmds[*]}]="install" CMD_INSTALL_PKG_NAME= CMD_INSTALL_PKG_DEST="$(pwd)/lib" declare -A CMD_INSTALL_DEPS -function cmd_install_parse_ini { +function cmd_install_parse_ini_main { case "$1" in package.) case "$2" in @@ -50,8 +50,70 @@ function cmd_install_parse_ini { } function cmd_install_execute { - echo "PKG_NAME: $CMD_INSTALL_PKG_NAME" - echo "LIB_DEST: $CMD_INSTALL_PKG_DEST" - echo "@: ${CMD_INSTALL_DEPS[@]}" - echo "!: ${!CMD_INSTALL_DEPS[@]}" + cmd_install_reset_generated + for key in "${!CMD_INSTALL_DEPS[@]}"; do + cmd_install_dep "$key" "${CMD_INSTALL_DEPS[$key]}" + done } + +function cmd_install_reset_generated { + rm -rf "${CMD_INSTALL_PKG_DEST}/.__NAME" + mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/include" + echo "CFLAGS+=-I${CMD_INSTALL_PKG_DEST}/.__NAME/include" > "${CMD_INSTALL_PKG_DEST}/.__NAME/config.mk" +} + +function cmd_install_dep_parse_package { + echo PARSE PKG +} + +function cmd_install_dep { + name=$1 + origin=$2 + + # Full install if missing + if [ ! -d "${CMD_INSTALL_PKG_DEST}/${name}" ]; then + + # Fetch package.ini for the dependency + mkdir -p "${CMD_INSTALL_PKG_DEST}/${name}" + curl --location --progress-bar "${origin}" --output "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" + + # Fetch it's src (if present) + if [ ! -z "$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src)" ]; then + SRC="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src)" + HASH="$(ini_foreach ini_output_value "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" package.src-sha256)" + + # Download + mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}" + if [ ! -f "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" ]; then + curl --location --progress-bar "${SRC}" --output "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" + fi + + # Verify checksum + if [ "${HASH}" != "$(sha256sum "${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" | awk '{print $1}')" ]; then + echo "The tarball for '${name}' failed it's checksum!" >&2 + exit 1 + fi + + # Extract tarball + tar --extract --directory "${CMD_INSTALL_PKG_DEST}/${NAME}/" --strip-components 1 --file="${CMD_INSTALL_PKG_DEST}/.__NAME/cache/${name}/tarball" + fi + + # Step 3: Execute fetch (for patches etc) + else + echo "ALREADY INSTALLED: ${name}" + fi + + # Step 4: Build exports + + + + + echo "Name : $name" + echo "Origin : $origin" + echo "Destination: $destination" +} + + + + + diff --git a/src/main.sh b/src/main.sh @@ -2,9 +2,6 @@ cmds=("") # #include "command/help/index.sh" # #include "command/install.sh" -# Filled by preprocess -NAME=__NAME - function main { cmd=help @@ -36,6 +33,6 @@ function main { cmd_$cmd } -if [ $(basename $0) == "${NAME}" ]; then +if [ $(basename $0) == "__NAME" ]; then main "$@" fi diff --git a/src/util/ini.sh b/src/util/ini.sh @@ -44,7 +44,7 @@ function ini_foreach { # Output searched or all if [[ -z "${3}" ]]; then $1 "$SECTION" "$NAME" "${VALUE}" - elif [[ "${SECTION}" == "${3}." ]] || [[ "${SECTION}${NAME}" == "${3}" ]]; then + elif [[ "${SECTION}" == "${3}" ]] || [[ "${SECTION}${NAME}" == "${3}" ]]; then $1 "$SECTION" "$NAME" "${VALUE}" fi