diff --git a/llama/update-llama-cpp.sh b/llama/update-llama-cpp.sh new file mode 100644 index 00000000..6ba179c1 --- /dev/null +++ b/llama/update-llama-cpp.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +set -eu + + +status() { echo >&2 ">>> $*"; } +error() { status "ERROR $*"; } +usage() { + echo "usage: $(basename $0) /path/to/repo" + exit 1 +} + +OUT=$(dirname $0) +while getopts "hC:" OPTION; do + case $OPTION in + C) OUT=$OPTARG ;; + *) usage ;; + esac +done + +shift $(( $OPTIND - 1 )) +[ $# -eq 1 ] || usage + +status "updating source..." +cp -a "$1"/*.{c,h,cpp,m,metal,cu} "$OUT" + +status "removing incompatible files..." +rm -f "$OUT"/build-info.h +rm -f "$OUT"/ggml-{mpi,opencl}.* + +SHA1=$(git -C $1 rev-parse @) + +LICENSE=$(mktemp) +cleanup() { + rm -f $LICENSE +} +trap cleanup 0 + +cat <$LICENSE +/** + * llama.cpp - git $SHA1 + * +$(sed 's/^/ * /' <$1/LICENSE) + */ + +EOF + +for f in $OUT/*.{c,h,cpp,m,metal,cu}; do + TMP=$(mktemp) + status "updating license: $f" + cat $LICENSE $f >$TMP + mv $TMP $f +done + +status "touching up MacOS files..." +TMP=$(mktemp) +{ + echo "// +build darwin" + echo +} | cat - $OUT/ggml-metal.m >$TMP +mv $TMP $OUT/ggml-metal.m