[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
This commit is contained in:
Liu Shilong 2023-01-04 16:29:25 +08:00 committed by GitHub
parent 33bf592f09
commit 933bf06058
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

10
src/sonic-build-hooks/hooks/dpkg Normal file → Executable file
View File

@ -3,8 +3,16 @@
. /usr/local/share/buildinfo/scripts/buildinfo_base.sh . /usr/local/share/buildinfo/scripts/buildinfo_base.sh
REAL_COMMAND=$(get_command dpkg) REAL_COMMAND=$(get_command dpkg)
COMMAND_INFO="Locked by command: $REAL_COMMAND $@" 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 "$@" $REAL_COMMAND "$@"
command_result=$? command_result=$?
if [[ "$NEED_RELEASE_LOCK" == "y" ]];then
unset DPKG_HOOK_LOCKED
fi
[ "$lock_result" == y ] && release_apt_installation_lock [ "$lock_result" == y ] && release_apt_installation_lock
exit $command_result exit $command_result