update-llama-cpp.sh 1.14 KB
Newer Older
Michael Yang's avatar
Michael Yang committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/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

SHA1=$(git -C $1 rev-parse @)

LICENSE=$(mktemp)
cleanup() {
    rm -f $LICENSE
}
trap cleanup 0

cat <<EOF | sed 's/ *$//' >$LICENSE
/**
 * llama.cpp - git $SHA1
 *
$(sed 's/^/ * /' <$1/LICENSE)
 */

EOF

Michael Yang's avatar
Michael Yang committed
47
for IN in $OUT/*.{c,h,cpp,m,metal,cu}; do
Michael Yang's avatar
Michael Yang committed
48
    TMP=$(mktemp)
Michael Yang's avatar
Michael Yang committed
49
50
51
    status "updating license $IN"
    cat $LICENSE $IN >$TMP
    mv $TMP $IN
Michael Yang's avatar
Michael Yang committed
52
53
done

Michael Yang's avatar
Michael Yang committed
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
touchup() {
    local CONSTRAINT=$1 && shift

    for IN in $*; do
        status "touching up $IN..."
        TMP=$(mktemp)
        {
            echo "//go:build $CONSTRAINT"
            echo
        } | cat - $IN >$TMP
        mv $TMP $IN
    done
}

touchup darwin $OUT/ggml-metal.*
touchup mpi $OUT/ggml-mpi.*
touchup opencl $OUT/ggml-opencl.*