diff --git a/scripts/make_deb.sh b/scripts/make_deb.sh index c62652f..6a32fc3 100755 --- a/scripts/make_deb.sh +++ b/scripts/make_deb.sh @@ -5,15 +5,17 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" DEB_ASSET_DIR="$SCRIPT_DIR/deb" PACKAGE_NAME="uce" -REVISION="${UCE_DEB_REVISION:-1}" +REVISION="${UCE_DEB_REVISION:-}" usage() { cat <<'EOF' Usage: - scripts/make_deb.sh VERSION + scripts/make_deb.sh [VERSION] + +When VERSION is omitted, scripts/make_deb.sh reads VERSION from version.txt. Environment: - UCE_DEB_REVISION Debian package revision suffix (default: 1) + UCE_DEB_REVISION Optional Debian package revision suffix 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) @@ -42,7 +44,7 @@ resolve_arch() { validate_version() { local version="$1" - if [[ ! "$version" =~ ^[0-9][A-Za-z0-9.+:~]*$ ]]; then + if [[ ! "$version" =~ ^[0-9][A-Za-z0-9.+:~-]*$ ]]; then echo "Invalid Debian version string: $version" >&2 exit 1 fi @@ -143,12 +145,22 @@ write_md5sums() { ) } -if [[ $# -ne 1 ]]; then +if [[ $# -gt 1 ]]; then usage >&2 exit 1 fi -VERSION="$1" +if [[ $# -eq 1 ]]; then + VERSION="$1" +else + if [[ ! -r "$REPO_ROOT/version.txt" ]]; then + echo "Missing version.txt and no VERSION argument supplied" >&2 + exit 1 + fi + # shellcheck disable=SC1091 + . "$REPO_ROOT/version.txt" + VERSION="${VERSION:-}" +fi validate_version "$VERSION" require_command bash @@ -167,7 +179,10 @@ require_command cp require_command sort ARCH="$(resolve_arch)" -PACKAGE_VERSION="${VERSION}-${REVISION}" +PACKAGE_VERSION="$VERSION" +if [[ -n "$REVISION" ]]; then + PACKAGE_VERSION="${PACKAGE_VERSION}-${REVISION}" +fi PACKAGE_BASENAME="${PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCH}" STAGE_DIR="$REPO_ROOT/pkg/$PACKAGE_BASENAME" DEBIAN_DIR="$STAGE_DIR/DEBIAN" diff --git a/scripts/make_rpm.sh b/scripts/make_rpm.sh index bb78990..75cdf0a 100755 --- a/scripts/make_rpm.sh +++ b/scripts/make_rpm.sh @@ -10,10 +10,12 @@ WEBROOT="${UCE_RPM_WEBROOT:-/var/www/html}" usage() { cat <<'EOF' Usage: - scripts/make_rpm.sh VERSION + scripts/make_rpm.sh [VERSION] + +When VERSION is omitted, scripts/make_rpm.sh reads VERSION, MAJOR, and RELEASE from version.txt. Environment: - UCE_RPM_RELEASE RPM release suffix (default: 1) + UCE_RPM_RELEASE Override RPM release suffix (default: RELEASE from version.txt) UCE_RPM_ARCH Override RPM architecture UCE_RPM_WEBROOT Public web root staged into the package (default: /var/www/html) UCE_RPM_BUNDLE_WASI_SDK Bundle pinned /opt/wasi-sdk into the package (default: 1) @@ -115,12 +117,38 @@ bundle_wasmtime() { ln -sfn "$base" "$stage_dir/opt/wasmtime" } -if [[ $# -ne 1 ]]; then +if [[ $# -gt 1 ]]; then usage >&2 exit 1 fi -VERSION="$1" +FULL_VERSION="" +if [[ $# -eq 1 ]]; then + FULL_VERSION="$1" + RPM_VERSION="${FULL_VERSION%%-*}" + RPM_RELEASE_PART="${FULL_VERSION#*-}" + if [[ "$RPM_RELEASE_PART" == "$FULL_VERSION" ]]; then + RPM_RELEASE_PART="$RELEASE" + fi +else + if [[ ! -r "$REPO_ROOT/version.txt" ]]; then + echo "Missing version.txt and no VERSION argument supplied" >&2 + exit 1 + fi + # shellcheck disable=SC1091 + . "$REPO_ROOT/version.txt" + FULL_VERSION="${VERSION:-}" + RPM_VERSION="${MAJOR:-${FULL_VERSION%%-*}}" + RPM_RELEASE_PART="${RELEASE:-${FULL_VERSION#*-}}" +fi + +if [[ -z "$FULL_VERSION" || -z "$RPM_VERSION" || -z "$RPM_RELEASE_PART" ]]; then + echo "Could not derive RPM version from VERSION/MAJOR/RELEASE" >&2 + exit 1 +fi +RPM_RELEASE_PART="${RPM_RELEASE_PART//-/_}" +VERSION="$RPM_VERSION" +RELEASE="${UCE_RPM_RELEASE:-$RPM_RELEASE_PART}" validate_version "$VERSION" require_command bash @@ -133,7 +161,7 @@ require_command python3 require_command readlink ARCH="$(resolve_arch)" -PACKAGE_VERSION="${VERSION}-${RELEASE}" +PACKAGE_VERSION="$FULL_VERSION" BUILD_ROOT="$REPO_ROOT/pkg/rpm-build" STAGE_DIR="$BUILD_ROOT/stage" RPMBUILD_DIR="$BUILD_ROOT/rpmbuild" @@ -144,7 +172,7 @@ DIST_DIR="$REPO_ROOT/dist" bash "$REPO_ROOT/scripts/build_linux.sh" rm -rf -- "$BUILD_ROOT" -mkdir -p "$INSTALL_ROOT" "$STAGE_DIR/etc/uce" "$STAGE_DIR/usr/lib/systemd/system" "$RPMBUILD_DIR"/{BUILD,RPMS,SOURCES,SPECS,SRPMS} "$DIST_DIR" +mkdir -p "$INSTALL_ROOT" "$STAGE_DIR/etc/uce" "$STAGE_DIR/usr/lib/systemd/system" "$STAGE_DIR/var/cache/uce" "$STAGE_DIR/var/lib/uce" "$RPMBUILD_DIR"/{BUILD,RPMS,SOURCES,SPECS,SRPMS} "$DIST_DIR" copy_payload "$INSTALL_ROOT" "$WEBROOT" "$STAGE_DIR" bundle_wasi_sdk "$STAGE_DIR" @@ -158,6 +186,8 @@ install -m 0644 "$REPO_ROOT/scripts/deb/uce.service" "$STAGE_DIR/usr/lib/systemd ) cat > "$SPEC_FILE" <