Script for automated download & build & install mpv-git to /opt.
This is a take enough many time.
Warning: need to install many depends-dev for build. You may remove their after install.
AS IS, "error" resolve only you, as all work for me.
#!/bin/bash
#install DEPENDS
echo "Before execute the script, need to install DEPENDS-dev for fmpeg and mpv build. After install mpv-git you may remove DEPENDS-dev manually if this need (see string 263 of this script)."
echo ""
echo -n "Install? (y/N)"
read item
case "$item" in
y|Y) echo "Enter «y», install..."
for i in lcms2-dev xorg-libXv-dev xorg-libX11-dev xorg-libXext-dev glibc-base-dev libxcb-dev alsa-lib-dev libsdl2-dev liblzma-dev bzlib zlib-dev libjpeg-dev libv4l-dev libdrm-dev xorg-libXinerama-dev xorg-libXrandr-dev mesa-dev libegl-mesa-dev xorg-libXau-dev xorg-libXdmcp-dev libpng-dev glib-dev pcre-dev libxml2-dev libtasn1-dev nettle-dev gmp-dev libtinfo-dev xorg-libXrender-dev xorg-libXdamage-dev xorg-libXfixes-dev libxcb-dev xorg-libXxf86vm-dev udev-dev
do tazpkg --forced -gi $i
done
;;
n|N) echo "Enter «n», exit..."
exit 0
;;
*) echo "Nothing enter, default..."
;;
esac
#start script
set -e
cd /tmp
#variables and functions
CFGFLAGS_ffmpeg=""
CFGFLAGS_mpv=""
if [ "x$CORES" == "x" ]; then
CORES=$(cat /proc/cpuinfo | grep processor | wc -l)
fi
dvdread_version=5.0.0
dvdnav_version=5.0.1
lua_version=5.2.4
fontconfig_version=2.12.1
freetype2_version=2.7.1
libass_version=0.13.6
fribidi_version=0.19.7
ffmpeg_version=3.2.4
mpv_version=0.24.0
get_git() {
if [ -d $1 ]; then
cd $1
git pull
cd ..
else
f=""
[ $FAST_GIT_CLONE -eq 1 ] && f="$f --depth=1"
git clone $f $2 $1
fi
}
get_svn() {
if [ -d $1 ]; then
cd $1
svn up
cd ..
else
svn co $2 $1
fi
}
get_hg() {
if [ -d $1 ]; then
cd $1
hg pull
hg update
cd ..
else
hg clone $2 $1
fi
}
dl_and_extract() {
if [ ! -d $1 ]; then
if [ "x$4" != "x" ]; then
arname=$4.$3
else
arname=archive.$3
rm -f $arname
fi
[ -f $arname ] || wget "$2" -O $arname
tar xvf $arname
[ "x$4" != "x" ] && mv $4 $1
fi
}
dircd() {
mkdir -p $1
cd $1
}
conf_mk_mkinstall() {
dircd $1
if [ "x$3" != "x" ]; then
cd $SRC/$1
/bin/bash -c "$3"
cd -
fi
$SRC/$1/configure $2 --prefix=$PRFX
make -j$CORES
make install
cd ..
}
#downloads sources
echo "== Retrieving sources"
dircd src
echo "=== mpv"
GIT_SSL_NO_VERIFY=true get_git mpv https://github.com/mpv-player/mpv.git
echo "=== ffmpeg"
GIT_SSL_NO_VERIFY=true get_git ffmpeg https://github.com/FFmpeg/FFmpeg.git
echo "=== freetype2"
dl_and_extract freetype2 http://download.savannah.gnu.org/releases/freetype/freetype-${freetype2_version}.tar.bz2 tar.bz2 freetype-${freetype2_version}
echo "=== fribidi"
dl_and_extract fribidi http://fribidi.org/download/fribidi-${fribidi_version}.tar.bz2 tar.bz2 fribidi-${fribidi_version}
echo "=== fontconfig"
dl_and_extract fontconfig https://www.freedesktop.org/software/fontconfig/release/fontconfig-${fontconfig_version}.tar.bz2 tar.bz2 fontconfig-${fontconfig_version}
echo "=== libass"
dl_and_extract libass https://github.com/libass/libass/releases/download/${libass_version}/libass-${libass_version}.tar.gz tar.gz libass-${libass_version}
echo "=== lua"
dl_and_extract lua http://www.lua.org/ftp/lua-${lua_version}.tar.gz tar.gz lua-${lua_version}
sed -i 's/$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"/$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"/g' <code>pwd</code>/lua/src/Makefile
echo "=== libdvdcss"
GIT_SSL_NO_VERIFY=true get_git libdvdcss http://code.videolan.org/videolan/libdvdcss.git
echo "=== libdvdread"
dl_and_extract libdvdread http://www.videolan.org/pub/videolan/libdvdread/${dvdread_version}/libdvdread-${dvdread_version}.tar.bz2 tar.bz2 libdvdread-${dvdread_version}
echo "=== libdvdnav"
dl_and_extract libdvdnav http://www.videolan.org/pub/videolan/libdvdnav/${dvdnav_version}/libdvdnav-${dvdnav_version}.tar.bz2 tar.bz2 libdvdnav-${dvdnav_version}
#building
echo "== Building"
cd ..
mkdir -p target
export PRFX=/tmp/target
export SRC=/tmp/src
export BLD=/tmp/build
export PKG_CONFIG_PATH=$PRFX/lib/pkgconfig
export LD_LIBRARY_PATH=$PRFX/lib
export PATH=$PRFX/bin:$PATH
dircd build
echo "=== fribidi"
conf_mk_mkinstall fribidi "--enable-static --disable-shared --without-glib"
echo "=== freetype2"
conf_mk_mkinstall freetype2 "--disable-static"
echo "=== fontconfig"
conf_mk_mkinstall fontconfig "--disable-docs --enable-libxml2"
echo "=== libass"
conf_mk_mkinstall libass "--enable-static --disable-shared"
echo "=== libdvdcss"
conf_mk_mkinstall libdvdcss "" "autoreconf -i"
echo "=== libdvdread"
conf_mk_mkinstall libdvdread ""
echo "=== libdvdnav"
conf_mk_mkinstall libdvdnav ""
echo "=== lua"
cd $SRC/lua
make linux -j$CORES
make INSTALL_TOP=$PRFX install
cat >$PRFX/lib/pkgconfig/lua.pc <<MEOW # Create a pkgconfig file for mpv to find lua
V=5.2
R=$lua_version
prefix=$PRFX
INSTALL_BIN=\${prefix}/bin
INSTALL_INC=\${prefix}/include
INSTALL_LIB=\${prefix}/lib
INSTALL_MAN=\${prefix}/man/man1
INSTALL_LMOD=\${prefix}/share/lua/\${V}
INSTALL_CMOD=\${prefix}/lib/lua/\${V}
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: Lua
Description: An Extensible Extension Language
Version: \${R}
Requires:
Libs: -L\${libdir} -llua -lm
Cflags: -I\${includedir}
MEOW
cd -
echo "=== ffmpeg"
dircd ffmpeg
CONFF="--enable-libass --enable-libfreetype --enable-gnutls --disable-debug --disable-doc --enable-pic --enable-static --disable-shared --enable-nonfree --enable-runtime-cpudetect --enable-avresample --enable-pthreads --enable-small"
$SRC/ffmpeg/configure $CFGFLAGS_ffmpeg --prefix=$PRFX --cc=gcc-63 $CONFF
unset CONFF
make -j$CORES
make install
cd ..
echo "=== mpv"
dircd mpv
cd $SRC/mpv
./bootstrap.py
./waf configure $CFGFLAGS_mpv \
--prefix=$PRFX \
--lua=52 \
--enable-sdl2
./waf build -j$CORES
./waf install
cd -
#build tazpkg mpv-git
mkdir -p /tmp/mpv-git
mkdir -p /tmp/mpv-git/fs/
mkdir -p /tmp/mpv-git/fs/etc
mkdir -p /tmp/mpv-git/fs/etc/mpv
cp $SRC/mpv/etc/*.conf /tmp/mpv-git/fs/etc/mpv
mkdir -p /tmp/mpv-git/fs/opt
mkdir -p /tmp/mpv-git/fs/opt/mpv-git
cp $PRFX/bin/mpv /tmp/mpv-git/fs/opt/mpv-git/mpv
mkdir -p /tmp/mpv-git/fs/opt/mpv-git/lib
cp -a $PRFX/lib/*so* /tmp/mpv-git/fs/opt/mpv-git/lib
mkdir -p /tmp/mpv-git/fs/usr
mkdir -p /tmp/mpv-git/fs/usr/local
mkdir -p /tmp/mpv-git/fs/usr/local/bin
echo "#!/bin/sh" > /tmp/mpv-git/fs/usr/local/bin/mpv-git
echo "LD_LIBRARY_PATH=\"/opt/mpv-git/lib\" exec \"/opt/mpv-git/mpv\" \"\$@\"" >> /tmp/mpv-git/fs/usr/local/bin/mpv-git
chmod a+x /tmp/mpv-git/fs/usr/local/bin/mpv-git
mkdir -p /tmp/mpv-git/fs/usr/local/share
mkdir -p /tmp/mpv-git/fs/usr/local/share/applications
cp $PRFX/share/applications/mpv.desktop /tmp/mpv-git/fs/usr/local/share/applications/mpv-git.desktop
sed -i "s/mpv/mpv-git/g" /tmp/mpv-git/fs/usr/local/share/applications/mpv-git.desktop
mkdir -p /tmp/mpv-git/fs/usr/local/share/icons
cp -a $PRFX/share/icons/* /tmp/mpv-git/fs/usr/local/share/icons
cat >/tmp/mpv-git/receipt <<MEOW
# SliTaz package receipt
PACKED_SIZE="12.0K"
UNPACKED_SIZE="8.0K"
PACKAGE="mpv-git"
VERSION="3"
CATEGORY="multimedia"
SHORT_DESC="Multimedia player"
MAINTAINER=""
DEPENDS="lcms2 xorg-libXv xorg-libX11 xorg-libXext glibc-base libxcb alsa-lib libsdl2 liblzma bzlib zlib libjpeg libv4l libdrm xorg-libXinerama xorg-libXrandr mesa libegl-mesa xorg-libXau xorg-libXdmcp libpng glib pcre libxml2 libtasn1 nettle gmp libtinfo xorg-libXrender xorg-libXdamage xorg-libXfixes libxcb xorg-libXxf86vm udev lua"
PROVIDE="mpv"
# Rules to configure and make the package.
#compile_rules()
#{
#}
# Rules to gen a SliTaz package suitable for Tazpkg.
#genpkg_rules()
#{
# mkdir -p $fs/usr
# cp -a $_pkg/usr/bin $fs/usr
#}
MEOW
cd /tmp
tazpkg pack mpv-git
tazpkg -i mpv-git.tazpkg
rm mpv-git.tazpkg
#clean work directory and tmp
rm -rf /tmp/target
rm -rf /tmp/src
rm -rf /tmp/build
echo "Done."