forked from lanterndata/lantern
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-extras.sh
executable file
·138 lines (111 loc) · 4.19 KB
/
build-extras.sh
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
set -e
function setup_onnx() {
source "$(dirname "$0")/../../lantern_hnsw/scripts/get_arch_and_platform.sh"
pushd /tmp
ONNX_VERSION="1.16.1"
PACKAGE_URL="https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-x64-${ONNX_VERSION}.tgz" && \
case "$ARCH" in \
*arm*|aarch64) \
PACKAGE_URL="https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-aarch64-${ONNX_VERSION}.tgz"; \
esac && \
mkdir -p /usr/local/lib && \
cd /usr/local/lib && \
wget -q $PACKAGE_URL && \
tar xzf ./onnx*.tgz && \
rm -rf ./onnx*.tgz && \
mv ./onnx* ./onnxruntime && \
echo /usr/local/lib/onnxruntime/lib > /etc/ld.so.conf.d/onnx.conf && \
ldconfig
echo "onnxruntime installed from package: $PACKAGE_URL"
popd
}
function package_cli() {
. "$HOME/.cargo/env"
source "$(dirname "$0")/../../lantern_hnsw/scripts/get_arch_and_platform.sh"
VERSION=$(cargo metadata --format-version 1 | jq '.packages[] | select( .name == "lantern_cli") | .version' | tr -d '"')
PACKAGE_NAME=lantern-cli-${VERSION}-${PLATFORM}-${ARCH}
SOURCE_DIR=$(pwd)
BINARY_NAME=lantern-cli
OUT_DIR=/tmp/${BINARY_NAME}
BUILD_DIR=${SOURCE_DIR}/target/release/
CC=$(which clang) cargo build --package lantern_cli --release
mkdir -p ${OUT_DIR}
cp ${BUILD_DIR}/${BINARY_NAME} $OUT_DIR
pushd "$OUT_DIR"
tar cf ${PACKAGE_NAME}.tar $BINARY_NAME
## Write output so we can use this in actions and upload artifacts
echo "cli_package_path=${OUT_DIR}/${PACKAGE_NAME}.tar" >> $GITHUB_OUTPUT
echo "cli_package_name=${PACKAGE_NAME}" >> $GITHUB_OUTPUT
popd
}
function install_extension() {
cargo pgrx install --pg-config /usr/bin/pg_config --package lantern_extras
}
function package_extension() {
cargo pgrx package --pg-config /usr/bin/pg_config --package lantern_extras
source "$(dirname "$0")/../../lantern_hnsw/scripts/get_arch_and_platform.sh"
EXT_VERSION=$(cargo metadata --format-version 1 | jq '.packages[] | select( .name == "lantern_extras") | .version' | tr -d '"')
PACKAGE_NAME=lantern-extras-${EXT_VERSION}-postgres-${PG_VERSION}-${PLATFORM}-${ARCH}
SOURCE_DIR=$(pwd)
LIB_BUILD_DIR="$(pwd)/target/release/lantern_extras-pg${PG_VERSION}/usr/lib/postgresql/${PG_VERSION}/lib"
SHARE_BUILD_DIR="$(pwd)/target/release/lantern_extras-pg${PG_VERSION}/usr/share/postgresql/${PG_VERSION}/extension"
OUT_DIR=/tmp/lantern-extras
mkdir -p ${OUT_DIR}/${PACKAGE_NAME}/src
# For Mac OS and Postgres 16 the module will have .dylib extension
# Instead of .so, so any of the files may not exist
# So we will ignore the error from cp command
cp ${LIB_BUILD_DIR}/*.{so,dylib} ${OUT_DIR}/${PACKAGE_NAME}/src 2>/dev/null || true
cp ${SOURCE_DIR}/README.md ${OUT_DIR}/${PACKAGE_NAME}/
cp ${SOURCE_DIR}/LICENSE ${OUT_DIR}/${PACKAGE_NAME}/ 2>/dev/null || true
cp ${SOURCE_DIR}/lantern_hnsw/scripts/packaging/* ${OUT_DIR}/${PACKAGE_NAME}/
cp ${SHARE_BUILD_DIR}/*.sql ${OUT_DIR}/${PACKAGE_NAME}/src
cp ${SHARE_BUILD_DIR}/*.control ${OUT_DIR}/${PACKAGE_NAME}/src
pushd "$OUT_DIR"
tar cf ${PACKAGE_NAME}.tar ${PACKAGE_NAME}
## Write output so we can use this in actions and upload artifacts
echo "archive_package_name=${PACKAGE_NAME}.tar" >> $GITHUB_OUTPUT
echo "archive_package_path=${OUT_DIR}/${PACKAGE_NAME}.tar" >> $GITHUB_OUTPUT
popd
}
function configure_and_start_postgres() {
# Start postgres
sudo service postgresql start
wait_for_pg
psql -U postgres -c "CREATE EXTENSION lantern" postgres
psql -U postgres -c "CREATE EXTENSION lantern_extras" postgres
}
# Source unified utility functions
source "$(dirname "$0")/utils.sh"
source "$(dirname "$0")/build-linux.sh"
if [ ! -z "$RUN_POSTGRES" ]
then
configure_and_start_postgres
exit 0
fi
if [ ! -z "$SETUP_ENV" ]
then
setup_environment
setup_locale_and_install_packages
clone_or_use_source
setup_rust
fi
if [ ! -z "$SETUP_POSTGRES" ]
then
setup_postgres
install_platform_specific_dependencies
fi
if [ ! -z "$PACKAGE_CLI" ]
then
package_cli
fi
if [ ! -z "$SETUP_TESTS" ]
then
build_and_install_lantern
setup_onnx
fi
if [ ! -z "$PACKAGE_EXTENSION" ]
then
setup_cargo_deps
package_extension
fi