release.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # SPDX-License-Identifier: GPL-3.0-or-later
  2. # Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org>
  3. eval "`setvars "" reldir reldest vdir rsrc relmode`"
  4. release()
  5. {
  6. export XBMK_RELEASE="y"
  7. reldir="release"
  8. while getopts d:m: option; do
  9. [ -z "$OPTARG" ] && err "empty argument not allowed"
  10. case "$option" in
  11. d) reldir="$OPTARG" ;;
  12. m) relmode="$OPTARG" ;;
  13. *) err "invalid option '-$option'" ;;
  14. esac
  15. done
  16. reldest="$reldir/$version"
  17. [ -e "$reldest" ] && \
  18. err "already exists: \"$reldest\""
  19. vdir="$XBMK_CACHE/relpwd/${xbtmp##*/}/$version"
  20. rsrc="$vdir/${relname}_src"
  21. remkdir "$vdir"
  22. x_ git clone . "$rsrc"
  23. update_xbmkver "$rsrc"
  24. prep_release src
  25. prep_release tarball
  26. [ "$relmode" = "src" ] || prep_release bin
  27. x_ rm -Rf "$rsrc"
  28. x_ mkdir -p "$reldir"
  29. x_ mv "$vdir" "$reldir"
  30. x_ rm -Rf "${vdir%"/$version"}"
  31. printf "\n\nDONE! Check release files under %s\n" "$reldest"
  32. }
  33. prep_release()
  34. {
  35. x_ touch "$rsrc/lock"
  36. (
  37. [ "$1" = "tarball" ] || x_ cd "$rsrc"
  38. prep_release_$1
  39. ) || err "can't prep release $1"
  40. }
  41. prep_release_src()
  42. {
  43. x_ ./mk -f
  44. fx_ "x_ rm -Rf" x_ find . -name ".git"
  45. fx_ "x_ rm -Rf" x_ find . -name ".gitmodules"
  46. ( fx_ nuke x_ find config -type f -name "nuke.list" ) || err; :
  47. }
  48. nuke()
  49. {
  50. r="$rsrc/src/${1#config/}"
  51. [ -d "${r%/*}" ] && x_ cd "${r%/*}" && \
  52. dx_ "eval [ -L \"\$fx\" ] || x_ rm -Rf" "$rsrc/$1"; :
  53. }
  54. prep_release_tarball()
  55. {
  56. git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \
  57. --abbrev-commit > "$rsrc/CHANGELOG" || err "!log $rsrc"
  58. x_ rm -f "$rsrc/lock"
  59. x_ rm -Rf "$rsrc/cache" "$rsrc/tmp"
  60. (
  61. x_ cd "${rsrc%/*}"
  62. x_ mktarball "${rsrc##*/}" "${rsrc##*/}.tar.xz"
  63. ) || err "can't create src tarball"; :
  64. }
  65. prep_release_bin()
  66. {
  67. fx_ "x_ ./mk -b" printf \
  68. "coreboot\npico-serprog\nstm32-vserprog\npcsx-redux\n"
  69. fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*"
  70. x_ mv bin ../roms
  71. }