Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Discourage Ubuntu users from using this script, since they can (and should) install chromium-codecs-ffmpeg-extra directly
- if [ -r /etc/os-release ] && grep -qx 'ID=ubuntu' /etc/os-release; then
- echo "You should not use this script on Ubuntu, install chromium-codecs-ffmpeg-extra via apt instead." >&2
- read -p "Do you wish to continue anyway? [y/N]: " YN
- case "$YN" in
- [Yy]*) : ;;
- [Nn]*) echo "Exiting." ; exit ;;
- *) echo 'Answer not recognised, assuming "No". Exiting.'; exit ;;
- esac
- fi
- # 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) DEB_ARCH=amd64; REPO=http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/ ;;
- i?86) DEB_ARCH=i386; REPO=http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/ ;;
- arm*) DEB_ARCH=armhf; REPO=http://ports.ubuntu.com/ubuntu-ports/pool/universe/c/chromium-browser/ ;;
- aarch64) 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
- fallback_data_extract () {
- dd status=none iflag=skip_bytes if="$1" skip=`grep -Fabom1 "\`printf \"\\\\\3757zXZ\"\`" "$1" | cut -d: -f1`
- }
- DEB_EXTRACT_COMMAND=fallback_data_extract
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement