Add build/install scripts
This commit is contained in:
46
scripts/apply-patches.sh
Executable file
46
scripts/apply-patches.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
PATCHDIR="${ROOT}/patches"
|
||||
|
||||
usage() {
|
||||
cat <<USAGE
|
||||
Usage: $0
|
||||
Applies patches/*.patch to the working tree (idempotent).
|
||||
USAGE
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$ROOT"
|
||||
|
||||
if [[ ! -d "$PATCHDIR" ]]; then
|
||||
echo "ERROR: patches/ directory not found at: $PATCHDIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Apply patches only if they are not already applied.
|
||||
# We use --dry-run to test applicability; if it fails, we assume it's already applied.
|
||||
shopt -s nullglob
|
||||
patches=( "$PATCHDIR"/000[1-4]-*.patch )
|
||||
#patches=( "$PATCHDIR"/*.patch )
|
||||
if (( ${#patches[@]} == 0 )); then
|
||||
echo "ERROR: no patches found in $PATCHDIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for p in "${patches[@]}"; do
|
||||
echo "==> Checking $p"
|
||||
if patch --dry-run -p1 < "$p" >/dev/null 2>&1; then
|
||||
echo "==> Applying $(basename "$p")"
|
||||
patch -p1 < "$p"
|
||||
else
|
||||
echo "==> Skipping $(basename "$p") (already applied or does not apply cleanly)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user