linux: make patch invocation idempotent

This commit is contained in:
Vladislav Yarmak 2019-09-27 23:57:55 +03:00
parent a82e6112c9
commit 5c2471afb1

View File

@ -181,8 +181,15 @@ rollback () {
patch () {
patch_common
if [[ ! -f "$backup_path/$object.$driver_version" ]]; then
echo "Attention! Backup not found. Copy current $object to backup."
if [[ -f "$backup_path/$object.$driver_version" ]]; then
bkp_hash="$(sha1sum "$backup_path/$object.$driver_version" | cut -f1 -d\ )"
drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )"
if [[ "$bkp_hash" != "$drv_hash" ]] ; then
echo "Backup exists and driver file differ from backup. Skipping patch."
return 0
fi
else
echo "Attention! Backup not found. Copying current $object to backup."
mkdir -p "$backup_path"
cp -p "$driver_dir/$object.$driver_version" \
"$backup_path/$object.$driver_version"