Browse Source

x86 UI and Playback ok

pull/203/head
KalinaGabor 1 month ago
parent
commit
276ea89986
  1. 1
      .gitignore
  2. 18
      build-webos.sh
  3. 273
      extras/package/webos/package.sh

1
.gitignore

@ -53,6 +53,7 @@ Frameworks
# Ignore build dirs
webos-package/
webos-package-x86_64/
po/
vlc-webos-deploy-x86_64/
vlc-webos-deploy-qt-x86_64/

18
build-webos.sh

@ -33,13 +33,13 @@ else
WEBOS_NATIVE_TOOLCHAIN="${WEBOS_NATIVE_TOOLCHAIN:-0}"
fi
DEFAULT_WEBOS_CONTRIB_BOOTSTRAP_FLAGS="--disable-disc --disable-sout --disable-basu --disable-flac --disable-vorbis --disable-fluid --disable-libaribcaption --disable-ass --disable-live555 --disable-harfbuzz --disable-vulkan-loader --disable-sidplay2 --disable-vncclient"
DEFAULT_WEBOS_CONFIGURE_EXTRA_FLAGS="--disable-libass --disable-libdrm --disable-qt --disable-vpx --disable-aom --disable-fluidsynth --disable-openapv"
DEFAULT_WEBOS_CONFIGURE_EXTRA_FLAGS="--disable-libass --disable-libdrm --disable-vpx --disable-aom --disable-fluidsynth --disable-openapv --disable-vdpau --disable-caca"
WEBOS_CONTRIB_BOOTSTRAP_FLAGS="${WEBOS_CONTRIB_BOOTSTRAP_FLAGS:-$DEFAULT_WEBOS_CONTRIB_BOOTSTRAP_FLAGS}"
WEBOS_CONFIGURE_EXTRA_FLAGS="${WEBOS_CONFIGURE_EXTRA_FLAGS:-$DEFAULT_WEBOS_CONFIGURE_EXTRA_FLAGS}"
if [ "$WEBOS_PROFILE" = "x86_64" ]; then
WEBOS_CONTRIB_BOOTSTRAP_FLAGS="${WEBOS_CONTRIB_BOOTSTRAP_FLAGS} --disable-ssh2"
WEBOS_CONFIGURE_EXTRA_FLAGS="${WEBOS_CONFIGURE_EXTRA_FLAGS} --disable-sftp"
WEBOS_CONFIGURE_EXTRA_FLAGS="${WEBOS_CONFIGURE_EXTRA_FLAGS} --disable-sftp --enable-qt"
fi
usage() {
@ -240,8 +240,18 @@ else
SYSROOT="/"
fi
export PKG_CONFIG_SYSROOT_DIR=""
export PKG_CONFIG_LIBDIR="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATH="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
HOST_MULTIARCH=""
if [ "$WEBOS_NATIVE_TOOLCHAIN" = "1" ] && command -v gcc >/dev/null 2>&1; then
HOST_MULTIARCH="$(gcc -print-multiarch 2>/dev/null || true)"
fi
if [ "$WEBOS_NATIVE_TOOLCHAIN" = "1" ] && [ -n "$HOST_MULTIARCH" ]; then
export PKG_CONFIG_LIBDIR="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:/usr/lib/${HOST_MULTIARCH}/pkgconfig:${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATH="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:/usr/lib/${HOST_MULTIARCH}/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
else
export PKG_CONFIG_LIBDIR="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
export PKG_CONFIG_PATH="${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"
fi
export CPPFLAGS="${CPPFLAGS:-} -I${DEPS_PREFIX}/include -I${SYSROOT}/usr/include"
if [ "$WEBOS_PROFILE" = "x86_64" ]; then
export CFLAGS="${CFLAGS:-} -m64 -I${DEPS_PREFIX}/include"

273
extras/package/webos/package.sh

@ -8,7 +8,13 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd -P)"
APP_ID="${WEBOS_APP_ID:-org.videolan.vlc.webos}"
APP_VERSION="${WEBOS_APP_VERSION:-1.0.0}"
TARGET_ARCH="${WEBOS_TARGET_ARCH:-arm}"
DEPLOY_DIR="${WEBOS_DEPLOY_DIR:-$TOP_DIR/vlc-webos-deploy}"
if [ -n "${WEBOS_DEPLOY_DIR:-}" ]; then
DEPLOY_DIR="$WEBOS_DEPLOY_DIR"
elif [ "$TARGET_ARCH" = "x86_64" ]; then
DEPLOY_DIR="$TOP_DIR/vlc-webos-deploy-x86_64"
else
DEPLOY_DIR="$TOP_DIR/vlc-webos-deploy"
fi
OUT_DIR="${WEBOS_OUTPUT_DIR:-$TOP_DIR/webos-package}"
PKG_WORK_DIR="${WEBOS_PACKAGE_DIR:-$TOP_DIR/webos-package/stage}"
@ -62,7 +68,7 @@ echo "VLC_ROOT: $VLC_ROOT"
echo "PLUGIN_SRC: $VLC_PLUGIN_SRC"
rm -rf "$PKG_WORK_DIR"
mkdir -p "$PKG_WORK_DIR/bin" "$PKG_WORK_DIR/vlc" "$PKG_WORK_DIR/libexec/vlc"
mkdir -p "$PKG_WORK_DIR/bin" "$PKG_WORK_DIR/vlc" "$PKG_WORK_DIR/libexec/vlc" "$PKG_WORK_DIR/share/vlc"
cat > "$PKG_WORK_DIR/appinfo.json" <<EOF
{
@ -102,11 +108,212 @@ if [ -x "$VLC_ROOT/libexec/vlc/vlc-preparser" ]; then
cp "$VLC_ROOT/libexec/vlc/vlc-preparser" "$PKG_WORK_DIR/libexec/vlc/vlc-preparser"
fi
if [ -x "$VLC_ROOT/libexec/vlc/vlc-qt-check" ]; then
cp "$VLC_ROOT/libexec/vlc/vlc-qt-check" "$PKG_WORK_DIR/libexec/vlc/vlc-qt-check"
fi
cp -a "$VLC_ROOT/lib" "$PKG_WORK_DIR/vlc/"
rm -rf "$PKG_WORK_DIR/vlc/lib/vlc/plugins"
cp -a "$VLC_PLUGIN_SRC" "$PKG_WORK_DIR/vlc/plugins"
find "$PKG_WORK_DIR/vlc/plugins" -name plugins.dat -delete
if [ -d "$VLC_ROOT/share/vlc" ]; then
cp -a "$VLC_ROOT/share/vlc/." "$PKG_WORK_DIR/share/vlc/"
fi
if [ -d "$TOP_DIR/share/lua" ]; then
rm -rf "$PKG_WORK_DIR/share/vlc/lua"
cp -a "$TOP_DIR/share/lua" "$PKG_WORK_DIR/share/vlc/lua"
fi
if [ "$TARGET_ARCH" = "x86_64" ] && [ "${WEBOS_PACKAGE_PROFILE:-minimal}" != "full" ]; then
rm -rf \
"$PKG_WORK_DIR/vlc/plugins/access_output" \
"$PKG_WORK_DIR/vlc/plugins/audio_filter" \
"$PKG_WORK_DIR/vlc/plugins/audio_mixer" \
"$PKG_WORK_DIR/vlc/plugins/lua" \
"$PKG_WORK_DIR/vlc/plugins/meta_engine" \
"$PKG_WORK_DIR/vlc/plugins/mux" \
"$PKG_WORK_DIR/vlc/plugins/nvdec" \
"$PKG_WORK_DIR/vlc/plugins/services_discovery" \
"$PKG_WORK_DIR/vlc/plugins/spu" \
"$PKG_WORK_DIR/vlc/plugins/stream_extractor" \
"$PKG_WORK_DIR/vlc/plugins/stream_filter" \
"$PKG_WORK_DIR/vlc/plugins/stream_out" \
"$PKG_WORK_DIR/vlc/plugins/text_renderer" \
"$PKG_WORK_DIR/vlc/plugins/vaapi" \
"$PKG_WORK_DIR/vlc/plugins/video_chroma" \
"$PKG_WORK_DIR/vlc/plugins/video_filter" \
"$PKG_WORK_DIR/vlc/plugins/video_splitter" \
"$PKG_WORK_DIR/vlc/plugins/visualization"
rm -f \
"$PKG_WORK_DIR/vlc/plugins/codec/libvaapi_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/codec/libvaapi_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/demux/libavformat_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/demux/libavformat_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/demux/libadaptive_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/demux/libadaptive_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/packetizer/libpacketizer_avparser_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/packetizer/libpacketizer_avparser_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libdcp_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libdcp_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libnfs_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libnfs_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libaccess_srt_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libaccess_srt_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libcdda_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libcdda_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libavio_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libavio_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/libsmb2_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/libsmb2_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/access/librist_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/access/librist_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/misc/libmedialibrary_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/misc/libmedialibrary_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/misc/libgnutls_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/misc/libgnutls_plugin.la" \
"$PKG_WORK_DIR/vlc/plugins/video_output/libplacebo_vk_plugin.so" \
"$PKG_WORK_DIR/vlc/plugins/video_output/libplacebo_vk_plugin.la"
fi
copy_host_lib() {
local src="$1"
local base real_src real_base soname
[ -f "$src" ] || return 0
base="$(basename "$src")"
real_src="$(readlink -f "$src")"
real_base="$(basename "$real_src")"
if [ ! -e "$PKG_WORK_DIR/vlc/lib/$real_base" ]; then
cp -a "$real_src" "$PKG_WORK_DIR/vlc/lib/$real_base"
fi
if [ "$base" != "$real_base" ] && [ ! -e "$PKG_WORK_DIR/vlc/lib/$base" ]; then
ln -s "$real_base" "$PKG_WORK_DIR/vlc/lib/$base"
fi
soname="$(objdump -p "$real_src" 2>/dev/null | awk '/SONAME/ { print $2; exit }')"
if [ -n "$soname" ] && [ "$soname" != "$real_base" ] && [ ! -e "$PKG_WORK_DIR/vlc/lib/$soname" ]; then
ln -s "$real_base" "$PKG_WORK_DIR/vlc/lib/$soname"
fi
}
bundle_runtime_closure() {
local pending done current dep base
pending="$(mktemp)"
done="$(mktemp)"
printf '%s\n' "$@" > "$pending"
while [ -s "$pending" ]; do
current="$(head -n 1 "$pending")"
sed -i '1d' "$pending"
[ -f "$current" ] || continue
grep -Fxq "$current" "$done" && continue
echo "$current" >> "$done"
ldd "$current" 2>/dev/null | awk '/=> \/.*/ { print $3 }' | while IFS= read -r dep; do
[ -f "$dep" ] || continue
base="$(basename "$dep")"
case "$base" in
ld-linux-*.so*|libc.so.*|libm.so.*|libdl.so.*|librt.so.*|libpthread.so.*|libanl.so.*)
continue
;;
esac
copy_host_lib "$dep"
if ! grep -Fxq "$dep" "$done"; then
echo "$dep" >> "$pending"
fi
done
done
rm -f "$pending" "$done"
}
if [ "$TARGET_ARCH" = "x86_64" ]; then
HOST_MULTIARCH="$(gcc -print-multiarch 2>/dev/null || true)"
[ -n "$HOST_MULTIARCH" ] || HOST_MULTIARCH="x86_64-linux-gnu"
mkdir -p "$PKG_WORK_DIR/qt6"
if [ -d "/usr/lib/${HOST_MULTIARCH}/qt6/plugins" ]; then
cp -a "/usr/lib/${HOST_MULTIARCH}/qt6/plugins" "$PKG_WORK_DIR/qt6/"
fi
if [ -d "/usr/lib/${HOST_MULTIARCH}/qt6/qml" ]; then
cp -a "/usr/lib/${HOST_MULTIARCH}/qt6/qml" "$PKG_WORK_DIR/qt6/"
rm -rf "$PKG_WORK_DIR/qt6/qml/QtTest"
fi
rm -f \
"$PKG_WORK_DIR/qt6/plugins/imageformats/libqjpeg.so" \
"$PKG_WORK_DIR/qt6/plugins/imageformats/libqtiff.so" \
"$PKG_WORK_DIR/qt6/plugins/imageformats/libqmng.so"
QT_INPUTS=""
for candidate in \
"$VLC_ROOT/lib/vlc/plugins/gui/libqt_plugin.so" \
"$VLC_ROOT/lib/vlc/plugins/gui/libqt_wayland_plugin.so" \
"$PKG_WORK_DIR/qt6/qml/QtQuick/Templates/libqtquicktemplates2plugin.so" \
"$PKG_WORK_DIR/qt6/qml/QtQuick/Controls/libqtquickcontrols2plugin.so" \
"$PKG_WORK_DIR/qt6/qml/QtQuick/Controls/Basic/libqtquickcontrols2basicstyleplugin.so" \
"$PKG_WORK_DIR/qt6/qml/QtQuick/Controls/Fusion/libqtquickcontrols2fusionstyleplugin.so" \
"$PKG_WORK_DIR/qt6/qml/QtQuick/Window/libquickwindowplugin.so" \
"$PKG_WORK_DIR/qt6/plugins/platforms/libqwayland-egl.so" \
"$PKG_WORK_DIR/qt6/plugins/platforms/libqwayland-generic.so" \
"$PKG_WORK_DIR/qt6/plugins/platforms/libqxcb.so"; do
if [ -f "$candidate" ]; then
QT_INPUTS="$QT_INPUTS $candidate"
fi
done
if [ -f "/usr/lib/${HOST_MULTIARCH}/libidn.so.12" ]; then
copy_host_lib "/usr/lib/${HOST_MULTIARCH}/libidn.so.12"
fi
for xlib in \
"/usr/lib/${HOST_MULTIARCH}/libX11.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libXext.so.6"; do
if [ -f "$xlib" ]; then
copy_host_lib "$xlib"
fi
done
if [ -f "/usr/lib/${HOST_MULTIARCH}/libvdpau.so.1" ]; then
copy_host_lib "/usr/lib/${HOST_MULTIARCH}/libvdpau.so.1"
fi
for qtlib in \
"/usr/lib/${HOST_MULTIARCH}/libQt6QuickLayouts.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libQt6QuickTemplates2.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libQt6QuickControls2.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libQt6QuickControls2Impl.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libQt6QuickControls2BasicStyleImpl.so.6" \
"/usr/lib/${HOST_MULTIARCH}/libQt6Svg.so.6"; do
if [ -f "$qtlib" ]; then
copy_host_lib "$qtlib"
fi
done
if [ -n "$QT_INPUTS" ]; then
# shellcheck disable=SC2086
bundle_runtime_closure $QT_INPUTS
fi
rm -f "$PKG_WORK_DIR/vlc/lib/libEGL.so"*
fi
cat > "$PKG_WORK_DIR/bin/qt.conf" <<'EOF'
[Paths]
Prefix=..
Plugins=qt6/plugins
QmlImports=qt6/qml
Libraries=vlc/lib
EOF
if [ -x "$PKG_WORK_DIR/libexec/vlc/vlc-cache-gen" ]; then
"$PKG_WORK_DIR/libexec/vlc/vlc-cache-gen" "$PKG_WORK_DIR/vlc/plugins" >/dev/null 2>&1 || true
fi
@ -114,27 +321,77 @@ fi
cat > "$PKG_WORK_DIR/run.sh" <<'EOF'
#!/bin/sh
APP_DIR="/media/developer/apps/usr/palm/applications/__WEBOS_APP_ID__"
export LD_LIBRARY_PATH="${APP_DIR}/vlc/lib:${LD_LIBRARY_PATH}"
SYS_LIB_PATH="/usr/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH="${APP_DIR}/vlc/lib:${SYS_LIB_PATH}:${LD_LIBRARY_PATH}"
export VLC_PLUGIN_PATH="${APP_DIR}/vlc/plugins"
export VLC_LIBEXEC_PATH="${APP_DIR}/libexec/vlc"
if [ -z "${XDG_RUNTIME_DIR}" ] && [ -S /tmp/xdg/wayland-0 ]; then
export VLC_DATA_PATH="${APP_DIR}/share/vlc"
export QT_PLUGIN_PATH="${APP_DIR}/qt6/plugins"
export QT_QPA_PLATFORM_PLUGIN_PATH="${APP_DIR}/qt6/plugins/platforms"
export QML2_IMPORT_PATH="${APP_DIR}/qt6/qml"
export QT_QUICK_CONTROLS_STYLE=Basic
export QT_NO_SETLOCALE=1
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
export VLC_QT_SKIP_CHECK=1
export VLC_VOUT="${VLC_VOUT:-wl_shm,wl_shell,xdg_shell,gles2,gl,any}"
if [ -d /tmp/xdg ]; then
export XDG_RUNTIME_DIR=/tmp/xdg
fi
if [ -z "${WAYLAND_DISPLAY}" ] && [ -S "${XDG_RUNTIME_DIR}/wayland-0" ]; then
if [ -S "${XDG_RUNTIME_DIR}/wayland-0" ]; then
export WAYLAND_DISPLAY=wayland-0
fi
export QT_QPA_PLATFORM=wayland
cd "$APP_DIR"
LOG_FILE="/tmp/vlc-sam-launch.log"
if [ "${1#\{}" != "$1" ]; then
{
echo "===== $(date '+%F %T') run.sh launch ====="
echo "args: $*"
} >> "$LOG_FILE"
exec >> "$LOG_FILE" 2>&1
fi
run_vlc() {
if [ -x ./bin/vlc ]; then
if [ ! -e /lib64/ld-linux-x86-64.so.2 ] && [ -x /lib/ld-linux-x86-64.so.2 ]; then
for helper in vlc-preparser vlc-cache-gen vlc-qt-check; do
if [ -x "${APP_DIR}/libexec/vlc/${helper}" ]; then
if [ "$(head -n 1 "${APP_DIR}/libexec/vlc/${helper}" 2>/dev/null || true)" != "#!/bin/sh" ]; then
mv -f "${APP_DIR}/libexec/vlc/${helper}" "${APP_DIR}/libexec/vlc/${helper}.real"
fi
if [ ! -x "${APP_DIR}/libexec/vlc/${helper}.real" ]; then
continue
fi
cat > "${APP_DIR}/libexec/vlc/${helper}" <<HELPER_EOF
#!/bin/sh
exec /lib/ld-linux-x86-64.so.2 --library-path "${APP_DIR}/vlc/lib:${SYS_LIB_PATH}:/lib:/usr/lib" "${APP_DIR}/libexec/vlc/${helper}.real" "\$@"
HELPER_EOF
chmod +x "${APP_DIR}/libexec/vlc/${helper}"
fi
done
exec /lib/ld-linux-x86-64.so.2 --library-path "${APP_DIR}/vlc/lib:${SYS_LIB_PATH}:/lib:/usr/lib" ./bin/vlc "$@"
fi
exec ./bin/vlc "$@"
fi
exit 127
}
ARG1="${1:-}"
case "$ARG1" in
""|\{*\})
exec ./bin/vlc --intf=dummy --no-video-title-show --no-playlist-autostart
run_vlc --intf=qt --no-video-title-show --no-playlist-autostart --vout="$VLC_VOUT"
;;
*)
exec ./bin/vlc --intf=dummy --no-video-title-show --no-playlist-autostart "$ARG1"
run_vlc --intf=qt --no-video-title-show --no-playlist-autostart --vout="$VLC_VOUT" "$ARG1"
;;
esac
EOF

Loading…
Cancel
Save