update-llama-cpp.sh 998 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/sh
  2. set -eu
  3. status() { echo >&2 ">>> $*"; }
  4. error() { status "ERROR $*"; }
  5. usage() {
  6. echo "usage: $(basename $0) /path/to/repo"
  7. exit 1
  8. }
  9. OUT=$(dirname $0)
  10. while getopts "hC:" OPTION; do
  11. case $OPTION in
  12. C) OUT=$OPTARG ;;
  13. *) usage ;;
  14. esac
  15. done
  16. shift $(( $OPTIND - 1 ))
  17. [ $# -eq 1 ] || usage
  18. status "updating source..."
  19. cp -a "$1"/*.{c,h,cpp,m,metal,cu} "$OUT"
  20. status "removing incompatible files..."
  21. rm -f "$OUT"/build-info.h
  22. rm -f "$OUT"/ggml-{mpi,opencl}.*
  23. SHA1=$(git -C $1 rev-parse @)
  24. LICENSE=$(mktemp)
  25. cleanup() {
  26. rm -f $LICENSE
  27. }
  28. trap cleanup 0
  29. cat <<EOF | sed 's/ *$//' >$LICENSE
  30. /**
  31. * llama.cpp - git $SHA1
  32. *
  33. $(sed 's/^/ * /' <$1/LICENSE)
  34. */
  35. EOF
  36. for f in $OUT/*.{c,h,cpp,m,metal,cu}; do
  37. TMP=$(mktemp)
  38. status "updating license: $f"
  39. cat $LICENSE $f >$TMP
  40. mv $TMP $f
  41. done
  42. status "touching up MacOS files..."
  43. TMP=$(mktemp)
  44. {
  45. echo "// +build darwin"
  46. echo
  47. } | cat - $OUT/ggml-metal.m >$TMP
  48. mv $TMP $OUT/ggml-metal.m