update-llama-cpp.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. SHA1=$(git -C $1 rev-parse @)
  23. LICENSE=$(mktemp)
  24. cleanup() {
  25. rm -f $LICENSE
  26. }
  27. trap cleanup 0
  28. cat <<EOF | sed 's/ *$//' >$LICENSE
  29. /**
  30. * llama.cpp - git $SHA1
  31. *
  32. $(sed 's/^/ * /' <$1/LICENSE)
  33. */
  34. EOF
  35. for IN in $OUT/*.{c,h,cpp,m,metal,cu}; do
  36. TMP=$(mktemp)
  37. status "updating license $IN"
  38. cat $LICENSE $IN >$TMP
  39. mv $TMP $IN
  40. done
  41. touchup() {
  42. local CONSTRAINT=$1 && shift
  43. for IN in $*; do
  44. status "touching up $IN..."
  45. TMP=$(mktemp)
  46. {
  47. echo "//go:build $CONSTRAINT"
  48. echo
  49. } | cat - $IN >$TMP
  50. mv $TMP $IN
  51. done
  52. }
  53. touchup darwin $OUT/ggml-metal.*
  54. touchup mpi $OUT/ggml-mpi.*
  55. touchup opencl $OUT/ggml-opencl.*