Created
November 28, 2018 11:03
-
-
Save bvaudour/f082c88488e9c948b00f96a15be6e6bd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Make sure the user is not runing as superuser | |
if [ "$UID" = "0" ]; then | |
echo 'Do not run this script as root or via sudo. Run it as your normal user.' >&2 | |
exit 1 | |
fi | |
available () { | |
command -v $1 >/dev/null 2>&1 | |
} | |
# Make sure we have wget or curl | |
if available wget; then | |
SILENT_DL="wget -qO-" | |
LOUD_DL="wget" | |
elif available curl; then | |
SILENT_DL="curl -sL" | |
LOUD_DL="curl -O" | |
else | |
echo "Install Wget or cURL" >&2 | |
exit 1 | |
fi | |
# Set temp dir | |
TMP=${TMP:-/tmp} | |
# Set staging dir | |
STAGINGDIR=$TMP/chromium-codecs-ffmpeg-extra-staging | |
# Setup Arch | |
case $(uname -m) in | |
x86_64) ARCH=x86_64; DEB_ARCH=amd64; REPO=http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/ ;; | |
i?86) ARCH=i386; DEB_ARCH=i386; REPO=http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/ ;; | |
armhf) ARCH=armhf; DEB_ARCH=armhf; REPO=http://ports.ubuntu.com/ubuntu-ports/pool/universe/c/chromium-browser/ ;; | |
arm64) ARCH=arm64; DEB_ARCH=arm64; REPO=http://ports.ubuntu.com/ubuntu-ports/pool/universe/c/chromium-browser/ ;; | |
esac | |
# Work out the VERSION | |
# Limit the UBUNTU version to 16.04 to avoid the glibc bump in 18.04, so that this works for older distros | |
UBUNTU_PACKAGE=$(${SILENT_DL} $REPO | sed -rn "s/.*(chromium-codecs-ffmpeg-extra_([0-9]+\.){3}[0-9]+-[0-9]ubuntu[0-9]\.16\.04\.[1-9]_$DEB_ARCH.deb).*/\1/p" | sort | tail -n 1) | |
## The original match was | |
## UBUNTU_PACKAGE=$(${SILENT_DL} $REPO | sed -rn "s/.*(chromium-codecs-ffmpeg-extra_([0-9]+\.){3}[0-9]+-[0-9]ubuntu[0-9]\.([0-9]{2}\.){2}[0-9\.]*_$DEB_ARCH.deb).*/\1/p" | sort | tail -n 1) | |
VERSION=$(echo "${UBUNTU_PACKAGE}" | sed -rn "s/.*_(([0-9]+\.){3}[0-9]+)-.*/\1/p") | |
# Error out if $VERISON is unset, e.g. because previous command failed | |
if [ -z "$VERSION" ]; then | |
echo "Could not work out the latest version; exiting" >&2 | |
exit 1 | |
fi | |
# Don't start repackaging if the same version is already installed | |
if [ -r "$HOME/.local/lib/vivaldi/chromium-codecs-ffmpeg-extra-version.txt" ]; then | |
. "$HOME/.local/lib/vivaldi/chromium-codecs-ffmpeg-extra-version.txt" | |
if [ "$INSTALLED_VERSION" = "$VERSION" ]; then | |
echo "The latest chromium-codecs-ffmpeg-extra ($VERSION) is already installed" | |
exit 0 | |
fi | |
fi | |
# Now we could screw things up so exit on first error | |
set -e | |
# If the staging directory is already present from the past, clear it down | |
# and re-create it. | |
if [ -d "$STAGINGDIR" ]; then | |
rm -fr "$STAGINGDIR" | |
fi | |
mkdir "$STAGINGDIR" | |
cd "$STAGINGDIR" | |
# Now get the deb package | |
$LOUD_DL "$REPO$UBUNTU_PACKAGE" | |
# Extract the contents of the chromium-codecs-ffmpeg-extra package | |
if available bsdtar; then | |
DEB_EXTRACT_COMMAND='bsdtar xOf' | |
elif available ar; then | |
DEB_EXTRACT_COMMAND='ar p' | |
else | |
echo 'You must install BSD tar or GNU binutils to use this script.' >&2 | |
exit 1 | |
fi | |
$DEB_EXTRACT_COMMAND ${UBUNTU_PACKAGE} data.tar.xz | tar xJf - ./usr/lib/chromium-browser/libffmpeg.so --strip 4 | |
# Check the libffmpeg.so dependencies are resolved | |
if LANGUAGE=en ldd libffmpeg.so 2>&1 | grep -qm1 'not \(a dynamic executable\|found\)'; then | |
cat <<EOF >&2 | |
It is not possible to use this alternative libffmpeg on your system. | |
Let us know via a post in our forums, mentioning your distro and distro | |
version: | |
https://forum.vivaldi.net/category/35/vivaldi-browser-for-linux | |
EOF | |
exit 1 | |
fi | |
# Note the version number for future reference, during upgrades | |
echo "INSTALLED_VERSION=$VERSION" > chromium-codecs-ffmpeg-extra-version.txt | |
# Install the files | |
install -Dm644 libffmpeg.so "$HOME/.local/lib/vivaldi/libffmpeg.so" | |
install -Dm644 chromium-codecs-ffmpeg-extra-version.txt "$HOME/.local/lib/vivaldi/chromium-codecs-ffmpeg-extra-version.txt" | |
# Tell the user we are done | |
cat <<EOF | |
The following files were installed onto your system: | |
$HOME/.local/lib/vivaldi/libffmpeg.so | |
$HOME/.local/lib/vivaldi/chromium-codecs-ffmpeg-extra-version.txt | |
Restart Vivaldi and test H.264/MP4 support via this page: | |
http://www.quirksmode.org/html5/tests/video.html | |
EOF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment