From 933bf0605826ec8ae5edab6f07920de5b1e66ebe Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Wed, 4 Jan 2023 16:29:25 +0800 Subject: [PATCH] [build] Add environment when using dpkg hook to avoid lock loop. (#13233) Why I did it In some cases, dpkg will call dpkg to validate version. dpkg hook will get stuck in a loop to lock. How I did it How to verify it --- src/sonic-build-hooks/hooks/dpkg | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/sonic-build-hooks/hooks/dpkg diff --git a/src/sonic-build-hooks/hooks/dpkg b/src/sonic-build-hooks/hooks/dpkg old mode 100644 new mode 100755 index 7fbc90f9fe..294cb19f4c --- a/src/sonic-build-hooks/hooks/dpkg +++ b/src/sonic-build-hooks/hooks/dpkg @@ -3,8 +3,16 @@ . /usr/local/share/buildinfo/scripts/buildinfo_base.sh REAL_COMMAND=$(get_command dpkg) COMMAND_INFO="Locked by command: $REAL_COMMAND $@" -lock_result=$(acquire_apt_installation_lock "$COMMAND_INFO" ) +NEED_RELEASE_LOCK=n +if [[ "$DPKG_HOOK_LOCKED" != "y" ]];then + lock_result=$(acquire_apt_installation_lock "$COMMAND_INFO" ) + export DPKG_HOOK_LOCKED=y + NEED_RELEASE_LOCK=y +fi $REAL_COMMAND "$@" command_result=$? +if [[ "$NEED_RELEASE_LOCK" == "y" ]];then + unset DPKG_HOOK_LOCKED +fi [ "$lock_result" == y ] && release_apt_installation_lock exit $command_result