kclean.sh 999 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/sh
  2. clean_up() {
  3. rm -vf $filelog
  4. find "$(dirname $filelog)" -name *.lego.updated | xargs rm -vf
  5. }
  6. trap clean_up EXIT
  7. filelog="$1"
  8. [ -f $filelog ] || exit 0
  9. sort -ru < $filelog | while IFS= read -r line
  10. do
  11. # Current format example
  12. # {module}:{method}:{path}:{kernel(optional)}
  13. module=$(echo $line | cut -d':' -f 1)
  14. method=$(echo $line | cut -d':' -f 2)
  15. path=$(echo $line | cut -d':' -f 3)
  16. if [ "$method" = "C" ]
  17. then
  18. rm -vf "$path"
  19. elif [ "$method" = "U" ]
  20. then
  21. if [ "$module" = "NONE" ]
  22. then
  23. # Update Kconfig for source or Update Makefile for obj-y
  24. add_lines=$(grep "ADDED BY LEGO" $path || true)
  25. # clean up
  26. [ -f "${path}" ] && [ -n "$add_lines" ] && echo "CLEAR ${path}" \
  27. && cat ${path} | grep -v "ADDED BY LEGO" > ${path}.tmp && mv ${path}.tmp ${path}
  28. else
  29. bpath="$(dirname $path)/.$(basename $path).lego.updated"
  30. [ -f "$bpath" ] && echo "ROLLBACK $path" && mv -vf "$bpath" "$path"
  31. fi
  32. fi
  33. done