fix again opera build.
it seems that the latest opera build is not the latest chromium version anymore and thats why ffmpeg is not compatible with the current version.
This commit is contained in:
parent
552e6225cf
commit
7624bbb6c1
3 changed files with 121 additions and 10 deletions
|
|
@ -2,7 +2,8 @@ ARG BASE_IMAGE=ghcr.io/m1k1o/neko/base:latest
|
|||
FROM $BASE_IMAGE
|
||||
|
||||
ARG API_URL="https://download5.operacdn.com/pub/opera/desktop/"
|
||||
ARG LIBFFMPEG_API_URL="https://api.github.com/repos/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/latest"
|
||||
|
||||
COPY fix-ffmpeg-widevine.sh /tmp/fix-ffmpeg-widevine.sh
|
||||
|
||||
#
|
||||
# install opera
|
||||
|
|
@ -23,16 +24,12 @@ RUN set -eux; apt-get update; \
|
|||
fi; \
|
||||
echo "Using Opera version: $VERSION"; \
|
||||
wget -O /tmp/opera.deb "${API_URL}${VERSION}/linux/opera-stable_${VERSION}_amd64.deb"; \
|
||||
apt-get install -y --no-install-recommends openbox jq unzip /tmp/opera.deb; \
|
||||
#
|
||||
# install libffmpeg
|
||||
LIBFFMPEG_URL="$(wget -O - "${LIBFFMPEG_API_URL}" 2>/dev/null | jq -r "[.assets[] | select(.browser_download_url | contains(\"linux-x64.zip\"))][-1] | .browser_download_url")"; \
|
||||
wget -O /tmp/libffmpeg.zip $LIBFFMPEG_URL; \
|
||||
unzip -o /tmp/libffmpeg.zip libffmpeg.so -d /usr/lib/x86_64-linux-gnu/opera/lib_extra; \
|
||||
echo '[]' > /usr/lib/x86_64-linux-gnu/opera/resources/ffmpeg_preload_config.json; \
|
||||
apt-get install -y --no-install-recommends openbox curl jq unzip /tmp/opera.deb; \
|
||||
/tmp/fix-ffmpeg-widevine.sh; \
|
||||
rm -f /tmp/opera.deb /tmp/fix-ffmpeg-widevine.sh; \
|
||||
#
|
||||
# clean up
|
||||
apt-get --purge autoremove -y unzip jq; \
|
||||
apt-get --purge autoremove -y curl jq unzip; \
|
||||
apt-get clean -y; \
|
||||
rm -rf /var/lib/apt/lists/* /var/cache/apt/*
|
||||
|
||||
|
|
|
|||
114
apps/opera/fix-ffmpeg-widevine.sh
Executable file
114
apps/opera/fix-ffmpeg-widevine.sh
Executable file
|
|
@ -0,0 +1,114 @@
|
|||
#!/bin/bash
|
||||
# From https://github.com/Ld-Hagen/fix-opera-linux-ffmpeg-widevine.
|
||||
|
||||
# Config section
|
||||
readonly FIX_FFMPEG=true
|
||||
readonly FIX_WIDEVINE=true
|
||||
readonly FIX_DIR='/tmp/opera-fix'
|
||||
# readonly FFMPEG_SRC_MAIN='https://api.github.com/repos/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases'
|
||||
readonly FFMPEG_SRC_MAIN='https://api.github.com/repos/Ld-Hagen/nwjs-ffmpeg-prebuilt/releases'
|
||||
readonly FFMPEG_SRC_ALT='https://api.github.com/repos/Ld-Hagen/fix-opera-linux-ffmpeg-widevine/releases'
|
||||
readonly WIDEVINE_SRC='https://raw.githubusercontent.com/mozilla-firefox/firefox/refs/heads/main/toolkit/content/gmp-sources/widevinecdm.json'
|
||||
readonly FFMPEG_SO_NAME='libffmpeg.so'
|
||||
readonly WIDEVINE_SO_NAME='libwidevinecdm.so'
|
||||
readonly WIDEVINE_MANIFEST_NAME='manifest.json'
|
||||
|
||||
OPERA_VERSIONS=()
|
||||
if [ -x "$(command -v opera)" ]; then
|
||||
OPERA_VERSIONS+=("opera")
|
||||
fi
|
||||
if [ -x "$(command -v opera-beta)" ]; then
|
||||
OPERA_VERSIONS+=("opera-beta")
|
||||
fi
|
||||
|
||||
# Getting download links
|
||||
printf 'Getting download links...\n'
|
||||
## ffmpeg
|
||||
if $FIX_FFMPEG; then
|
||||
readonly FFMPEG_URL_MAIN=$(curl -sL4 $FFMPEG_SRC_MAIN | jq -rS 'sort_by(.published_at) | .[-1].assets[0].browser_download_url')
|
||||
readonly FFMPEG_URL_ALT=$(curl -sL4 $FFMPEG_SRC_ALT | jq -rS 'sort_by(.published_at) | .[-1].assets[0].browser_download_url')
|
||||
[[ $(basename $FFMPEG_URL_ALT) < $(basename $FFMPEG_URL_MAIN) ]] && readonly FFMPEG_URL=$FFMPEG_URL_MAIN || readonly FFMPEG_URL=$FFMPEG_URL_ALT
|
||||
if [[ -z $FFMPEG_URL ]]; then
|
||||
printf 'Failed to get ffmpeg download URL. Exiting...\n'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
## Widevine
|
||||
if $FIX_WIDEVINE; then
|
||||
readonly WIDEVINE_URL=$(curl -sL4 $WIDEVINE_SRC | jq -r '.vendors."gmp-widevinecdm".platforms."Linux_x86_64-gcc3".mirrorUrls[0]')
|
||||
fi
|
||||
|
||||
# Downloading files
|
||||
printf 'Downloading files...\n'
|
||||
mkdir -p "$FIX_DIR"
|
||||
## ffmpeg
|
||||
if $FIX_FFMPEG; then
|
||||
curl -L4 --progress-bar $FFMPEG_URL -o "$FIX_DIR/ffmpeg.zip"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf 'Failed to download ffmpeg. Check your internet connection or try later\n'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
## Widevine
|
||||
if $FIX_WIDEVINE; then
|
||||
curl -L4 --progress-bar "$WIDEVINE_URL" -o "$FIX_DIR/widevine.zip"
|
||||
if [ $? -ne 0 ]; then
|
||||
printf 'Failed to download Widevine CDM. Check your internet connection or try later\n'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Extracting files
|
||||
## ffmpeg
|
||||
if $FIX_FFMPEG; then
|
||||
echo "Extracting ffmpeg..."
|
||||
unzip -o "$FIX_DIR/ffmpeg.zip" -d $FIX_DIR > /dev/null
|
||||
fi
|
||||
## Widevine
|
||||
if $FIX_WIDEVINE; then
|
||||
echo "Extracting WidevineCDM..."
|
||||
unzip -oj "$FIX_DIR/widevine.zip" -d $FIX_DIR > /dev/null 2>/dev/null
|
||||
fi
|
||||
|
||||
for opera in ${OPERA_VERSIONS[@]}; do
|
||||
echo "Doing $opera"
|
||||
EXECUTABLE=$(command -v "$opera")
|
||||
OPERA_DIR=$(dirname $(readlink -f $EXECUTABLE))
|
||||
OPERA_LIB_DIR="$OPERA_DIR/lib_extra"
|
||||
OPERA_WIDEVINE_DIR="$OPERA_LIB_DIR/WidevineCdm"
|
||||
OPERA_WIDEVINE_SO_DIR="$OPERA_WIDEVINE_DIR/_platform_specific/linux_x64"
|
||||
OPERA_WIDEVINE_CONFIG="$OPERA_DIR/resources/widevine_config.json"
|
||||
|
||||
# Removing old libraries and preparing directories
|
||||
printf 'Removing old libraries & making directories...\n'
|
||||
## ffmpeg
|
||||
if $FIX_FFMPEG; then
|
||||
rm -f "$OPERA_LIB_DIR/$FFMPEG_SO_NAME"
|
||||
mkdir -p "$OPERA_LIB_DIR"
|
||||
fi
|
||||
## Widevine
|
||||
if $FIX_WIDEVINE; then
|
||||
rm -rf "$OPERA_WIDEVINE_DIR"
|
||||
mkdir -p "$OPERA_WIDEVINE_SO_DIR"
|
||||
fi
|
||||
|
||||
# Moving libraries to their place
|
||||
printf 'Moving libraries to their places...\n'
|
||||
## ffmpeg
|
||||
if $FIX_FFMPEG; then
|
||||
cp -f "$FIX_DIR/$FFMPEG_SO_NAME" "$OPERA_LIB_DIR"
|
||||
chmod 0644 "$OPERA_LIB_DIR/$FFMPEG_SO_NAME"
|
||||
fi
|
||||
## Widevine
|
||||
if $FIX_WIDEVINE; then
|
||||
cp -f "$FIX_DIR/$WIDEVINE_SO_NAME" "$OPERA_WIDEVINE_SO_DIR"
|
||||
chmod 0644 "$OPERA_WIDEVINE_SO_DIR/$WIDEVINE_SO_NAME"
|
||||
cp -f "$FIX_DIR/$WIDEVINE_MANIFEST_NAME" "$OPERA_WIDEVINE_DIR"
|
||||
chmod 0644 "$OPERA_WIDEVINE_DIR/$WIDEVINE_MANIFEST_NAME"
|
||||
printf "[\n {\n \"preload\": \"$OPERA_WIDEVINE_DIR\"\n }\n]\n" > "$OPERA_WIDEVINE_CONFIG"
|
||||
fi
|
||||
done
|
||||
|
||||
# Removing temporary files
|
||||
printf 'Removing temporary files...\n'
|
||||
rm -rf "$FIX_DIR"
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<applications>
|
||||
<!-- Match all windows and remove their decorations (obxprop | grep "^_OB_APP") -->
|
||||
<application class="Opera" name="Opera" role="browser">
|
||||
<application class="Opera" name="Opera" type="normal">
|
||||
<decor>no</decor>
|
||||
<maximized>true</maximized>
|
||||
<focus>yes</focus>
|
||||
|
|
|
|||
Loading…
Reference in a new issue