Lakka-LibreELEC/tools/ffmpeg/gen-patches.sh

104 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# base ffmpeg version
FFMPEG_REPO="git://source.ffmpeg.org/ffmpeg.git"
FFMPEG_VERSION="n6.0"
ALL_FEATURE_SETS="v4l2-drmprime v4l2-request libreelec rpi vf-deinterlace-v4l2m2m"
if [ $# -eq 0 ]; then
echo "usage: $0 all|featureset [githash]"
echo "available feature sets: ${ALL_FEATURE_SETS}"
exit 1
fi
FFMPEG_ROOT="$(pwd)"
LE_ROOT="$(cd $(dirname $0)/../.. ; pwd)"
create_patch() {
FEATURE_SET="$1"
REFTYPE="branch"
BASE_REPO="${FFMPEG_REPO}"
BASE_VERSION="${FFMPEG_VERSION}"
PATCH_CREATE_DIFF="no"
case "${FEATURE_SET}" in
v4l2-drmprime|v4l2-request|vf-deinterlace-v4l2m2m)
REPO="https://github.com/jernejsk/FFmpeg"
REFSPEC="${FEATURE_SET}-${FFMPEG_VERSION}"
;;
libreelec)
REPO="https://github.com/LibreELEC/FFmpeg"
REFSPEC="6.0-libreelec-misc"
;;
rpi)
REPO="https://github.com/jc-kynesim/rpi-ffmpeg"
REFSPEC="test/4.4.1/main"
PATCH_CREATE_DIFF="yes"
;;
kodi)
REPO="${KODI_FFMPEG_REPO}"
REFSPEC="${KODI_FFMPEG_VERSION}"
REFTYPE="tag"
;;
*)
echo "illegal feature set ${FEATURE_SET}"
exit 1
;;
esac
# get base ffmpeg version
git fetch "${BASE_REPO}" "${BASE_VERSION}"
BASE_REV=$(git rev-parse FETCH_HEAD)
PATCH_DIR="packages/multimedia/ffmpeg/patches/${FEATURE_SET}"
PATCH_FILE="${PATCH_DIR}/ffmpeg-001-${FEATURE_SET}.patch"
mkdir -p "${LE_ROOT}/${PATCH_DIR}"
git fetch "${REPO}" "${REFSPEC}"
if [ $# -ge 2 ]; then
REV="$2"
else
REV=$(git rev-parse FETCH_HEAD)
fi
BASE_REV=$(git merge-base "${BASE_REV}" "${REV}")
if [ -f "${LE_ROOT}/${PATCH_FILE}" ]; then
ACTION="update"
else
ACTION="create"
fi
if [ "${PATCH_CREATE_DIFF}" = "yes" ]; then
# create diff in case format-patch doesn't work, eg when we have non-linear history
git diff "${BASE_REV}..${REV}" > "${LE_ROOT}/${PATCH_FILE}"
else
git format-patch --stdout --no-signature "${BASE_REV}..${REV}" > "${LE_ROOT}/${PATCH_FILE}"
fi
MSG=$(mktemp)
cat << EOF > "${MSG}"
ffmpeg: ${ACTION} ${FEATURE_SET} patch
Patch created using revisions ${BASE_REV:0:7}..${REV:0:7}
from ${REFTYPE} ${REFSPEC} of ${REPO}
EOF
cd "${LE_ROOT}"
git add "${PATCH_FILE}"
git commit -F "${MSG}" ${GIT_COMMIT_ARGS}
cd "${FFMPEG_ROOT}"
rm "${MSG}"
}
if [ "$1" = "all" ]; then
for SET in ${ALL_FEATURE_SETS}; do
create_patch "${SET}"
done
else
create_patch "$@"
fi