forked from libretro/Lakka-LibreELEC
104 lines
2.4 KiB
Bash
Executable File
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
|