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:
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
}