dep

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

commit e42193ae278d1999221de8f65dacd7644e8c2372
parent dba39a3598d197838eba109aae925e25fcc04cf3
Author: finwo <finwo@pm.me>
Date:   Mon, 22 May 2023 23:26:09 +0200

Fix multi-path export inclusion resulting in duplicate config.mk entries

Diffstat:
Mdist/dep | 30+++++++++++++++++-------------
Msrc/command/install/index.sh | 30+++++++++++++++++-------------
2 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/dist/dep b/dist/dep @@ -295,6 +295,7 @@ function cmd_install_reset_generated { rm -rf "${CMD_INSTALL_PKG_DEST}/.dep" mkdir -p "${CMD_INSTALL_PKG_DEST}/.dep/include" echo "INCLUDES+=-I ${CMD_INSTALL_PKG_DEST}/.dep/include" > "${CMD_INSTALL_PKG_DEST}/.dep/config.mk" + echo "" > "${CMD_INSTALL_PKG_DEST}/.dep/exported" } function cmd_install_dep { @@ -379,19 +380,22 @@ function cmd_install_dep { fi # Build the package's exports - while read line; do - filetarget=${line%%=*} - filesource=${line#*=} - mkdir -p "$(dirname "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}")" - case "${filetarget}" in - config.mk) - cat "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" | sed "s|__DIRNAME|${CMD_INSTALL_PKG_DEST}/${name}|g" >> "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}" - ;; - *) - ln -fs "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}" - ;; - esac - done < <(ini_foreach ini_output_section "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" "export.") + if ! grep "${name}" "${CMD_INSTALL_PKG_DEST}/.dep/exported" &>/dev/null ; then + echo "${name}" >> "${CMD_INSTALL_PKG_DEST}/.dep/exported" + while read line; do + filetarget=${line%%=*} + filesource=${line#*=} + mkdir -p "$(dirname "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}")" + case "${filetarget}" in + config.mk) + cat "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" | sed "s|__DIRNAME|${CMD_INSTALL_PKG_DEST}/${name}|g" >> "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}" + ;; + *) + ln -fs "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" "${CMD_INSTALL_PKG_DEST}/.dep/${filetarget}" + ;; + esac + done < <(ini_foreach ini_output_section "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" "export.") + fi } read -r -d '' help_topics[repository] <<- EOF Usage: dep [global options] repository <command> <argument> diff --git a/src/command/install/index.sh b/src/command/install/index.sh @@ -65,6 +65,7 @@ function cmd_install_reset_generated { rm -rf "${CMD_INSTALL_PKG_DEST}/.__NAME" mkdir -p "${CMD_INSTALL_PKG_DEST}/.__NAME/include" echo "INCLUDES+=-I ${CMD_INSTALL_PKG_DEST}/.__NAME/include" > "${CMD_INSTALL_PKG_DEST}/.__NAME/config.mk" + echo "" > "${CMD_INSTALL_PKG_DEST}/.__NAME/exported" } function cmd_install_dep { @@ -149,17 +150,20 @@ function cmd_install_dep { fi # Build the package's exports - while read line; do - filetarget=${line%%=*} - filesource=${line#*=} - mkdir -p "$(dirname "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}")" - case "${filetarget}" in - config.mk) - cat "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" | sed "s|__DIRNAME|${CMD_INSTALL_PKG_DEST}/${name}|g" >> "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}" - ;; - *) - ln -fs "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}" - ;; - esac - done < <(ini_foreach ini_output_section "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" "export.") + if ! grep "${name}" "${CMD_INSTALL_PKG_DEST}/.__NAME/exported" &>/dev/null ; then + echo "${name}" >> "${CMD_INSTALL_PKG_DEST}/.__NAME/exported" + while read line; do + filetarget=${line%%=*} + filesource=${line#*=} + mkdir -p "$(dirname "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}")" + case "${filetarget}" in + config.mk) + cat "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" | sed "s|__DIRNAME|${CMD_INSTALL_PKG_DEST}/${name}|g" >> "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}" + ;; + *) + ln -fs "${CMD_INSTALL_PKG_DEST}/${name}/${filesource}" "${CMD_INSTALL_PKG_DEST}/.__NAME/${filetarget}" + ;; + esac + done < <(ini_foreach ini_output_section "${CMD_INSTALL_PKG_DEST}/${name}/package.ini" "export.") + fi }