rm_work.bbclass 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #
  2. # Removes source after build
  3. #
  4. # To use it add that line to conf/local.conf:
  5. #
  6. # INHERIT += "rm_work"
  7. #
  8. # Use the completion scheduler by default when rm_work is active
  9. # to try and reduce disk usage
  10. BB_SCHEDULER ?= "completion"
  11. RMWORK_ORIG_TASK := "${BB_DEFAULT_TASK}"
  12. BB_DEFAULT_TASK = "rm_work_all"
  13. do_rm_work () {
  14. cd ${WORKDIR}
  15. for dir in *
  16. do
  17. if [ `basename ${S}` = $dir ]; then
  18. rm -rf $dir
  19. # The package and packages-split directories are retained by sstate for
  20. # do_package so we retain them here too. Anything in sstate 'plaindirs'
  21. # should be retained. Also retain logs and other files in temp.
  22. elif [ $dir != 'temp' ] && [ $dir != 'package' ] && [ $dir != 'packages-split' ]; then
  23. rm -rf $dir
  24. fi
  25. done
  26. # Need to add pseudo back or subsqeuent work in this workdir
  27. # might fail since setscene may not rerun to recreate it
  28. mkdir ${WORKDIR}/pseudo/
  29. # Change normal stamps into setscene stamps as they better reflect the
  30. # fact WORKDIR is now empty
  31. # Also leave noexec stamps since setscene stamps don't cover them
  32. cd `dirname ${STAMP}`
  33. for i in `basename ${STAMP}`*
  34. do
  35. for j in ${SSTATETASKS}
  36. do
  37. case $i in
  38. *do_setscene*)
  39. break
  40. ;;
  41. *sigdata*)
  42. i=dummy
  43. break
  44. ;;
  45. *do_package_write*)
  46. i=dummy
  47. break
  48. ;;
  49. *do_build*)
  50. i=dummy
  51. break
  52. ;;
  53. *_setscene*)
  54. i=dummy
  55. break
  56. ;;
  57. *$j|*$j.*)
  58. mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"`
  59. i=dummy
  60. break
  61. ;;
  62. esac
  63. done
  64. rm -f $i
  65. done
  66. }
  67. addtask rm_work after do_${RMWORK_ORIG_TASK}
  68. do_rm_work_all () {
  69. :
  70. }
  71. do_rm_work_all[recrdeptask] = "do_rm_work"
  72. addtask rm_work_all after do_rm_work