diff --git a/build_debian.sh b/build_debian.sh index f1e17e4bcb..0c06cadb48 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -120,6 +120,8 @@ echo '[INFO] Install and setup eatmydata' sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install eatmydata sudo LANG=C chroot $FILESYSTEM_ROOT ln -s /usr/bin/eatmydata /usr/local/bin/dpkg echo 'Dir::Bin::dpkg "/usr/local/bin/dpkg";' | sudo tee $FILESYSTEM_ROOT/etc/apt/apt.conf.d/00image-install-eatmydata > /dev/null +## Note: dpkg hook conflict with eatmydata +sudo LANG=C chroot $FILESYSTEM_ROOT rm /usr/local/sbin/dpkg -f echo '[INFO] Install packages for building image' sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install makedev psmisc 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