1
0
forked from boos/BoosAPI

chore: sync current workspace changes

This commit is contained in:
boos
2026-07-14 03:21:10 +08:00
parent 1512fa23ce
commit 557914fea8
745 changed files with 124917 additions and 11222 deletions
+90
View File
@@ -0,0 +1,90 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PGRUST_REPOSITORY="${PGRUST_REPOSITORY:-https://github.com/malisper/pgrust.git}"
PGRUST_REF="${PGRUST_REF:-c9aecbd05348e52a8ba21c688eec6258e8e8282f}"
PGRUST_SOURCE_DIR="${PGRUST_SOURCE_DIR:-$ROOT_DIR/target/pgrust-src}"
PGRUST_TARGET_DIR="${PGRUST_TARGET_DIR:-$ROOT_DIR/target/pgrust-build}"
PGRUST_OUTPUT_DIR="${PGRUST_OUTPUT_DIR:-$ROOT_DIR/dist/pgrust}"
PGRUST_SIZE_OPTIMIZED="${PGRUST_SIZE_OPTIMIZED:-0}"
for command in cargo git pkg-config; do
command -v "$command" >/dev/null || {
echo "missing required command: $command" >&2
exit 1
}
done
for package in icu-uc openssl libxml-2.0; do
pkg-config --exists "$package" || {
echo "missing native development package for $package" >&2
exit 1
}
done
if [ ! -d "$PGRUST_SOURCE_DIR/.git" ]; then
rm -rf "$PGRUST_SOURCE_DIR"
git clone --no-checkout "$PGRUST_REPOSITORY" "$PGRUST_SOURCE_DIR"
fi
minimal_auth_patch="$ROOT_DIR/patches/pgrust-minimal-auth.patch"
if git -C "$PGRUST_SOURCE_DIR" apply --check "$minimal_auth_patch" 2>/dev/null; then
git -C "$PGRUST_SOURCE_DIR" apply "$minimal_auth_patch"
elif ! git -C "$PGRUST_SOURCE_DIR" apply --reverse --check "$minimal_auth_patch" 2>/dev/null; then
echo "pgrust minimal auth patch does not apply cleanly to $PGRUST_REF" >&2
exit 1
fi
if [ "$(git -C "$PGRUST_SOURCE_DIR" rev-parse HEAD 2>/dev/null || true)" != "$PGRUST_REF" ]; then
git -C "$PGRUST_SOURCE_DIR" fetch --depth 1 origin "$PGRUST_REF"
git -C "$PGRUST_SOURCE_DIR" checkout --detach FETCH_HEAD
fi
if rustc -vV | grep -q 'host: .*musl'; then
patch_file="$ROOT_DIR/patches/pgrust-musl-sem.patch"
if git -C "$PGRUST_SOURCE_DIR" apply --check "$patch_file" 2>/dev/null; then
git -C "$PGRUST_SOURCE_DIR" apply "$patch_file"
elif ! git -C "$PGRUST_SOURCE_DIR" apply --reverse --check "$patch_file" 2>/dev/null; then
echo "pgrust musl patch does not apply cleanly to $PGRUST_REF" >&2
exit 1
fi
fi
share_source="$PGRUST_SOURCE_DIR/vendor/postgres-18.3/share"
test -f "$share_source/postgres.bki" || {
echo "pgrust PostgreSQL 18.3 share tree is incomplete" >&2
exit 1
}
if [ "$PGRUST_SIZE_OPTIMIZED" = "1" ]; then
export CARGO_PROFILE_RELEASE_OPT_LEVEL=s
export CARGO_PROFILE_RELEASE_LTO=thin
fi
PGRUST_PGBINDIR=/opt/boosapi/pgrust/bin \
PGRUST_PGSHAREDIR=/opt/boosapi/pgrust/share \
CARGO_TARGET_DIR="$PGRUST_TARGET_DIR" \
cargo build \
--manifest-path "$PGRUST_SOURCE_DIR/Cargo.toml" \
--release --locked --bin postgres
staging="$PGRUST_OUTPUT_DIR.tmp-$$"
rm -rf "$staging"
mkdir -p "$staging/bin" "$staging/share"
cp "$PGRUST_TARGET_DIR/release/postgres" "$staging/bin/postgres"
cp -a "$share_source/." "$staging/share/"
cp "$PGRUST_SOURCE_DIR/LICENSE" "$staging/LICENSE.pgrust-AGPL-3.0"
printf '%s\n' \
"Repository: $PGRUST_REPOSITORY" \
"Commit: $PGRUST_REF" \
"License: AGPL-3.0" \
>"$staging/SOURCE"
chmod 755 "$staging/bin/postgres"
find "$staging/share" -type d -exec chmod 755 {} +
find "$staging/share" -type f -exec chmod 644 {} +
rm -rf "$PGRUST_OUTPUT_DIR"
mv "$staging" "$PGRUST_OUTPUT_DIR"
echo "pgrust runtime built at $PGRUST_OUTPUT_DIR"