sysupgrade-tar.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/sh
  2. . $TOPDIR/scripts/functions.sh
  3. board=""
  4. kernel=""
  5. rootfs=""
  6. dtb=""
  7. outfile=""
  8. err=""
  9. while [ "$1" ]; do
  10. case "$1" in
  11. "--board")
  12. board="$2"
  13. shift
  14. shift
  15. continue
  16. ;;
  17. "--kernel")
  18. kernel="$2"
  19. shift
  20. shift
  21. continue
  22. ;;
  23. "--rootfs")
  24. rootfs="$2"
  25. shift
  26. shift
  27. continue
  28. ;;
  29. "--dtb")
  30. dtb="$2"
  31. shift
  32. shift
  33. continue
  34. ;;
  35. *)
  36. if [ ! "$outfile" ]; then
  37. outfile=$1
  38. shift
  39. continue
  40. fi
  41. ;;
  42. esac
  43. done
  44. if [ ! -n "$board" -o ! -r "$kernel" -a ! -r "$rootfs" -o ! "$outfile" -o -n "$dtb" -a ! -r "$dtb" ]; then
  45. echo "syntax: $0 [--board boardname] [--kernel kernelimage] [--rootfs rootfs] [--dtb dtb] out"
  46. exit 1
  47. fi
  48. tmpdir="$( mktemp -d 2> /dev/null )"
  49. if [ -z "$tmpdir" ]; then
  50. # try OSX signature
  51. tmpdir="$( mktemp -t 'ubitmp' -d )"
  52. fi
  53. if [ -z "$tmpdir" ]; then
  54. exit 1
  55. fi
  56. mkdir -p "${tmpdir}/sysupgrade-${board}"
  57. echo "BOARD=${board}" > "${tmpdir}/sysupgrade-${board}/CONTROL"
  58. if [ -n "${rootfs}" ]; then
  59. case "$( get_fs_type ${rootfs} )" in
  60. "squashfs")
  61. dd if="${rootfs}" of="${tmpdir}/sysupgrade-${board}/root" bs=1024 conv=sync
  62. ;;
  63. *)
  64. cp "${rootfs}" "${tmpdir}/sysupgrade-${board}/root"
  65. ;;
  66. esac
  67. fi
  68. [ -z "${kernel}" ] || cp "${kernel}" "${tmpdir}/sysupgrade-${board}/kernel"
  69. [ -z "${dtb}" ] || cp "${dtb}" "${tmpdir}/sysupgrade-${board}/dtb"
  70. mtime=""
  71. if [ -n "$SOURCE_DATE_EPOCH" ]; then
  72. mtime="--mtime=@${SOURCE_DATE_EPOCH}"
  73. fi
  74. (cd "$tmpdir"; tar --sort=name --owner=0 --group=0 --numeric-owner -cvf sysupgrade.tar sysupgrade-${board} ${mtime})
  75. err="$?"
  76. if [ -e "$tmpdir/sysupgrade.tar" ]; then
  77. cp "$tmpdir/sysupgrade.tar" "$outfile"
  78. else
  79. err=2
  80. fi
  81. rm -rf "$tmpdir"
  82. exit $err