deb update
This commit is contained in:
+76
-7
@@ -13,8 +13,11 @@ Usage:
|
||||
scripts/make_deb.sh VERSION
|
||||
|
||||
Environment:
|
||||
UCE_DEB_REVISION Debian package revision suffix (default: 1)
|
||||
UCE_DEB_ARCH Override package architecture
|
||||
UCE_DEB_REVISION Debian package revision suffix (default: 1)
|
||||
UCE_DEB_ARCH Override package architecture
|
||||
UCE_DEB_WEBROOT Public web root staged into the package (default: /var/www/html)
|
||||
UCE_DEB_BUNDLE_WASI_SDK Bundle pinned /opt/wasi-sdk into the package (default: 1)
|
||||
UCE_DEB_BUNDLE_WASMTIME Bundle /opt/wasmtime into the package (default: 1)
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -47,12 +50,37 @@ validate_version() {
|
||||
|
||||
copy_payload() {
|
||||
local destination="$1"
|
||||
local webroot="$2"
|
||||
local stage_dir="$3"
|
||||
local path
|
||||
for path in LICENSE README.md codesearch bin scripts site src; do
|
||||
for path in LICENSE README.md codesearch bin scripts src docs; do
|
||||
cp -a "$REPO_ROOT/$path" "$destination/"
|
||||
done
|
||||
mkdir -p "$destination/etc"
|
||||
mkdir -p "$destination/etc" "$stage_dir$webroot"
|
||||
cp -a "$REPO_ROOT/etc/uce" "$destination/etc/"
|
||||
cp -a "$REPO_ROOT/site/." "$stage_dir$webroot/"
|
||||
}
|
||||
|
||||
write_packaged_settings() {
|
||||
local output_file="$1"
|
||||
local webroot="$2"
|
||||
python3 - "$REPO_ROOT/etc/uce/settings.cfg" "$output_file" "$webroot" <<'PY'
|
||||
from pathlib import Path
|
||||
import sys
|
||||
src, dst, webroot = sys.argv[1:4]
|
||||
s = Path(src).read_text()
|
||||
replacements = {
|
||||
"SITE_DIRECTORY=site": f"SITE_DIRECTORY={webroot}",
|
||||
"WASM_CORE_PATH=/Code/uce.openfu.com/uce/bin/wasm/core.wasm": "WASM_CORE_PATH=/usr/lib/uce/bin/wasm/core.wasm",
|
||||
"HTTP_DOCUMENT_ROOT=": f"HTTP_DOCUMENT_ROOT={webroot}",
|
||||
}
|
||||
for old, new in replacements.items():
|
||||
if old in s:
|
||||
s = s.replace(old, new)
|
||||
if "WASM_COMPILE_SCRIPT=" not in s:
|
||||
s += "\nWASM_COMPILE_SCRIPT=scripts/compile_wasm_unit\n"
|
||||
Path(dst).write_text(s)
|
||||
PY
|
||||
}
|
||||
|
||||
write_control_file() {
|
||||
@@ -69,11 +97,49 @@ write_control_file() {
|
||||
"$DEB_ASSET_DIR/control.in" > "$output_file"
|
||||
}
|
||||
|
||||
bundle_wasi_sdk() {
|
||||
local stage_dir="$1"
|
||||
local wasi_root="${WASI_SDK:-/opt/wasi-sdk}"
|
||||
if [[ "${UCE_DEB_BUNDLE_WASI_SDK:-1}" != "1" ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ ! -x "$wasi_root/bin/clang++" || ! -x "$wasi_root/bin/wasm-ld" || ! -x "$wasi_root/bin/llvm-nm" ]]; then
|
||||
echo "UCE_DEB_BUNDLE_WASI_SDK=1 but WASI_SDK does not point at a complete SDK: $wasi_root" >&2
|
||||
exit 1
|
||||
fi
|
||||
local resolved
|
||||
resolved="$(readlink -f "$wasi_root")"
|
||||
local base
|
||||
base="$(basename "$resolved")"
|
||||
mkdir -p "$stage_dir/opt"
|
||||
cp -a "$resolved" "$stage_dir/opt/$base"
|
||||
ln -sfn "$base" "$stage_dir/opt/wasi-sdk"
|
||||
}
|
||||
|
||||
bundle_wasmtime() {
|
||||
local stage_dir="$1"
|
||||
local wasmtime_root="${WASMTIME_HOME:-/opt/wasmtime}"
|
||||
if [[ "${UCE_DEB_BUNDLE_WASMTIME:-1}" != "1" ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ ! -f "$wasmtime_root/include/wasmtime.hh" || ! -f "$wasmtime_root/lib/libwasmtime.so" ]]; then
|
||||
echo "UCE_DEB_BUNDLE_WASMTIME=1 but WASMTIME_HOME does not point at a complete C API tree: $wasmtime_root" >&2
|
||||
exit 1
|
||||
fi
|
||||
local resolved
|
||||
resolved="$(readlink -f "$wasmtime_root")"
|
||||
local base
|
||||
base="$(basename "$resolved")"
|
||||
mkdir -p "$stage_dir/opt"
|
||||
cp -a "$resolved" "$stage_dir/opt/$base"
|
||||
ln -sfn "$base" "$stage_dir/opt/wasmtime"
|
||||
}
|
||||
|
||||
write_md5sums() {
|
||||
local stage_dir="$1"
|
||||
(
|
||||
cd "$stage_dir"
|
||||
find usr etc lib -type f -print0 | sort -z | xargs -0 md5sum > DEBIAN/md5sums
|
||||
find usr etc lib opt -type f -print0 2>/dev/null | sort -z | xargs -0 --no-run-if-empty md5sum > DEBIAN/md5sums
|
||||
)
|
||||
}
|
||||
|
||||
@@ -106,6 +172,7 @@ PACKAGE_BASENAME="${PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCH}"
|
||||
STAGE_DIR="$REPO_ROOT/pkg/$PACKAGE_BASENAME"
|
||||
DEBIAN_DIR="$STAGE_DIR/DEBIAN"
|
||||
INSTALL_ROOT="$STAGE_DIR/usr/lib/uce"
|
||||
WEBROOT="${UCE_DEB_WEBROOT:-/var/www/html}"
|
||||
DIST_DIR="$REPO_ROOT/dist"
|
||||
OUTPUT_DEB="$DIST_DIR/$PACKAGE_BASENAME.deb"
|
||||
|
||||
@@ -117,9 +184,11 @@ bash "$REPO_ROOT/scripts/build_linux.sh"
|
||||
rm -rf -- "$STAGE_DIR"
|
||||
mkdir -p "$DEBIAN_DIR" "$INSTALL_ROOT" "$STAGE_DIR/etc/uce" "$STAGE_DIR/lib/systemd/system" "$DIST_DIR"
|
||||
|
||||
copy_payload "$INSTALL_ROOT"
|
||||
copy_payload "$INSTALL_ROOT" "$WEBROOT" "$STAGE_DIR"
|
||||
bundle_wasi_sdk "$STAGE_DIR"
|
||||
bundle_wasmtime "$STAGE_DIR"
|
||||
|
||||
install -m 0644 "$REPO_ROOT/etc/uce/settings.cfg" "$STAGE_DIR/etc/uce/settings.cfg"
|
||||
write_packaged_settings "$STAGE_DIR/etc/uce/settings.cfg" "$WEBROOT"
|
||||
install -m 0644 "$DEB_ASSET_DIR/uce.service" "$STAGE_DIR/lib/systemd/system/uce.service"
|
||||
install -m 0644 "$DEB_ASSET_DIR/conffiles" "$DEBIAN_DIR/conffiles"
|
||||
install -m 0755 "$DEB_ASSET_DIR/postinst" "$DEBIAN_DIR/postinst"
|
||||
|
||||
Reference in New Issue
Block a user