diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Tools/qt | |
parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
download | qtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz |
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Tools/qt')
-rwxr-xr-x | Tools/qt/generate-inspector-qrc.pl | 137 | ||||
-rwxr-xr-x | Tools/qt/generate-version-script.pl | 63 | ||||
-rwxr-xr-x | Tools/qt/install-dependencies | 104 | ||||
-rw-r--r-- | Tools/qt/jhbuild-qt-5.4.modules | 79 | ||||
-rw-r--r-- | Tools/qt/jhbuild-qt-5.6.modules | 85 | ||||
-rw-r--r-- | Tools/qt/jhbuild.modules | 261 | ||||
-rw-r--r-- | Tools/qt/jhbuildrc | 24 | ||||
-rw-r--r-- | Tools/qt/manifest.txt | 132 | ||||
-rw-r--r-- | Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch | 10 | ||||
-rw-r--r-- | Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch | 39 | ||||
-rw-r--r-- | Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch | 133 | ||||
-rw-r--r-- | Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch | 146 | ||||
-rw-r--r-- | Tools/qt/patches/icudata-stdlibs.patch | 15 | ||||
-rw-r--r-- | Tools/qt/patches/openwebrtc-no-gtk-doc.patch | 60 | ||||
-rw-r--r-- | Tools/qt/patches/qt-5.4-fontconfig-fix.patch | 56 | ||||
-rw-r--r-- | Tools/qt/patches/qt-fontconfig-fix.patch | 56 |
16 files changed, 1400 insertions, 0 deletions
diff --git a/Tools/qt/generate-inspector-qrc.pl b/Tools/qt/generate-inspector-qrc.pl new file mode 100755 index 000000000..f961757ac --- /dev/null +++ b/Tools/qt/generate-inspector-qrc.pl @@ -0,0 +1,137 @@ +#!/usr/bin/perl +# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +# THE POSSIBILITY OF SUCH DAMAGE. + +use File::Basename; +use File::Copy; +use File::Path qw(make_path); +use File::Spec; +use Getopt::Long qw(:config pass_through no_auto_abbrev); + +use v5.10; + +use strict; +use warnings; + +my @sources; +my @extraSources; +my @qrcSources; +my $baseDir; +my $outDir; +my $prefix; +my $rccExecutable; +my $resourceName; + +processArgs(); +copySources(); +addExtraSources(); +writeQrc(); +compileQrc(); + +sub processArgs { + GetOptions ( + "add=s" => \@extraSources, + "baseDir=s" => \$baseDir, + "outDir=s" => \$outDir, + "prefix=s" => \$prefix, + "rccExecutable=s" => \$rccExecutable, + "resourceName=s" => \$resourceName + ); + @sources = map { glob } @ARGV; + checkDir($baseDir); + make_path($outDir); + -x $rccExecutable or die "File $rccExecutable is not executable"; +} + +sub checkDir { + my $dir = shift; + -e $dir or die "Directory $dir does not exist"; + -d $dir or die "$dir is not a directory"; +} + +sub copySources { + for my $src (@sources) { + my $relSrc = getDstFile(File::Spec->abs2rel($src, $baseDir)); + my $dst = File::Spec->catfile($outDir, $relSrc); + doCopy($src, $dst); + addToQrc($relSrc); + } +} + +sub getDstFile { + my $path = shift; + my ($volume, $directories, $file) = File::Spec->splitpath($path); + my @dirs = File::Spec->splitdir($directories); + + # Images/gtk/Something -> Images/Something + @dirs = grep { !/^gtk$/ } @dirs; + + $directories = File::Spec->catdir(@dirs); + return File::Spec->catpath($volume, $directories, $file); +} + +sub addExtraSources { + for my $src (@extraSources) { + addToQrc($src); + } +} + +sub doCopy { + my ($src, $dst) = @_; + say "Copying $src -> $dst"; + make_path(dirname($dst)); + copy($src, $dst); +} + +sub addToQrc { + my $src = shift; + push @qrcSources, $src; +} + +sub writeQrc { + my $filename = File::Spec->catfile($outDir, "$resourceName.qrc"); + + open my $qrc, ">", $filename or die "Failed to open $filename for writing: $!"; + + say $qrc '<!DOCTYPE RCC><RCC version="1.0">'; + if ($prefix) { + say $qrc qq%<qresource prefix="$prefix">%; + } else { + say $qrc '<qresource>'; + } + + for my $src (@qrcSources) { + say $qrc " <file>$src</file>"; + } + say $qrc '</qresource>'; + say $qrc '</RCC>'; + + close $qrc or die $!; +} + +sub compileQrc { + chdir($outDir); + my $cmd = "$rccExecutable -name $resourceName -o qrc_$resourceName.cpp $resourceName.qrc"; + say $cmd; + system($cmd) == 0 or die "rcc failed: $!"; +} diff --git a/Tools/qt/generate-version-script.pl b/Tools/qt/generate-version-script.pl new file mode 100755 index 000000000..49b1051cc --- /dev/null +++ b/Tools/qt/generate-version-script.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl +# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +# THE POSSIBILITY OF SUCH DAMAGE. + +use v5.10; + +use strict; +use warnings; + +my $qtVer = shift @ARGV; +my $qtNamespace = shift @ARGV; + +die "Usage: $0 <Qt version> [Qt namespace]\n" unless $qtVer; + +$qtVer =~ /^(\d+)\.(\d+)\.\d+$/ or die "$qtVer is not valid Qt version\n"; +my $major = $1; +my $minor = $2; + +# Next code tries to mirror logic of mkspecs/features/qt_module.prf + +say +"Qt_${major}_PRIVATE_API { + qt_private_api_tag*; +};"; + + +my $current = "Qt_$major"; +my $previous; +say "$current { *; };"; + +my $tag_symbol = "qt_version_tag"; +if ($qtNamespace) { + $tag_symbol .= "_$qtNamespace"; +} + +for (my $i = 0; $i < $minor; ++$i) { + $previous = $current; + $current = "Qt_$major.$i"; + say "$current {} $previous;"; +} + +$previous = $current; +say "Qt_$major.$minor { $tag_symbol; } $previous;"; diff --git a/Tools/qt/install-dependencies b/Tools/qt/install-dependencies new file mode 100755 index 000000000..a9cfffd8a --- /dev/null +++ b/Tools/qt/install-dependencies @@ -0,0 +1,104 @@ +#!/bin/bash + +# This script needs to be run with root rights. +if [ $UID -ne 0 ]; then + sudo $0 + exit 0 +fi + +function printNotSupportedMessageAndExit() { + echo + echo "Currently this script only works for distributions supporting apt-get." + echo "Please add support for your distribution." + echo + exit 1 +} + +function checkInstaller { + # apt-get - Debian based distributions + apt-get --version &> /dev/null + if [ $? -eq 0 ]; then + installDependenciesWithApt + exit 0 + fi + + printNotSupportedMessageAndExit +} + +function installDependenciesWithApt { + # These are dependencies necessary for building Qt and QtWebKit. + packages=" \ + g++ \ + binutils \ + libc6-dev \ + make \ + cmake \ + ninja-build \ + bison \ + flex \ + gawk \ + gperf \ + perl \ + python \ + ruby \ + libdbus-1-dev \ + libenchant-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + libhyphen-dev \ + libjpeg-dev \ + libpng12-dev \ + libsqlite3-dev \ + libssl-dev \ + libwebp-dev \ + libx11-dev \ + libx11-xcb-dev + libxcb-glx0-dev + libxcb1-dev \ + libxcb-keysyms1-dev \ + libxcb-image0-dev \ + libxcb-shm0-dev \ + libxcb-icccm4-dev \ + libxcb-sync0-dev \ + libxcb-xfixes0-dev \ + libxcb-xinerama0-dev \ + libxcb-shape0-dev \ + libxcb-randr0-dev \ + libxcb-render-util0-dev \ + libxext-dev \ + libxfixes-dev \ + libxrender-dev \ + zlib1g-dev + " + + # These are dependencies necessary for running tests. + packages="$packages \ + apache2 \ + curl \ + libapache2-mod-php5 \ + xvfb" + + # These are dependencies necessary for building GLib and GStreamer. + packages="$packages \ + git-core \ + gettext \ + libtool-bin \ + automake \ + libfaad-dev \ + libmpg123-dev \ + libopus-dev \ + libtheora-dev \ + libvorbis-dev \ + " + + # These are dependencies necessary for building GLib and GStreamer. + packages="$packages \ + libjson-glib-dev \ + libpulse-dev \ + " + + apt-get install $packages +} + +checkInstaller + diff --git a/Tools/qt/jhbuild-qt-5.4.modules b/Tools/qt/jhbuild-qt-5.4.modules new file mode 100644 index 000000000..3e9c4f57c --- /dev/null +++ b/Tools/qt/jhbuild-qt-5.4.modules @@ -0,0 +1,79 @@ +<?xml version="1.0"?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + + <repository type="tarball" name="download.qt.io" + href="http://download.qt.io"/> + + <autotools id="qt" + makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'" + autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib" + autogen-sh="configure + -opensource + -confirm-license + + -icu + -openssl + -openssl-linked + + -nomake examples + -nomake tools + -nomake tests + + -skip connectivity + -skip enginio + -skip graphicaleffects + -skip imageformats + -skip multimedia + -skip quickcontrols + -skip script + -skip serialport + -skip svg + -skip translations + -skip wayland + -skip webengine + -skip webkit + -skip x11extras + -skip xmlpatterns + + -system-harfbuzz + -system-freetype + -system-libjpeg + -system-libpng + -system-sqlite + -system-zlib + + -no-alsa + -no-cups + -no-eglfs + -no-evdev + -no-gtkstyle + -no-libudev + -no-linuxfb + -no-mtdev + -no-nis + -no-pulseaudio + -no-qml-debug + -no-tslib + + -no-gif + + -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds + -plugin-sql-sqlite + "> + <branch module="archive/qt/5.4/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.4.0" + repo="download.qt.io" + hash="sha256:b2d9df47b9fd2fcfa5ebd162e1373b7eddf4759e6ba148c4589f3d8b6628c39c"> + <patch file="qt-5.4-fontconfig-fix.patch" strip="1"/> + </branch> + <dependencies> + <dep package="fontconfig"/> + <dep package="freetype6"/> + <dep package="icu"/> + <dep package="glib"/> + <dep package="harfbuzz"/> + </dependencies> + </autotools> + +</moduleset> diff --git a/Tools/qt/jhbuild-qt-5.6.modules b/Tools/qt/jhbuild-qt-5.6.modules new file mode 100644 index 000000000..1ab29d97a --- /dev/null +++ b/Tools/qt/jhbuild-qt-5.6.modules @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + + <repository type="tarball" name="download.qt.io" + href="http://download.qt.io"/> + + <autotools id="qt" + makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'" + autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib" + autogen-sh="configure + -opensource + -confirm-license + + -icu + -openssl + -openssl-linked + + -nomake examples + -nomake tools + -nomake tests + + -skip 3d + -skip connectivity + -skip enginio + -skip graphicaleffects + -skip imageformats + -skip multimedia + -skip quickcontrols + -skip quickcontrols2 + -skip script + -skip serialbus + -skip serialport + -skip svg + -skip translations + -skip wayland + -skip webengine + -skip webview + -skip x11extras + -skip xmlpatterns + + -system-harfbuzz + -system-freetype + -system-libjpeg + -system-libpng + -system-sqlite + -system-zlib + + -no-alsa + -no-cups + -no-eglfs + -no-evdev + -no-gbm + -no-gtkstyle + -no-libinput + -no-libudev + -no-linuxfb + -no-mtdev + -no-nis + -no-pulseaudio + -no-qml-debug + -no-tslib + + -no-gif + + -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds + -plugin-sql-sqlite + "> + <branch module="archive/qt/5.6/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.6.1-1" + repo="download.qt.io" + checkoutdir="qt-everywhere-opensource-src-5.6.1" + hash="sha256:ce08a7eb54661705f55fb283d895a089b267c688fabe017062bd71b9231736db"> + <patch file="qt-fontconfig-fix.patch" strip="1"/> + </branch> + <dependencies> + <dep package="fontconfig"/> + <dep package="freetype6"/> + <dep package="icu"/> + <dep package="glib"/> + <dep package="harfbuzz"/> + </dependencies> + </autotools> + +</moduleset> diff --git a/Tools/qt/jhbuild.modules b/Tools/qt/jhbuild.modules new file mode 100644 index 000000000..3053b1d2c --- /dev/null +++ b/Tools/qt/jhbuild.modules @@ -0,0 +1,261 @@ +<?xml version="1.0"?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + + <metamodule id="webkitqt-testing-dependencies"> + <dependencies> + <!-- <dep package="fonts"/> --> + <dep package="dicts"/> + <dep package="fontconfig"/> + <dep package="icu"/> + <dep package="libxml2"/> + <dep package="libxslt"/> + <dep package="glib"/> + <dep package="gstreamer"/> + <dep package="gst-plugins-base"/> + <dep package="gst-plugins-good"/> + <dep package="gst-plugins-bad"/> + <dep package="gst-libav"/> + <dep package="openwebrtc"/> + <dep package="qt"/> + </dependencies> + </metamodule> + + <include href="jhbuild-qt-5.4.modules"/> + + <!-- Please use http/https to access repositories to be friendly to users stuck behind firewalls. --> + <repository type="git" name="github.com" + href="https://github.com"/> + <repository type="tarball" name="github.com-tarball" + href="https://github.com"/> + <repository type="tarball" name="sourceware.org-mirror" + href="http://mirrors.kernel.org/sources.redhat.com/"/> + <repository type="tarball" name="ftp.gnome.org" + href="http://ftp.gnome.org"/> + <repository type="tarball" name="freedesktop.org" + href="http://www.freedesktop.org"/> + <repository type="tarball" name="xmlsoft.org" + href="http://xmlsoft.org"/> + <repository type="tarball" name="gstreamer" + href="http://gstreamer.freedesktop.org/src/"/> + <repository type="tarball" name="savannah.gnu.org" + href="http://download.savannah.gnu.org/releases/"/> + <repository type="git" name="freedesktop-git" + href="http://anongit.freedesktop.org/git"/> + <repository type="tarball" name="webkitgtk-jhbuild-mirror" + href="http://webkitgtk.org/jhbuild_mirror/"/> + <repository type="tarball" name="nice.freedesktop.org" + href="http://nice.freedesktop.org/"/> + + <autotools id="fonts" supports-non-srcdir-builds="no" + skip-autogen="true"> + <branch repo="github.com" module="carewolf/qtwebkit-testfonts.git" checkoutdir="qtwebkitg-testfonts"/> + </autotools> + + <autotools id="dicts" supports-non-srcdir-builds="no" + skip-autogen="true"> + <branch repo="github.com" module="mrobinson/webkitgtk-test-dicts.git" checkoutdir="webkitgtk-test-dicts" tag="0.0.1"/> + </autotools> + + <autotools id="freetype6" autogen-sh="configure"> + <branch module="freetype/freetype-2.4.11.tar.bz2" version="2.4.11" + repo="savannah.gnu.org" + hash="sha256:ef9d0bcb64647d9e5125dc7534d7ca371c98310fec87677c410f397f71ffbe3f" + md5sum="b93435488942486c8d0ca22e8f768034"> + <patch file="freetype6-2.4.11-truetype-font-height-fix.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="harfbuzz" autogen-sh="configure"> + <dependencies> + <dep package="icu"/> + </dependencies> + <branch module="software/harfbuzz/release/harfbuzz-${version}.tar.bz2" + version="1.2.7" + repo="freedesktop.org" + hash="sha256:bba0600ae08b84384e6d2d7175bea10b5fc246c4583dc841498d01894d479026"> + </branch> + </autotools> + + <autotools id="libffi" autogen-sh="configure"> + <branch module="libffi/libffi-3.1.tar.gz" version="3.1" + repo="sourceware.org-mirror" + hash="sha256:97feeeadca5e21870fa4433bc953d1b3af3f698d5df8a428f68b73cd60aef6eb" + md5sum="f5898b29bbfd70502831a212d9249d10"/> + </autotools> + + <autotools id="glib" + autogen-sh="configure" + autogenargs="--disable-dtrace --disable-gtk-doc-html"> + <dependencies> + <dep package="libffi"/> + </dependencies> + <branch module="/pub/GNOME/sources/glib/2.44/glib-2.44.1.tar.xz" version="2.44.1" + repo="ftp.gnome.org" + hash="sha256:8811deacaf8a503d0a9b701777ea079ca6a4277be10e3d730d2112735d5eca07"> + </branch> + </autotools> + + <autotools id="fontconfig" + autogen-sh="configure" + autogenargs="--enable-libxml2"> + <dependencies> + <dep package="freetype6"/> + <dep package="libxml2"/> + </dependencies> + <branch module="software/fontconfig/release/fontconfig-2.11.1.tar.gz" version="2.11.1" + repo="freedesktop.org" + hash="sha256:b6b066c7dce3f436fdc0dfbae9d36122b38094f4f53bd8dffd45e195b0540d8d" + md5sum="e75e303b4f7756c2b16203a57ac87eba"> + <patch file="fontconfig-2.11.1-no-bitmaps.patch" strip="0"/> + </branch> + </autotools> + + + <autotools id="libxml2" supports-non-srcdir-builds="no" + autogen-sh="./autogen.sh; ./configure --with-python=no"> + <branch module="/sources/libxml2-2.9.1.tar.gz" version="2.9.1" + repo="xmlsoft.org" + hash="sha256:fd3c64cb66f2c4ea27e934d275904d92cec494a8e8405613780cbc8a71680fdb" + md5sum="9c0cfef285d5c4a5c80d00904ddab380"/> + </autotools> + + <autotools id="libxslt"> + <branch module="/sources/libxslt-${version}.tar.gz" version="1.1.29" + repo="xmlsoft.org" + hash="sha256:b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce"/> + <dependencies> + <dep package="libxml2"/> + </dependencies> + </autotools> + + <autotools id="orc" autogenargs="--disable-gtk-doc" autogen-sh="configure"> + <branch module="orc/orc-0.4.17.tar.gz" version="0.4.17" + repo="gstreamer" + hash="sha256:4fc7cca48c59fff23afee78fb642cdbde001f56401c8f47b95a16578d1d5d7e8" + md5sum="af1bf3dab9e69f3c36f389285e2a12a1"/> + </autotools> + + <autotools id="gstreamer" autogenargs="--disable-gtk-doc --disable-introspection"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="orc"/> + </dependencies> + <branch module="gstreamer/gstreamer-${version}.tar.xz" version="1.8.0" + repo="gstreamer" + hash="sha256:947a314a212b5d94985d89b43440dbe66b696e12bbdf9a2f78967b98d74abedc" + md5sum="6846d7289ec323c38c49b818171e955a"/> + </autotools> + + <autotools id="gst-plugins-base" + autogen-sh="autogen.sh" + autogenargs="--disable-examples --disable-gtk-doc --disable-introspection"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gstreamer"/> + </dependencies> + <branch module="gst-plugins-base/gst-plugins-base-${version}.tar.xz" version="1.8.0" + repo="gstreamer" + hash="sha256:abc0acc1d15b4b9c97c65cd9689bd6400081853b9980ea428d3c8572dd791522" + md5sum="20cc8231609318310f2a55f64c86cbb4"/> + </autotools> + + <autotools id="gst-plugins-good" autogenargs="--disable-examples --disable-soup --disable-gtk-doc --disable-introspection"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gst-plugins-base"/> + </dependencies> + + <branch module="gst-plugins-good/gst-plugins-good-${version}.tar.xz" version="1.8.0" + repo="gstreamer" + hash="sha256:c20c134d47dbc238d921707a3b66da709c2b4dd89f9d267cec13d1ddf16e9f4d" + md5sum="91ed4649c7c2e43a61f731d144f6f6d0"> + <patch file="gst-plugins-good-use-the-tfdt-decode-time.patch" strip="1"/> + <patch file="gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="gst-plugins-bad" autogenargs="--disable-examples --disable-gtk-doc --disable-introspection"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error CXXFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gst-plugins-base"/> + </dependencies> + <branch module="gst-plugins-bad/gst-plugins-bad-${version}.tar.xz" version="1.8.0" + repo="gstreamer" + hash="sha256:116376dd1085082422e0b21b0ecd3d1cb345c469c58e32463167d4675f4ca90e" + md5sum="1c2d797bb96a81e9ef570c7a0a37203e"/> + </autotools> + + <autotools id="gst-libav" autogenargs="--with-libav-extra-configure='--disable-yasm' --disable-gtk-doc"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gst-plugins-base"/> + </dependencies> + <branch module="gst-libav/gst-libav-${version}.tar.xz" version="1.8.0" + repo="gstreamer" + hash="sha256:5a1ce28876aee93cb4f3d090f0e807915a5d9bc1325e3480dd302b85aeb4291c" + md5sum="361638fa45466c5050bcde6bfe10fa46"/> + </autotools> + + <autotools id="libusrsctp" supports-non-srcdir-builds="no" autogen-sh="./bootstrap; ./configure --disable-warnings-as-errors"> + <branch repo="github.com" module="sctplab/usrsctp.git" checkoutdir="usrsctp" tag="078ff3252f73327e0ac11d6fd5eff62011f6646e"/> + </autotools> + + <autotools id="gst-plugins-openwebrtc" supports-parallel-builds="no" supports-non-srcdir-builds="no" autogen-sh="./autogen.sh; ./configure"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gst-plugins-base"/> + <dep package="libusrsctp"/> + </dependencies> + <branch repo="github.com" module="EricssonResearch/openwebrtc-gst-plugins.git" checkoutdir="gst-plugins-openwebrtc" tag="e359b67484af90f416ea35e301205d2b53c77a14"/> + </autotools> + + <autotools id="libnice"> + <dependencies> + <dep package="gstreamer"/> + </dependencies> + <branch repo="nice.freedesktop.org" module="releases/libnice-0.1.10.tar.gz" checkoutdir="libnice" version="0.1.10" + hash="sha256:1dbfb663b730889ae8cab13a2913fe557d581f70b513c918bbbd0b7d3eefebc9" + md5sum="27b62d0093ce29a39df1c6fcf0bb4396" size="903083"> + </branch> + </autotools> + + <autotools id="openwebrtc" autogenargs="--enable-bridge=no --enable-owr-gst=yes --disable-tests"> + <if condition-set="macos"> + <makeargs value="CFLAGS+=-Wno-error"/> + </if> + <dependencies> + <dep package="gst-plugins-openwebrtc"/> + <dep package="libnice"/> + </dependencies> + <branch repo="github.com-tarball" module="EricssonResearch/openwebrtc/archive/13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" checkoutdir="openwebrtc" version="13516c7f79a0c48bb411464f7613d4b426c70f5b" + hash="sha256:c849d36d97c17a198a5d9c180f13f14c7897c9236e2384ea11029e23b09b59ac" + md5sum="13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" size="258936"> + <patch file="openwebrtc-no-gtk-doc.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="icu" + autogen-sh="./source/configure" + autogenargs="--disable-samples --enable-weak-threads"> + <branch module="icu4c-55_1-src.tgz" version="55.1" checkoutdir="icu" + repo="webkitgtk-jhbuild-mirror" + hash="sha256:e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b"> + <patch file="icudata-stdlibs.patch" strip="1"/> + </branch> + </autotools> + +</moduleset> diff --git a/Tools/qt/jhbuildrc b/Tools/qt/jhbuildrc new file mode 100644 index 000000000..58dea347f --- /dev/null +++ b/Tools/qt/jhbuildrc @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +import sys +import platform + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../jhbuild") ) +import jhbuildrc_common + +jhbuildrc_common.init(globals(), "qt") diff --git a/Tools/qt/manifest.txt b/Tools/qt/manifest.txt new file mode 100644 index 000000000..bc4765030 --- /dev/null +++ b/Tools/qt/manifest.txt @@ -0,0 +1,132 @@ +# Global rules +exclude #$ +exclude ChangeLog +exclude CMakeLists.txt.user +exclude Makefile +exclude PlatformAppleWin.cmake +exclude PlatformGTK.cmake +exclude PlatformEfl.cmake +exclude PlatformMac.cmake +exclude PlatformWin.cmake +exclude PlatformWinCairo.cmake +exclude tags$ +exclude ~$ +exclude \.#$ +exclude \.bak$ +exclude \.cproject$ +exclude \.git$ +exclude \.gitattributes$ +exclude \.gitignore$ +exclude \.icns$ +exclude \.lproj$ +exclude \.m$ +exclude \.mm$ +exclude \.nib$ +exclude \.o$ +exclude \.order$ +exclude \.orig$ +exclude \.pdf$ +exclude \.plist$ +exclude \.project$ +exclude \.props$ +exclude \.pyc$ +exclude \.pyo$ +exclude \.rej$ +exclude \.rtf$ +exclude \.sb$ +exclude \.sb\.in$ +exclude \.settings$ +exclude \.svn$ +exclude \.sw[a-p]$ +exclude \.vcxproj$ +exclude \.xib$ +exclude \.xcconfig$ +exclude \.xcodeproj$ + +# Exclude directories from other ports +exclude .*\/(Configurations|mac|ios|cf|cg|cocoa|Cocoa|objc|avfoundation|ca|curl|efl|win|gtk|cairo|soup|gnutls)\/.*$ + +directory Source +exclude Source/JavaScriptCore/tests +exclude Source/WebCore/platform/audio/resources +exclude Source/WebCore/bindings/scripts/test +exclude Source/WebCore/platform/efl/DefaultTheme +exclude Source/WebCore/Resources +exclude Source/cmake/EFLHelpers.cmake$ +exclude Source/cmake/OptionsWinCairo.cmake$ +exclude Source/cmake/OptionsWindows.cmake$ +exclude Source/cmake/OptionsAppleWin.cmake$ +exclude Source/cmake/OptionsEfl.cmake$ +exclude Source/cmake/OptionsGTK.cmake$ +exclude Source/cmake/eflsymbols.filter$ +exclude Source/WebInspectorUI/Tools +exclude Source/WebInspectorUI/UserInterface/Images + +exclude Source/WebKit2/Resources + +file Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js + +# Windows-specific code +file Source/WTF/wtf/win/GDIObject.h +file Source/WebCore/platform/graphics/win/LocalWindowsContext.h +file Source/WebCore/platform/graphics/win/TransformationMatrixWin.cpp +file Source/WebCore/platform/win/BitmapInfo.cpp +file Source/WebCore/platform/win/BitmapInfo.h +file Source/WebCore/platform/win/SystemInfo.cpp +file Source/WebCore/platform/win/SystemInfo.h +file Source/WebCore/platform/win/WebCoreInstanceHandle.cpp +file Source/WebCore/platform/win/WebCoreInstanceHandle.h + +# WK1 plugin code is in WebKit/win +file Source/WebKit/win/Plugins + +# Version +file Source/WebKit/mac/Configurations/Version.xcconfig + +directory Source/WebInspectorUI/UserInterface/Images +exclude Source/WebInspectorUI/UserInterface/Images/.* +file Source/WebInspectorUI/UserInterface/Images/gtk +file Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js + +# Resources +file Source/WebCore/Resources/plugIns.js + +# WebCore.qrc +file Source/WebCore/Resources/missingImage.png +file Source/WebCore/Resources/nullPlugin.png +file Source/WebCore/Resources/textAreaResizeCorner.png +file Source/WebCore/Resources/urlIcon.png +file Source/WebCore/Resources/zoomInCursor.png +file Source/WebCore/Resources/zoomOutCursor.png +file Source/WebCore/Resources/verticalTextCursor.png +file Source/WebCore/Resources/cellCursor.png +file Source/WebCore/Resources/contextMenuCursor.png +file Source/WebCore/Resources/copyCursor.png +file Source/WebCore/Resources/progressCursor.png +file Source/WebCore/Resources/aliasCursor.png +file Source/WebCore/platform/audio/resources/Composite.wav + +directory Tools/qt +directory Tools/ImageDiff +directory Tools/MiniBrowser +directory Tools/TestWebKitAPI +directory Tools/QtTestBrowser + +directory Tools/DumpRenderTree +exclude Tools/DumpRenderTree/fonts + +directory Tools/WebKitTestRunner +exclude Tools/WebKitTestRunner/fonts/ + +file CMakeLists.txt +file Tools/CMakeLists.txt +file Tools/Scripts/VCSUtils.pm +file Tools/Scripts/build-webkit +file Tools/Scripts/run-gtk-tests +file Tools/Scripts/update-qtwebkit-win-libs +file Tools/Scripts/update-webkit-dependency +file Tools/Scripts/webkit-build-directory +file Tools/Scripts/webkitdirs.pm +file Tools/Scripts/webkitperl/FeatureList.pm +file Tools/jhbuild/jhbuildutils.py + diff --git a/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch new file mode 100644 index 000000000..03babba2d --- /dev/null +++ b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch @@ -0,0 +1,10 @@ +--- conf.d/Makefile.in.old 2016-06-23 19:00:01.309774583 +0300 ++++ conf.d/Makefile.in 2016-06-23 19:00:23.542159140 +0300 +@@ -341,6 +341,7 @@ + 65-fonts-persian.conf \ + 65-nonlatin.conf \ + 69-unifont.conf \ ++ 70-no-bitmaps.conf \ + 80-delicious.conf \ + 90-synthetic.conf + diff --git a/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch new file mode 100644 index 000000000..0ffe76b4e --- /dev/null +++ b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch @@ -0,0 +1,39 @@ +From e0469372be3870a5ad60b2c4586e9c281357bd28 Mon Sep 17 00:00:00 2001 +From: Werner Lemberg <wl@gnu.org> +Date: Tue, 22 Jan 2013 10:07:07 +0000 +Subject: [truetype] Fix font height. + +* src/truetype/ttobjs.c (tt_size_reset): The Windows rendering +engine uses rounded values of the ascender and descender to compute +the TrueType font height. +--- +diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c +index c61b218..590b66c 100644 +--- a/src/truetype/ttobjs.c ++++ b/src/truetype/ttobjs.c +@@ -4,7 +4,7 @@ + /* */ + /* Objects manager (body). */ + /* */ +-/* Copyright 1996-2012 */ ++/* Copyright 1996-2013 */ + /* David Turner, Robert Wilhelm, and Werner Lemberg. */ + /* */ + /* This file is part of the FreeType project, and may only be used, */ +@@ -1177,11 +1177,12 @@ + FT_PIX_ROUND( FT_MulFix( face->root.ascender, metrics->y_scale ) ); + metrics->descender = + FT_PIX_ROUND( FT_MulFix( face->root.descender, metrics->y_scale ) ); +- metrics->height = +- FT_PIX_ROUND( FT_MulFix( face->root.height, metrics->y_scale ) ); + metrics->max_advance = + FT_PIX_ROUND( FT_MulFix( face->root.max_advance_width, + metrics->x_scale ) ); ++ ++ /* the height is derived from rounded values */ ++ metrics->height = metrics->ascender - metrics->descender; + } + + /* compute new transformation */ +-- +cgit v0.9.0.2 diff --git a/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch new file mode 100644 index 000000000..3a60db477 --- /dev/null +++ b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch @@ -0,0 +1,133 @@ +From 1a81bd90d4a3e59d6669a0bbfa456f1ed4e5db48 Mon Sep 17 00:00:00 2001 +From: Xabier Rodriguez Calvar <calvaris@igalia.com> +Date: Thu, 7 Apr 2016 13:57:16 +0200 +Subject: [PATCH] Revert "qtdemux: expose streams with first moof for + fragmented format" + +This reverts commit d8bb6687ea251570c331038279a43d448167d6ad. +--- + gst/isomp4/qtdemux.c | 54 ++++++++++++++++------------------------------------ + gst/isomp4/qtdemux.h | 1 - + 2 files changed, 16 insertions(+), 39 deletions(-) + +diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c +index 39be163..9636b4b 100644 +--- a/gst/isomp4/qtdemux.c ++++ b/gst/isomp4/qtdemux.c +@@ -609,7 +609,6 @@ gst_qtdemux_init (GstQTDemux * qtdemux) + qtdemux->state = QTDEMUX_STATE_INITIAL; + qtdemux->pullbased = FALSE; + qtdemux->posted_redirect = FALSE; +- qtdemux->pending_configure = FALSE; + qtdemux->neededbytes = 16; + qtdemux->todrop = 0; + qtdemux->adapter = gst_adapter_new (); +@@ -2049,7 +2048,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard) + gst_caps_replace (&qtdemux->media_caps, NULL); + qtdemux->timescale = 0; + qtdemux->got_moov = FALSE; +- qtdemux->pending_configure = FALSE; + } else if (qtdemux->mss_mode) { + gst_flow_combiner_reset (qtdemux->flowcombiner); + for (n = 0; n < qtdemux->n_streams; n++) +@@ -6104,7 +6102,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) + &fourcc); + if (fourcc == FOURCC_moov) { + gint n; +- gboolean got_samples = FALSE; + + /* in usual fragmented setup we could try to scan for more + * and end up at the the moov (after mdat) again */ +@@ -6136,27 +6133,19 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) + qtdemux_node_dump (demux, demux->moov_node); + qtdemux_parse_tree (demux); + qtdemux_prepare_streams (demux); ++ if (!demux->got_moov) ++ qtdemux_expose_streams (demux); ++ else { + +- for (n = 0; n < demux->n_streams; n++) { +- QtDemuxStream *stream = demux->streams[n]; +- got_samples |= stream->stbl_index >= 0; +- } +- if (!demux->fragmented || got_samples) { +- if (!demux->got_moov) { +- qtdemux_expose_streams (demux); +- } else { +- for (n = 0; n < demux->n_streams; n++) { +- QtDemuxStream *stream = demux->streams[n]; +- gst_qtdemux_configure_stream (demux, stream); +- } ++ for (n = 0; n < demux->n_streams; n++) { ++ QtDemuxStream *stream = demux->streams[n]; ++ ++ gst_qtdemux_configure_stream (demux, stream); + } +- gst_qtdemux_check_send_pending_segment (demux); +- demux->pending_configure = FALSE; +- } else { +- demux->pending_configure = TRUE; + } + + demux->got_moov = TRUE; ++ gst_qtdemux_check_send_pending_segment (demux); + + /* fragmented streams headers shouldn't contain edts atoms */ + if (!demux->fragmented) { +@@ -6175,7 +6164,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) + guint64 dist = 0; + GstClockTime prev_pts; + guint64 prev_offset; +- gint n; + + GST_DEBUG_OBJECT (demux, "Parsing [moof]"); + +@@ -6209,25 +6197,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) + ret = GST_FLOW_ERROR; + goto done; + } +- /* in MSS we need to expose the pads after the first moof as we won't get a moov +- * Also, fragmented format need to be exposed if a moov have no valid sample data */ +- if (demux->mss_mode || demux->pending_configure) { +- if (!demux->exposed) { +- if (!demux->pending_newsegment) { +- GstSegment segment; +- gst_segment_init (&segment, GST_FORMAT_TIME); +- GST_DEBUG_OBJECT (demux, "new pending_newsegment"); +- demux->pending_newsegment = gst_event_new_segment (&segment); +- } +- qtdemux_expose_streams (demux); +- } else { +- for (n = 0; n < demux->n_streams; n++) { +- QtDemuxStream *stream = demux->streams[n]; +- gst_qtdemux_configure_stream (demux, stream); +- } ++ /* in MSS we need to expose the pads after the first moof as we won't get a moov */ ++ if (demux->mss_mode && !demux->exposed) { ++ if (!demux->pending_newsegment) { ++ GstSegment segment; ++ gst_segment_init (&segment, GST_FORMAT_TIME); ++ GST_DEBUG_OBJECT (demux, "new pending_newsegment"); ++ demux->pending_newsegment = gst_event_new_segment (&segment); + } +- gst_qtdemux_check_send_pending_segment (demux); +- demux->pending_configure = FALSE; ++ qtdemux_expose_streams (demux); + } + } else { + GST_DEBUG_OBJECT (demux, "Discarding [moof]"); +diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h +index 6061215..ecf0c63 100644 +--- a/gst/isomp4/qtdemux.h ++++ b/gst/isomp4/qtdemux.h +@@ -89,7 +89,6 @@ struct _GstQTDemux { + gboolean posted_redirect; + + /* push based variables */ +- gboolean pending_configure; + guint neededbytes; + guint todrop; + GstAdapter *adapter; +-- +2.8.0.rc3 + diff --git a/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch new file mode 100644 index 000000000..1e9dd97f7 --- /dev/null +++ b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch @@ -0,0 +1,146 @@ +From 46d3e0faa922643094a5e46a32e4f82f774ae772 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com> +Date: Tue, 10 Nov 2015 13:09:00 +0100 +Subject: [PATCH] Use the tfdt decode time when it's significantly different + than the time in the last sample if always-honor-tfdt is enabled + +https://bugzilla.gnome.org/show_bug.cgi?id=754230 +--- + gst/isomp4/qtdemux.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gst/isomp4/qtdemux.h | 1 + + 2 files changed, 73 insertions(+) + +diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c +index 880595e..d8b54f0 100644 +--- a/gst/isomp4/qtdemux.c ++++ b/gst/isomp4/qtdemux.c +@@ -535,6 +535,11 @@ static void gst_qtdemux_append_protection_system_id (GstQTDemux * qtdemux, + const gchar * id); + static void qtdemux_gst_structure_free (GstStructure * gststructure); + ++static void gst_qtdemux_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * spec); ++static void gst_qtdemux_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * spec); ++ + static void + gst_qtdemux_class_init (GstQTDemuxClass * klass) + { +@@ -546,8 +551,21 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass) + + parent_class = g_type_class_peek_parent (klass); + ++ gobject_class->set_property = gst_qtdemux_set_property; ++ gobject_class->get_property = gst_qtdemux_get_property; ++ + gobject_class->dispose = gst_qtdemux_dispose; + ++ /** ++ * GstQtDemux::always-honor-tfdt: ++ * ++ * Requests the demuxer to respect what the TFDT atom says in order to produce presentation timestamps. Defaults to FALSE. ++ */ ++ g_object_class_install_property (gobject_class, PROP_ALWAYS_HONOR_TFDT, ++ g_param_spec_boolean ("always-honor-tfdt", "Always honor TFDT", ++ "When enabled, TFDT atom will always be respected in order to produce presentation timestamps", ++ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); ++ + gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_qtdemux_change_state); + #if 0 + gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_qtdemux_set_index); +@@ -611,6 +629,7 @@ gst_qtdemux_init (GstQTDemux * qtdemux) + qtdemux->cenc_aux_info_sizes = NULL; + qtdemux->cenc_aux_sample_count = 0; + qtdemux->protection_system_ids = NULL; ++ qtdemux->always_honor_tfdt = FALSE; + g_queue_init (&qtdemux->protection_event_queue); + gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME); + qtdemux->flowcombiner = gst_flow_combiner_new (); +@@ -639,6 +658,42 @@ gst_qtdemux_dispose (GObject * object) + } + + static void ++gst_qtdemux_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec) ++{ ++ GstQTDemux *qtdemux = GST_QTDEMUX (object); ++ ++ switch (prop_id) { ++ case PROP_ALWAYS_HONOR_TFDT: ++ GST_OBJECT_LOCK (qtdemux); ++ qtdemux->always_honor_tfdt = g_value_get_boolean (value); ++ GST_OBJECT_UNLOCK (qtdemux); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_qtdemux_get_property (GObject * object, guint prop_id, GValue * value, ++ GParamSpec * pspec) ++{ ++ GstQTDemux *qtdemux = GST_QTDEMUX (object); ++ ++ switch (prop_id) { ++ case PROP_ALWAYS_HONOR_TFDT: ++ GST_OBJECT_LOCK (qtdemux); ++ g_value_set_boolean (value, qtdemux->always_honor_tfdt); ++ GST_OBJECT_UNLOCK (qtdemux); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void + gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux) + { + if (qtdemux->posted_redirect) { +@@ -2995,6 +3050,16 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun, + stream->samples[stream->n_samples - 1].timestamp + + stream->samples[stream->n_samples - 1].duration; + ++ /* If we're always honoring TFDT and there's a significative difference ++ * between the decode_ts and the timestamp, prefer decode_ts */ ++ if (qtdemux->always_honor_tfdt == TRUE ++ && abs (decode_ts - timestamp) > ++ stream->samples[stream->n_samples - 1].duration) { ++ GST_INFO_OBJECT (qtdemux, ++ "decode_ts is significantly different from timestamp, using decode_ts"); ++ timestamp = decode_ts; ++ } ++ + gst_ts = QTSTREAMTIME_TO_GSTTIME (stream, timestamp); + GST_INFO_OBJECT (qtdemux, "first sample ts %" GST_TIME_FORMAT + " (extends previous samples)", GST_TIME_ARGS (gst_ts)); +diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h +index 53bd071..ecf0c63 100644 +--- a/gst/isomp4/qtdemux.h ++++ b/gst/isomp4/qtdemux.h +@@ -154,12 +154,20 @@ struct _GstQTDemux { + guint8 *cenc_aux_info_sizes; + guint32 cenc_aux_sample_count; + ++ gboolean always_honor_tfdt; + }; + + struct _GstQTDemuxClass { + GstElementClass parent_class; + }; + ++/* props */ ++enum ++{ ++ PROP_0, ++ PROP_ALWAYS_HONOR_TFDT ++}; ++ + GType gst_qtdemux_get_type (void); + + G_END_DECLS +-- +2.6.1 + diff --git a/Tools/qt/patches/icudata-stdlibs.patch b/Tools/qt/patches/icudata-stdlibs.patch new file mode 100644 index 000000000..5e92bdec1 --- /dev/null +++ b/Tools/qt/patches/icudata-stdlibs.patch @@ -0,0 +1,15 @@ +Index: icu-52~m1/source/config/mh-linux +=================================================================== +--- icu-52~m1.orig/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400 ++++ icu-52~m1/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400 +@@ -21,7 +21,9 @@ + LD_RPATH_PRE = -Wl,-rpath, + + ## These are the library specific LDFLAGS +-LDFLAGSICUDT=-nodefaultlibs -nostdlib ++#LDFLAGSICUDT=-nodefaultlibs -nostdlib ++# Debian change: linking icudata as data only causes too many problems. ++LDFLAGSICUDT= + + ## Compiler switch to embed a library name + # The initial tab in the next line is to prevent icu-config from reading it. diff --git a/Tools/qt/patches/openwebrtc-no-gtk-doc.patch b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch new file mode 100644 index 000000000..fb665e7d2 --- /dev/null +++ b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch @@ -0,0 +1,60 @@ +diff --git a/autogen.sh b/autogen.sh +index 2c45ea9..878cf05 100755 +--- a/autogen.sh ++++ b/autogen.sh +@@ -6,27 +6,42 @@ + srcdir=`dirname $0` + (test -d $srcdir/m4) || mkdir $srcdir/m4 + +-pushd $srcdir > /dev/null +-gtkdocize && \ +-autoreconf --verbose --force --install --make || { +- echo 'autogen.sh failed'; +- exit 1; +-} +- +-popd > /dev/null +- +-while test "x$@" != "x" ; do +-optarg=`expr "x$@" : 'x[^=]*=\(.*\)'` +-case "$@" in ++for ag_option in $@ ++do ++case $ag_option in + --noconfigure) + NOCONFIGURE=defined + AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure" + echo "+ configure run disabled" +- shift ++ ;; ++ --disable-gtk-doc) ++ enable_gtk_doc=no ++ echo "+ gtk-doc disabled" + ;; + esac + done + ++pushd $srcdir > /dev/null ++ ++if test x$enable_gtk_doc = xno; then ++ if test -f gtk-doc.make; then :; else ++ echo "EXTRA_DIST = missing-gtk-doc" > gtk-doc.make ++ fi ++ echo "WARNING: You have disabled gtk-doc." ++ echo " As a result, you will not be able to generate the API" ++ echo " documentation and 'make dist' will not work." ++ echo ++else ++ gtkdocize || exit $? ++fi ++ ++autoreconf --verbose --force --install --make || { ++ echo 'autogen.sh failed'; ++ exit 1; ++} ++ ++popd > /dev/null ++ + for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done + if test ! -z "$CONFIGURE_EXT_OPT" + then diff --git a/Tools/qt/patches/qt-5.4-fontconfig-fix.patch b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch new file mode 100644 index 000000000..07395fe72 --- /dev/null +++ b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch @@ -0,0 +1,56 @@ +From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen <allan.jensen@digia.com> +Date: Thu, 6 Nov 2014 12:14:41 +0100 +Subject: [PATCH 1/1] Do not force the default fontconfig configuration + +Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase +has forced a full init to the default configuration breaking +applications that set a custom fontconfig. + +Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a +--- + .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++- + .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 + + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +index 8ebabf3..194f66c 100644 +--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp ++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern) + + void QFontconfigDatabase::populateFontDatabase() + { +- FcInitReinitialize(); ++ FcInit(); + FcFontSet *fonts; + + { +@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase() + // QApplication::setFont(font); + } + ++void QFontconfigDatabase::invalidate() ++{ ++ // Clear app fonts. ++ FcConfigAppFontClear(0); ++} ++ + QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) + { + return new QFontEngineMultiFontConfig(fontEngine, script); +diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +index 2199f39..ab77fab 100644 +--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h ++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase + { + public: + void populateFontDatabase(); ++ void invalidate() Q_DECL_OVERRIDE; + QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script); + QFontEngine *fontEngine(const QFontDef &fontDef, void *handle); + QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); +-- +2.9.0 + diff --git a/Tools/qt/patches/qt-fontconfig-fix.patch b/Tools/qt/patches/qt-fontconfig-fix.patch new file mode 100644 index 000000000..066c1cb84 --- /dev/null +++ b/Tools/qt/patches/qt-fontconfig-fix.patch @@ -0,0 +1,56 @@ +From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen <allan.jensen@digia.com> +Date: Thu, 6 Nov 2014 12:14:41 +0100 +Subject: [PATCH 1/1] Do not force the default fontconfig configuration + +Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase +has forced a full init to the default configuration breaking +applications that set a custom fontconfig. + +Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a +--- + .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++- + .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 + + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +index 8ebabf3..194f66c 100644 +--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp ++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern) + + void QFontconfigDatabase::populateFontDatabase() + { +- FcInitReinitialize(); ++ FcInit(); + FcFontSet *fonts; + + { +@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase() + // QApplication::setFont(font); + } + ++void QFontconfigDatabase::invalidate() ++{ ++ // Clear app fonts. ++ FcConfigAppFontClear(0); ++} ++ + QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) + { + return new QFontEngineMultiFontConfig(fontEngine, script); +diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +index 2199f39..ab77fab 100644 +--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h ++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase + { + public: + void populateFontDatabase() Q_DECL_OVERRIDE; ++ void invalidate() Q_DECL_OVERRIDE; + QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) Q_DECL_OVERRIDE; + QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) Q_DECL_OVERRIDE; + QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) Q_DECL_OVERRIDE; +-- +2.9.0 + |