summaryrefslogtreecommitdiff
path: root/stacks/crdop/scripts/apply-vendor-patches.sh
blob: da62bf59090e3a35a6b05cefb777e4f9f8804787 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env bash
# Apply CRDOP patch series — only if vendor tree is still pristine upstream.
# Released CRDOP commits ship vendor/ardopcf with patches already integrated.
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
VENDOR="${ROOT}/vendor/ardopcf"
PATCH_DIR="${ROOT}/patches/ardopcf"
STAMP="${VENDOR}/.crdop-patches-applied"
MARKER="${VENDOR}/src/common/ARDOPC.c"

if [[ ! -d "${VENDOR}/src" ]]; then
    echo "error: ${VENDOR} missing" >&2
    exit 1
fi

if grep -q 'CRDOP src/crdop_version.c' "${MARKER}" 2>/dev/null; then
    date -u +'%Y-%m-%dT%H:%M:%SZ' > "${STAMP}"
    echo "CRDOP vendor already integrated ($(cat "${STAMP}"))"
    exit 0
fi

if [[ ! -d "${PATCH_DIR}" ]] || ! compgen -G "${PATCH_DIR}/*.patch" >/dev/null; then
    echo "error: no patches in ${PATCH_DIR}" >&2
    exit 1
fi

cd "${VENDOR}"
for p in "${PATCH_DIR}"/*.patch; do
    echo "applying ${p#${ROOT}/}"
    git apply --check "${p}" 2>/dev/null || patch -p1 --forward -r - < "${p}"
    git apply "${p}" 2>/dev/null || patch -p1 --forward < "${p}"
done

date -u +'%Y-%m-%dT%H:%M:%SZ' > "${STAMP}"
echo "CRDOP patches applied ($(cat "${STAMP}"))"
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com