#!/bin/sh export LC_ALL=C do_clone() { set -ex if ! test -e "$1" ; then git clone "$2" "$1" fi ( cd "$1" git remote set-url origin "$2" git fetch ) } do_clone_all() { do_clone "ffmpeg" "https://github.com/FFmpeg/FFmpeg.git" #do_clone "fribidi" "http://anongit.freedesktop.org/git/fribidi/fribidi.git" do_clone "libass" "https://github.com/libass/libass.git" do_clone "mpv" "https://github.com/mpv-player/mpv.git" } do_gitmaster() { set -ex ( cd "$1" git checkout origin/master^0 git remote prune origin ) } versort_with_prefix() { # Emulate sort -V using a known prefix. Filter out anything else. sed -n -e "s/^$1\([0-9]\)/\\1/p" |\ sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 |\ sed -e "s/^/$1/" # GNU version of the same: # grep "^$2[0-9]" | sort -V } do_releasetag() { ( cd "$1" version=`git tag | grep -v rc | grep -v dev | versort_with_prefix "$2" | tail -n 1` git checkout refs/tags/"$version"^0 ) } do_fixedref() { ( cd "$1" git checkout "$2"^0 ) } checkout_ffmpeg=do_gitmaster #checkout_fribidi=do_releasetag checkout_libass=do_gitmaster checkout_mpv=do_gitmaster checkout_all() { set -ex do_clone_all $checkout_ffmpeg ffmpeg 'n' #$checkout_fribidi fribidi '' $checkout_libass libass $checkout_mpv mpv 'v' } do_bootstrap() { scripts/mpv-bootstrap } do_update_debian_versions() { scripts/debian-update-versions $1 } if [ x"$1" != x"--skip-selfupdate" ]; then ( set -ex git pull --rebase ) exec "$0" --skip-selfupdate "$@" fi shift select_branch() { if [ -d config/ ] && [ -f config/"branch-$1" ]; then case `cat config/"branch-$1"` in master) echo do_gitmaster ;; *) # "release" is the defined value; but default anything else to it echo do_releasetag ;; esac else echo "$2" fi } checkout_ffmpeg=`select_branch ffmpeg $checkout_ffmpeg` checkout_mpv=`select_branch mpv $checkout_mpv` case "$1" in --master) checkout_ffmpeg=do_gitmaster #checkout_fribidi=do_gitmaster checkout_libass=do_gitmaster checkout_mpv=do_gitmaster ;; --release) checkout_ffmpeg=do_releasetag checkout_mpv=do_releasetag ;; '') ;; *) echo >&2 "$0 --master" echo >&2 "$0 --release" exit 0 ;; esac checkout_all do_update_debian_versions do_bootstrap