按规划持续工作
This commit is contained in:
@@ -5,6 +5,9 @@ ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
UPSTREAM_DIR="$ROOT_DIR/../linuxcnc"
|
||||
VENDOR_DIR="$ROOT_DIR/vendor/linuxcnc"
|
||||
MANIFEST_FILE="$ROOT_DIR/tools/source-manifest.txt"
|
||||
BUILD_DIR="$ROOT_DIR/build/native"
|
||||
CACHE_KEY_FILE="$BUILD_DIR/vendor-sync.input.sha256"
|
||||
CACHE_OK_FILE="$BUILD_DIR/vendor-sync.ok"
|
||||
|
||||
if [[ ! -d "$UPSTREAM_DIR" ]]; then
|
||||
echo "missing upstream directory: $UPSTREAM_DIR" >&2
|
||||
@@ -21,6 +24,36 @@ if [[ ! -f "$MANIFEST_FILE" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
vendor_sync_fingerprint() {
|
||||
{
|
||||
git -C "$UPSTREAM_DIR" rev-parse HEAD
|
||||
sha256sum \
|
||||
"$ROOT_DIR/tools/verify_vendor_sync.sh" \
|
||||
"$MANIFEST_FILE"
|
||||
while IFS= read -r src_rel; do
|
||||
[[ -z "$src_rel" ]] && continue
|
||||
[[ "${src_rel:0:1}" == "#" ]] && continue
|
||||
printf '%s\0' "$UPSTREAM_DIR/$src_rel"
|
||||
done < "$MANIFEST_FILE" | xargs -0 -r sha256sum 2>/dev/null || true
|
||||
while IFS= read -r src_rel; do
|
||||
[[ -z "$src_rel" ]] && continue
|
||||
[[ "${src_rel:0:1}" == "#" ]] && continue
|
||||
printf '%s\0' "$VENDOR_DIR/$src_rel"
|
||||
done < "$MANIFEST_FILE" | xargs -0 -r sha256sum 2>/dev/null || true
|
||||
find "$VENDOR_DIR" -type f -printf 'vendor-list:%P\n' | sort
|
||||
} | sha256sum | awk '{ print $1 }'
|
||||
}
|
||||
|
||||
VENDOR_SYNC_FINGERPRINT="$(vendor_sync_fingerprint)"
|
||||
if [[ -f "$CACHE_KEY_FILE" && -f "$CACHE_OK_FILE" ]] &&
|
||||
[[ "$(tr -d '[:space:]' < "$CACHE_KEY_FILE")" == "$VENDOR_SYNC_FINGERPRINT" ]] &&
|
||||
[[ "$(tr -d '[:space:]' < "$CACHE_OK_FILE")" == "$VENDOR_SYNC_FINGERPRINT" ]]; then
|
||||
echo "vendor sync up to date"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$TMP_DIR"' EXIT
|
||||
|
||||
@@ -82,4 +115,6 @@ while IFS= read -r src_rel; do
|
||||
fi
|
||||
done < "$MANIFEST_SORTED"
|
||||
|
||||
printf '%s\n' "$VENDOR_SYNC_FINGERPRINT" > "$CACHE_KEY_FILE"
|
||||
printf '%s\n' "$VENDOR_SYNC_FINGERPRINT" > "$CACHE_OK_FILE"
|
||||
echo "vendor sync validation complete"
|
||||
|
||||
Reference in New Issue
Block a user