[Flatpak SDK] Import build definitions
authorphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 May 2020 08:33:30 +0000 (08:33 +0000)
committerphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 May 2020 08:33:30 +0000 (08:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=211448

Reviewed by Carlos Alberto Lopez Perez.

To build the SDK, run `Tools/Scripts/webkit-flatpak-sdk --build`,
this can take hours and use gigabytes of your hard-drive. To build
a single recipe, use something like:

`Tools/Scripts/bst-wrapper build sdk/gtk.bst`

To enter the Buildstream SDK shell and debug stuff when hacking on
a specific dependency, `Tools/Scripts/bst-wrapper shell sdk/gtk.bst`.

To test your changes in WebKit:
```shell
$ Tools/Scripts/webkit-flatpak -u --repo=Tools/buildstream/repo
$ Tools/Scripts/run-minibrowser --gtk --flatpak-repo=Tools/buildstream/repo <url>
...
```

bst-wrapper has the same options as bst itself, documented on
https://docs.buildstream.build/1.4.2/index.html.

Internally the bst-wrapper will install Buildstream and a few
other python dependencies in a local virtualenv managed by pipenv.
This is all abstracted though, in theory direct access to the
pipenv environment shouldn't be needed.

* Scripts/bst-wrapper: Added.
* Scripts/webkit-flatpak-sdk: Added.
* buildstream/Makefile: Added.
* buildstream/Pipfile: Added.
* buildstream/Pipfile.lock: Added.
* buildstream/elements/filtered-openh264.bst: Added.
* buildstream/elements/filtered.bst: Added.
* buildstream/elements/flatpak-platform-extensions.bst: Added.
* buildstream/elements/flatpak-runtimes.bst: Added.
* buildstream/elements/flatpak/platform-arch-libs-debug.bst: Added.
* buildstream/elements/flatpak/platform-arch-libs.bst: Added.
* buildstream/elements/flatpak/platform-image.bst: Added.
* buildstream/elements/flatpak/platform-locale.bst: Added.
* buildstream/elements/flatpak/platform.bst: Added.
* buildstream/elements/flatpak/sdk-arch-libs-debug.bst: Added.
* buildstream/elements/flatpak/sdk-arch-libs.bst: Added.
* buildstream/elements/flatpak/sdk-debug.bst: Added.
* buildstream/elements/flatpak/sdk-docs.bst: Added.
* buildstream/elements/flatpak/sdk-image.bst: Added.
* buildstream/elements/flatpak/sdk-locale.bst: Added.
* buildstream/elements/flatpak/sdk.bst: Added.
* buildstream/elements/freedesktop-sdk.bst: Added.
* buildstream/elements/manifests/platform-manifest.bst: Added.
* buildstream/elements/manifests/sdk-manifest.bst: Added.
* buildstream/elements/qt5.bst: Added.
* buildstream/elements/qt5/qtbase.bst: Added.
* buildstream/elements/qt5/qtdeclarative.bst: Added.
* buildstream/elements/qt5/qtquickcontrols.bst: Added.
* buildstream/elements/qt5/qtquickcontrols2.bst: Added.
* buildstream/elements/qt5/qtwayland.bst: Added.
* buildstream/elements/qt5/qtx11extras.bst: Added.
* buildstream/elements/sdk-build-depends/libusb.bst: Added.
* buildstream/elements/sdk-build-depends/sassc.bst: Added.
* buildstream/elements/sdk-build-depends/utf8proc.bst: Added.
* buildstream/elements/sdk-depends/libsass.bst: Added.
* buildstream/elements/sdk-platform.bst: Added.
* buildstream/elements/sdk.bst: Added.
* buildstream/elements/sdk/adwaita-icon-theme.bst: Added.
* buildstream/elements/sdk/at-spi2-atk.bst: Added.
* buildstream/elements/sdk/at-spi2-core.bst: Added.
* buildstream/elements/sdk/atk.bst: Added.
* buildstream/elements/sdk/brotli.bst: Added.
* buildstream/elements/sdk/capnp.bst: Added.
* buildstream/elements/sdk/enchant-2.bst: Added.
* buildstream/elements/sdk/glib-networking.bst: Added.
* buildstream/elements/sdk/glib.bst: Added.
* buildstream/elements/sdk/gobject-introspection.bst: Added.
* buildstream/elements/sdk/graphene.bst: Added.
* buildstream/elements/sdk/graphviz.bst: Added.
* buildstream/elements/sdk/gst-libav.bst: Added.
* buildstream/elements/sdk/gst-plugins-bad.bst: Added.
* buildstream/elements/sdk/gst-plugins-base.bst: Added.
* buildstream/elements/sdk/gst-plugins-good.bst: Added.
* buildstream/elements/sdk/gst-plugins-ugly.bst: Added.
* buildstream/elements/sdk/gstreamer.bst: Added.
* buildstream/elements/sdk/gtk+-3.bst: Added.
* buildstream/elements/sdk/gtk.bst: Added.
* buildstream/elements/sdk/icecc.bst: Added.
* buildstream/elements/sdk/intltool.bst: Added.
* buildstream/elements/sdk/krb5.bst: Added.
* buildstream/elements/sdk/libcap-ng.bst: Added.
* buildstream/elements/sdk/libevent.bst: Added.
* buildstream/elements/sdk/libgcrypt.bst: Added.
* buildstream/elements/sdk/libmanette.bst: Added.
* buildstream/elements/sdk/libnotify.bst: Added.
* buildstream/elements/sdk/libopenh264.bst: Added.
* buildstream/elements/sdk/libsecret.bst: Added.
* buildstream/elements/sdk/libsoup.bst: Added.
* buildstream/elements/sdk/libsrtp2.bst: Added.
* buildstream/elements/sdk/libusrsctp.bst: Added.
* buildstream/elements/sdk/libwpe.bst: Added.
* buildstream/elements/sdk/libzstd.bst: Added.
* buildstream/elements/sdk/lzo2.bst: Added.
* buildstream/elements/sdk/openjpeg.bst: Added.
* buildstream/elements/sdk/openxr.bst: Added.
* buildstream/elements/sdk/os-release.bst: Added.
* buildstream/elements/sdk/patchelf.bst: Added.
* buildstream/elements/sdk/psmisc.bst: Added.
* buildstream/elements/sdk/pycairo.bst: Added.
* buildstream/elements/sdk/pygobject.bst: Added.
* buildstream/elements/sdk/python2-pycairo.bst: Added.
* buildstream/elements/sdk/python2-pygobject.bst: Added.
* buildstream/elements/sdk/python2-six.bst: Added.
* buildstream/elements/sdk/python2-subprocess32.bst: Added.
* buildstream/elements/sdk/python2.bst: Added.
* buildstream/elements/sdk/rr.bst: Added.
* buildstream/elements/sdk/sccache.bst: Added.
* buildstream/elements/sdk/shared-mime-info.bst: Added.
* buildstream/elements/sdk/subversion.bst: Added.
* buildstream/elements/sdk/v4lutils.bst: Added.
* buildstream/elements/sdk/woff2.bst: Added.
* buildstream/elements/sdk/wpebackend-fdo.bst: Added.
* buildstream/elements/sdk/x264.bst: Added.
* buildstream/elements/sdk/xorg-server.bst: Added.
* buildstream/elements/test-infra.bst: Added.
* buildstream/elements/test-infra/apr-util.bst: Added.
* buildstream/elements/test-infra/apr.bst: Added.
* buildstream/elements/test-infra/httpd.bst: Added.
* buildstream/elements/test-infra/perl-cgi-pm.bst: Added.
* buildstream/elements/test-infra/perl-http-date-pm.bst: Added.
* buildstream/elements/test-infra/php.bst: Added.
* buildstream/elements/test-infra/webkitgtk-test-dicts.bst: Added.
* buildstream/elements/test-infra/webkitgtk-test-fonts.bst: Added.
* buildstream/files/krb5/krb5.conf: Added.
* buildstream/files/os-release/issue.in: Added.
* buildstream/files/os-release/issue.net.in: Added.
* buildstream/files/os-release/org.webkit.Platform.appdata.xml.in: Added.
* buildstream/files/os-release/org.webkit.Sdk.appdata.xml.in: Added.
* buildstream/files/os-release/os-release.in: Added.
* buildstream/patches/fdo-0001-Update-gcc-to-9.3.0.patch: Added.
* buildstream/patches/fdo/0001-Add-Jack.patch: Added.
* buildstream/patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch: Added.
* buildstream/patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch: Added.
* buildstream/patches/fdo/0002-Update-PipeWire-to-0.3.1.patch: Added.
* buildstream/patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch: Added.
* buildstream/patches/fdo/0003-Add-Bluez.patch: Added.
* buildstream/patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch: Added.
* buildstream/patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch: Added.
* buildstream/patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch: Added.
* buildstream/patches/gst-libav-stop-caching-codecs.patch: Added.
* buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch: Added.
* buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch: Added.
* buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch: Added.
* buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch: Added.
* buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch: Added.
* buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch: Added.
* buildstream/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch: Added.
* buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch: Added.
* buildstream/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch: Added.
* buildstream/patches/libgcrypt-use-only-dev-urandom-for-testing.patch: Added.
* buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch: Added.
* buildstream/patches/nettle-no-debug.diff: Added.
* buildstream/patches/qtbase-avoid-hardcoding-kernel-version.patch: Added.
* buildstream/patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch: Added.
* buildstream/patches/qtbase-use-wayland-on-gnome.patch: Added.
* buildstream/patches/qtdeclarative-use-python3.patch: Added.
* buildstream/patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch: Added.
* buildstream/patches/sccache-no-selenium.patch: Added.
* buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch: Added.
* buildstream/project.conf: Added.
* buildstream/utils/generate-version: Added.
* gtk/install-dependencies:
* wpe/install-dependencies:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261274 268f45cc-cd09-0410-ab3c-d52691b4dbfc

147 files changed:
.gitignore
Tools/ChangeLog
Tools/Scripts/bst-wrapper [new file with mode: 0755]
Tools/Scripts/webkit-flatpak-sdk [new file with mode: 0755]
Tools/buildstream/Makefile [new file with mode: 0644]
Tools/buildstream/Pipfile [new file with mode: 0644]
Tools/buildstream/Pipfile.lock [new file with mode: 0644]
Tools/buildstream/README.rst [new file with mode: 0644]
Tools/buildstream/elements/filtered-openh264.bst [new file with mode: 0644]
Tools/buildstream/elements/filtered.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak-platform-extensions.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak-runtimes.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/platform-arch-libs-debug.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/platform-arch-libs.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/platform-image.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/platform-locale.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/platform.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-arch-libs-debug.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-arch-libs.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-debug.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-docs.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-image.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk-locale.bst [new file with mode: 0644]
Tools/buildstream/elements/flatpak/sdk.bst [new file with mode: 0644]
Tools/buildstream/elements/freedesktop-sdk.bst [new file with mode: 0644]
Tools/buildstream/elements/manifests/platform-manifest.bst [new file with mode: 0644]
Tools/buildstream/elements/manifests/sdk-manifest.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtbase.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtdeclarative.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtquickcontrols.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtquickcontrols2.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtwayland.bst [new file with mode: 0644]
Tools/buildstream/elements/qt5/qtx11extras.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk-build-depends/libusb.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk-build-depends/sassc.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk-build-depends/utf8proc.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk-depends/libsass.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk-platform.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/adwaita-icon-theme.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/at-spi2-atk.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/at-spi2-core.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/atk.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/brotli.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/capnp.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/enchant-2.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/glib-networking.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/glib.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gobject-introspection.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/graphene.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/graphviz.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gst-libav.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gst-plugins-bad.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gst-plugins-base.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gst-plugins-good.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gst-plugins-ugly.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gstreamer.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gtk+-3.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/gtk.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/icecc.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/intltool.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/krb5.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libcap-ng.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libevent.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libgcrypt.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libmanette.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libnotify.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libopenh264.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libsecret.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libsoup.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libsrtp2.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libusrsctp.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libwpe.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/libzstd.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/lzo2.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/openjpeg.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/openxr.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/os-release.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/patchelf.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/psmisc.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/pycairo.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/pygobject.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/python2-pycairo.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/python2-pygobject.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/python2-six.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/python2-subprocess32.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/python2.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/rr.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/sccache.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/shared-mime-info.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/subversion.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/v4lutils.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/woff2.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/wpebackend-fdo.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/x264.bst [new file with mode: 0644]
Tools/buildstream/elements/sdk/xorg-server.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/apr-util.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/apr.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/httpd.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/perl-cgi-pm.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/perl-http-date-pm.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/php.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/webkitgtk-test-dicts.bst [new file with mode: 0644]
Tools/buildstream/elements/test-infra/webkitgtk-test-fonts.bst [new file with mode: 0644]
Tools/buildstream/files/krb5/krb5.conf [new file with mode: 0644]
Tools/buildstream/files/os-release/issue.in [new file with mode: 0644]
Tools/buildstream/files/os-release/issue.net.in [new file with mode: 0644]
Tools/buildstream/files/os-release/org.webkit.Platform.appdata.xml.in [new file with mode: 0644]
Tools/buildstream/files/os-release/org.webkit.Sdk.appdata.xml.in [new file with mode: 0644]
Tools/buildstream/files/os-release/os-release.in [new file with mode: 0644]
Tools/buildstream/patches/fdo-0001-Update-gcc-to-9.3.0.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0001-Add-Jack.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0002-Update-PipeWire-to-0.3.1.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0003-Add-Bluez.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch [new file with mode: 0644]
Tools/buildstream/patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch [new file with mode: 0644]
Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch [new file with mode: 0644]
Tools/buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch [new file with mode: 0644]
Tools/buildstream/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch [new file with mode: 0644]
Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch [new file with mode: 0644]
Tools/buildstream/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch [new file with mode: 0644]
Tools/buildstream/patches/libgcrypt-use-only-dev-urandom-for-testing.patch [new file with mode: 0644]
Tools/buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch [new file with mode: 0644]
Tools/buildstream/patches/nettle-no-debug.diff [new file with mode: 0644]
Tools/buildstream/patches/openxr-0001-cmake-Check-for-C-17-and-conditionally-enable-it.patch [new file with mode: 0644]
Tools/buildstream/patches/qtbase-avoid-hardcoding-kernel-version.patch [new file with mode: 0644]
Tools/buildstream/patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch [new file with mode: 0644]
Tools/buildstream/patches/qtbase-use-wayland-on-gnome.patch [new file with mode: 0644]
Tools/buildstream/patches/qtdeclarative-use-python3.patch [new file with mode: 0644]
Tools/buildstream/patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch [new file with mode: 0644]
Tools/buildstream/patches/sccache-no-selenium.patch [new file with mode: 0644]
Tools/buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch [new file with mode: 0644]
Tools/buildstream/project.conf [new file with mode: 0644]
Tools/buildstream/utils/generate-version [new file with mode: 0755]
Tools/gtk/install-dependencies
Tools/wpe/install-dependencies

index 4d752f2..de41f19 100644 (file)
@@ -13,6 +13,12 @@ project.xcworkspace
 xcuserdata
 .mailmap
 
+# Ignore Buildstream local files
+/Tools/buildstream/.bst
+/Tools/buildstream/.venv
+/Tools/buildstream/cache
+/Tools/buildstream/flatpak-version.yml
+
 # Ignore auto-generated files by VS & VSCode.
 *.vcproj.*.user
 *.suo
index f31f693..736b8a6 100644 (file)
@@ -1,3 +1,178 @@
+2020-05-07  Philippe Normand  <pnormand@igalia.com>
+
+        [Flatpak SDK] Import build definitions
+        https://bugs.webkit.org/show_bug.cgi?id=211448
+
+        Reviewed by Carlos Alberto Lopez Perez.
+
+        To build the SDK, run `Tools/Scripts/webkit-flatpak-sdk --build`,
+        this can take hours and use gigabytes of your hard-drive. To build
+        a single recipe, use something like:
+
+        `Tools/Scripts/bst-wrapper build sdk/gtk.bst`
+
+        To enter the Buildstream SDK shell and debug stuff when hacking on
+        a specific dependency, `Tools/Scripts/bst-wrapper shell sdk/gtk.bst`.
+
+        To test your changes in WebKit:
+        ```shell
+        $ Tools/Scripts/webkit-flatpak -u --repo=Tools/buildstream/repo
+        $ Tools/Scripts/run-minibrowser --gtk --flatpak-repo=Tools/buildstream/repo <url>
+        ...
+        ```
+
+        bst-wrapper has the same options as bst itself, documented on
+        https://docs.buildstream.build/1.4.2/index.html.
+
+        Internally the bst-wrapper will install Buildstream and a few
+        other python dependencies in a local virtualenv managed by pipenv.
+        This is all abstracted though, in theory direct access to the
+        pipenv environment shouldn't be needed.
+
+        * Scripts/bst-wrapper: Added.
+        * Scripts/webkit-flatpak-sdk: Added.
+        * buildstream/Makefile: Added.
+        * buildstream/Pipfile: Added.
+        * buildstream/Pipfile.lock: Added.
+        * buildstream/elements/filtered-openh264.bst: Added.
+        * buildstream/elements/filtered.bst: Added.
+        * buildstream/elements/flatpak-platform-extensions.bst: Added.
+        * buildstream/elements/flatpak-runtimes.bst: Added.
+        * buildstream/elements/flatpak/platform-arch-libs-debug.bst: Added.
+        * buildstream/elements/flatpak/platform-arch-libs.bst: Added.
+        * buildstream/elements/flatpak/platform-image.bst: Added.
+        * buildstream/elements/flatpak/platform-locale.bst: Added.
+        * buildstream/elements/flatpak/platform.bst: Added.
+        * buildstream/elements/flatpak/sdk-arch-libs-debug.bst: Added.
+        * buildstream/elements/flatpak/sdk-arch-libs.bst: Added.
+        * buildstream/elements/flatpak/sdk-debug.bst: Added.
+        * buildstream/elements/flatpak/sdk-docs.bst: Added.
+        * buildstream/elements/flatpak/sdk-image.bst: Added.
+        * buildstream/elements/flatpak/sdk-locale.bst: Added.
+        * buildstream/elements/flatpak/sdk.bst: Added.
+        * buildstream/elements/freedesktop-sdk.bst: Added.
+        * buildstream/elements/manifests/platform-manifest.bst: Added.
+        * buildstream/elements/manifests/sdk-manifest.bst: Added.
+        * buildstream/elements/qt5.bst: Added.
+        * buildstream/elements/qt5/qtbase.bst: Added.
+        * buildstream/elements/qt5/qtdeclarative.bst: Added.
+        * buildstream/elements/qt5/qtquickcontrols.bst: Added.
+        * buildstream/elements/qt5/qtquickcontrols2.bst: Added.
+        * buildstream/elements/qt5/qtwayland.bst: Added.
+        * buildstream/elements/qt5/qtx11extras.bst: Added.
+        * buildstream/elements/sdk-build-depends/libusb.bst: Added.
+        * buildstream/elements/sdk-build-depends/sassc.bst: Added.
+        * buildstream/elements/sdk-build-depends/utf8proc.bst: Added.
+        * buildstream/elements/sdk-depends/libsass.bst: Added.
+        * buildstream/elements/sdk-platform.bst: Added.
+        * buildstream/elements/sdk.bst: Added.
+        * buildstream/elements/sdk/adwaita-icon-theme.bst: Added.
+        * buildstream/elements/sdk/at-spi2-atk.bst: Added.
+        * buildstream/elements/sdk/at-spi2-core.bst: Added.
+        * buildstream/elements/sdk/atk.bst: Added.
+        * buildstream/elements/sdk/brotli.bst: Added.
+        * buildstream/elements/sdk/capnp.bst: Added.
+        * buildstream/elements/sdk/enchant-2.bst: Added.
+        * buildstream/elements/sdk/glib-networking.bst: Added.
+        * buildstream/elements/sdk/glib.bst: Added.
+        * buildstream/elements/sdk/gobject-introspection.bst: Added.
+        * buildstream/elements/sdk/graphene.bst: Added.
+        * buildstream/elements/sdk/graphviz.bst: Added.
+        * buildstream/elements/sdk/gst-libav.bst: Added.
+        * buildstream/elements/sdk/gst-plugins-bad.bst: Added.
+        * buildstream/elements/sdk/gst-plugins-base.bst: Added.
+        * buildstream/elements/sdk/gst-plugins-good.bst: Added.
+        * buildstream/elements/sdk/gst-plugins-ugly.bst: Added.
+        * buildstream/elements/sdk/gstreamer.bst: Added.
+        * buildstream/elements/sdk/gtk+-3.bst: Added.
+        * buildstream/elements/sdk/gtk.bst: Added.
+        * buildstream/elements/sdk/icecc.bst: Added.
+        * buildstream/elements/sdk/intltool.bst: Added.
+        * buildstream/elements/sdk/krb5.bst: Added.
+        * buildstream/elements/sdk/libcap-ng.bst: Added.
+        * buildstream/elements/sdk/libevent.bst: Added.
+        * buildstream/elements/sdk/libgcrypt.bst: Added.
+        * buildstream/elements/sdk/libmanette.bst: Added.
+        * buildstream/elements/sdk/libnotify.bst: Added.
+        * buildstream/elements/sdk/libopenh264.bst: Added.
+        * buildstream/elements/sdk/libsecret.bst: Added.
+        * buildstream/elements/sdk/libsoup.bst: Added.
+        * buildstream/elements/sdk/libsrtp2.bst: Added.
+        * buildstream/elements/sdk/libusrsctp.bst: Added.
+        * buildstream/elements/sdk/libwpe.bst: Added.
+        * buildstream/elements/sdk/libzstd.bst: Added.
+        * buildstream/elements/sdk/lzo2.bst: Added.
+        * buildstream/elements/sdk/openjpeg.bst: Added.
+        * buildstream/elements/sdk/openxr.bst: Added.
+        * buildstream/elements/sdk/os-release.bst: Added.
+        * buildstream/elements/sdk/patchelf.bst: Added.
+        * buildstream/elements/sdk/psmisc.bst: Added.
+        * buildstream/elements/sdk/pycairo.bst: Added.
+        * buildstream/elements/sdk/pygobject.bst: Added.
+        * buildstream/elements/sdk/python2-pycairo.bst: Added.
+        * buildstream/elements/sdk/python2-pygobject.bst: Added.
+        * buildstream/elements/sdk/python2-six.bst: Added.
+        * buildstream/elements/sdk/python2-subprocess32.bst: Added.
+        * buildstream/elements/sdk/python2.bst: Added.
+        * buildstream/elements/sdk/rr.bst: Added.
+        * buildstream/elements/sdk/sccache.bst: Added.
+        * buildstream/elements/sdk/shared-mime-info.bst: Added.
+        * buildstream/elements/sdk/subversion.bst: Added.
+        * buildstream/elements/sdk/v4lutils.bst: Added.
+        * buildstream/elements/sdk/woff2.bst: Added.
+        * buildstream/elements/sdk/wpebackend-fdo.bst: Added.
+        * buildstream/elements/sdk/x264.bst: Added.
+        * buildstream/elements/sdk/xorg-server.bst: Added.
+        * buildstream/elements/test-infra.bst: Added.
+        * buildstream/elements/test-infra/apr-util.bst: Added.
+        * buildstream/elements/test-infra/apr.bst: Added.
+        * buildstream/elements/test-infra/httpd.bst: Added.
+        * buildstream/elements/test-infra/perl-cgi-pm.bst: Added.
+        * buildstream/elements/test-infra/perl-http-date-pm.bst: Added.
+        * buildstream/elements/test-infra/php.bst: Added.
+        * buildstream/elements/test-infra/webkitgtk-test-dicts.bst: Added.
+        * buildstream/elements/test-infra/webkitgtk-test-fonts.bst: Added.
+        * buildstream/files/krb5/krb5.conf: Added.
+        * buildstream/files/os-release/issue.in: Added.
+        * buildstream/files/os-release/issue.net.in: Added.
+        * buildstream/files/os-release/org.webkit.Platform.appdata.xml.in: Added.
+        * buildstream/files/os-release/org.webkit.Sdk.appdata.xml.in: Added.
+        * buildstream/files/os-release/os-release.in: Added.
+        * buildstream/patches/fdo-0001-Update-gcc-to-9.3.0.patch: Added.
+        * buildstream/patches/fdo/0001-Add-Jack.patch: Added.
+        * buildstream/patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch: Added.
+        * buildstream/patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch: Added.
+        * buildstream/patches/fdo/0002-Update-PipeWire-to-0.3.1.patch: Added.
+        * buildstream/patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch: Added.
+        * buildstream/patches/fdo/0003-Add-Bluez.patch: Added.
+        * buildstream/patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch: Added.
+        * buildstream/patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch: Added.
+        * buildstream/patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch: Added.
+        * buildstream/patches/gst-libav-stop-caching-codecs.patch: Added.
+        * buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch: Added.
+        * buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch: Added.
+        * buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch: Added.
+        * buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch: Added.
+        * buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch: Added.
+        * buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch: Added.
+        * buildstream/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch: Added.
+        * buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch: Added.
+        * buildstream/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch: Added.
+        * buildstream/patches/libgcrypt-use-only-dev-urandom-for-testing.patch: Added.
+        * buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch: Added.
+        * buildstream/patches/nettle-no-debug.diff: Added.
+        * buildstream/patches/qtbase-avoid-hardcoding-kernel-version.patch: Added.
+        * buildstream/patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch: Added.
+        * buildstream/patches/qtbase-use-wayland-on-gnome.patch: Added.
+        * buildstream/patches/qtdeclarative-use-python3.patch: Added.
+        * buildstream/patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch: Added.
+        * buildstream/patches/sccache-no-selenium.patch: Added.
+        * buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch: Added.
+        * buildstream/project.conf: Added.
+        * buildstream/utils/generate-version: Added.
+        * gtk/install-dependencies:
+        * wpe/install-dependencies:
+
 2020-05-07  Mark Lam  <mark.lam@apple.com>
 
         Fix broken exceptionFuzz tests.
diff --git a/Tools/Scripts/bst-wrapper b/Tools/Scripts/bst-wrapper
new file mode 100755 (executable)
index 0000000..06d5d44
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Igalia S.L.
+#
+# This program 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.1 of the License, or (at your option) any later version.
+#
+# This program 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 program; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import os
+import subprocess
+import sys
+
+scriptdir = os.path.abspath(os.path.dirname(__file__))
+SDK_PROJECT_PATH = os.path.join(scriptdir, "..", "buildstream")
+PIPENV_PIPFILE = os.path.realpath(os.path.join(SDK_PROJECT_PATH, "Pipfile"))
+
+def run_pipenv(args: list, **kw) -> subprocess.CompletedProcess:
+    local_env = {
+        "PIPENV_VENV_IN_PROJECT": "1",
+        "PIPENV_PIPFILE": PIPENV_PIPFILE
+    }
+    kw["env"] = os.environ
+    kw["env"].update(local_env)
+    return subprocess.run(["pipenv", ] + args, **kw)
+
+def ensure_environment():
+    result = run_pipenv(["--venv",], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+    if result.returncode != 0:
+        run_pipenv(["install"])
+
+def run_bst(args: list) -> subprocess.CompletedProcess:
+    return run_pipenv(["run", "bst", "-C", SDK_PROJECT_PATH] + args)
+
+def main(args: list) -> int:
+    ensure_environment()
+    if args[0] == "pipenv":
+        run_pipenv(args[1:])
+    else:
+        run_bst(args)
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv[1:]))
diff --git a/Tools/Scripts/webkit-flatpak-sdk b/Tools/Scripts/webkit-flatpak-sdk
new file mode 100755 (executable)
index 0000000..9baefbb
--- /dev/null
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Igalia S.L.
+#
+# This program 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.1 of the License, or (at your option) any later version.
+#
+# This program 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 program; if not, write to the
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import argparse
+import os
+import subprocess
+import sys
+
+scriptdir = os.path.abspath(os.path.dirname(__file__))
+SDK_PROJECT_PATH = os.path.join(scriptdir, "..", "buildstream")
+wrapper = os.path.join(scriptdir, "bst-wrapper")
+
+def run_wrapper(args: list, **kw) -> subprocess.CompletedProcess:
+    kw["cwd"] = SDK_PROJECT_PATH
+    return subprocess.run(["make", f"BST={wrapper}",] + args, **kw)
+
+def main(args: list) -> int:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--build", dest='build', action='store_true')
+    parsed_args, command = parser.parse_known_args()
+
+    if parsed_args.build:
+        result = run_wrapper(command)
+        return result.returncode
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv[1:]))
diff --git a/Tools/buildstream/Makefile b/Tools/buildstream/Makefile
new file mode 100644 (file)
index 0000000..8851916
--- /dev/null
@@ -0,0 +1,124 @@
+ARCH ?= $(shell flatpak --default-arch)
+BOOTSTRAP_ARCH ?= $(shell flatpak --default-arch)
+
+GIT ?= git
+
+BST ?= bst
+BST_ARGS ?=
+_BST_ARGS ?= --no-interactive -o arch $(ARCH) -o bootstrap_build_arch $(BOOTSTRAP_ARCH)
+
+OSTREE ?= ostree
+
+CACHEDIR ?= cache
+
+REPO ?= repo
+GPG_KEY = 9A0495AF96828F9D5E032C46A9A60744BCE3F878
+
+# EXPORT_ARGS ?= --gpg-sign=${GPG_KEY} --gpg-homedir=gpg
+EXPORT_ARGS ?=
+
+RSYNC_HOST = software.igalia.com
+RSYNC_REMOTE_DIR = /var/www/software/webkit-sdk-repo
+
+FLATPAK_RUNTIMES_REPO = $(CACHEDIR)/flatpak-runtimes-repo
+FLATPAK_PLATFORM_EXTENSIONS_REPO = $(CACHEDIR)/flatpak-platform-extensions-repo
+EXPORT_REPO = $(REPO)
+
+EXPORT_REFS = $(shell [ -d "$(EXPORT_REPO)" ] && $(OSTREE) refs --repo $(EXPORT_REPO))
+
+all: export
+
+clean:
+       if [ -d "$(CACHEDIR)" ]; then rmdir $(CACHEDIR); fi
+       if [ -d "$(EXPORT_REPO)" ]; then rm -r $(EXPORT_REPO); fi
+.PHONY: clean
+
+export: | $(EXPORT_REPO)
+ifneq ($(EXPORT_ARGS),)
+       flatpak build-sign $(EXPORT_ARGS) $|
+endif
+       flatpak build-update-repo --generate-static-deltas $(EXPORT_ARGS) $|
+.PHONY: export
+
+
+fetch-junctions:
+       $(BST) $(BST_ARGS) $(_BST_ARGS) fetch freedesktop-sdk.bst
+.PHONY: fetch-junctions
+
+track:
+       $(BST) $(BST_ARGS) $(_BST_ARGS) track freedesktop-sdk.bst
+       $(BST) $(BST_ARGS) $(_BST_ARGS) track flatpak-runtimes.bst flatpak-platform-extensions.bst --deps=all
+.PHONY: track
+
+
+$(CACHEDIR):
+       mkdir -p $@
+
+$(EXPORT_REPO):
+       $(OSTREE) init --repo=$@ --mode=archive
+
+
+.git/hooks/pre-commit: utils/git-pre-commit
+       ln -frs $< .git/hooks/pre-commit
+
+
+flatpak-version.yml: $(GIT_HOOKS) | CLEAN-flatpak-version.yml
+       ./utils/generate-version $@
+.PHONY: flatpak-version.yml
+
+CLEAN-flatpak-version.yml:
+       rm -f flatpak-version.yml
+.PHONY: CLEAN-flatpak-version.yml
+clean: CLEAN-flatpak-version.yml
+
+
+BUILD-flatpak-runtimes: flatpak-version.yml elements/**/*.bst
+       $(BST) $(BST_ARGS) $(_BST_ARGS) build flatpak-runtimes.bst
+.PHONY: BUILD-flatpak-runtimes
+
+CHECK-flatpak-runtimes: flatpak-version.yml | fetch-junctions
+       $(BST) $(BST_ARGS) $(_BST_ARGS) show flatpak-runtimes.bst
+.PHONY: CHECK-flatpak-runtimes
+check: CHECK-flatpak-runtimes
+
+$(FLATPAK_RUNTIMES_REPO): BUILD-flatpak-runtimes | $(CACHEDIR)
+       $(BST) $(BST_ARGS) $(_BST_ARGS) checkout --hardlinks --force flatpak-runtimes.bst $@
+
+EXPORT-$(FLATPAK_RUNTIMES_REPO): $(FLATPAK_RUNTIMES_REPO) | $(EXPORT_REPO)
+       $(OSTREE) pull-local --repo=$| $<
+.PHONY: EXPORT-$(FLATPAK_RUNTIMES_REPO)
+export: EXPORT-$(FLATPAK_RUNTIMES_REPO)
+
+CLEAN-$(FLATPAK_RUNTIMES_REPO):
+       rm -rf $(FLATPAK_RUNTIMES_REPO)
+.PHONY: CLEAN-$(FLATPAK_RUNTIMES_REPO)
+clean: CLEAN-$(FLATPAK_RUNTIMES_REPO)
+
+
+BUILD-flatpak-platform-extensions: elements/**/*.bst
+       $(BST) $(BST_ARGS) $(_BST_ARGS) build flatpak-platform-extensions.bst
+.PHONY: BUILD-flatpak-platform-extensions
+
+CHECK-flatpak-platform-extensions: | fetch-junctions
+       $(BST) $(BST_ARGS) $(_BST_ARGS) show flatpak-platform-extensions.bst
+.PHONY: CHECK-flatpak-platform-extensions
+check: CHECK-flatpak-platform-extensions
+
+$(FLATPAK_PLATFORM_EXTENSIONS_REPO): BUILD-flatpak-platform-extensions | $(CACHEDIR)
+       $(BST) $(BST_ARGS) $(_BST_ARGS) checkout --hardlinks --force flatpak-platform-extensions.bst $@
+
+EXPORT-$(FLATPAK_PLATFORM_EXTENSIONS_REPO): $(FLATPAK_PLATFORM_EXTENSIONS_REPO) | $(EXPORT_REPO)
+       $(OSTREE) pull-local --repo=$| $<
+.PHONY: EXPORT-$(FLATPAK_PLATFORM_EXTENSIONS_REPO)
+export: EXPORT-$(FLATPAK_PLATFORM_EXTENSIONS_REPO)
+
+CLEAN-$(FLATPAK_PLATFORM_EXTENSIONS_REPO):
+       rm -rf $(FLATPAK_PLATFORM_EXTENSIONS_REPO)
+.PHONY: CLEAN-$(FLATPAK_PLATFORM_EXTENSIONS_REPO)
+clean: CLEAN-$(FLATPAK_PLATFORM_EXTENSIONS_REPO)
+
+pull-repo:
+       ./ostree-releng-scripts/rsync-repos --rsync-opts="-vz" --src ${RSYNC_HOST}:${RSYNC_REMOTE_DIR}/ --dest ${REPO}
+
+push-repo:
+       ./ostree-releng-scripts/rsync-repos --rsync-opts="-vz" --src ${REPO}/ --dest ${RSYNC_HOST}:${RSYNC_REMOTE_DIR}
diff --git a/Tools/buildstream/Pipfile b/Tools/buildstream/Pipfile
new file mode 100644 (file)
index 0000000..664a2a5
--- /dev/null
@@ -0,0 +1,14 @@
+[[source]]
+name = "pypi"
+url = "https://pypi.org/simple"
+verify_ssl = true
+
+[dev-packages]
+
+[packages]
+buildstream = "==1.4.2"
+buildstream-external = "*"
+pygobject = "==3.36"
+
+[requires]
+python_version = "3.8"
diff --git a/Tools/buildstream/Pipfile.lock b/Tools/buildstream/Pipfile.lock
new file mode 100644 (file)
index 0000000..646c998
--- /dev/null
@@ -0,0 +1,274 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "4f41b7722f8a8d18fefdd20067fd4964d018b3a1be53538918da0bf4dc27ff8b"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "3.8"
+        },
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "buildstream": {
+            "hashes": [
+                "sha256:8ecb000a9333f62a185451399353b7f16ce4281371f086bce6fe18843de93735"
+            ],
+            "index": "pypi",
+            "version": "==1.4.2"
+        },
+        "buildstream-external": {
+            "hashes": [
+                "sha256:67cebaf4cd259d92b515ec93bda49348198f2e942928761cfe9d17c6f9edda62"
+            ],
+            "index": "pypi",
+            "version": "==0.20.0"
+        },
+        "certifi": {
+            "hashes": [
+                "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304",
+                "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519"
+            ],
+            "version": "==2020.4.5.1"
+        },
+        "chardet": {
+            "hashes": [
+                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
+                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
+            ],
+            "version": "==3.0.4"
+        },
+        "click": {
+            "hashes": [
+                "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
+                "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
+            ],
+            "version": "==7.1.2"
+        },
+        "grpcio": {
+            "hashes": [
+                "sha256:085bbf7fd0070b8d65e84aa32979f17cfe624d27b5ce23955ef770c19d2d9623",
+                "sha256:0ae207a47ec0ad66eb1f53a27d566674d13a236c62ced409891335318ea9b8c5",
+                "sha256:0c130204ff5de0b9f041bf3126db0d29369d69883592e4b0d3c19868ba0ced7e",
+                "sha256:0ef6b380a588c2c6b29c6cfa0ba7f5d367beb33d5504bcc68658fa241ad498d2",
+                "sha256:16e1edb367763ea08d0994d4635ec05f4f8db9db59c39304b061097e3b93df43",
+                "sha256:16f5523dacae5aaeda4cf900da7e980747f663298c38c18eb4e5317704aa007a",
+                "sha256:181b5078cf568f37915b8a118afcef5fc9f3128c59c38998ed93e7dd793e3928",
+                "sha256:245564713cb4ac7bccb0f11be63781beb62299a44d8ab69031c859dbd9461728",
+                "sha256:271abbe28eb99fa5c70b3f272c0c66b67dab7bb11e1d29d8e616b4e0e099d29a",
+                "sha256:2e1b01cba26988c811c7fb91a0bca19c9afb776cc3d228993f08d324bdd0510a",
+                "sha256:3366bd6412c1e73acb1ee27d7f0c7d7dbee118ad8d98c957c8173691b2effeec",
+                "sha256:3893b39a0a17d857dc3a42fdb02a26aa53a59bfce49987187bcc0261647f1f55",
+                "sha256:3c7864d5ae63b787001b01b376f6315aef1a015aa9c809535235ed0ead907919",
+                "sha256:42c6716adf3ec1f608b2b56e885f26dd86e80d2fc1617f51fc92d1b0b649e28e",
+                "sha256:4bef0756b9e0df78e8d67a5b1e0e89b7daf41525d575f74e1f14a993c55b680d",
+                "sha256:4fe081862e58b8fbef0e479aefc9a64f8f17f53074df1085d8c1fe825a6e5df4",
+                "sha256:505a8d1b4ac571a51f10c4c995d5d4714f03c886604dc3c097ef5fd57bcfcf0b",
+                "sha256:5c2e81b6ab9768c43f2ca1c9a4c925823aad79ae95efb351007df4b92ebce592",
+                "sha256:70ff2df0c1795c5cf585a72d95bb458838b40bad5653c314b9067ba819e918f9",
+                "sha256:97b5612fc5d4bbf0490a2d80bed5eab5b59112ef1640440c1a9ac824bafa6968",
+                "sha256:a35f8f4a0334ed8b05db90383aecef8e49923ab430689a4360a74052f3a89cf4",
+                "sha256:aafe85a8210dfa1da3c46831b7f00c3735240b7b028eeba339eaea6ffdb593fb",
+                "sha256:c2e53eb253840f05278a8410628419ba7060815f86d48c9d83b6047de21c9956",
+                "sha256:c3645887db3309fc87c3db740b977d403fb265ebab292f1f6a926c4661231fd5",
+                "sha256:c6565cc92853af13237b2233f331efdad07339d27fe1f5f74256bfde7dc2f587",
+                "sha256:cbc322c5d5615e67c2a15be631f64e6c2bab8c12505bc7c150948abdaa0bdbac",
+                "sha256:df749ee982ec35ab76d37a1e637b10a92b4573e2b4e1f86a5fa8a1273c40a850",
+                "sha256:e9439d7b801c86df13c6cbb4c5a7e181c058f3c119d5e119a94a5f3090a8f060",
+                "sha256:f493ac4754717f25ace3614a51dd408a32b8bff3c9c0c85e9356e7e0a120a8c8",
+                "sha256:f80d10bdf1a306f7063046321fd4efc7732a606acdd4e6259b8a37349079b704",
+                "sha256:f83b0c91796eb42865451a20e82246011078ba067ea0744f7301e12a94ae2e1b"
+            ],
+            "version": "==1.28.1"
+        },
+        "idna": {
+            "hashes": [
+                "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb",
+                "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"
+            ],
+            "version": "==2.9"
+        },
+        "jinja2": {
+            "hashes": [
+                "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
+                "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
+            ],
+            "version": "==2.11.2"
+        },
+        "markupsafe": {
+            "hashes": [
+                "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
+                "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
+                "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
+                "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
+                "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
+                "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
+                "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
+                "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
+                "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
+                "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
+                "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
+                "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
+                "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
+                "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
+                "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
+                "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
+                "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
+                "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
+                "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
+                "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
+                "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
+                "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
+                "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
+                "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
+                "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
+                "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
+                "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
+                "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
+                "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
+                "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
+                "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
+                "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
+                "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
+            ],
+            "version": "==1.1.1"
+        },
+        "pluginbase": {
+            "hashes": [
+                "sha256:497894df38d0db71e1a4fbbfaceb10c3ef49a3f95a0582e11b75f8adaa030005"
+            ],
+            "version": "==1.0.0"
+        },
+        "protobuf": {
+            "hashes": [
+                "sha256:0bae429443cc4748be2aadfdaf9633297cfaeb24a9a02d0ab15849175ce90fab",
+                "sha256:24e3b6ad259544d717902777b33966a1a069208c885576254c112663e6a5bb0f",
+                "sha256:310a7aca6e7f257510d0c750364774034272538d51796ca31d42c3925d12a52a",
+                "sha256:52e586072612c1eec18e1174f8e3bb19d08f075fc2e3f91d3b16c919078469d0",
+                "sha256:73152776dc75f335c476d11d52ec6f0f6925774802cd48d6189f4d5d7fe753f4",
+                "sha256:7774bbbaac81d3ba86de646c39f154afc8156717972bf0450c9dbfa1dc8dbea2",
+                "sha256:82d7ac987715d8d1eb4068bf997f3053468e0ce0287e2729c30601feb6602fee",
+                "sha256:8eb9c93798b904f141d9de36a0ba9f9b73cc382869e67c9e642c0aba53b0fc07",
+                "sha256:adf0e4d57b33881d0c63bb11e7f9038f98ee0c3e334c221f0858f826e8fb0151",
+                "sha256:c40973a0aee65422d8cb4e7d7cbded95dfeee0199caab54d5ab25b63bce8135a",
+                "sha256:c77c974d1dadf246d789f6dad1c24426137c9091e930dbf50e0a29c1fcf00b1f",
+                "sha256:dd9aa4401c36785ea1b6fff0552c674bdd1b641319cb07ed1fe2392388e9b0d7",
+                "sha256:e11df1ac6905e81b815ab6fd518e79be0a58b5dc427a2cf7208980f30694b956",
+                "sha256:e2f8a75261c26b2f5f3442b0525d50fd79a71aeca04b5ec270fc123536188306",
+                "sha256:e512b7f3a4dd780f59f1bf22c302740e27b10b5c97e858a6061772668cd6f961",
+                "sha256:ef2c2e56aaf9ee914d3dccc3408d42661aaf7d9bb78eaa8f17b2e6282f214481",
+                "sha256:fac513a9dc2a74b99abd2e17109b53945e364649ca03d9f7a0b96aa8d1807d0a",
+                "sha256:fdfb6ad138dbbf92b5dbea3576d7c8ba7463173f7d2cb0ca1bd336ec88ddbd80"
+            ],
+            "version": "==3.11.3"
+        },
+        "psutil": {
+            "hashes": [
+                "sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058",
+                "sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953",
+                "sha256:60b86f327c198561f101a92be1995f9ae0399736b6eced8f24af41ec64fb88d4",
+                "sha256:685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e",
+                "sha256:73f35ab66c6c7a9ce82ba44b1e9b1050be2a80cd4dcc3352cc108656b115c74f",
+                "sha256:75e22717d4dbc7ca529ec5063000b2b294fc9a367f9c9ede1f65846c7955fd38",
+                "sha256:a02f4ac50d4a23253b68233b07e7cdb567bd025b982d5cf0ee78296990c22d9e",
+                "sha256:d008ddc00c6906ec80040d26dc2d3e3962109e40ad07fd8a12d0284ce5e0e4f8",
+                "sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26",
+                "sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5",
+                "sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310"
+            ],
+            "version": "==5.7.0"
+        },
+        "pycairo": {
+            "hashes": [
+                "sha256:2c143183280feb67f5beb4e543fd49990c28e7df427301ede04fc550d3562e84"
+            ],
+            "version": "==1.19.1"
+        },
+        "pygobject": {
+            "hashes": [
+                "sha256:b97f570e55017fcd3732164811f24ecf63983a4834f61b55b0aaf64ecefac856"
+            ],
+            "index": "pypi",
+            "version": "==3.36"
+        },
+        "pytoml": {
+            "hashes": [
+                "sha256:57a21e6347049f73bfb62011ff34cd72774c031b9828cb628a752225136dfc33",
+                "sha256:8eecf7c8d0adcff3b375b09fe403407aa9b645c499e5ab8cac670ac4a35f61e7"
+            ],
+            "version": "==0.1.21"
+        },
+        "requests": {
+            "hashes": [
+                "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee",
+                "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
+            ],
+            "version": "==2.23.0"
+        },
+        "ruamel.yaml": {
+            "hashes": [
+                "sha256:0962fd7999e064c4865f96fb1e23079075f4a2a14849bcdc5cdba53a24f9759b",
+                "sha256:099c644a778bf72ffa00524f78dd0b6476bca94a1da344130f4bf3381ce5b954"
+            ],
+            "version": "==0.16.10"
+        },
+        "ruamel.yaml.clib": {
+            "hashes": [
+                "sha256:1e77424825caba5553bbade750cec2277ef130647d685c2b38f68bc03453bac6",
+                "sha256:392b7c371312abf27fb549ec2d5e0092f7ef6e6c9f767bfb13e83cb903aca0fd",
+                "sha256:4d55386129291b96483edcb93b381470f7cd69f97585829b048a3d758d31210a",
+                "sha256:550168c02d8de52ee58c3d8a8193d5a8a9491a5e7b2462d27ac5bf63717574c9",
+                "sha256:57933a6986a3036257ad7bf283529e7c19c2810ff24c86f4a0cfeb49d2099919",
+                "sha256:615b0396a7fad02d1f9a0dcf9f01202bf9caefee6265198f252c865f4227fcc6",
+                "sha256:77556a7aa190be9a2bd83b7ee075d3df5f3c5016d395613671487e79b082d784",
+                "sha256:7aee724e1ff424757b5bd8f6c5bbdb033a570b2b4683b17ace4dbe61a99a657b",
+                "sha256:8073c8b92b06b572e4057b583c3d01674ceaf32167801fe545a087d7a1e8bf52",
+                "sha256:9c6d040d0396c28d3eaaa6cb20152cb3b2f15adf35a0304f4f40a3cf9f1d2448",
+                "sha256:a0ff786d2a7dbe55f9544b3f6ebbcc495d7e730df92a08434604f6f470b899c5",
+                "sha256:b1b7fcee6aedcdc7e62c3a73f238b3d080c7ba6650cd808bce8d7761ec484070",
+                "sha256:b66832ea8077d9b3f6e311c4a53d06273db5dc2db6e8a908550f3c14d67e718c",
+                "sha256:be018933c2f4ee7de55e7bd7d0d801b3dfb09d21dad0cce8a97995fd3e44be30",
+                "sha256:d0d3ac228c9bbab08134b4004d748cf9f8743504875b3603b3afbb97e3472947",
+                "sha256:d10e9dd744cf85c219bf747c75194b624cc7a94f0c80ead624b06bfa9f61d3bc",
+                "sha256:ea4362548ee0cbc266949d8a441238d9ad3600ca9910c3fe4e82ee3a50706973",
+                "sha256:ed5b3698a2bb241b7f5cbbe277eaa7fe48b07a58784fba4f75224fd066d253ad",
+                "sha256:f9dcc1ae73f36e8059589b601e8e4776b9976effd76c21ad6a855a74318efd6e"
+            ],
+            "markers": "platform_python_implementation == 'CPython' and python_version < '3.9'",
+            "version": "==0.2.0"
+        },
+        "six": {
+            "hashes": [
+                "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
+                "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
+            ],
+            "version": "==1.14.0"
+        },
+        "ujson": {
+            "hashes": [
+                "sha256:0c23f21e8d2b60efab57bc6ce9d1fb7c4e96f4bfefbf5a6043a3f3309e2a738a",
+                "sha256:2ab88e330405315512afe9276f29a60e9b3439187b273665630a57ed7fe1d936",
+                "sha256:3d1f4705a4ec1e48ff383a4d92299d8ec25e9a8158bcea619912440948117634",
+                "sha256:6217c63a36e9b26e9271e686d212397ce7fb04c07d85509dd4e2ed73493320f8",
+                "sha256:7ae13733d9467d16ccac2f38212cdee841b49ae927085c533425be9076b0bc9d",
+                "sha256:bd2deffc983827510e5145fb66e4cc0f577480c62fe0b4882139f8f7d27ae9a3",
+                "sha256:c8369ef49169804944e920c427e350182e33756422b69989c55608fc28bebf98"
+            ],
+            "version": "==2.0.3"
+        },
+        "urllib3": {
+            "hashes": [
+                "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
+                "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
+            ],
+            "version": "==1.25.9"
+        }
+    },
+    "develop": {}
+}
diff --git a/Tools/buildstream/README.rst b/Tools/buildstream/README.rst
new file mode 100644 (file)
index 0000000..c3050af
--- /dev/null
@@ -0,0 +1,57 @@
+==============================
+The WebKit Linux Developer SDK
+==============================
+
+This is aimed to replace the JHBuild setup, as announced in `webkit-dev`_. Most
+of the time developers won't need to manually build the SDK, they will download
+already-built versions of it.
+
+Rebuilding the SDK is needed when you have to update WebKit test dependencies or
+add new dependencies to the SDK.
+
+
+To build the SDK, run `Tools/Scripts/webkit-flatpak-sdk --build`, this can take
+hours and use gigabytes of your hard-drive. To build a single recipe, use
+something like:
+
+`Tools/Scripts/bst-wrapper build sdk/gtk.bst`
+
+To enter the Buildstream SDK shell and debug stuff when hacking on a specific
+dependency, `Tools/Scripts/bst-wrapper shell sdk/gtk.bst`.
+
+To test your changes in WebKit:
+
+{{{
+$ Tools/Scripts/webkit-flatpak -u --repo=Tools/buildstream/repo
+$ Tools/Scripts/run-minibrowser --gtk --flatpak-repo=Tools/buildstream/repo <url>
+...
+}}}
+
+bst-wrapper has the same options as bst itself, documented on the `Buildstream
+website`_.
+
+Another nice feature of Buildstream is `workspace`, where you can make changes
+to recipes:
+
+{{{
+$ Tools/Scripts/bst-wrapper workspace open sdk/openxr.bst ~/Projects/openxr
+# hack hack hack in ~/Projects/openxr/
+$ Tools/Scripts/bst-wrapper build sdk/openxr.bst
+# Once you are happy, format changes from your workspace with git:
+$ cd ~/Projects/openxr
+$ git commit -a ...
+$ git format-patch -1
+$ mv *.patch ~/WebKit/Tools/buildstream/patches/
+# finally add patches as sources in openxr.bst
+# and close the workspace
+$ Tools/Scripts/bst-wrapper workspace close sdk/openxr.bst
+$ rm -fr ~/Projects/openxr
+}}}
+
+Internally the bst-wrapper will install Buildstream and a few other python
+dependencies in a local virtualenv managed by pipenv. This is all abstracted
+though, in theory direct access to the pipenv environment shouldn't be needed.
+
+
+.. _webkit-dev: https://lists.webkit.org/pipermail/webkit-dev/2020-March/031147.html
+.. _Buildstream website: https://docs.buildstream.build/1.4.2/index.html
diff --git a/Tools/buildstream/elements/filtered-openh264.bst b/Tools/buildstream/elements/filtered-openh264.bst
new file mode 100644 (file)
index 0000000..8bf7c56
--- /dev/null
@@ -0,0 +1,6 @@
+kind: stack
+
+(?):
+- arch == "x86_64":
+    depends:
+    - sdk/libopenh264.bst
diff --git a/Tools/buildstream/elements/filtered.bst b/Tools/buildstream/elements/filtered.bst
new file mode 100644 (file)
index 0000000..4639fc8
--- /dev/null
@@ -0,0 +1,7 @@
+kind: stack
+
+(?):
+- arch == "x86_64":
+    depends:
+    - sdk/rr.bst
+    - sdk/sccache.bst
\ No newline at end of file
diff --git a/Tools/buildstream/elements/flatpak-platform-extensions.bst b/Tools/buildstream/elements/flatpak-platform-extensions.bst
new file mode 100644 (file)
index 0000000..00a4c62
--- /dev/null
@@ -0,0 +1,11 @@
+kind: flatpak_repo
+
+build-depends:
+- freedesktop-sdk.bst:deploy-tools/flatpak.bst
+
+config:
+  environment:
+  - deploy-tools/flatpak.bst
+  arch: '%{gcc_arch}'
+  branch: '1.0'
+  repo-mode: bare-user-only
diff --git a/Tools/buildstream/elements/flatpak-runtimes.bst b/Tools/buildstream/elements/flatpak-runtimes.bst
new file mode 100644 (file)
index 0000000..d0346fe
--- /dev/null
@@ -0,0 +1,66 @@
+kind: flatpak_repo
+
+build-depends:
+- freedesktop-sdk.bst:deploy-tools/flatpak.bst
+
+(?):
+# platform and sdk should not be built on i686
+- arch != 'i686':
+    build-depends:
+      (>):
+      - flatpak/platform.bst
+      - flatpak/platform-locale.bst
+      - flatpak/sdk.bst
+      - flatpak/sdk-debug.bst
+      - flatpak/sdk-docs.bst
+      - flatpak/sdk-locale.bst
+
+# platform compat is only built on 32 bit
+- arch in ('i686', 'arm'):
+    build-depends:
+      (>):
+      - flatpak/platform-arch-libs.bst
+      - flatpak/platform-arch-libs-debug.bst
+
+# sdk compat is not built on x86_64
+- arch != 'x86_64':
+    build-depends:
+      (>):
+      - flatpak/sdk-arch-libs.bst
+      - flatpak/sdk-arch-libs-debug.bst
+
+config:
+  environment:
+  - deploy-tools/flatpak.bst
+  arch: '%{gcc_arch}'
+  branch: '%{sdk-branch}'
+  repo-mode: bare-user-only
+  (?):
+  - arch == 'i686':
+      copy-refs:
+      - src: runtime/org.webkit.Platform.Compat.%{gcc_arch}/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Platform.Compat.%{gcc_arch}/x86_64/%{sdk-branch}
+      - src: runtime/org.webkit.Platform.Compat.%{gcc_arch}.Debug/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Platform.Compat.%{gcc_arch}.Debug/x86_64/%{sdk-branch}
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/x86_64/%{sdk-branch}
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/x86_64/%{sdk-branch}
+
+  - arch == 'arm':
+      copy-refs:
+      - src: runtime/org.webkit.Platform.Compat.%{gcc_arch}/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Platform.Compat.%{gcc_arch}/aarch64/%{sdk-branch}
+      - src: runtime/org.webkit.Platform.Compat.%{gcc_arch}.Debug/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Platform.Compat.%{gcc_arch}.Debug/aarch64/%{sdk-branch}
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/x86_64/%{sdk-branch}
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/x86_64/%{sdk-branch}
+
+  - arch == 'aarch64':
+      copy-refs:
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}/x86_64/%{sdk-branch}
+      - src: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/%{gcc_arch}/%{sdk-branch}
+        dest: runtime/org.webkit.Sdk.Compat.%{gcc_arch}.Debug/x86_64/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/platform-arch-libs-debug.bst b/Tools/buildstream/elements/flatpak/platform-arch-libs-debug.bst
new file mode 100644 (file)
index 0000000..5525509
--- /dev/null
@@ -0,0 +1,16 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/platform-image.bst
+
+config:
+  directory: '%{debugdir}%{libdir}'
+  include:
+  - debug
+
+  metadata:
+    Runtime:
+      name: org.webkit.Platform.Compat.%{gcc_arch}.Debug
+    ExtensionOf:
+      ref: runtime/org.webkit.Platform/%{gcc_arch}/%{sdk-branch}
+
diff --git a/Tools/buildstream/elements/flatpak/platform-arch-libs.bst b/Tools/buildstream/elements/flatpak/platform-arch-libs.bst
new file mode 100644 (file)
index 0000000..4de2172
--- /dev/null
@@ -0,0 +1,17 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/platform-image.bst
+- freedesktop-sdk.bst:integration/compat-gl-dir.bst
+
+config:
+  directory: '%{libdir}'
+  exclude:
+  - debug
+
+  metadata:
+    Runtime:
+      name: org.webkit.Platform.Compat.%{gcc_arch}
+    ExtensionOf:
+      ref: runtime/org.webkit.Platform/%{gcc_arch}/%{sdk-branch}
+
diff --git a/Tools/buildstream/elements/flatpak/platform-image.bst b/Tools/buildstream/elements/flatpak/platform-image.bst
new file mode 100644 (file)
index 0000000..dd15945
--- /dev/null
@@ -0,0 +1,23 @@
+kind: compose
+
+build-depends:
+- freedesktop-sdk.bst:integration/split-docs.bst
+- freedesktop-sdk.bst:integration/split-locales.bst
+- freedesktop-sdk.bst:multiarch/multiarch-platform.bst
+- sdk-platform.bst
+- manifests/platform-manifest.bst
+
+config:
+  exclude:
+  - devel
+  - extra
+  - static-blocklist
+  - vm-only
+
+public:
+  bst:
+    split-rules:
+      docs:
+      - '%{datadir}/runtime/docs/**'
+      locale:
+      - '%{datadir}/runtime/locale/**'
diff --git a/Tools/buildstream/elements/flatpak/platform-locale.bst b/Tools/buildstream/elements/flatpak/platform-locale.bst
new file mode 100644 (file)
index 0000000..3589564
--- /dev/null
@@ -0,0 +1,13 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/platform-image.bst
+
+config:
+  directory: '%{datadir}/runtime/locale'
+  metadata:
+    Runtime:
+      name: org.webkit.Platform.Locale
+
+    ExtensionOf:
+      ref: runtime/org.webkit.Platform/%{gcc_arch}/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/platform.bst b/Tools/buildstream/elements/flatpak/platform.bst
new file mode 100644 (file)
index 0000000..633938b
--- /dev/null
@@ -0,0 +1,90 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/platform-image.bst
+- freedesktop-sdk.bst:integration/platform-integration.bst
+
+variables:
+  # Obtain the versions of the flatpak extensions
+  (@): freedesktop-sdk.bst:include/_private/versions.yml
+
+config:
+  directory: '%{prefix}'
+  exclude:
+  - debug
+  - docs
+  - locale
+  metadata:
+    Runtime:
+      name: org.webkit.Platform
+      runtime: org.webkit.Platform/%{gcc_arch}/%{sdk-branch}
+      sdk: org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
+
+    Environment:
+      GI_TYPELIB_PATH: /app/lib/girepository-1.0
+      GST_PLUGIN_SYSTEM_PATH: /app/lib/gstreamer-1.0:/usr/lib/extensions/gstreamer-1.0:%{libdir}/gstreamer-1.0
+      XDG_DATA_DIRS: /app/share:/usr/share:/usr/share/runtime/share:/run/host/share
+
+    Extension org.webkit.Platform.Locale:
+      directory: share/runtime/locale
+
+    # Copied from sdk/elements/platform.bst from freedesktop-sdk because
+    # bst doesn't support inheriting extensions.
+    # When syncing, skip the Locale extension, and add the freedesktop-sdk
+    # version to extensions that don't have a version
+    Extension org.freedesktop.Platform.GL:
+      # 1.4 is for Nvidia drivers
+      versions: "%{freedesktop-sdk-flatpak-branch};1.4"
+      version: "1.4"
+      directory: "%{lib}/GL"
+      subdirectories: "true"
+      no-autodownload: "true"
+      autodelete: "false"
+      add-ld-path: "lib"
+      merge-dirs: "vulkan/icd.d;glvnd/egl_vendor.d;OpenCL/vendors;lib/dri;lib/d3d;vulkan/explicit_layer.d"
+      download-if: "active-gl-driver"
+      enable-if: "active-gl-driver"
+
+    Extension org.freedesktop.Platform.Timezones:
+      directory: share/zoneinfo
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.GStreamer:
+      directory: lib/extensions/gstreamer-1.0
+      subdirectories: 'true'
+      no-autodownload: 'true'
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.Icontheme:
+      directory: share/runtime/share/icons
+      subdirectories: 'true'
+      no-autodownload: 'true'
+      version: '1.0'
+
+    Extension org.gtk.Gtk3theme:
+      directory: share/runtime/share/themes
+      subdirectories: 'true'
+      subdirectory-suffix: gtk-3.0
+      no-autodownload: 'true'
+      version: '3.22'
+      download-if: active-gtk-theme
+
+    Extension org.freedesktop.Platform.VAAPI.Intel:
+      directory: '%{lib}/dri/intel-vaapi-driver'
+      autodelete: 'false'
+      no-autodownload: 'true'
+      add-ld-path: lib
+      download-if: have-intel-gpu
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.openh264:
+      directory: '%{lib}/openh264'
+      add-ld-path: extra
+      autodelete: 'false'
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.ffmpeg-full:
+      directory: '%{lib}/ffmpeg'
+      add-ld-path: '.'
+      autodelete: 'false'
+      version: '%{freedesktop-sdk-flatpak-branch}'
diff --git a/Tools/buildstream/elements/flatpak/sdk-arch-libs-debug.bst b/Tools/buildstream/elements/flatpak/sdk-arch-libs-debug.bst
new file mode 100644 (file)
index 0000000..2da4cca
--- /dev/null
@@ -0,0 +1,15 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+
+config:
+  directory: '%{debugdir}%{libdir}'
+  include:
+  - debug
+
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk.Compat.%{gcc_arch}.Debug
+    ExtensionOf:
+      ref: runtime/org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/sdk-arch-libs.bst b/Tools/buildstream/elements/flatpak/sdk-arch-libs.bst
new file mode 100644 (file)
index 0000000..e5a8b8f
--- /dev/null
@@ -0,0 +1,15 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+
+config:
+  directory: '%{libdir}'
+  exclude:
+  - debug
+
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk.Compat.%{gcc_arch}
+    ExtensionOf:
+      ref: runtime/org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/sdk-debug.bst b/Tools/buildstream/elements/flatpak/sdk-debug.bst
new file mode 100644 (file)
index 0000000..b43cac3
--- /dev/null
@@ -0,0 +1,14 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+
+config:
+  directory: '%{debugdir}'
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk.Debug
+
+    ExtensionOf:
+      ref: runtime/org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
+
diff --git a/Tools/buildstream/elements/flatpak/sdk-docs.bst b/Tools/buildstream/elements/flatpak/sdk-docs.bst
new file mode 100644 (file)
index 0000000..494c36f
--- /dev/null
@@ -0,0 +1,13 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+
+config:
+  directory: '%{datadir}/runtime/docs'
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk.Docs
+
+    ExtensionOf:
+      ref: runtime/org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/sdk-image.bst b/Tools/buildstream/elements/flatpak/sdk-image.bst
new file mode 100644 (file)
index 0000000..68d67fb
--- /dev/null
@@ -0,0 +1,24 @@
+kind: compose
+
+build-depends:
+- freedesktop-sdk.bst:integration/debug-app-link.bst
+- freedesktop-sdk.bst:integration/flatpak-builder-configuration.bst
+- freedesktop-sdk.bst:integration/split-docs.bst
+- freedesktop-sdk.bst:integration/split-locales.bst
+- freedesktop-sdk.bst:multiarch/multiarch-sdk.bst
+- sdk.bst
+- manifests/sdk-manifest.bst
+
+config:
+  exclude:
+  - extra
+  - static-blocklist
+  - vm-only
+
+public:
+  bst:
+    split-rules:
+      docs:
+      - '%{datadir}/runtime/docs/**'
+      locale:
+      - '%{datadir}/runtime/locale/**'
diff --git a/Tools/buildstream/elements/flatpak/sdk-locale.bst b/Tools/buildstream/elements/flatpak/sdk-locale.bst
new file mode 100644 (file)
index 0000000..63c5b3c
--- /dev/null
@@ -0,0 +1,13 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+
+config:
+  directory: '%{datadir}/runtime/locale'
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk.Locale
+
+    ExtensionOf:
+      ref: runtime/org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
diff --git a/Tools/buildstream/elements/flatpak/sdk.bst b/Tools/buildstream/elements/flatpak/sdk.bst
new file mode 100644 (file)
index 0000000..547507e
--- /dev/null
@@ -0,0 +1,140 @@
+kind: flatpak_image
+
+build-depends:
+- flatpak/sdk-image.bst
+- freedesktop-sdk.bst:integration/linker-debuginfo.bst
+- freedesktop-sdk.bst:integration/sdk-integration.bst
+
+variables:
+  # Obtain the versions of the flatpak extensions
+  (@): freedesktop-sdk.bst:include/_private/versions.yml
+
+config:
+  directory: '%{prefix}'
+  exclude:
+  - debug
+  - docs
+  - locale
+  metadata:
+    Runtime:
+      name: org.webkit.Sdk
+      runtime: org.webkit.Platform/%{gcc_arch}/%{sdk-branch}
+      sdk: org.webkit.Sdk/%{gcc_arch}/%{sdk-branch}
+
+    Environment:
+      GI_TYPELIB_PATH: /app/lib/girepository-1.0
+      GST_PLUGIN_SYSTEM_PATH: /app/lib/gstreamer-1.0:/usr/lib/extensions/gstreamer-1.0:%{libdir}/gstreamer-1.0
+      XDG_DATA_DIRS: /app/share:/usr/share:/usr/share/runtime/share:/run/host/share
+
+    Extension org.webkit.Sdk.Debug:
+      directory: lib/debug
+
+    Extension org.webkit.Sdk.Docs:
+      directory: share/runtime/docs
+      autodelete: 'true'
+      no-autodownload: 'true'
+
+    Extension org.webkit.Sdk.Locale:
+      directory: share/runtime/locale
+
+    # Copied from sdk/elements/sdk.bst from freedesktop-sdk because
+    # bst doesn't support inheriting extensions
+    # When syncing, skip the Debug, Docs and Locale extensions, and
+    # add the freedesktop-sdk version to extensions that don't have
+    # a version.
+    Extension org.freedesktop.Platform.GL:
+      # 1.4 is for Nvidia drivers
+      versions: "%{freedesktop-sdk-flatpak-branch};1.4"
+      version: "1.4"
+      directory: "%{lib}/GL"
+      subdirectories: "true"
+      autodelete: "false"
+      add-ld-path: "lib"
+      merge-dirs: "vulkan/icd.d;glvnd/egl_vendor.d;OpenCL/vendors;lib/dri;lib/d3d;vulkan/explicit_layer.d"
+      download-if: "active-gl-driver"
+      enable-if: "active-gl-driver"
+
+    Extension org.freedesktop.Platform.Timezones:
+      directory: share/zoneinfo
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.GStreamer:
+      directory: lib/extensions/gstreamer-1.0
+      subdirectories: 'true'
+      no-autodownload: 'true'
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.Icontheme:
+      directory: share/runtime/share/icons
+      subdirectories: 'true'
+      no-autodownload: 'true'
+      version: '1.0'
+
+    Extension org.gtk.Gtk3theme:
+      directory: share/runtime/share/themes
+      subdirectories: 'true'
+      subdirectory-suffix: gtk-3.0
+      no-autodownload: 'true'
+      version: '3.22'
+      download-if: active-gtk-theme
+
+    Extension org.freedesktop.Platform.openh264:
+      directory: '%{lib}/openh264'
+      add-ld-path: extra
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Sdk.Extension:
+      subdirectories: 'true'
+      directory: lib/sdk
+      no-autodownload: 'true'
+      add-ld-path: lib
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.VAAPI.Intel:
+      directory: '%{lib}/dri/intel-vaapi-driver'
+      autodelete: 'false'
+      no-autodownload: 'true'
+      download-if: have-intel-gpu
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    Extension org.freedesktop.Platform.ffmpeg-full:
+      directory: '%{lib}/ffmpeg'
+      add-ld-path: '.'
+      autodelete: 'false'
+      version: '%{freedesktop-sdk-flatpak-branch}'
+
+    (?):
+    - arch in ["x86_64", "aarch64"]:
+        Extension org.webkit.Sdk.Compat.arm:
+          directory: 'lib/arm-linux-gnueabihf'
+          autodelete: 'true'
+          no-autodownload: 'true'
+          add-ld-path: '.'
+
+        Extension org.webkit.Sdk.Compat.arm.Debug:
+          directory: 'lib/arm-linux-gnueabihf'
+          autodelete: 'true'
+          no-autodownload: 'true'
+
+    - arch == "x86_64":
+        Extension org.webkit.Sdk.Compat.i386:
+          directory: 'lib/i386-linux-gnu'
+          autodelete: 'true'
+          no-autodownload: 'true'
+          add-ld-path: '.'
+
+        Extension org.webkit.Sdk.Compat.i386.Debug:
+          directory: 'lib/debug/usr/lib/i386-linux-gnu'
+          autodelete: 'true'
+          no-autodownload: 'true'
+
+        Extension org.webkit.Sdk.Compat.aarch64:
+          directory: 'lib/aarch64-linux-gnu'
+          autodelete: 'true'
+          no-autodownload: 'true'
+          add-ld-path: '.'
+
+        Extension org.webkit.Sdk.Compat.aarch64.Debug:
+          directory: "lib/debug/usr/lib/aarch64-linux-gnu"
+          autodelete: 'true'
+          no-autodownload: 'true'
diff --git a/Tools/buildstream/elements/freedesktop-sdk.bst b/Tools/buildstream/elements/freedesktop-sdk.bst
new file mode 100644 (file)
index 0000000..d46c462
--- /dev/null
@@ -0,0 +1,34 @@
+kind: junction
+
+sources:
+- kind: git_tag
+  url: gitlab_com:freedesktop-sdk/freedesktop-sdk.git
+  # Changed to track git commit from upstream bst
+  track: '19.08'
+  track-tags: true
+  ref: freedesktop-sdk-19.08.10-0-gf24d6f4dd60da0c94c61a3993f5992fa28219a8f
+- kind: patch
+  path: patches/nettle-no-debug.diff
+- kind: patch
+  path: patches/fdo-0001-Update-gcc-to-9.3.0.patch
+- kind: patch
+  path: patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch
+- kind: patch
+  path: patches/fdo/0001-Add-Jack.patch
+- kind: patch
+  path: patches/fdo/0002-Update-PipeWire-to-0.3.1.patch
+- kind: patch
+  path: patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch
+- kind: patch
+  path: patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch
+- kind: patch
+  path: patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch
+- kind: patch
+  path: patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch
+- kind: patch
+  path: patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch
+
+config:
+  options:
+    target_arch: '%{arch}'
+    bootstrap_build_arch: '%{bootstrap_build_arch}'
diff --git a/Tools/buildstream/elements/manifests/platform-manifest.bst b/Tools/buildstream/elements/manifests/platform-manifest.bst
new file mode 100644 (file)
index 0000000..4afeac1
--- /dev/null
@@ -0,0 +1,8 @@
+kind: collect_manifest
+
+depends:
+  - filename: sdk-platform.bst
+    type: build
+
+config:
+  path: "/usr/manifest.json"
diff --git a/Tools/buildstream/elements/manifests/sdk-manifest.bst b/Tools/buildstream/elements/manifests/sdk-manifest.bst
new file mode 100644 (file)
index 0000000..436ba15
--- /dev/null
@@ -0,0 +1,8 @@
+kind: collect_manifest
+
+depends:
+  - filename: sdk.bst
+    type: build
+
+config:
+  path: "/usr/manifest.json"
diff --git a/Tools/buildstream/elements/qt5.bst b/Tools/buildstream/elements/qt5.bst
new file mode 100644 (file)
index 0000000..3eb6909
--- /dev/null
@@ -0,0 +1,10 @@
+kind: stack
+description: Stack of components in the Qt5 frameworks
+
+depends:
+- qt5/qtbase.bst
+- qt5/qtdeclarative.bst
+- qt5/qtquickcontrols2.bst
+- qt5/qtquickcontrols.bst
+- qt5/qtwayland.bst
+- qt5/qtx11extras.bst
diff --git a/Tools/buildstream/elements/qt5/qtbase.bst b/Tools/buildstream/elements/qt5/qtbase.bst
new file mode 100644 (file)
index 0000000..28e3580
--- /dev/null
@@ -0,0 +1,75 @@
+kind: manual
+
+depends:
+- sdk/gtk+-3.bst
+- freedesktop-sdk.bst:components/perl.bst        
+      # gtk3 seems to have all the so files that qtbase needs access to
+      # perl is listed as a recommended dependency on packages.debian.org
+      # plus, perl seems to be needed as a build-dep for almost everything that depends on qtbase
+
+build-depends:
+- freedesktop-sdk.bst:components/pkg-config.bst
+- freedesktop-sdk.bst:components/which.bst
+- freedesktop-sdk.bst:components/libdrm.bst
+
+variables:
+  conf-local: |
+    -prefix %{prefix} \
+    -libdir %{libdir} \
+    -accessibility \
+    -confirm-license \
+    -dbus-linked \
+    -fontconfig \
+    -glib \
+    -gtk \
+    -icu \
+    -no-cups \
+    -no-directfb \
+    -no-kms \
+    -no-linuxfb \
+    -no-pch \
+    -no-rpath \
+    -no-use-gold-linker \
+    -nomake examples \
+    -nomake tests \
+    -opensource \
+    -openssl-linked \
+    -optimized-qmake \
+    -platform linux-g++ \
+    -system-harfbuzz \
+    -system-proxies \
+    -system-sqlite \
+    -shared
+
+config:
+  configure-commands:
+  - ./configure %{conf-local}
+
+  build-commands:
+  - make
+
+  install-commands:
+  - |
+    make -j1 INSTALL_ROOT=%{install-root} install
+
+    #  - |
+    #    rm -f "%{install-root}%{libdir}"/*.a
+    #    rm -f "%{install-root}%{libdir}/lib"/*.la
+
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - "%{libdir}/*.so"
+
+sources:
+- kind: tar
+  url: http://download.qt.io/archive/qt/5.14/5.14.1/submodules/qtbase-everywhere-src-5.14.1.tar.xz
+  ref: d9d423a6e7bcf1055c0372fc029f14a6fe67dd62c67b83095cde68b60b762cf7
+- kind: patch
+  path: patches/qtbase-avoid-hardcoding-kernel-version.patch
+- kind: patch
+  path: patches/qtbase-use-wayland-on-gnome.patch
+- kind: patch
+  path: patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch
diff --git a/Tools/buildstream/elements/qt5/qtdeclarative.bst b/Tools/buildstream/elements/qt5/qtdeclarative.bst
new file mode 100644 (file)
index 0000000..66f532a
--- /dev/null
@@ -0,0 +1,12 @@
+kind: qmake
+description: json2bst conversion of qt5/qtdeclarative
+
+depends:
+- qt5/qtbase.bst
+
+sources:
+- kind: tar
+  url: http://download.qt.io/archive/qt/5.14/5.14.1/submodules/qtdeclarative-everywhere-src-5.14.1.tar.xz
+  ref: 762fe495d2f97fd70f06dc7d3929506ea3b5e3151ad813e0629209b7bc504c8a
+- kind: patch
+  path: patches/qtdeclarative-use-python3.patch
diff --git a/Tools/buildstream/elements/qt5/qtquickcontrols.bst b/Tools/buildstream/elements/qt5/qtquickcontrols.bst
new file mode 100644 (file)
index 0000000..cd744e4
--- /dev/null
@@ -0,0 +1,10 @@
+kind: qmake
+description: json2bst conversion of qt5/qtquickcontrols
+
+depends:
+- qt5/qtdeclarative.bst
+
+sources:
+- kind: tar
+  url: http://download.qt.io/archive/qt/5.14/5.14.1/submodules/qtquickcontrols-everywhere-src-5.14.1.tar.xz
+  ref: 54519e7c6748bb9af46435a7ba2ce1c53e4ad164a70e88915fe0e61277540a1a
diff --git a/Tools/buildstream/elements/qt5/qtquickcontrols2.bst b/Tools/buildstream/elements/qt5/qtquickcontrols2.bst
new file mode 100644 (file)
index 0000000..0e038b0
--- /dev/null
@@ -0,0 +1,10 @@
+kind: qmake
+description: json2bst conversion of qt5/qtquickcontrols2
+
+depends:
+- qt5/qtdeclarative.bst
+
+sources:
+- kind: tar
+  url: http://download.qt.io/archive/qt/5.14/5.14.1/submodules/qtquickcontrols2-everywhere-src-5.14.1.tar.xz
+  ref: 52d652c48933cc8416a91138eb6fb4c31625734265671f286b6c0d3e27d120ae
diff --git a/Tools/buildstream/elements/qt5/qtwayland.bst b/Tools/buildstream/elements/qt5/qtwayland.bst
new file mode 100644 (file)
index 0000000..bec4da7
--- /dev/null
@@ -0,0 +1,12 @@
+kind: qmake
+
+depends:
+- qt5/qtdeclarative.bst
+- freedesktop-sdk.bst:components/libdrm.bst
+
+sources:
+- kind: tar
+  url: http://ftp1.nluug.nl/languages/qt/archive/qt/5.14/5.14.1/submodules/qtwayland-everywhere-src-5.14.1.tar.xz
+  ref: 2a03b9f554e88c5824ef237c814b3dd45844c022e97be0e091f4a502ca4c9520
+- kind: patch
+  path: patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch
diff --git a/Tools/buildstream/elements/qt5/qtx11extras.bst b/Tools/buildstream/elements/qt5/qtx11extras.bst
new file mode 100644 (file)
index 0000000..353eba1
--- /dev/null
@@ -0,0 +1,10 @@
+kind: qmake
+description: json2bst conversion of qt5/qtx11extras
+
+depends:
+- qt5/qtbase.bst
+
+sources:
+- kind: tar
+  url: http://download.qt.io/archive/qt/5.14/5.14.1/submodules/qtx11extras-everywhere-src-5.14.1.tar.xz
+  ref: b268907deb06570671c1f584feb1508e7fded129209a268183decc122bfac181
diff --git a/Tools/buildstream/elements/sdk-build-depends/libusb.bst b/Tools/buildstream/elements/sdk-build-depends/libusb.bst
new file mode 100644 (file)
index 0000000..a3e08fb
--- /dev/null
@@ -0,0 +1,12 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+depends:
+- freedesktop-sdk.bst:components/libgudev.bst
+
+sources:
+- kind: git_tag
+  url: github_com:libusb/libusb.git
+  track: v1.0.23
+  ref: v1.0.23-0-ge782eeb2514266f6738e242cdcb18e3ae1ed06fa
diff --git a/Tools/buildstream/elements/sdk-build-depends/sassc.bst b/Tools/buildstream/elements/sdk-build-depends/sassc.bst
new file mode 100644 (file)
index 0000000..1a935b6
--- /dev/null
@@ -0,0 +1,12 @@
+kind: autotools
+
+sources:
+- kind: tar
+  url: https://github.com/sass/sassc/releases/download/3.4.8/sassc-3.4.8.tar.gz
+  ref: d61587b6c084a54e602650c1d845928a20c8d309a0eeec6b1d2499489867ce03
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- sdk-depends/libsass.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk-build-depends/utf8proc.bst b/Tools/buildstream/elements/sdk-build-depends/utf8proc.bst
new file mode 100644 (file)
index 0000000..4ec44fe
--- /dev/null
@@ -0,0 +1,13 @@
+kind: cmake
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:JuliaStrings/utf8proc
+  track: v2.5.0
+  ref: v2.5.0-0-g0890a538bf8238cded9be0c81171f57e43f2c755
diff --git a/Tools/buildstream/elements/sdk-depends/libsass.bst b/Tools/buildstream/elements/sdk-depends/libsass.bst
new file mode 100644 (file)
index 0000000..35bafce
--- /dev/null
@@ -0,0 +1,12 @@
+kind: autotools
+
+sources:
+- kind: tar
+  url: https://github.com/sass/libsass/archive/3.5.0.tar.gz
+
+  ref: 9d499927329c7f8816ab67c571fb7cc0ea21d38c6f47c7c58c98de99ef7645eb
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk-platform.bst b/Tools/buildstream/elements/sdk-platform.bst
new file mode 100644 (file)
index 0000000..4f04fd0
--- /dev/null
@@ -0,0 +1,242 @@
+kind: stack
+
+depends:
+
+- qt5.bst
+- test-infra.bst
+- filtered.bst
+- filtered-openh264.bst
+
+# replaced (patched) elements:
+- sdk/adwaita-icon-theme.bst
+- sdk/at-spi2-atk.bst
+- sdk/at-spi2-core.bst
+- sdk/atk.bst
+- sdk/brotli.bst
+- sdk/capnp.bst
+- sdk/enchant-2.bst
+- sdk/glib-networking.bst
+- sdk/glib.bst
+- sdk/graphviz.bst
+- sdk/gst-libav.bst
+- sdk/gst-plugins-bad.bst
+- sdk/gst-plugins-base.bst
+- sdk/gst-plugins-good.bst
+- sdk/gst-plugins-ugly.bst
+- sdk/gstreamer.bst
+- sdk/gtk+-3.bst
+- sdk/gtk.bst
+- sdk/icecc.bst
+- sdk/intltool.bst
+- sdk/krb5.bst
+- sdk/libcap-ng.bst
+- sdk/libevent.bst
+- sdk/libgcrypt.bst
+- sdk/libmanette.bst
+- sdk/libnotify.bst
+- sdk/libsecret.bst
+- sdk/libsoup.bst
+- sdk/libsrtp2.bst
+- sdk/libusrsctp.bst
+- sdk/libwpe.bst
+- sdk/libzstd.bst
+- sdk/lzo2.bst
+- sdk/openjpeg.bst
+- sdk/openxr.bst
+- sdk/os-release.bst
+- sdk/psmisc.bst
+- sdk/pycairo.bst
+- sdk/pygobject.bst
+- sdk/python2-pycairo.bst
+- sdk/python2-pygobject.bst
+- sdk/python2-six.bst
+- sdk/python2-subprocess32.bst
+- sdk/python2.bst
+- sdk/shared-mime-info.bst
+- sdk/subversion.bst
+- sdk/v4lutils.bst
+- sdk/woff2.bst
+- sdk/wpebackend-fdo.bst
+- sdk/x264.bst
+- sdk/xorg-server.bst
+- sdk/patchelf.bst
+
+- freedesktop-sdk.bst:components/alsa-lib.bst
+- freedesktop-sdk.bst:components/alsa-plugins.bst
+- freedesktop-sdk.bst:components/appstream-glib.bst
+- freedesktop-sdk.bst:components/aspell.bst
+- freedesktop-sdk.bst:components/ca-certificates.bst
+- freedesktop-sdk.bst:components/cairo.bst
+- freedesktop-sdk.bst:components/ccache.bst
+- freedesktop-sdk.bst:components/cracklib.bst
+- freedesktop-sdk.bst:components/cups.bst
+- freedesktop-sdk.bst:components/curl.bst
+- freedesktop-sdk.bst:components/cyrus-sasl.bst
+- freedesktop-sdk.bst:components/dbus.bst
+- freedesktop-sdk.bst:components/dejavu-fonts.bst
+- freedesktop-sdk.bst:components/dictionaries.bst
+- freedesktop-sdk.bst:components/dummy-gbm.bst
+- freedesktop-sdk.bst:components/e2fsprogs.bst
+- freedesktop-sdk.bst:components/emoji-one-font.bst
+- freedesktop-sdk.bst:components/expat.bst
+- freedesktop-sdk.bst:components/ffmpeg.bst
+- freedesktop-sdk.bst:components/fftw.bst
+- freedesktop-sdk.bst:components/flatpak-xdg-utils.bst
+- freedesktop-sdk.bst:components/flex.bst
+- freedesktop-sdk.bst:components/fontconfig.bst
+- freedesktop-sdk.bst:components/freetype.bst
+- freedesktop-sdk.bst:components/frei0r.bst
+- freedesktop-sdk.bst:components/fribidi.bst
+- freedesktop-sdk.bst:components/gdbm.bst
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+- freedesktop-sdk.bst:components/gettext.bst
+- freedesktop-sdk.bst:components/giflib.bst
+- freedesktop-sdk.bst:components/gmp.bst
+- freedesktop-sdk.bst:components/gnu-free-fonts.bst
+- freedesktop-sdk.bst:components/gnupg.bst
+- freedesktop-sdk.bst:components/gnutls.bst
+- freedesktop-sdk.bst:components/google-crosextra-caladea.bst
+- freedesktop-sdk.bst:components/google-crosextra-carlito.bst
+- freedesktop-sdk.bst:components/gpgme.bst
+- freedesktop-sdk.bst:components/graphite2.bst
+- freedesktop-sdk.bst:components/gtk-doc.bst
+- freedesktop-sdk.bst:components/gzip.bst
+- freedesktop-sdk.bst:components/harfbuzz.bst
+- freedesktop-sdk.bst:components/hicolor-icon-theme.bst
+- freedesktop-sdk.bst:components/hunspell.bst
+- freedesktop-sdk.bst:components/hyphen.bst
+- freedesktop-sdk.bst:components/iana-config.bst
+- freedesktop-sdk.bst:components/icu.bst
+- freedesktop-sdk.bst:components/iso-codes.bst
+- freedesktop-sdk.bst:components/jpeg.bst
+- freedesktop-sdk.bst:components/ladspa-sdk.bst
+- freedesktop-sdk.bst:components/lame.bst
+- freedesktop-sdk.bst:components/lcms.bst
+- freedesktop-sdk.bst:components/less.bst
+- freedesktop-sdk.bst:components/libarchive.bst
+- freedesktop-sdk.bst:components/libassuan.bst
+- freedesktop-sdk.bst:components/libcap.bst
+- freedesktop-sdk.bst:components/libclc.bst
+- freedesktop-sdk.bst:components/libdatrie.bst
+- freedesktop-sdk.bst:components/libdrm.bst
+- freedesktop-sdk.bst:components/libepoxy.bst
+- freedesktop-sdk.bst:components/liberation-fonts.bst
+- freedesktop-sdk.bst:components/libexif.bst
+- freedesktop-sdk.bst:components/libffi.bst
+- freedesktop-sdk.bst:components/libflac.bst
+- freedesktop-sdk.bst:components/libglvnd.bst
+- freedesktop-sdk.bst:components/libgpg-error.bst
+- freedesktop-sdk.bst:components/libidn2.bst
+- freedesktop-sdk.bst:components/libksba.bst
+- freedesktop-sdk.bst:components/libnice.bst
+- freedesktop-sdk.bst:components/libogg.bst
+- freedesktop-sdk.bst:components/libpng.bst
+- freedesktop-sdk.bst:components/libproxy.bst
+- freedesktop-sdk.bst:components/libpsl.bst
+- freedesktop-sdk.bst:components/libpulse.bst
+- freedesktop-sdk.bst:components/libsamplerate.bst
+- freedesktop-sdk.bst:components/libseccomp.bst
+- freedesktop-sdk.bst:components/libselinux.bst
+- freedesktop-sdk.bst:components/libtasn1.bst
+- freedesktop-sdk.bst:components/libthai.bst
+- freedesktop-sdk.bst:components/libtheora.bst
+- freedesktop-sdk.bst:components/libtiff.bst
+- freedesktop-sdk.bst:components/libtool.bst
+- freedesktop-sdk.bst:components/libunistring.bst
+- freedesktop-sdk.bst:components/libva-vdpau-driver.bst
+- freedesktop-sdk.bst:components/libva.bst
+- freedesktop-sdk.bst:components/libvdpau.bst
+- freedesktop-sdk.bst:components/libvorbis.bst
+- freedesktop-sdk.bst:components/libvpx.bst
+- freedesktop-sdk.bst:components/libwebp.bst
+- freedesktop-sdk.bst:components/libxkbcommon.bst
+- freedesktop-sdk.bst:components/libxml2.bst
+- freedesktop-sdk.bst:components/libxslt.bst
+- freedesktop-sdk.bst:components/llvm.bst
+- freedesktop-sdk.bst:components/locales.bst
+- freedesktop-sdk.bst:components/lzip.bst
+- freedesktop-sdk.bst:components/mesa-headers.bst
+- freedesktop-sdk.bst:components/mpg123.bst
+- freedesktop-sdk.bst:components/mythes.bst
+- freedesktop-sdk.bst:components/nano.bst
+- freedesktop-sdk.bst:components/nettle.bst
+- freedesktop-sdk.bst:components/npth.bst
+- freedesktop-sdk.bst:components/nspr.bst
+- freedesktop-sdk.bst:components/nss.bst
+- freedesktop-sdk.bst:components/nsswitch-config.bst
+- freedesktop-sdk.bst:components/openal.bst
+- freedesktop-sdk.bst:components/opencl.bst
+- freedesktop-sdk.bst:components/openssh.bst
+- freedesktop-sdk.bst:components/opus.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:components/osmesa.bst
+- freedesktop-sdk.bst:components/p11-kit.bst
+- freedesktop-sdk.bst:components/pango.bst
+- freedesktop-sdk.bst:components/pciutils.bst
+- freedesktop-sdk.bst:components/pcre.bst
+- freedesktop-sdk.bst:components/pcre2.bst
+- freedesktop-sdk.bst:components/pipewire.bst
+- freedesktop-sdk.bst:components/pixman.bst
+- freedesktop-sdk.bst:components/python3-pip.bst
+- freedesktop-sdk.bst:components/python3-setuptools.bst
+- freedesktop-sdk.bst:components/python3-sitecustomize.bst
+- freedesktop-sdk.bst:components/python3-six.bst
+- freedesktop-sdk.bst:components/python3-usercustomize.bst
+- freedesktop-sdk.bst:components/python3.bst
+- freedesktop-sdk.bst:components/sdl2-image.bst
+- freedesktop-sdk.bst:components/sdl2-mixer.bst
+- freedesktop-sdk.bst:components/sdl2-net.bst
+- freedesktop-sdk.bst:components/sdl2-ttf.bst
+- freedesktop-sdk.bst:components/sdl2.bst
+- freedesktop-sdk.bst:components/sndfile.bst
+- freedesktop-sdk.bst:components/speex.bst
+- freedesktop-sdk.bst:components/speexdsp.bst
+- freedesktop-sdk.bst:components/sqlite.bst
+- freedesktop-sdk.bst:components/systemd-libs.bst
+- freedesktop-sdk.bst:components/tar.bst
+- freedesktop-sdk.bst:components/tzdata.bst
+- freedesktop-sdk.bst:components/unzip.bst
+- freedesktop-sdk.bst:components/util-linux.bst
+- freedesktop-sdk.bst:components/vulkan.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:components/webrtc-audio-processing.bst
+- freedesktop-sdk.bst:components/weston.bst
+- freedesktop-sdk.bst:components/which.bst
+- freedesktop-sdk.bst:components/xcb-util-cursor.bst
+- freedesktop-sdk.bst:components/xcb-util-image.bst
+- freedesktop-sdk.bst:components/xcb-util-keysyms.bst
+- freedesktop-sdk.bst:components/xcb-util-renderutil.bst
+- freedesktop-sdk.bst:components/xcb-util-wm.bst
+- freedesktop-sdk.bst:components/xcb-util.bst
+- freedesktop-sdk.bst:components/xdg-user-dirs.bst
+- freedesktop-sdk.bst:components/xorg-app-xkbcomp.bst
+- freedesktop-sdk.bst:components/xorg-data-xkeyboard-config.bst
+- freedesktop-sdk.bst:components/xorg-lib-ice.bst
+- freedesktop-sdk.bst:components/xorg-lib-pciaccess.bst
+- freedesktop-sdk.bst:components/xorg-lib-sm.bst
+- freedesktop-sdk.bst:components/xorg-lib-x11.bst
+- freedesktop-sdk.bst:components/xorg-lib-xau.bst
+- freedesktop-sdk.bst:components/xorg-lib-xcb.bst
+- freedesktop-sdk.bst:components/xorg-lib-xcomposite.bst
+- freedesktop-sdk.bst:components/xorg-lib-xcursor.bst
+- freedesktop-sdk.bst:components/xorg-lib-xdamage.bst
+- freedesktop-sdk.bst:components/xorg-lib-xdmcp.bst
+- freedesktop-sdk.bst:components/xorg-lib-xext.bst
+- freedesktop-sdk.bst:components/xorg-lib-xfixes.bst
+- freedesktop-sdk.bst:components/xorg-lib-xft.bst
+- freedesktop-sdk.bst:components/xorg-lib-xi.bst
+- freedesktop-sdk.bst:components/xorg-lib-xinerama.bst
+- freedesktop-sdk.bst:components/xorg-lib-xkbfile.bst
+- freedesktop-sdk.bst:components/xorg-lib-xpm.bst
+- freedesktop-sdk.bst:components/xorg-lib-xrandr.bst
+- freedesktop-sdk.bst:components/xorg-lib-xrender.bst
+- freedesktop-sdk.bst:components/xorg-lib-xscrnsaver.bst
+- freedesktop-sdk.bst:components/xorg-lib-xshmfence.bst
+- freedesktop-sdk.bst:components/xorg-lib-xt.bst
+- freedesktop-sdk.bst:components/xorg-lib-xtrans.bst
+- freedesktop-sdk.bst:components/xorg-lib-xtst.bst
+- freedesktop-sdk.bst:components/xorg-lib-xv.bst
+- freedesktop-sdk.bst:components/xorg-lib-xxf86vm.bst
+- freedesktop-sdk.bst:components/xz.bst
+- freedesktop-sdk.bst:components/zip.bst
+- freedesktop-sdk.bst:integration/mtab.bst
diff --git a/Tools/buildstream/elements/sdk.bst b/Tools/buildstream/elements/sdk.bst
new file mode 100644 (file)
index 0000000..b401db9
--- /dev/null
@@ -0,0 +1,46 @@
+kind: stack
+
+depends:
+- sdk-platform.bst
+
+- freedesktop-sdk.bst:components/autoconf-archive.bst
+- freedesktop-sdk.bst:components/autoconf.bst
+- freedesktop-sdk.bst:components/automake.bst
+- freedesktop-sdk.bst:components/bc.bst
+- freedesktop-sdk.bst:components/bison.bst
+- freedesktop-sdk.bst:components/ccache.bst
+- freedesktop-sdk.bst:components/cmake.bst
+- freedesktop-sdk.bst:components/cpio.bst
+- freedesktop-sdk.bst:components/docbook-xml.bst
+- freedesktop-sdk.bst:components/docbook-xsl.bst
+- freedesktop-sdk.bst:components/ed.bst
+- freedesktop-sdk.bst:components/gdb.bst
+- freedesktop-sdk.bst:components/git.bst
+- freedesktop-sdk.bst:components/gperf.bst
+- freedesktop-sdk.bst:components/groff.bst
+- freedesktop-sdk.bst:components/help2man.bst
+- freedesktop-sdk.bst:components/libpipeline.bst
+- freedesktop-sdk.bst:components/m4.bst
+- freedesktop-sdk.bst:components/man-db.bst
+- freedesktop-sdk.bst:components/man-pages-posix.bst
+- freedesktop-sdk.bst:components/man-pages.bst
+- freedesktop-sdk.bst:components/meson.bst
+- freedesktop-sdk.bst:components/nasm.bst
+- freedesktop-sdk.bst:components/ninja.bst
+- freedesktop-sdk.bst:components/perl.bst
+- freedesktop-sdk.bst:components/perl-xml-parser.bst
+- freedesktop-sdk.bst:components/openssh.bst
+- freedesktop-sdk.bst:components/patch.bst
+- freedesktop-sdk.bst:components/pkg-config.bst
+- freedesktop-sdk.bst:components/ruby.bst
+- freedesktop-sdk.bst:components/strace.bst
+- freedesktop-sdk.bst:components/texinfo.bst
+- freedesktop-sdk.bst:components/valgrind.bst
+- freedesktop-sdk.bst:components/desktop-file-utils.bst
+- freedesktop-sdk.bst:components/itstools.bst
+- freedesktop-sdk.bst:components/jq.bst
+- freedesktop-sdk.bst:components/wayland-protocols.bst
+- freedesktop-sdk.bst:components/xdg-portal-interfaces.bst
+- freedesktop-sdk.bst:components/xorg-proto-xcb.bst
+- freedesktop-sdk.bst:components/xorg-proto-xorgproto.bst
+- freedesktop-sdk.bst:components/xorg-util-macros.bst
diff --git a/Tools/buildstream/elements/sdk/adwaita-icon-theme.bst b/Tools/buildstream/elements/sdk/adwaita-icon-theme.bst
new file mode 100644 (file)
index 0000000..958f703
--- /dev/null
@@ -0,0 +1,11 @@
+kind: autotools
+sources:
+- kind: tar
+  url: gnome_downloads:adwaita-icon-theme/3.24/adwaita-icon-theme-3.24.0.tar.xz
+  ref: ccf79ff3bd340254737ce4d28b87f0ccee4b3358cd3cd5cd11dc7b42f41b272a
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+depends:
+- sdk/gtk+-3.bst
+- freedesktop-sdk.bst:components/librsvg.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk/at-spi2-atk.bst b/Tools/buildstream/elements/sdk/at-spi2-atk.bst
new file mode 100644 (file)
index 0000000..330d6a9
--- /dev/null
@@ -0,0 +1,21 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:at-spi2-atk/2.33/at-spi2-atk-2.33.2.tar.xz
+  ref: 64d4351b245d717ec6f4f81fd40fe67481ff8e62d3893d465f01e71d9a3db3d3
+build-depends:
+- freedesktop-sdk.bst:components/libxml2.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/at-spi2-core.bst
+- sdk/atk.bst
+- sdk/glib.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libatk-bridge-2.0.so'
diff --git a/Tools/buildstream/elements/sdk/at-spi2-core.bst b/Tools/buildstream/elements/sdk/at-spi2-core.bst
new file mode 100644 (file)
index 0000000..842a90e
--- /dev/null
@@ -0,0 +1,20 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:at-spi2-core/2.33/at-spi2-core-2.33.2.tar.xz
+  ref: 0e3f44707cccf9ec9098f84abdf91ea654c919eac3c688400f8d261383cc2abe
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:components/dbus.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libatspi.so'
diff --git a/Tools/buildstream/elements/sdk/atk.bst b/Tools/buildstream/elements/sdk/atk.bst
new file mode 100644 (file)
index 0000000..b2939d1
--- /dev/null
@@ -0,0 +1,19 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:atk/2.33/atk-2.33.3.tar.xz
+  ref: 532d1081e87b9f0a8d71733101e791818442fa1896531621d1aecc189e1a4ffe
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libatk-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/brotli.bst b/Tools/buildstream/elements/sdk/brotli.bst
new file mode 100644 (file)
index 0000000..fa69694
--- /dev/null
@@ -0,0 +1,17 @@
+kind: cmake
+sources:
+- kind: tar
+  url: github_com:google/brotli/archive/v1.0.5.tar.gz
+  ref: 3d5bedd48edb909fe3b87cb99f7d139b987ef6f1616b7e22d74e928270a2fd20
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libbrotlicommon.so'
+        - '%{libdir}/libbrotlidec.so'
+        - '%{libdir}/libbrotlienc.so'
diff --git a/Tools/buildstream/elements/sdk/capnp.bst b/Tools/buildstream/elements/sdk/capnp.bst
new file mode 100644 (file)
index 0000000..086fa24
--- /dev/null
@@ -0,0 +1,13 @@
+kind: cmake
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:capnproto/capnproto
+  track: v0.7.0
+  ref: v0.7.0-0-g3f44c6db0f0f6c0cab0633f15f15d0a2acd01d19
diff --git a/Tools/buildstream/elements/sdk/enchant-2.bst b/Tools/buildstream/elements/sdk/enchant-2.bst
new file mode 100644 (file)
index 0000000..8317351
--- /dev/null
@@ -0,0 +1,21 @@
+kind: autotools
+sources:
+- kind: tar
+  url: github_com:AbiWord/enchant/releases/download/v2.2.5/enchant-2.2.5.tar.gz
+  ref: ee8a663295c0e039b05d418af065ebcba9e539f785531e552e908030bec48164
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+depends:
+- sdk/glib.bst
+- freedesktop-sdk.bst:components/hunspell.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  conf-local: >-
+    --with-hunspell
+    --with-hunspell-dir=/usr/share/myspell
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libenchant-2.so'
diff --git a/Tools/buildstream/elements/sdk/glib-networking.bst b/Tools/buildstream/elements/sdk/glib-networking.bst
new file mode 100644 (file)
index 0000000..d220259
--- /dev/null
@@ -0,0 +1,21 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:glib-networking/2.62/glib-networking-2.62.3.tar.xz
+  ref: 8ca1f86f23a76b5c7640624f7d5490705c78e81375e1741c9a1c41ce7f8f7ff7
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/glib.bst
+- freedesktop-sdk.bst:components/gsettings-desktop-schemas.bst
+- freedesktop-sdk.bst:components/ca-certificates.bst
+- freedesktop-sdk.bst:components/gnutls.bst
+- freedesktop-sdk.bst:components/libproxy.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  meson-local: >-
+    -Dinstalled_tests=true
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/sdk/glib.bst b/Tools/buildstream/elements/sdk/glib.bst
new file mode 100644 (file)
index 0000000..573cce4
--- /dev/null
@@ -0,0 +1,43 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:glib/2.64/glib-2.64.2.tar.xz
+  ref: 9a2f21ed8f13b9303399de13a0252b7cbcede593d26971378ec6cb90e87f2277
+depends:
+- filename: components/libffi.bst
+  junction: freedesktop-sdk.bst
+- filename: components/util-linux.bst
+  junction: freedesktop-sdk.bst
+- filename: components/pcre.bst
+  junction: freedesktop-sdk.bst
+- filename: components/python3.bst
+  junction: freedesktop-sdk.bst
+# a dummy dependency so our glib is always staged
+# on top of freedesktop-sdk version
+- filename: components/glib.bst
+  junction: freedesktop-sdk.bst
+  type: runtime
+- filename: public-stacks/buildsystem-meson.bst
+  junction: freedesktop-sdk.bst
+  type: build
+- filename: bootstrap-import.bst
+  junction: freedesktop-sdk.bst
+variables:
+  meson-local: >-
+    -Dgtk_doc=false
+    -Dinstalled-tests=true
+    -Dselinux=disabled
+public:
+  bst:
+    integration-commands:
+    - glib-compile-schemas %{prefix}/share/glib-2.0/schemas
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgio-2.0.so'
+        - '%{libdir}/libglib-2.0.so'
+        - '%{libdir}/libgmodule-2.0.so'
+        - '%{libdir}/libgobject-2.0.so'
+        - '%{libdir}/libgthread-2.0.so'
diff --git a/Tools/buildstream/elements/sdk/gobject-introspection.bst b/Tools/buildstream/elements/sdk/gobject-introspection.bst
new file mode 100644 (file)
index 0000000..7c79c97
--- /dev/null
@@ -0,0 +1,27 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:gobject-introspection/1.64/gobject-introspection-1.64.0.tar.xz
+  ref: eac05a63091c81adfdc8ef34820bcc7e7778c5b9e34734d344fc9e69ddf4fc82
+build-depends:
+- freedesktop-sdk.bst:components/bison.bst
+- freedesktop-sdk.bst:components/flex.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/glib.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/python3-mako.bst
+- freedesktop-sdk.bst:components/python3-markdown.bst
+variables:
+  meson-local: >-
+    -Dgtk_doc=false
+    -Dcairo=disabled
+    -Ddoctool=enabled
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{datadir}/gobject-introspection-1.0'
+        - '%{datadir}/gobject-introspection-1.0/**'
+        - '%{libdir}/libgirepository-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/graphene.bst b/Tools/buildstream/elements/sdk/graphene.bst
new file mode 100644 (file)
index 0000000..2fd34dd
--- /dev/null
@@ -0,0 +1,19 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:graphene/1.10/graphene-1.10.0.tar.xz
+  ref: 406d97f51dd4ca61e91f84666a00c3e976d3e667cd248b76d92fdb35ce876499
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgraphene-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/graphviz.bst b/Tools/buildstream/elements/sdk/graphviz.bst
new file mode 100644 (file)
index 0000000..b6a6963
--- /dev/null
@@ -0,0 +1,18 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+variables:
+  conf-aux: config
+public:
+  bst:
+    integration-commands:
+    - dot -c
+sources:
+- kind: tar
+  url: https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz
+  ref: ca5218fade0204d59947126c38439f432853543b0818d9d728c589dfe7f3a421
\ No newline at end of file
diff --git a/Tools/buildstream/elements/sdk/gst-libav.bst b/Tools/buildstream/elements/sdk/gst-libav.bst
new file mode 100644 (file)
index 0000000..d23637d
--- /dev/null
@@ -0,0 +1,30 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gst-libav/gst-libav-1.16.2.tar.xz
+  ref: c724f612700c15a933c7356fbeabb0bb9571fb5538f8b1b54d4d2d94188deef2
+- kind: patch
+  path: patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch
+- kind: patch
+  path: patches/gst-libav-stop-caching-codecs.patch
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+- freedesktop-sdk.bst:components/nasm.bst
+- freedesktop-sdk.bst:extensions/ffmpeg-full/ffmpeg.bst
+depends:
+- sdk/gst-plugins-base.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+environment:
+  PKG_CONFIG_PATH: /usr/lib/%{gcc_triplet}/ffmpeg/lib/pkgconfig/:/usr/lib/%{gcc_triplet}/pkgconfig
+
+variables:
+  meson-local: |
+    '-Dc_args=-DTRIPLET=\"%{gcc_triplet}\"'
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/sdk/gst-plugins-bad.bst b/Tools/buildstream/elements/sdk/gst-plugins-bad.bst
new file mode 100644 (file)
index 0000000..d4808b8
--- /dev/null
@@ -0,0 +1,135 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gst-plugins-bad/gst-plugins-bad-1.16.2.tar.xz
+  ref: f1cb7aa2389569a5343661aae473f0a940a90b872001824bc47fa8072a041e74
+- kind: patch
+  path: patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/gstreamer.bst
+- sdk/gst-plugins-base.bst
+- sdk/openjpeg.bst
+- sdk/libusrsctp.bst
+- sdk/libsrtp2.bst
+- sdk-build-depends/libusb.bst
+- filtered-openh264.bst
+- freedesktop-sdk.bst:components/aom.bst
+- freedesktop-sdk.bst:components/librsvg.bst
+- freedesktop-sdk.bst:components/frei0r.bst
+- freedesktop-sdk.bst:components/ladspa-sdk.bst
+- freedesktop-sdk.bst:components/libdrm.bst
+- freedesktop-sdk.bst:components/libfdk-aac.bst
+- freedesktop-sdk.bst:components/libglvnd.bst
+- freedesktop-sdk.bst:components/libnice.bst
+- freedesktop-sdk.bst:components/libwebp.bst
+- freedesktop-sdk.bst:components/libgudev.bst
+- freedesktop-sdk.bst:components/openal.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:components/sndfile.bst
+- freedesktop-sdk.bst:components/vulkan.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:components/webrtc-audio-processing.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+(?):
+- arch == "aarch64":
+    variables:
+      meson-local: >-
+        -Dopenh264=disabled
+
+variables:
+  meson-local: >-
+    -Dpackage-origin="webkit-sdk"
+    -Dintrospection=disabled
+    -Dexamples=disabled
+    -Dassrender=disabled
+    -Dbluez=disabled
+    -Dbs2b=disabled
+    -Dchromaprint=disabled
+    -Dcolormanagement=disabled
+    -Dcuda=disabled
+    -Dcurl-ssh2=disabled
+    -Dcurl=disabled
+    -Dd3dvideosink=disabled
+    -Ddc1394=disabled
+    -Ddecklink=disabled
+    -Ddirectfb=disabled
+    -Ddirectsound=disabled
+    -Ddts=disabled
+    -Ddvb=disabled
+    -Dfaac=disabled
+    -Dfaad=disabled
+    -Dfbdev=disabled
+    -Dflite=disabled
+    -Dfluidsynth=disabled
+    -Dgme=disabled
+    -Dgsm=disabled
+    -Diqa=disabled
+    -Dkate=disabled
+    -Dladspa=disabled
+    -Dlibde265=disabled
+    -Dlibmms=disabled
+    -Dlv2=disabled
+    -Dmodplug=disabled
+    -Dmpeg2enc=disabled
+    -Dmplex=disabled
+    -Dmsdk=disabled
+    -Dmusepack=disabled
+    -Dneon=disabled
+    -Dnvcodec=disabled
+    -Dnvdec=disabled
+    -Dnvenc=disabled
+    -Dofa=disabled
+    -Dopenal=disabled
+    -Dopencv=disabled
+    -Dopenexr=disabled
+    -Dopenmpt=disabled
+    -Dopenni2=disabled
+    -Dopensles=disabled
+    -Dopensles=disabled
+    -Dresindvd=disabled
+    -Drsvg=disabled
+    -Drtmp=disabled
+    -Dsbc=disabled
+    -Dsndfile=disabled
+    -Dsoundtouch=disabled
+    -Dspandsp=disabled
+    -Dsrt=disabled
+    -Dteletext=disabled
+    -Dtinyalsa=disabled
+    -Dttml=disabled
+    -Dvaacenc=disabled
+    -Dvdpau=disabled
+    -Dvoaacenc=disabled
+    -Dvoamrwbenc=disabled
+    -Dwasapi=disabled
+    -Dwebp=disabled
+    -Dwebrtcdsp=disabled
+    -Dwildmidi=disabled
+    -Dwinks=disabled
+    -Dwinscreencap=disabled
+    -Dwpe=disabled
+    -Dx265=disabled
+    -Dzbar=disabled
+    
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgstadaptivedemux-1.0.so'
+        - '%{libdir}/libgstbadaudio-1.0.so'
+        - '%{libdir}/libgstbasecamerabinsrc-1.0.so'
+        - '%{libdir}/libgstcodecparsers-1.0.so'
+        - '%{libdir}/libgstinsertbin-1.0.so'
+        - '%{libdir}/libgstisoff-1.0.so'
+        - '%{libdir}/libgstmpegts-1.0.so'
+        - '%{libdir}/libgstphotography-1.0.so'
+        - '%{libdir}/libgstplayer-1.0.so'
+        - '%{libdir}/libgstsctp-1.0.so'
+        - '%{libdir}/libgsturidownloader-1.0.so'
+        - '%{libdir}/libgstwayland-1.0.so'
+        - '%{libdir}/libgstwebrtc-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/gst-plugins-base.bst b/Tools/buildstream/elements/sdk/gst-plugins-base.bst
new file mode 100644 (file)
index 0000000..2c2cb53
--- /dev/null
@@ -0,0 +1,62 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gst-plugins-base/gst-plugins-base-1.16.2.tar.xz
+  ref: b13e73e2fe74a4166552f9577c3dcb24bed077021b9c7fa600d910ec6987816a
+- kind: patch
+  path: patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch
+- kind: patch
+  path: patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch
+- kind: patch
+  path: patches/gst-plugins-base-0002-glupload-fix-segfault.patch
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+- sdk/gstreamer.bst
+- sdk/graphene.bst
+- sdk/gtk+-3.bst
+- freedesktop-sdk.bst:components/pango.bst
+- sdk/libsoup.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/alsa-lib.bst
+- freedesktop-sdk.bst:components/iso-codes.bst
+- freedesktop-sdk.bst:components/libogg.bst
+- freedesktop-sdk.bst:components/libtheora.bst
+- freedesktop-sdk.bst:components/libvorbis.bst
+- freedesktop-sdk.bst:components/mesa-headers.bst
+- freedesktop-sdk.bst:components/opus.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:components/sdl2.bst
+- freedesktop-sdk.bst:components/xorg-lib-xv.bst
+
+variables:
+  meson-local: >-
+    -Dintrospection=disabled
+    -Dpackage-origin="webkit-sdk"
+    -Dcdparanoia=disabled
+    -Dlibvisual=disabled
+    -Dtremor=disabled
+    -Dexamples=disabled
+    -Dgtk_doc=disabled
+    -Dtests=disabled
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgstallocators-1.0.so'
+        - '%{libdir}/libgstapp-1.0.so'
+        - '%{libdir}/libgstaudio-1.0.so'
+        - '%{libdir}/libgstfft-1.0.so'
+        - '%{libdir}/libgstgl-1.0.so'
+        - '%{libdir}/libgstpbutils-1.0.so'
+        - '%{libdir}/libgstriff-1.0.so'
+        - '%{libdir}/libgstrtp-1.0.so'
+        - '%{libdir}/libgstrtsp-1.0.so'
+        - '%{libdir}/libgstsdp-1.0.so'
+        - '%{libdir}/libgsttag-1.0.so'
+        - '%{libdir}/libgstvideo-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/gst-plugins-good.bst b/Tools/buildstream/elements/sdk/gst-plugins-good.bst
new file mode 100644 (file)
index 0000000..67dbad4
--- /dev/null
@@ -0,0 +1,45 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gst-plugins-good/gst-plugins-good-1.16.2.tar.xz
+  ref: 40bb3bafda25c0b739c8fc36e48380fccf61c4d3f83747e97ac3f9b0171b1319
+- kind: patch
+  path: patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+- sdk/gstreamer.bst
+- sdk/gst-plugins-base.bst
+- sdk/gtk+-3.bst
+- sdk/libsoup.bst
+- sdk/v4lutils.bst
+- qt5/qtdeclarative.bst
+- qt5/qtquickcontrols2.bst
+- qt5/qtquickcontrols.bst
+- freedesktop-sdk.bst:components/cairo.bst
+- freedesktop-sdk.bst:components/jpeg.bst
+- freedesktop-sdk.bst:components/lame.bst
+- freedesktop-sdk.bst:components/libflac.bst
+- freedesktop-sdk.bst:components/libpng.bst
+- freedesktop-sdk.bst:components/libpulse.bst
+- freedesktop-sdk.bst:components/libvpx.bst
+- freedesktop-sdk.bst:components/mpg123.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:components/speex.bst
+- freedesktop-sdk.bst:components/wavpack.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  meson-local: >-
+    -Dpackage-origin="webkit-sdk"
+    -Daalib=disabled
+    -Djack=disabled
+    -Dlibcaca=disabled
+    -Ddv=disabled
+    -Ddv1394=disabled
+    -Dqt5=disabled
+    -Dshout2=disabled
+    -Dtaglib=disabled
+    -Dtwolame=disabled
+    -Dv4l2-gudev=disabled
diff --git a/Tools/buildstream/elements/sdk/gst-plugins-ugly.bst b/Tools/buildstream/elements/sdk/gst-plugins-ugly.bst
new file mode 100644 (file)
index 0000000..95c9063
--- /dev/null
@@ -0,0 +1,25 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gst-plugins-ugly/gst-plugins-ugly-1.16.2.tar.xz
+  ref: 5500415b865e8b62775d4742cbb9f37146a50caecfc0e7a6fc0160d3c560fbca
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/gst-plugins-base.bst
+- freedesktop-sdk.bst:components/orc.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/x264.bst
+variables:
+  meson-local: >-
+    -Dpackage-origin="webkit-sdk"
+    -Da52dec=disabled
+    -Damrnb=disabled
+    -Damrwbdec=disabled
+    -Dcdio=disabled
+    -Ddvdread=disabled
+    -Dmpeg2dec=disabled
+    -Dsidplay=disabled
+    -Dtests=disabled
+    -Ddoc=disabled
diff --git a/Tools/buildstream/elements/sdk/gstreamer.bst b/Tools/buildstream/elements/sdk/gstreamer.bst
new file mode 100644 (file)
index 0000000..dfed2a7
--- /dev/null
@@ -0,0 +1,42 @@
+kind: meson
+sources:
+- kind: tar
+  url: gst_downloads:gstreamer/gstreamer-1.16.2.tar.xz
+  ref: e3f044246783fd685439647373fa13ba14f7ab0b346eadd06437092f8419e94e
+
+build-depends:
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+- freedesktop-sdk.bst:components/flex.bst
+- freedesktop-sdk.bst:components/bison.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/glib.bst
+- freedesktop-sdk.bst:components/libunwind.bst
+
+variables:
+  libexecdir: "%{libdir}"
+  meson-local: >-
+    -Dexamples=disabled
+    -Dbenchmarks=disabled
+    -Dintrospection=enabled
+    -Dlibunwind=enabled
+    -Dlibdw=enabled
+    -Ddbghelp=disabled
+    -Dbash-completion=disabled
+    -Dgtk_doc=disabled
+    -Dpackage-origin="webkit-sdk"
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgstcheck-1.0.so'
+        - '%{libdir}/libgstbase-1.0.so'
+        - '%{libdir}/libgstnet-1.0.so'
+        - '%{libdir}/libgstreamer-1.0.so'
+        - '%{libdir}/libgstcontroller-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/gtk+-3.bst b/Tools/buildstream/elements/sdk/gtk+-3.bst
new file mode 100644 (file)
index 0000000..bef51b1
--- /dev/null
@@ -0,0 +1,59 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:gtk+/3.24/gtk+-3.24.16.tar.xz
+  ref: 0d5e1e1494101b8c0c63c0526180780559eee469f021ca0d714018b20fa3d8e8
+- kind: patch
+  path: patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/at-spi2-atk.bst
+- sdk/atk.bst
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:components/pango.bst
+- freedesktop-sdk.bst:components/cairo.bst
+- freedesktop-sdk.bst:components/hicolor-icon-theme.bst
+- freedesktop-sdk.bst:components/libepoxy.bst
+- freedesktop-sdk.bst:components/libxkbcommon.bst
+- freedesktop-sdk.bst:components/mesa-headers.bst
+- freedesktop-sdk.bst:components/wayland-protocols.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:components/xorg-lib-xcomposite.bst
+- freedesktop-sdk.bst:components/xorg-lib-xcursor.bst
+- freedesktop-sdk.bst:components/xorg-lib-xdamage.bst
+- freedesktop-sdk.bst:components/xorg-lib-xi.bst
+- freedesktop-sdk.bst:components/xorg-lib-xinerama.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  meson-local: >-
+    -Dbroadway_backend=true
+    -Dinstalled_tests=true
+    -Dtests=false
+    -Dx11_backend=true
+    -Dwayland-backend=true
+    -Dgtk_doc=false
+    -Dman=false
+    -Dintrospection=true
+public:
+  bst:
+    integration-commands:
+    - |-
+      for dir in %{prefix}/share/icons/*; do
+        if test -f $dir/index.theme; then
+          gtk-update-icon-cache --quiet $dir
+        fi
+      done
+    - gtk-query-immodules-3.0 --update-cache
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgailutil-3.so'
+        - '%{libdir}/libgdk-3.so'
+        - '%{libdir}/libgtk-3.so'
+    cpe:
+      product: gtk+
diff --git a/Tools/buildstream/elements/sdk/gtk.bst b/Tools/buildstream/elements/sdk/gtk.bst
new file mode 100644 (file)
index 0000000..ee72da5
--- /dev/null
@@ -0,0 +1,41 @@
+kind: meson
+
+sources:
+- kind: git_tag
+  url: gitlab_gnome_org:GNOME/gtk.git
+  track: master
+  ref: 3.24.19-102-g642924a0f183653ba8ed3a7c2cf78267787ae9ef
+build-depends:
+- sdk-build-depends/sassc.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+
+depends:
+- sdk/at-spi2-atk.bst
+- sdk/atk.bst
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+- sdk/glib.bst
+- sdk/graphene.bst
+- sdk/gst-plugins-bad.bst
+- sdk/gst-plugins-base.bst
+- sdk/gstreamer.bst
+- freedesktop-sdk.bst:components/pango.bst
+- freedesktop-sdk.bst:components/cups.bst
+- freedesktop-sdk.bst:components/hicolor-icon-theme.bst
+- freedesktop-sdk.bst:components/libepoxy.bst
+- freedesktop-sdk.bst:components/libxkbcommon.bst
+- freedesktop-sdk.bst:components/wayland-protocols.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+variables:
+  meson-local: >-
+    -Denable-broadway-backend=true
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgtk-4.so'
diff --git a/Tools/buildstream/elements/sdk/icecc.bst b/Tools/buildstream/elements/sdk/icecc.bst
new file mode 100644 (file)
index 0000000..f4ae710
--- /dev/null
@@ -0,0 +1,20 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/libzstd.bst
+- sdk/libcap-ng.bst
+- freedesktop-sdk.bst:components/libarchive.bst
+
+variables:
+  conf-local: >-
+    --without-man
+
+sources:
+- kind: git_tag
+  url: github_com:icecc/icecream
+  ref: 1.3
+
diff --git a/Tools/buildstream/elements/sdk/intltool.bst b/Tools/buildstream/elements/sdk/intltool.bst
new file mode 100644 (file)
index 0000000..40cbce2
--- /dev/null
@@ -0,0 +1,13 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/perl-xml-parser.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: tar
+  url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz
+  ref: 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd
diff --git a/Tools/buildstream/elements/sdk/krb5.bst b/Tools/buildstream/elements/sdk/krb5.bst
new file mode 100644 (file)
index 0000000..9d12226
--- /dev/null
@@ -0,0 +1,52 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:components/bison.bst
+- freedesktop-sdk.bst:components/perl.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+depends:
+- freedesktop-sdk.bst:components/e2fsprogs.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libgssapi_krb5.so'
+        - '%{libdir}/libgssrpc.so'
+        - '%{libdir}/libk5crypto.so'
+        - '%{libdir}/libkadm5clnt_mit.so'
+        - '%{libdir}/libkadm5clnt.so'
+        - '%{libdir}/libkadm5srv_mit.so'
+        - '%{libdir}/libkadm5srv.so'
+        - '%{libdir}/libkdb5.so'
+        - '%{libdir}/libkrad.so'
+        - '%{libdir}/libkrb5.so'
+        - '%{libdir}/libkrb5support.so'
+        - '%{libdir}/libverto.so'
+  cpe:
+    product: kerberos
+    version: 5-1.16.1
+
+variables:
+  command-subdir: src
+
+  # krb5 configure script doesnt like --disable-Werror
+  conf-global: |
+    --disable-static --host=%{triplet} --build=%{triplet}
+  conf-local: |
+    --disable-rpath --with-system-et --with-system-ss
+
+config:
+  install-commands:
+    (>):
+    - mkdir -p %{install-root}%{sysconfdir}
+    - install -m 644 ../krb5-config/krb5.conf %{install-root}%{sysconfdir}/krb5.conf
+
+sources:
+- kind: tar
+  url: https://kerberos.org/dist/krb5/1.16/krb5-1.16.2.tar.gz
+  ref: 9f721e1fe593c219174740c71de514c7228a97d23eb7be7597b2ae14e487f027
+- kind: local
+  path: files/krb5
+  directory: krb5-config
diff --git a/Tools/buildstream/elements/sdk/libcap-ng.bst b/Tools/buildstream/elements/sdk/libcap-ng.bst
new file mode 100644 (file)
index 0000000..b14baec
--- /dev/null
@@ -0,0 +1,16 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:stevegrubb/libcap-ng.git
+  ref: v0.7.9
+variables:
+  conf-local: >-
+    --with-python=no
+    --with-python3=no
diff --git a/Tools/buildstream/elements/sdk/libevent.bst b/Tools/buildstream/elements/sdk/libevent.bst
new file mode 100644 (file)
index 0000000..e80d635
--- /dev/null
@@ -0,0 +1,15 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+sources:
+- kind: git_tag
+  url: github_com:libevent/libevent.git
+  ref: release-2.1.8-stable-ge7ff4ef2b4fc950a765008c18e74281cdb5e7668
+
+variables:
+  conf-local: >-
+    --disable-libevent-regress
diff --git a/Tools/buildstream/elements/sdk/libgcrypt.bst b/Tools/buildstream/elements/sdk/libgcrypt.bst
new file mode 100644 (file)
index 0000000..cae830c
--- /dev/null
@@ -0,0 +1,25 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/texinfo.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/libgpg-error.bst
+
+sources:
+- kind: git_tag
+  url: https://dev.gnupg.org/source/libgcrypt.git
+  ref: libgcrypt-1.8.4
+- kind: patch
+  path: patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch
+- kind: patch
+  path: patches/libgcrypt-use-only-dev-urandom-for-testing.patch
+variables:
+  conf-local: >-
+    --disable-doc
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/sdk/libmanette.bst b/Tools/buildstream/elements/sdk/libmanette.bst
new file mode 100644 (file)
index 0000000..bec9a04
--- /dev/null
@@ -0,0 +1,20 @@
+kind: meson
+sources:
+- kind: git_tag
+  url: gitlab_gnome_org:aplazas/libmanette.git
+  track: master
+  ref: 0.2.4-0-ge92a35af43853eee0ce255754e622dbe10e71f2a
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+
+depends:
+- sdk/glib.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/libgudev.bst
+- freedesktop-sdk.bst:components/libevdev.bst
+
+variables:
+  meson-local: >-
+    -Dvapi=false
+    -Dintrospection=false
diff --git a/Tools/buildstream/elements/sdk/libnotify.bst b/Tools/buildstream/elements/sdk/libnotify.bst
new file mode 100644 (file)
index 0000000..9da876e
--- /dev/null
@@ -0,0 +1,19 @@
+kind: meson
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/gdk-pixbuf.bst
+
+sources:
+- kind: tar
+  url: gnome_downloads:libnotify/0.7/libnotify-0.7.8.tar.xz
+  ref: 69209e0b663776a00c7b6c0e560302a8dbf66b2551d55616304f240bba66e18c
+variables:
+  meson-local: >-
+   -Dtests=false
+   -Dintrospection=disabled
+   -Dgtk_doc=false
+   -Ddocbook_docs=disabled
diff --git a/Tools/buildstream/elements/sdk/libopenh264.bst b/Tools/buildstream/elements/sdk/libopenh264.bst
new file mode 100644 (file)
index 0000000..0dddbd3
--- /dev/null
@@ -0,0 +1,20 @@
+kind: meson
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+- freedesktop-sdk.bst:components/nasm.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git
+  url: github_com:cisco/openh264.git
+  ref: 2122fe08cc8fe69899c3e257d0ee030c28a64174
+variables:
+  meson-local: >-
+    -Dtests=disabled
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/sdk/libsecret.bst b/Tools/buildstream/elements/sdk/libsecret.bst
new file mode 100644 (file)
index 0000000..87d5a70
--- /dev/null
@@ -0,0 +1,27 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:libsecret/0.20/libsecret-0.20.2.tar.xz
+  ref: 81e9143833785cdcf96c1da5d0357a8bcf0cd2b0119f15aa0cae775d1f19ffc3
+- kind: patch
+  path: patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch
+build-depends:
+- freedesktop-sdk.bst:components/valgrind.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+- freedesktop-sdk.bst:components/libxslt.bst
+depends:
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:components/libgcrypt.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  meson-local: >-
+    -Dgtk_doc=false
+    -Dvapi=false
+    -Dmanpage=false
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libsecret-1.so'
diff --git a/Tools/buildstream/elements/sdk/libsoup.bst b/Tools/buildstream/elements/sdk/libsoup.bst
new file mode 100644 (file)
index 0000000..a3b65e7
--- /dev/null
@@ -0,0 +1,32 @@
+kind: meson
+sources:
+- kind: tar
+  url: gnome_downloads:libsoup/2.70/libsoup-2.70.0.tar.xz
+  ref: 54b020f74aefa438918d8e53cff62e2b1e59efe2de53e06b19a4b07b1f4d5342
+build-depends:
+- sdk/gobject-introspection.bst
+- freedesktop-sdk.bst:components/python3.bst
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+depends:
+- sdk/brotli.bst
+- sdk/glib.bst
+- sdk/krb5.bst
+- freedesktop-sdk.bst:components/libpsl.bst
+- freedesktop-sdk.bst:components/libxml2.bst
+- freedesktop-sdk.bst:components/sqlite.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  meson-local: >-
+    -Dtls_check=false
+    -Dgtk_doc=false
+    -Dntlm=disabled
+    -Dvapi=disabled
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libsoup-2.4.so'
+        - '%{libdir}/libsoup-gnome-2.4.so'
diff --git a/Tools/buildstream/elements/sdk/libsrtp2.bst b/Tools/buildstream/elements/sdk/libsrtp2.bst
new file mode 100644 (file)
index 0000000..5379e90
--- /dev/null
@@ -0,0 +1,12 @@
+kind: autotools
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git
+  url: github_com:cisco/libsrtp.git
+  ref: d02d21111e379c297e93a9033d7b653135f732ee
+
diff --git a/Tools/buildstream/elements/sdk/libusrsctp.bst b/Tools/buildstream/elements/sdk/libusrsctp.bst
new file mode 100644 (file)
index 0000000..850a0e4
--- /dev/null
@@ -0,0 +1,15 @@
+kind: meson
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git
+  url: github_com:sctplab/usrsctp.git
+  ref: 17983b032c3f0e33523972e534b18df832922800
+variables:
+  meson-local: >-
+    -Dsctp_inet=false
+    -Dsctp_inet6=false
diff --git a/Tools/buildstream/elements/sdk/libwpe.bst b/Tools/buildstream/elements/sdk/libwpe.bst
new file mode 100644 (file)
index 0000000..2113166
--- /dev/null
@@ -0,0 +1,17 @@
+kind: cmake
+sources:
+- kind: tar
+  url: github_com:WebPlatformForEmbedded/libwpe/releases/download/1.6.0/libwpe-1.6.0.tar.xz
+  ref: 3587c6b8a807f4bb76b268ba74ca82c6b395b90235db41ad8252224456193c90
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+depends:
+- freedesktop-sdk.bst:components/libxkbcommon.bst
+- freedesktop-sdk.bst:components/mesa-headers.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libwpe-1.0.so'
diff --git a/Tools/buildstream/elements/sdk/libzstd.bst b/Tools/buildstream/elements/sdk/libzstd.bst
new file mode 100644 (file)
index 0000000..004c0f8
--- /dev/null
@@ -0,0 +1,22 @@
+kind: meson
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/lzo2.bst
+
+sources:
+- kind: git_tag
+  url: github_com:facebook/zstd
+  ref: v1.4.4
+
+variables:
+  build-dir: build/meson
+  meson-local: >-
+    -Dlz4=disabled
+  ninja:
+    ninja -j ${NINJAJOBS}
+  ninja-install:
+    env DESTDIR="%{install-root}" ninja install
diff --git a/Tools/buildstream/elements/sdk/lzo2.bst b/Tools/buildstream/elements/sdk/lzo2.bst
new file mode 100644 (file)
index 0000000..0eb7557
--- /dev/null
@@ -0,0 +1,12 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: tar
+  url: http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
+  ref: c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072
diff --git a/Tools/buildstream/elements/sdk/openjpeg.bst b/Tools/buildstream/elements/sdk/openjpeg.bst
new file mode 100644 (file)
index 0000000..43cdeb6
--- /dev/null
@@ -0,0 +1,20 @@
+kind: cmake
+sources:
+- kind: tar
+  url: github_com:uclouvain/openjpeg/archive/v2.3.1.tar.gz
+  ref: 63f5a4713ecafc86de51bfad89cc07bb788e9bba24ebbf0c4ca637621aadb6a9
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  cmake-local: >-
+    -DOPENJPEG_INSTALL_LIB_DIR=%{lib}
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libopenjp2.so'
+        - '%{libdir}/openjpeg-2.3'
+        - '%{libdir}/openjpeg-2.3/**'
diff --git a/Tools/buildstream/elements/sdk/openxr.bst b/Tools/buildstream/elements/sdk/openxr.bst
new file mode 100644 (file)
index 0000000..2ba04e5
--- /dev/null
@@ -0,0 +1,20 @@
+kind: cmake
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/xorg-lib-x11.bst
+
+sources:
+- kind: git_tag
+  url: github_com:KhronosGroup/OpenXR-SDK-Source.git
+  track: master
+  ref: release-1.0.8-23-g38dca88abef5cfe1eb7957cbaea769221626f3c5
+- kind: patch
+  path: patches/openxr-0001-cmake-Check-for-C-17-and-conditionally-enable-it.patch
+
+variables:
+  cmake-local: >-
+    -DBUILD_TESTS=OFF
diff --git a/Tools/buildstream/elements/sdk/os-release.bst b/Tools/buildstream/elements/sdk/os-release.bst
new file mode 100644 (file)
index 0000000..6b6dc75
--- /dev/null
@@ -0,0 +1,41 @@
+kind: manual
+
+(@): flatpak-version.yml
+
+build-depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/m4.bst
+- freedesktop-sdk.bst:components/appstream-glib.bst
+
+config:
+  build-commands:
+  - |
+    for i in *.in; do
+      m4 \
+        -D__SDK_BRANCH__=%{sdk-branch} \
+        -D__RUNTIME_VERSION__=%{runtime-version} \
+        -D__RUNTIME_VERSION_DATE__=%{runtime-version-date} \
+        "${i}" >"$(basename "${i}" .in)"
+    done
+
+  install-commands:
+  - |
+    mkdir -p "%{install-root}%{indep-libdir}"
+    install os-release "%{install-root}%{indep-libdir}"
+    mkdir -p "%{install-root}%{sysconfdir}"
+    ln -s "$(realpath --relative-to="%{install-root}%{sysconfdir}" "%{install-root}%{indep-libdir}/os-release")" %{install-root}%{sysconfdir}/os-release
+
+    mkdir -p "%{install-root}%{sysconfdir}"
+    install issue "%{install-root}%{sysconfdir}"
+    install issue.net "%{install-root}%{sysconfdir}"
+
+    mkdir -p "%{install-root}%{datadir}/appdata"
+    install org.webkit.Platform.appdata.xml "%{install-root}%{datadir}/appdata"
+    install org.webkit.Sdk.appdata.xml "%{install-root}%{datadir}/appdata"
+
+    appstream-compose --basename=org.webkit.Platform --prefix=%{install-root}%{prefix} --origin=flatpak org.webkit.Platform
+    appstream-compose --basename=org.webkit.Sdk --prefix=%{install-root}%{prefix} --origin=flatpak org.webkit.Sdk
+
+sources:
+- kind: local
+  path: files/os-release
diff --git a/Tools/buildstream/elements/sdk/patchelf.bst b/Tools/buildstream/elements/sdk/patchelf.bst
new file mode 100644 (file)
index 0000000..994d4fa
--- /dev/null
@@ -0,0 +1,13 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:NixOS/patchelf.git
+  track: '0.10'
+  ref: 0.10-0-ge1e39f3639e39360ceebb2f7ed533cede4623070
diff --git a/Tools/buildstream/elements/sdk/psmisc.bst b/Tools/buildstream/elements/sdk/psmisc.bst
new file mode 100644 (file)
index 0000000..3d23de4
--- /dev/null
@@ -0,0 +1,13 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: https://gitlab.com/psmisc/psmisc.git
+  ref: v23.3
+
diff --git a/Tools/buildstream/elements/sdk/pycairo.bst b/Tools/buildstream/elements/sdk/pycairo.bst
new file mode 100644 (file)
index 0000000..a56137a
--- /dev/null
@@ -0,0 +1,12 @@
+kind: distutils
+sources:
+- kind: tar
+  url: github_com:pygobject/pycairo/releases/download/v1.18.0/pycairo-1.18.0.tar.gz
+  ref: abd42a4c9c2069febb4c38fe74bfc4b4a9d3a89fea3bc2e4ba7baff7a20f783f
+build-depends:
+- freedesktop-sdk.bst:components/pkg-config.bst
+depends:
+- freedesktop-sdk.bst:components/cairo.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+variables:
+  python: python3
diff --git a/Tools/buildstream/elements/sdk/pygobject.bst b/Tools/buildstream/elements/sdk/pygobject.bst
new file mode 100644 (file)
index 0000000..949f847
--- /dev/null
@@ -0,0 +1,12 @@
+kind: distutils
+sources:
+- kind: tar
+  url: gnome_downloads:pygobject/3.36/pygobject-3.36.0.tar.xz
+  ref: 8683d2dfb5baa9e501a9a64eeba5c2c1117eadb781ab1cd7a9d255834af6daef
+build-depends:
+- freedesktop-sdk.bst:components/pkg-config.bst
+depends:
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- sdk/pycairo.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk/python2-pycairo.bst b/Tools/buildstream/elements/sdk/python2-pycairo.bst
new file mode 100644 (file)
index 0000000..e8a7452
--- /dev/null
@@ -0,0 +1,17 @@
+kind: pip
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/python2.bst
+- freedesktop-sdk.bst:components/cairo.bst
+build-depends:
+- freedesktop-sdk.bst:components/pkg-config.bst
+
+variables:
+  pip: pip2
+
+sources:
+- kind: git_tag
+  url: github_com:pygobject/pycairo
+  track: v1.15.4
+  ref: v1.15.4-0-g88478f2bb18537ef3e58f9ecb94c509f24e3300b
diff --git a/Tools/buildstream/elements/sdk/python2-pygobject.bst b/Tools/buildstream/elements/sdk/python2-pygobject.bst
new file mode 100644 (file)
index 0000000..4fece58
--- /dev/null
@@ -0,0 +1,25 @@
+kind: pip
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/python2.bst
+- sdk/glib.bst
+- sdk/gobject-introspection.bst
+- sdk/python2-pycairo.bst
+
+build-depends:
+- freedesktop-sdk.bst:components/pkg-config.bst
+
+variables:
+  pip: pip2
+
+sources:
+- kind: tar
+  url: gnome_downloads:pygobject/3.28/pygobject-3.28.1.tar.xz
+  ref: 42312b4a5015571fa0a4f2d201005da46b71c251ea2625bc95702d071c4ff895
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+
diff --git a/Tools/buildstream/elements/sdk/python2-six.bst b/Tools/buildstream/elements/sdk/python2-six.bst
new file mode 100644 (file)
index 0000000..9d427ca
--- /dev/null
@@ -0,0 +1,14 @@
+kind: pip
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/python2.bst
+
+variables:
+  pip: pip2
+
+sources:
+- kind: git_tag
+  url: github_com:benjaminp/six.git
+  track: 1.14.0
+  ref: 1.14.0-0-g3a3db7510b33eb22c63ad94bc735a9032949249f
diff --git a/Tools/buildstream/elements/sdk/python2-subprocess32.bst b/Tools/buildstream/elements/sdk/python2-subprocess32.bst
new file mode 100644 (file)
index 0000000..4b64ef0
--- /dev/null
@@ -0,0 +1,15 @@
+kind: pip
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/python2.bst
+
+variables:
+  pip: pip2
+
+sources:
+- kind: git_tag
+  url: github_com:google/python-subprocess32
+  track: 3.5.4
+
+  ref: 3.5.4-0-gf5d96717bb266ed2c10fbd8d8dc65b30aab534e9
diff --git a/Tools/buildstream/elements/sdk/python2.bst b/Tools/buildstream/elements/sdk/python2.bst
new file mode 100644 (file)
index 0000000..ee25097
--- /dev/null
@@ -0,0 +1,27 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: tar
+  url: https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz
+  ref: f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7
+variables:
+  conf-local: >-
+    --with-system-ffi
+    --enable-shared
+    --with-lto
+    --with-ensurepip=install
+
+  make-install:
+    make DESTDIR="%{install-root}" DESTSHARED="/usr/lib/python2.7/lib-dynload" install
+
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
+
diff --git a/Tools/buildstream/elements/sdk/rr.bst b/Tools/buildstream/elements/sdk/rr.bst
new file mode 100644 (file)
index 0000000..e4a354f
--- /dev/null
@@ -0,0 +1,19 @@
+kind: cmake
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- sdk/capnp.bst
+
+variables:
+  cmake-local: |
+    -Ddisable32bit=ON \
+    -DBUILD_TESTS=OFF
+
+sources:
+- kind: git_tag
+  url: github_com:mozilla/rr
+  track: 5.3.0
+  ref: 5.3.0-0-g47f13a8ce92fd1dfba45bd4f9faed8f0b202f4ee
diff --git a/Tools/buildstream/elements/sdk/sccache.bst b/Tools/buildstream/elements/sdk/sccache.bst
new file mode 100644 (file)
index 0000000..9bf14e2
--- /dev/null
@@ -0,0 +1,986 @@
+kind: manual
+
+build-depends:
+- freedesktop-sdk.bst:extensions/rust/rust.bst
+- freedesktop-sdk.bst:components/pkg-config.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/libffi.bst
+
+environment:
+  PATH: /usr/bin:/usr/lib/sdk/rust/bin
+
+config:
+  build-commands:
+  - |
+    cargo --offline build --features="all,dist-server" --release
+    strip ./target/release/sccache
+    strip ./target/release/sccache-dist
+
+  install-commands:
+  - |
+    install -D -m a+rx -t "%{install-root}%{bindir}" ./target/release/sccache 
+    install -D -m a+rx -t "%{install-root}%{bindir}" ./target/release/sccache-dist
+
+variables:
+  strip-binaries: |
+    true
+
+sources:
+- kind: git_tag
+  url: github_com:mozilla/sccache
+  track: 0.2.13-workaround
+  ref: 0.2.13-1-geac96c836e6057f3f015e775427fd2a954667c86
+- kind: patch
+  path: patches/sccache-no-selenium.patch
+- kind: cargo
+  ref:
+  - name: adler32
+    version: 1.0.4
+    sha: 5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2
+  - name: aho-corasick
+    version: 0.7.6
+    sha: 58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d
+  - name: ansi_term
+    version: 0.11.0
+    sha: ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b
+  - name: ar
+    version: 0.6.2
+    sha: 579681b3fecd1e9d6b5ce6969e05f9feb913f296eddaf595be1166a5ca597bc4
+  - name: arc-swap
+    version: 0.4.4
+    sha: d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff
+  - name: arrayref
+    version: 0.3.5
+    sha: 0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee
+  - name: arrayvec
+    version: 0.5.1
+    sha: cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8
+  - name: ascii
+    version: 0.8.7
+    sha: 97be891acc47ca214468e09425d02cef3af2c94d0d82081cd02061f996802f14
+  - name: ascii
+    version: 0.9.3
+    sha: eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e
+  - name: assert_cmd
+    version: 0.9.1
+    sha: c5b60c276f334145cf2cec09c5bb6f63523f078c0c850909f66bca8f933cf809
+  - name: atty
+    version: 0.2.13
+    sha: 1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90
+  - name: autocfg
+    version: 0.1.7
+    sha: 1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2
+  - name: backtrace
+    version: 0.3.40
+    sha: 924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea
+  - name: backtrace-sys
+    version: 0.1.32
+    sha: 5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491
+  - name: base64
+    version: 0.10.1
+    sha: 0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e
+  - name: base64
+    version: 0.11.0
+    sha: b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7
+  - name: base64
+    version: 0.9.3
+    sha: 489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643
+  - name: bincode
+    version: 0.8.0
+    sha: e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e
+  - name: bincode
+    version: 1.2.0
+    sha: b8ab639324e3ee8774d296864fbc0dbbb256cf1a41c490b94cba90c082915f92
+  - name: bitflags
+    version: 1.2.1
+    sha: cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
+  - name: blake2b_simd
+    version: 0.5.9
+    sha: b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0
+  - name: block-buffer
+    version: 0.7.3
+    sha: c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b
+  - name: block-padding
+    version: 0.1.5
+    sha: fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5
+  - name: buf_redux
+    version: 0.6.3
+    sha: b9279646319ff816b05fb5897883ece50d7d854d12b59992683d4f8a71b0f949
+  - name: bufstream
+    version: 0.1.4
+    sha: 40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8
+  - name: byte-tools
+    version: 0.3.1
+    sha: e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7
+  - name: byteorder
+    version: 1.3.2
+    sha: a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5
+  - name: bytes
+    version: 0.4.12
+    sha: 206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c
+  - name: c2-chacha
+    version: 0.2.3
+    sha: 214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb
+  - name: case
+    version: 0.1.0
+    sha: e88b166b48e29667f5443df64df3c61dc07dc2b1a0b0d231800e07f09a33ecc1
+  - name: cc
+    version: 1.0.48
+    sha: f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76
+  - name: cfg-if
+    version: 0.1.10
+    sha: 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
+  - name: chrono
+    version: 0.4.10
+    sha: 31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01
+  - name: chunked_transfer
+    version: 0.3.1
+    sha: 498d20a7aaf62625b9bf26e637cf7736417cde1d0c99f1d04d1170229a85cf87
+  - name: clap
+    version: 2.33.0
+    sha: 5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9
+  - name: cloudabi
+    version: 0.0.3
+    sha: ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f
+  - name: combine
+    version: 3.8.1
+    sha: da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680
+  - name: conhash
+    version: 0.4.0
+    sha: 99d6364d028778d0d98b6014fa5882da377cd10d3492b7734d266a428e9b1fca
+  - name: constant_time_eq
+    version: 0.1.4
+    sha: 995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120
+  - name: cookie
+    version: 0.12.0
+    sha: 888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5
+  - name: cookie_store
+    version: 0.7.0
+    sha: 46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c
+  - name: core-foundation
+    version: 0.6.4
+    sha: 25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d
+  - name: core-foundation-sys
+    version: 0.6.2
+    sha: e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b
+  - name: counted-array
+    version: 0.1.2
+    sha: 384f8c53175c890920b6e0127b730709d2a173ca6c4dfdc81618ac9b46f648fe
+  - name: crc32fast
+    version: 1.2.0
+    sha: ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1
+  - name: crossbeam-deque
+    version: 0.7.2
+    sha: c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca
+  - name: crossbeam-epoch
+    version: 0.8.0
+    sha: 5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac
+  - name: crossbeam-queue
+    version: 0.1.2
+    sha: 7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b
+  - name: crossbeam-utils
+    version: 0.5.0
+    sha: 677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015
+  - name: crossbeam-utils
+    version: 0.6.6
+    sha: 04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6
+  - name: crossbeam-utils
+    version: 0.7.0
+    sha: ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4
+  - name: crypto-mac
+    version: 0.7.0
+    sha: 4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5
+  - name: daemonize
+    version: 0.3.0
+    sha: 4093d27eb267d617f03c2ee25d4c3ca525b89a76154001954a11984508ffbde5
+  - name: derive-error
+    version: 0.0.3
+    sha: 629f1bb3abce791912ca85a24676fff54464f7deb122906adabc90fb96e876d3
+  - name: difference
+    version: 2.0.0
+    sha: 524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198
+  - name: digest
+    version: 0.8.1
+    sha: f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5
+  - name: directories
+    version: 1.0.2
+    sha: 72d337a64190607d4fcca2cb78982c5dd57f4916e19696b48a575fa746b6cb0f
+  - name: dirs
+    version: 1.0.5
+    sha: 3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901
+  - name: dtoa
+    version: 0.4.4
+    sha: ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e
+  - name: either
+    version: 1.5.3
+    sha: bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3
+  - name: encoding_rs
+    version: 0.8.20
+    sha: 87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9
+  - name: env_logger
+    version: 0.5.13
+    sha: 15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38
+  - name: error-chain
+    version: 0.11.0
+    sha: ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3
+  - name: error-chain
+    version: 0.12.1
+    sha: 3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9
+  - name: escargot
+    version: 0.3.1
+    sha: 19db1f7e74438642a5018cdf263bb1325b2e792f02dd0a3ca6d6c0f0d7b1d5a5
+  - name: failure
+    version: 0.1.6
+    sha: f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9
+  - name: failure_derive
+    version: 0.1.6
+    sha: 0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08
+  - name: fake-simd
+    version: 0.1.2
+    sha: e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed
+  - name: filetime
+    version: 0.1.15
+    sha: 714653f3e34871534de23771ac7b26e999651a0a228f47beb324dfdf1dd4b10f
+  - name: filetime
+    version: 0.2.8
+    sha: 1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d
+  - name: flate2
+    version: 1.0.13
+    sha: 6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f
+  - name: float-cmp
+    version: 0.4.0
+    sha: 134a8fa843d80a51a5b77d36d42bc2def9edcb0262c914861d08129fd1926600
+  - name: fnv
+    version: 1.0.6
+    sha: 2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3
+  - name: foreign-types
+    version: 0.3.2
+    sha: f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+  - name: foreign-types-shared
+    version: 0.1.1
+    sha: 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+  - name: fuchsia-cprng
+    version: 0.1.1
+    sha: a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba
+  - name: fuchsia-zircon
+    version: 0.3.3
+    sha: 2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82
+  - name: fuchsia-zircon-sys
+    version: 0.3.3
+    sha: 3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7
+  - name: futures
+    version: 0.1.29
+    sha: 1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef
+  - name: futures-cpupool
+    version: 0.1.8
+    sha: ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4
+  - name: generic-array
+    version: 0.12.3
+    sha: c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec
+  - name: getopts
+    version: 0.2.21
+    sha: 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5
+  - name: getrandom
+    version: 0.1.13
+    sha: e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407
+  - name: h2
+    version: 0.1.26
+    sha: a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462
+  - name: hermit-abi
+    version: 0.1.3
+    sha: 307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120
+  - name: hmac
+    version: 0.7.1
+    sha: 5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695
+  - name: http
+    version: 0.1.21
+    sha: d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0
+  - name: http-body
+    version: 0.1.0
+    sha: 6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d
+  - name: httparse
+    version: 1.3.4
+    sha: cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9
+  - name: humantime
+    version: 1.3.0
+    sha: df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f
+  - name: hyper
+    version: 0.12.35
+    sha: 9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6
+  - name: hyper-tls
+    version: 0.3.2
+    sha: 3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f
+  - name: hyperx
+    version: 0.12.0
+    sha: 78e2d2253d7a17929560fc3adf48c48fc924c94fa4507e037a60e6bc55c0eda6
+  - name: idna
+    version: 0.1.5
+    sha: 38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e
+  - name: idna
+    version: 0.2.0
+    sha: 02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9
+  - name: indexmap
+    version: 1.3.0
+    sha: 712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2
+  - name: iovec
+    version: 0.1.4
+    sha: b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e
+  - name: itertools
+    version: 0.7.11
+    sha: 0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d
+  - name: itoa
+    version: 0.4.4
+    sha: 501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f
+  - name: jobserver
+    version: 0.1.19
+    sha: 67b06c1b455f1cf4269a8cfc320ab930a810e2375a42af5075eb8a8b36405ce0
+  - name: jsonwebtoken
+    version: 6.0.1
+    sha: a81d1812d731546d2614737bee92aa071d37e9afa1409bc374da9e5e70e70b22
+  - name: kernel32-sys
+    version: 0.2.2
+    sha: 7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d
+  - name: language-tags
+    version: 0.2.2
+    sha: a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a
+  - name: lazy_static
+    version: 1.4.0
+    sha: e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+  - name: libc
+    version: 0.2.66
+    sha: d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558
+  - name: libmount
+    version: 0.1.15
+    sha: 23c4c2ad2d5cbd2f5a05620c3daf45930add53ec207fa99ce5eec971089dc35f
+  - name: libz-sys
+    version: 1.0.25
+    sha: 2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe
+  - name: linked-hash-map
+    version: 0.2.1
+    sha: bda158e0dabeb97ee8a401f4d17e479d6b891a14de0bba79d5cc2d4d325b5e48
+  - name: local-encoding
+    version: 0.2.0
+    sha: e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66
+  - name: lock_api
+    version: 0.3.2
+    sha: e57b3997725d2b60dbec1297f6c2e2957cc383db1cebd6be812163f969c7d586
+  - name: log
+    version: 0.3.9
+    sha: e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b
+  - name: log
+    version: 0.4.8
+    sha: 14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7
+  - name: matches
+    version: 0.1.8
+    sha: 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
+  - name: maybe-uninit
+    version: 2.0.0
+    sha: 60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
+  - name: md-5
+    version: 0.8.0
+    sha: a18af3dcaf2b0219366cdb4e2af65a6101457b415c3d1a5c71dd9c2b7c77b9c8
+  - name: md5
+    version: 0.3.8
+    sha: 79c56d6a0b07f9e19282511c83fc5b086364cbae4ba8c7d5f190c3d9b0425a48
+  - name: memcached-rs
+    version: 0.3.0
+    sha: 0f45690519137679de66b2bdb60e37a0d4f17adde980930a05eef66929394f73
+  - name: memchr
+    version: 1.0.2
+    sha: 148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a
+  - name: memchr
+    version: 2.2.1
+    sha: 88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e
+  - name: memoffset
+    version: 0.5.3
+    sha: 75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9
+  - name: mime
+    version: 0.2.6
+    sha: ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0
+  - name: mime
+    version: 0.3.14
+    sha: dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf
+  - name: mime_guess
+    version: 1.8.7
+    sha: 0d977de9ee851a0b16e932979515c0f3da82403183879811bc97d50bd9cc50f7
+  - name: mime_guess
+    version: 2.0.1
+    sha: 1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599
+  - name: miniz_oxide
+    version: 0.3.5
+    sha: 6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625
+  - name: mio
+    version: 0.6.21
+    sha: 302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f
+  - name: mio-named-pipes
+    version: 0.1.6
+    sha: f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3
+  - name: mio-uds
+    version: 0.6.7
+    sha: 966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125
+  - name: miow
+    version: 0.2.1
+    sha: 8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919
+  - name: miow
+    version: 0.3.3
+    sha: 396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226
+  - name: msdos_time
+    version: 0.1.6
+    sha: aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729
+  - name: multipart
+    version: 0.13.6
+    sha: 92f54eb45230c3aa20864ccf0c277eeaeadcf5e437e91731db498dbf7fbe0ec6
+  - name: native-tls
+    version: 0.2.3
+    sha: 4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e
+  - name: net2
+    version: 0.2.33
+    sha: 42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88
+  - name: nix
+    version: 0.11.1
+    sha: becb657d662f1cd2ef38c7ad480ec6b8cf9e96b27adb543e594f9cf0f2e6065c
+  - name: nix
+    version: 0.14.1
+    sha: 6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce
+  - name: normalize-line-endings
+    version: 0.2.2
+    sha: 2e0a1a39eab95caf4f5556da9289b9e68f0aafac901b2ce80daaf020d3b733a8
+  - name: num-integer
+    version: 0.1.41
+    sha: b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09
+  - name: num-traits
+    version: 0.1.43
+    sha: 92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31
+  - name: num-traits
+    version: 0.2.10
+    sha: d4c81ffc11c212fa327657cb19dd85eb7419e163b5b076bede2bdb5c974c07e4
+  - name: num_cpus
+    version: 1.11.1
+    sha: 76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72
+  - name: number_prefix
+    version: 0.2.8
+    sha: dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee
+  - name: opaque-debug
+    version: 0.2.3
+    sha: 2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c
+  - name: openssl
+    version: 0.10.26
+    sha: 3a3cc5799d98e1088141b8e01ff760112bbd9f19d850c124500566ca6901a585
+  - name: openssl-probe
+    version: 0.1.2
+    sha: 77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de
+  - name: openssl-sys
+    version: 0.9.53
+    sha: 465d16ae7fc0e313318f7de5cecf57b2fbe7511fd213978b457e1c96ff46736f
+  - name: parking_lot
+    version: 0.9.0
+    sha: f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252
+  - name: parking_lot_core
+    version: 0.6.2
+    sha: b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b
+  - name: percent-encoding
+    version: 1.0.1
+    sha: 31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831
+  - name: percent-encoding
+    version: 2.1.0
+    sha: d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+  - name: phf
+    version: 0.7.24
+    sha: b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18
+  - name: phf_codegen
+    version: 0.7.24
+    sha: b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e
+  - name: phf_generator
+    version: 0.7.24
+    sha: 09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662
+  - name: phf_shared
+    version: 0.7.24
+    sha: 234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0
+  - name: pkg-config
+    version: 0.3.17
+    sha: 05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677
+  - name: podio
+    version: 0.1.6
+    sha: 780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd
+  - name: ppv-lite86
+    version: 0.2.6
+    sha: 74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b
+  - name: predicates
+    version: 0.9.1
+    sha: f31e7977fc111984fdac76b6ae3a4cb598008fc6fd02dfdca189bf180bd7be20
+  - name: predicates-core
+    version: 0.9.0
+    sha: 85f80bc390d1c02a4cdaa63f27f05c3c426679eb65433d8dd65d392147e4e5c5
+  - name: predicates-tree
+    version: 0.9.0
+    sha: 2e86df9b81bdcb0a5141aca9d2b9c5e0c558ef6626d3ae2c12912f5c9df740bd
+  - name: proc-macro2
+    version: 1.0.6
+    sha: 9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27
+  - name: publicsuffix
+    version: 1.5.4
+    sha: 3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b
+  - name: pulldown-cmark
+    version: 0.0.3
+    sha: 8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07
+  - name: quick-error
+    version: 1.2.2
+    sha: 9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0
+  - name: quote
+    version: 0.3.15
+    sha: 7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a
+  - name: quote
+    version: 1.0.2
+    sha: 053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe
+  - name: rand
+    version: 0.3.23
+    sha: 64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c
+  - name: rand
+    version: 0.4.6
+    sha: 552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293
+  - name: rand
+    version: 0.5.6
+    sha: c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9
+  - name: rand
+    version: 0.6.5
+    sha: 6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca
+  - name: rand
+    version: 0.7.2
+    sha: 3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412
+  - name: rand_chacha
+    version: 0.1.1
+    sha: 556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef
+  - name: rand_chacha
+    version: 0.2.1
+    sha: 03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853
+  - name: rand_core
+    version: 0.3.1
+    sha: 7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b
+  - name: rand_core
+    version: 0.4.2
+    sha: 9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc
+  - name: rand_core
+    version: 0.5.1
+    sha: 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
+  - name: rand_hc
+    version: 0.1.0
+    sha: 7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4
+  - name: rand_hc
+    version: 0.2.0
+    sha: ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
+  - name: rand_isaac
+    version: 0.1.1
+    sha: ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08
+  - name: rand_jitter
+    version: 0.1.4
+    sha: 1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b
+  - name: rand_os
+    version: 0.1.3
+    sha: 7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071
+  - name: rand_pcg
+    version: 0.1.2
+    sha: abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44
+  - name: rand_xorshift
+    version: 0.1.1
+    sha: cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c
+  - name: rdrand
+    version: 0.4.0
+    sha: 678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2
+  - name: redis
+    version: 0.9.1
+    sha: f0c747d743d48233f9bc3ed3fb00cb84c1d98d8c7f54ed2d4cca9adf461a7ef3
+  - name: redox_syscall
+    version: 0.1.56
+    sha: 2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84
+  - name: redox_users
+    version: 0.3.1
+    sha: 4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d
+  - name: regex
+    version: 1.3.1
+    sha: dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd
+  - name: regex-syntax
+    version: 0.6.12
+    sha: 11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716
+  - name: remove_dir_all
+    version: 0.5.2
+    sha: 4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e
+  - name: reqwest
+    version: 0.9.22
+    sha: 2c2064233e442ce85c77231ebd67d9eca395207dec2127fe0bbedde4bd29a650
+  - name: retry
+    version: 0.4.0
+    sha: 29460f6011a25fc70b22010e796bd98330baccaa0005cba6f90b858a510dec0d
+  - name: ring
+    version: 0.14.6
+    sha: 426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c
+  - name: rouille
+    version: 2.2.0
+    sha: 0845b9c39ba772da769fe2aaa4d81bfd10695a7ea051d0510702260ff4159841
+  - name: rust-argon2
+    version: 0.5.1
+    sha: 4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf
+  - name: rustc-demangle
+    version: 0.1.16
+    sha: 4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783
+  - name: rustc_version
+    version: 0.2.3
+    sha: 138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a
+  - name: ryu
+    version: 1.0.2
+    sha: bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8
+  - name: safemem
+    version: 0.2.0
+    sha: e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f
+  - name: safemem
+    version: 0.3.3
+    sha: ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072
+  - name: same-file
+    version: 0.1.3
+    sha: d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7
+  - name: schannel
+    version: 0.1.16
+    sha: 87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021
+  - name: scopeguard
+    version: 1.0.0
+    sha: b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d
+  - name: security-framework
+    version: 0.3.4
+    sha: 8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df
+  - name: security-framework-sys
+    version: 0.3.3
+    sha: e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895
+  - name: semver
+    version: 0.9.0
+    sha: 1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403
+  - name: semver-parser
+    version: 0.7.0
+    sha: 388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3
+  - name: serde
+    version: 1.0.103
+    sha: 1217f97ab8e8904b57dd22eb61cde455fa7446a9c1cf43966066da047c1f3702
+  - name: serde_derive
+    version: 1.0.103
+    sha: a8c6faef9a2e64b0064f48570289b4bf8823b7581f1d6157c1b52152306651d0
+  - name: serde_json
+    version: 1.0.44
+    sha: 48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7
+  - name: serde_urlencoded
+    version: 0.5.5
+    sha: 642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a
+  - name: sha-1
+    version: 0.8.1
+    sha: 23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68
+  - name: sha1
+    version: 0.6.0
+    sha: 2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d
+  - name: sha2
+    version: 0.8.0
+    sha: 7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d
+  - name: signal-hook
+    version: 0.1.12
+    sha: 7a9c17dd3ba2d36023a5c9472ecddeda07e27fd0b05436e8c1e0c8f178185652
+  - name: signal-hook-registry
+    version: 1.2.0
+    sha: 94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41
+  - name: siphasher
+    version: 0.2.3
+    sha: 0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac
+  - name: skeptic
+    version: 0.4.0
+    sha: 24ebf8a06f5f8bae61ae5bbc7af7aac4ef6907ae975130faba1199e5fe82256a
+  - name: slab
+    version: 0.4.2
+    sha: c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8
+  - name: smallvec
+    version: 0.6.13
+    sha: f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6
+  - name: smallvec
+    version: 1.0.0
+    sha: 4ecf3b85f68e8abaa7555aa5abdb1153079387e60b718283d732f03897fcfc86
+  - name: socket2
+    version: 0.3.11
+    sha: e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85
+  - name: spin
+    version: 0.5.2
+    sha: 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+  - name: string
+    version: 0.2.1
+    sha: d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d
+  - name: strip-ansi-escapes
+    version: 0.1.0
+    sha: 9d63676e2abafa709460982ddc02a3bb586b6d15a49b75c212e06edd3933acee
+  - name: strsim
+    version: 0.8.0
+    sha: 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+  - name: subtle
+    version: 1.0.0
+    sha: 2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee
+  - name: syn
+    version: 0.11.11
+    sha: d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad
+  - name: syn
+    version: 1.0.11
+    sha: dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238
+  - name: synom
+    version: 0.11.3
+    sha: a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6
+  - name: synstructure
+    version: 0.12.3
+    sha: 67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545
+  - name: syslog
+    version: 4.0.1
+    sha: a0641142b4081d3d44beffa4eefd7346a228cdf91ed70186db2ca2cef762d327
+  - name: tar
+    version: 0.4.26
+    sha: b3196bfbffbba3e57481b6ea32249fbaf590396a52505a2615adbb79d9d826d3
+  - name: tempdir
+    version: 0.3.7
+    sha: 15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8
+  - name: tempfile
+    version: 3.1.0
+    sha: 7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9
+  - name: term
+    version: 0.5.2
+    sha: edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42
+  - name: termcolor
+    version: 1.0.5
+    sha: 96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e
+  - name: textwrap
+    version: 0.11.0
+    sha: d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+  - name: thread_local
+    version: 0.3.6
+    sha: c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b
+  - name: threadpool
+    version: 1.7.1
+    sha: e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865
+  - name: time
+    version: 0.1.42
+    sha: db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f
+  - name: tiny_http
+    version: 0.6.2
+    sha: 1661fa0a44c95d01604bd05c66732a446c657efb62b5164a7a083a3b552b4951
+  - name: tokio
+    version: 0.1.22
+    sha: 5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6
+  - name: tokio-buf
+    version: 0.1.1
+    sha: 8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46
+  - name: tokio-codec
+    version: 0.1.1
+    sha: 5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f
+  - name: tokio-current-thread
+    version: 0.1.6
+    sha: d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443
+  - name: tokio-executor
+    version: 0.1.9
+    sha: ca6df436c42b0c3330a82d855d2ef017cd793090ad550a6bc2184f4b933532ab
+  - name: tokio-fs
+    version: 0.1.6
+    sha: 3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af
+  - name: tokio-io
+    version: 0.1.12
+    sha: 5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926
+  - name: tokio-named-pipes
+    version: 0.1.0
+    sha: 9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae
+  - name: tokio-process
+    version: 0.2.4
+    sha: afbd6ef1b8cc2bd2c2b580d882774d443ebb1c6ceefe35ba9ea4ab586c89dbe8
+  - name: tokio-reactor
+    version: 0.1.11
+    sha: 6732fe6b53c8d11178dcb77ac6d9682af27fc6d4cb87789449152e5377377146
+  - name: tokio-serde
+    version: 0.1.0
+    sha: 894168193c4f80862a2244ff953b69145a9961a9efba39500e0970b083d0649c
+  - name: tokio-serde-bincode
+    version: 0.1.1
+    sha: 02e35c8d60a5e87cfb30dd562a309e56f8a6d36617b0a76c87f04d5466607ca8
+  - name: tokio-signal
+    version: 0.2.7
+    sha: dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296
+  - name: tokio-sync
+    version: 0.1.7
+    sha: d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76
+  - name: tokio-tcp
+    version: 0.1.3
+    sha: 1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119
+  - name: tokio-threadpool
+    version: 0.1.17
+    sha: f0c32ffea4827978e9aa392d2f743d973c1dfa3730a2ed3f22ce1e6984da848c
+  - name: tokio-timer
+    version: 0.2.12
+    sha: 1739638e364e558128461fc1ad84d997702c8e31c2e6b18fb99842268199e827
+  - name: tokio-udp
+    version: 0.1.5
+    sha: f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b
+  - name: tokio-uds
+    version: 0.2.5
+    sha: 037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445
+  - name: toml
+    version: 0.4.10
+    sha: 758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f
+  - name: tower
+    version: 0.1.1
+    sha: dc72f33b6a72c75c9df0037afce313018bae845f0ec7fdb9201b8768427a917f
+  - name: tower-buffer
+    version: 0.1.2
+    sha: 3c7b83e1ccf5b23dd109dd6ae2c07b8e2beec7a51a21f29da2dba576317370e0
+  - name: tower-discover
+    version: 0.1.0
+    sha: 73a7632286f78164d65d18fd0e570307acde9362489aa5c8c53e6315cc2bde47
+  - name: tower-layer
+    version: 0.1.0
+    sha: 0ddf07e10c07dcc8f41da6de036dc66def1a85b70eb8a385159e3908bb258328
+  - name: tower-limit
+    version: 0.1.1
+    sha: 2d990c5b6c0e4e192db8cf3dacaafefe1278962d0ec45dc84421175db32d33f0
+  - name: tower-load-shed
+    version: 0.1.0
+    sha: 04fbaf5bfb63d84204db87b9b2aeec61549613f2bbb8706dcc36f5f3ea8cd769
+  - name: tower-retry
+    version: 0.1.0
+    sha: 09e80588125061f276ed2a7b0939988b411e570a2dbb2965b1382ef4f71036f7
+  - name: tower-service
+    version: 0.2.0
+    sha: 2cc0c98637d23732f8de6dfd16494c9f1559c3b9e20b4a46462c8f9b9e827bfa
+  - name: tower-timeout
+    version: 0.1.1
+    sha: 5c06bbc2fbd056f810940a8c6f0cc194557d36da3c22999a755a7a6612447da9
+  - name: tower-util
+    version: 0.1.0
+    sha: 4792342fac093db5d2558655055a89a04ca909663467a4310c7739d9f8b64698
+  - name: tracing
+    version: 0.1.10
+    sha: ff4e4f59e752cb3beb5b61c6d5e11191c7946231ba84faec2902c9efdd8691c5
+  - name: tracing-attributes
+    version: 0.1.5
+    sha: a4263b12c3d3c403274493eb805966093b53214124796552d674ca1dd5d27c2b
+  - name: tracing-core
+    version: 0.1.7
+    sha: bc913647c520c959b6d21e35ed8fa6984971deca9f0a2fcb8c51207e0c56af1d
+  - name: treeline
+    version: 0.1.0
+    sha: a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41
+  - name: try-lock
+    version: 0.2.2
+    sha: e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382
+  - name: try_from
+    version: 0.3.2
+    sha: 283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b
+  - name: twoway
+    version: 0.1.8
+    sha: 59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1
+  - name: typenum
+    version: 1.11.2
+    sha: 6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9
+  - name: unicase
+    version: 1.4.2
+    sha: 7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33
+  - name: unicase
+    version: 2.6.0
+    sha: 50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6
+  - name: unicode-bidi
+    version: 0.3.4
+    sha: 49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5
+  - name: unicode-normalization
+    version: 0.1.11
+    sha: b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf
+  - name: unicode-width
+    version: 0.1.7
+    sha: caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479
+  - name: unicode-xid
+    version: 0.0.4
+    sha: 8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc
+  - name: unicode-xid
+    version: 0.2.0
+    sha: 826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c
+  - name: unix_socket
+    version: 0.5.0
+    sha: 6aa2700417c405c38f5e6902d699345241c28c0b7ade4abaad71e35a87eb1564
+  - name: unreachable
+    version: 1.0.0
+    sha: 382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56
+  - name: untrusted
+    version: 0.6.2
+    sha: 55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f
+  - name: url
+    version: 1.7.2
+    sha: dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a
+  - name: url
+    version: 2.1.0
+    sha: 75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61
+  - name: utf8parse
+    version: 0.1.1
+    sha: 8772a4ccbb4e89959023bc5b7cb8623a795caa7092d99f3aa9501b9484d4557d
+  - name: uuid
+    version: 0.7.4
+    sha: 90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a
+  - name: vcpkg
+    version: 0.2.8
+    sha: 3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168
+  - name: vec_map
+    version: 0.8.1
+    sha: 05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a
+  - name: version-compare
+    version: 0.0.10
+    sha: d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1
+  - name: version_check
+    version: 0.1.5
+    sha: 914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd
+  - name: version_check
+    version: 0.9.1
+    sha: 078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce
+  - name: void
+    version: 1.0.2
+    sha: 6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d
+  - name: vte
+    version: 0.3.3
+    sha: 4f42f536e22f7fcbb407639765c8fd78707a33109301f834a594758bedd6e8cf
+  - name: walkdir
+    version: 1.0.7
+    sha: bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff
+  - name: want
+    version: 0.2.0
+    sha: b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230
+  - name: wasi
+    version: 0.7.0
+    sha: b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d
+  - name: which
+    version: 2.0.1
+    sha: b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164
+  - name: winapi
+    version: 0.2.8
+    sha: 167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a
+  - name: winapi
+    version: 0.3.8
+    sha: 8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6
+  - name: winapi-build
+    version: 0.1.1
+    sha: 2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc
+  - name: winapi-i686-pc-windows-gnu
+    version: 0.4.0
+    sha: ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+  - name: winapi-util
+    version: 0.1.2
+    sha: 7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9
+  - name: winapi-x86_64-pc-windows-gnu
+    version: 0.4.0
+    sha: 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+  - name: wincolor
+    version: 1.0.2
+    sha: 96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9
+  - name: winreg
+    version: 0.6.2
+    sha: b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9
+  - name: ws2_32-sys
+    version: 0.2.1
+    sha: d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e
+  - name: xattr
+    version: 0.2.2
+    sha: 244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c
+  - name: zip
+    version: 0.4.2
+    sha: 36b9e08fb518a65cf7e08a1e482573eb87a2f4f8c6619316612a3c1f162fe822
diff --git a/Tools/buildstream/elements/sdk/shared-mime-info.bst b/Tools/buildstream/elements/sdk/shared-mime-info.bst
new file mode 100644 (file)
index 0000000..cfc78e6
--- /dev/null
@@ -0,0 +1,22 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/itstools.bst
+- sdk/intltool.bst
+- freedesktop-sdk.bst:components/perl-xml-parser.bst
+
+depends:
+- sdk/glib.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/libxml2.bst
+sources:
+- kind: tar
+  url: https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/6a226038bf42dae45a049a6b8e729abc/shared-mime-info-1.10.tar.xz
+  ref: c625a83b4838befc8cafcd54e3619946515d9e44d63d61c4adf7f5513ddfbebf
+variables:
+  notparallel: True
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/sdk/subversion.bst b/Tools/buildstream/elements/sdk/subversion.bst
new file mode 100644 (file)
index 0000000..7e567fb
--- /dev/null
@@ -0,0 +1,22 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- sdk-build-depends/utf8proc.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/sqlite.bst
+- freedesktop-sdk.bst:components/expat.bst
+- test-infra/apr.bst
+- test-infra/apr-util.bst
+
+sources:
+- kind: tar
+  url: http://apache.uvigo.es/subversion/subversion-1.13.0.tar.bz2
+  ref: bc50ce2c3faa7b1ae9103c432017df98dfd989c4239f9f8270bb3a314ed9e5bd
+variables:
+  conf-local: >-
+    --with-apr=/usr/bin/apr-1-config
+    --with-apr-util=/usr/bin/apu-1-config
+    --with-lz4=internal
diff --git a/Tools/buildstream/elements/sdk/v4lutils.bst b/Tools/buildstream/elements/sdk/v4lutils.bst
new file mode 100644 (file)
index 0000000..751d3f0
--- /dev/null
@@ -0,0 +1,9 @@
+kind: autotools
+sources:
+- kind: tar
+  url: https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.18.0.tar.bz2
+  ref: 6cb60d822eeed20486a03cc23e0fc65956fbc1e85e0c1a7477f68bbd9802880d
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk/woff2.bst b/Tools/buildstream/elements/sdk/woff2.bst
new file mode 100644 (file)
index 0000000..becac2a
--- /dev/null
@@ -0,0 +1,18 @@
+kind: cmake
+sources:
+- kind: tar
+  url: github_com:google/woff2/archive/v1.0.2.tar.gz
+  ref: add272bb09e6384a4833ffca4896350fdb16e0ca22df68c0384773c67a175594
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+depends:
+- sdk/brotli.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
+public:
+  bst:
+    split-rules:
+      devel:
+        (>):
+        - '%{libdir}/libwoff2common.so'
+        - '%{libdir}/libwoff2dec.so'
+        - '%{libdir}/libwoff2enc.so'
diff --git a/Tools/buildstream/elements/sdk/wpebackend-fdo.bst b/Tools/buildstream/elements/sdk/wpebackend-fdo.bst
new file mode 100644 (file)
index 0000000..2a4304f
--- /dev/null
@@ -0,0 +1,15 @@
+kind: cmake
+sources:
+- kind: git_tag
+  url: github_com:Igalia/WPEBackend-fdo.git
+  track: master
+  ref: 1.3.1-54-g1f58ebdf632fdf90f691949d90c8338a8d7073c7
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst
+depends:
+- sdk/glib.bst
+- sdk/libwpe.bst
+- freedesktop-sdk.bst:components/mesa-headers.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:components/libepoxy.bst
+- freedesktop-sdk.bst:bootstrap-import.bst
diff --git a/Tools/buildstream/elements/sdk/x264.bst b/Tools/buildstream/elements/sdk/x264.bst
new file mode 100644 (file)
index 0000000..8f5d989
--- /dev/null
@@ -0,0 +1,19 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: tar
+  url: http://download.videolan.org/pub/x264/snapshots/x264-snapshot-20140212-2245-stable.tar.bz2
+  ref: 5d98e9e4faf6dd55e7193ed379aff477b8acbda6777758956ef7e5f05067be18
+variables:
+  conf-local: >-
+    --enable-shared
+    --enable-static
+    --enable-pic
+    --disable-lavf
+    --disable-asm
diff --git a/Tools/buildstream/elements/sdk/xorg-server.bst b/Tools/buildstream/elements/sdk/xorg-server.bst
new file mode 100644 (file)
index 0000000..94861f6
--- /dev/null
@@ -0,0 +1,57 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/wayland-protocols.bst
+- freedesktop-sdk.bst:components/xorg-proto-xorgproto.bst
+- freedesktop-sdk.bst:components/xorg-util-macros.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/nettle.bst
+- freedesktop-sdk.bst:components/libtirpc.bst
+- freedesktop-sdk.bst:components/libdrm.bst
+- freedesktop-sdk.bst:components/dummy-gbm.bst
+- freedesktop-sdk.bst:components/libepoxy.bst
+- freedesktop-sdk.bst:components/pixman.bst
+- freedesktop-sdk.bst:components/xorg-lib-xkbfile.bst
+- freedesktop-sdk.bst:components/xorg-lib-xfont2.bst
+- freedesktop-sdk.bst:components/xorg-lib-xdmcp.bst
+- freedesktop-sdk.bst:components/xorg-lib-xshmfence.bst
+- freedesktop-sdk.bst:components/xorg-app-xkbcomp.bst
+- freedesktop-sdk.bst:components/xorg-font-util.bst
+- freedesktop-sdk.bst:components/wayland.bst
+- freedesktop-sdk.bst:components/systemd.bst
+
+variables:
+  conf-local: |
+     --disable-selective-werror \
+     --disable-xinerama \
+     --enable-glx \
+     --enable-composite \
+     --disable-xorg \
+     --disable-dri3 \
+     --disable-dmx \
+     --disable-xnest \
+     --disable-xquartz \
+     --disable-xwin \
+     --disable-xephyr \
+     --disable-xfake \
+     --disable-xfbdev \
+     --disable-install-setuid \
+     --disable-unit-tests \
+     --disable-present \
+     --enable-unix-transport \
+     --enable-tcp-transport \
+     --disable-local-transport \
+     --with-xkb-path=/usr/share/X11/xkb \
+     --with-xkb-output=/var/lib/xkb \
+     --with-xkb-bin-directory=/usr/bin \
+     --without-dtrace
+
+sources:
+- kind: tar
+  url: https://www.x.org/releases/individual/xserver/xorg-server-1.19.6.tar.bz2
+  ref: a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197
+- kind: patch
+  path: patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch
\ No newline at end of file
diff --git a/Tools/buildstream/elements/test-infra.bst b/Tools/buildstream/elements/test-infra.bst
new file mode 100644 (file)
index 0000000..b9a5f51
--- /dev/null
@@ -0,0 +1,12 @@
+kind: stack
+description: Stack of components needed to run WebKit tests
+
+depends:
+- test-infra/apr.bst
+- test-infra/apr-util.bst
+- test-infra/httpd.bst
+- test-infra/perl-cgi-pm.bst
+- test-infra/perl-http-date-pm.bst
+- test-infra/php.bst
+- test-infra/webkitgtk-test-dicts.bst
+- test-infra/webkitgtk-test-fonts.bst
diff --git a/Tools/buildstream/elements/test-infra/apr-util.bst b/Tools/buildstream/elements/test-infra/apr-util.bst
new file mode 100644 (file)
index 0000000..8aefbe8
--- /dev/null
@@ -0,0 +1,16 @@
+kind: autotools
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/expat.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- test-infra/apr.bst
+sources:
+- kind: tar
+  url: https://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2
+  ref: d3e12f7b6ad12687572a3a39475545a072608f4ba03a6ce8a3778f607dd0035b
+
+variables:
+  conf-local: >-
+    --with-apr=/usr/bin/apr-1-config
diff --git a/Tools/buildstream/elements/test-infra/apr.bst b/Tools/buildstream/elements/test-infra/apr.bst
new file mode 100644 (file)
index 0000000..2a200ff
--- /dev/null
@@ -0,0 +1,10 @@
+kind: autotools
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+sources:
+- kind: tar
+  url: https://www.apache.org/dist/apr/apr-1.6.5.tar.bz2
+  ref: a67ca9fcf9c4ff59bce7f428a323c8b5e18667fdea7b0ebad47d194371b0a105
diff --git a/Tools/buildstream/elements/test-infra/httpd.bst b/Tools/buildstream/elements/test-infra/httpd.bst
new file mode 100644 (file)
index 0000000..6847aa5
--- /dev/null
@@ -0,0 +1,34 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/perl.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+- freedesktop-sdk.bst:components/pcre.bst
+- freedesktop-sdk.bst:components/expat.bst
+- test-infra/apr.bst
+- test-infra/apr-util.bst
+sources:
+- kind: git
+  url: github_com:apache/httpd.git
+  ref: 6431bbb0da47dd984110dc32728a84e5cc990313
+- kind: patch
+  path: patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch
+variables:
+  autogen: |
+    aclocal;
+    autoheader;
+    autoreconf --install;
+    automake --add-missing || true;
+  conf-local: >-
+    --enable-mpms-shared=all
+    --enable-modules=all
+    --with-apr=/usr/bin/apr-1-config
+    --with-apr-util=/usr/bin/apu-1-config
+    --with-pcre=/usr
+    --enable-authnz-fcgi
+    --enable-cgi
+    --enable-cgid
+    --libexecdir=/usr/lib/apache2/modules
diff --git a/Tools/buildstream/elements/test-infra/perl-cgi-pm.bst b/Tools/buildstream/elements/test-infra/perl-cgi-pm.bst
new file mode 100644 (file)
index 0000000..e5f6e30
--- /dev/null
@@ -0,0 +1,8 @@
+kind: makemaker
+depends:
+- freedesktop-sdk.bst:components/perl.bst        
+
+sources:
+- kind: tar
+  url: https://cpan.metacpan.org/authors/id/L/LE/LEEJO/CGI-4.38.tar.gz
+  ref: 8c58f4a529bb92a914b22b7e64c5e31185c9854a4070a6dfad44fe5cc248e7d4
diff --git a/Tools/buildstream/elements/test-infra/perl-http-date-pm.bst b/Tools/buildstream/elements/test-infra/perl-http-date-pm.bst
new file mode 100644 (file)
index 0000000..e252fad
--- /dev/null
@@ -0,0 +1,12 @@
+kind: makemaker
+depends:
+- freedesktop-sdk.bst:components/perl.bst        
+
+sources:
+- kind: tar
+  url: https://cpan.metacpan.org/authors/id/G/GA/GAAS/HTTP-Date-6.02.tar.gz
+  ref: e8b9941da0f9f0c9c01068401a5e81341f0e3707d1c754f8e11f42a7e629e333
+public:
+  bst:
+    overlap-whitelist:
+    - '**'
diff --git a/Tools/buildstream/elements/test-infra/php.bst b/Tools/buildstream/elements/test-infra/php.bst
new file mode 100644 (file)
index 0000000..b70921c
--- /dev/null
@@ -0,0 +1,31 @@
+kind: autotools
+
+build-depends:
+- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst
+- freedesktop-sdk.bst:components/libxml2.bst
+- test-infra/httpd.bst
+
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+sources:
+- kind: tar
+  url: https://php.net/distributions/php-7.2.6.tar.xz
+  ref: 1f004e049788a3effc89ef417f06a6cf704c95ae2a718b2175185f2983381ae7
+
+variables:
+  conf-local: >-
+    --disable-xml
+    --disable-dom
+    --disable-libxml
+    --disable-simplexml
+    --disable-xmlreader
+    --disable-xmlwriter
+    --without-pear
+    --with-apxs2
+    --with-zlib
+    --with-libzip
+    --enable-sockets=shared
+  make-install:
+    install -D libs/libphp7.so %{install-root}/lib/apache2/modules/libphp7.so
+
+
diff --git a/Tools/buildstream/elements/test-infra/webkitgtk-test-dicts.bst b/Tools/buildstream/elements/test-infra/webkitgtk-test-dicts.bst
new file mode 100644 (file)
index 0000000..948bd11
--- /dev/null
@@ -0,0 +1,16 @@
+kind: manual
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:mrobinson/webkitgtk-test-dicts.git
+  track: 0.0.1
+  ref: 0.0.1-0-ga63aa52f09ddbf2532304a5751d22e5712299b0d
+config:
+  build-commands:
+  - make
+
+  install-commands:
+  - |
+    make DESTDIR="%{install-root}/usr/share" install
diff --git a/Tools/buildstream/elements/test-infra/webkitgtk-test-fonts.bst b/Tools/buildstream/elements/test-infra/webkitgtk-test-fonts.bst
new file mode 100644 (file)
index 0000000..a68234c
--- /dev/null
@@ -0,0 +1,13 @@
+kind: manual
+depends:
+- freedesktop-sdk.bst:bootstrap-import.bst
+
+sources:
+- kind: git_tag
+  url: github_com:WebKitGTK/webkitgtk-test-fonts.git
+  track: 0.0.8
+  ref: 0.0.8-0-gf6382ed93932cca128c8d9edec3088f85a7592d9
+config:
+  install-commands:
+  - |
+    make DESTDIR="%{install-root}/usr/share" install
diff --git a/Tools/buildstream/files/krb5/krb5.conf b/Tools/buildstream/files/krb5/krb5.conf
new file mode 100644 (file)
index 0000000..62f2d53
--- /dev/null
@@ -0,0 +1,9 @@
+[libdefaults]
+    dns_lookup_realm = false
+    ticket_lifetime = 24h
+    renew_lifetime = 7d
+    forwardable = true
+    rdns = false
+    pkinit_anchors = FILE:/etc/ssl/certs/ca-certificates.crt
+    spake_preauth_groups = edwards25519
+    default_ccache_name = KCM:
diff --git a/Tools/buildstream/files/os-release/issue.in b/Tools/buildstream/files/os-release/issue.in
new file mode 100644 (file)
index 0000000..61dfdc8
--- /dev/null
@@ -0,0 +1 @@
+WebKit Platform __RUNTIME_VERSION__ \n \l
diff --git a/Tools/buildstream/files/os-release/issue.net.in b/Tools/buildstream/files/os-release/issue.net.in
new file mode 100644 (file)
index 0000000..cbe029f
--- /dev/null
@@ -0,0 +1 @@
+WebKit Platform __RUNTIME_VERSION__ %h
diff --git a/Tools/buildstream/files/os-release/org.webkit.Platform.appdata.xml.in b/Tools/buildstream/files/os-release/org.webkit.Platform.appdata.xml.in
new file mode 100644 (file)
index 0000000..cf92bc5
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2020 Igalia S.L -->
+<component type="runtime">
+  <id>org.webkit.Platform</id>
+  <metadata_license>CC0</metadata_license>
+  <!-- FIXME -->
+  <project_license>LGPL-2.1+</project_license>
+  <name>WebKit Platform (__SDK_BRANCH__)</name>
+  <summary>Shared libraries used by WebKit Developer SDK</summary>
+  <releases>
+    <release version="__RUNTIME_VERSION__" date="__RUNTIME_VERSION_DATE__"/>
+  </releases>
+  <url type="homepage">https://webkit.org/</url>
+</component>
diff --git a/Tools/buildstream/files/os-release/org.webkit.Sdk.appdata.xml.in b/Tools/buildstream/files/os-release/org.webkit.Sdk.appdata.xml.in
new file mode 100644 (file)
index 0000000..a4dff84
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2020 Igalia S.L -->
+<component type="runtime">
+  <id>org.webkit.Sdk</id>
+  <metadata_license>CC0</metadata_license>
+  <!-- FIXME -->
+  <project_license>LGPL-2.1+</project_license>
+  <name>WebKit Software Development Kit (__SDK_BRANCH__)</name>
+  <summary>Tools and headers for developing WebKit</summary>
+  <releases>
+    <release version="__RUNTIME_VERSION__" date="__RUNTIME_VERSION_DATE__"/>
+  </releases>
+  <url type="homepage">https://webkit.org/</url>
+</component>
diff --git a/Tools/buildstream/files/os-release/os-release.in b/Tools/buildstream/files/os-release/os-release.in
new file mode 100644 (file)
index 0000000..1767000
--- /dev/null
@@ -0,0 +1,5 @@
+NAME=WebKit
+VERSION="__RUNTIME_VERSION__ (Flatpak runtime)"
+VERSION_ID=__RUNTIME_VERSION__
+ID=org.webkit.Platform
+PRETTY_NAME="WebKit SDK __RUNTIME_VERSION__ (Flatpak runtime)"
diff --git a/Tools/buildstream/patches/fdo-0001-Update-gcc-to-9.3.0.patch b/Tools/buildstream/patches/fdo-0001-Update-gcc-to-9.3.0.patch
new file mode 100644 (file)
index 0000000..ef2fc84
--- /dev/null
@@ -0,0 +1,26 @@
+From 5cc0bc04e488de424af2dc63e72e89a1e1b89603 Mon Sep 17 00:00:00 2001
+From: Seppo Yli-Olli <seppo.yliolli@gmail.com>
+Date: Sat, 14 Mar 2020 21:54:32 +0200
+Subject: [PATCH] Update gcc to 9.3.0
+
+---
+ elements/bootstrap/include/gcc-source.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/elements/bootstrap/include/gcc-source.yml b/elements/bootstrap/include/gcc-source.yml
+index 54b9001d..f111c238 100644
+--- a/elements/bootstrap/include/gcc-source.yml
++++ b/elements/bootstrap/include/gcc-source.yml
+@@ -1,7 +1,7 @@
+ sources:
+ - kind: tar
+-  url: ftp_gnu_org:gcc/gcc-9.2.0/gcc-9.2.0.tar.xz
+-  ref: ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206
++  url: ftp_gnu_org:gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
++  ref: 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1
+ - kind: tar
+   url: ftp_gnu_org:gmp/gmp-6.1.2.tar.xz
+   directory: gmp
+-- 
+2.26.1
+
diff --git a/Tools/buildstream/patches/fdo/0001-Add-Jack.patch b/Tools/buildstream/patches/fdo/0001-Add-Jack.patch
new file mode 100644 (file)
index 0000000..4331185
--- /dev/null
@@ -0,0 +1,71 @@
+From bbb5463789a2b5ff2c2ffd9412b275078a0a5813 Mon Sep 17 00:00:00 2001
+From: Philippe Normand <philn@igalia.com>
+Date: Tue, 5 May 2020 16:25:20 +0100
+Subject: [PATCH] Add Jack
+
+---
+ elements/components/jack.bst | 52 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+ create mode 100644 elements/components/jack.bst
+
+diff --git a/elements/components/jack.bst b/elements/components/jack.bst
+new file mode 100644
+index 00000000..e13049ae
+--- /dev/null
++++ b/elements/components/jack.bst
+@@ -0,0 +1,52 @@
++kind: manual
++
++depends:
++- bootstrap-import.bst
++- components/sndfile.bst
++- components/alsa-lib.bst
++
++build-depends:
++- components/python3.bst
++- components/systemd.bst
++- components/pkg-config.bst
++
++environment:
++  JOBS: "%{max-jobs}"
++
++environment-nocache:
++- JOBS
++
++variables:
++  config: >-
++    --prefix="%{prefix}"
++    --bindir="%{bindir}"
++    --libdir="%{libdir}"
++    --mandir="%{mandir}"
++    --systemd-unit
++    --systemd=yes
++    --db=no
++    --alsa=yes
++    --firewire=no
++    --iio=no
++    --sndfile=yes
++    --readline=yes
++    --enable-pkg-config-dbus-service-dir
++
++config:
++  configure-commands:
++  - |
++    python3 waf configure %{config}
++
++  build-commands:
++  - |
++    python3 waf -j ${JOBS} build
++
++  install-commands:
++  - |
++    python3 waf install --destdir="%{install-root}"
++
++sources:
++- kind: git_tag
++  url: github:jackaudio/jack2.git
++  track: master
++  ref: v1.9.14-0-gb54a09bf7ef760d81fdb8544ad10e45575394624
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch b/Tools/buildstream/patches/fdo/0001-components-xdg-desktop-portal.bst-Update-to-1.6.0.patch
new file mode 100644 (file)
index 0000000..4d01f8f
--- /dev/null
@@ -0,0 +1,75 @@
+From 50e195df53bdb6ce3069d8de88e2b7fb881ef419 Mon Sep 17 00:00:00 2001
+From: Valentin David <valentin.david@codethink.co.uk>
+Date: Mon, 20 Jan 2020 19:32:33 +0100
+Subject: [PATCH 1/4] components/xdg-desktop-portal.bst: Update to 1.6.0
+
+---
+ elements/components/libportal.bst          | 15 +++++++++++++
+ elements/components/xdg-desktop-portal.bst | 25 ++++++++++------------
+ 2 files changed, 26 insertions(+), 14 deletions(-)
+ create mode 100644 elements/components/libportal.bst
+
+diff --git a/elements/components/libportal.bst b/elements/components/libportal.bst
+new file mode 100644
+index 00000000..557cc637
+--- /dev/null
++++ b/elements/components/libportal.bst
+@@ -0,0 +1,15 @@
++kind: meson
++
++depends:
++- bootstrap-import.bst
++- components/glib.bst
++
++build-depends:
++- public-stacks/buildsystem-meson.bst
++- components/gtk-doc.bst
++
++sources:
++- kind: git_tag
++  url: github:flatpak/libportal.git
++  track: master
++  ref: 0.3-0-g7b11b2a42fd4e7681bd38f3986b47108c0a3cc66
+diff --git a/elements/components/xdg-desktop-portal.bst b/elements/components/xdg-desktop-portal.bst
+index 7f5d14b7..46c30a23 100644
+--- a/elements/components/xdg-desktop-portal.bst
++++ b/elements/components/xdg-desktop-portal.bst
+@@ -1,19 +1,16 @@
+ kind: autotools
+ depends:
+-- filename: bootstrap-import.bst
+-- filename: public-stacks/buildsystem-autotools.bst
+-  type: build
+-- filename: components/flatpak.bst
+-  type: build
+-- filename: components/glib.bst
+-  type: build
+-- filename: components/fontconfig.bst
+-  type: build
+-- filename: components/pipewire.bst
+-  type: build
+-- filename: components/geoclue.bst
+-  type: build
++- bootstrap-import.bst
++- components/libportal.bst
++
++build-depends:
++- public-stacks/buildsystem-autotools.bst
++- components/flatpak.bst
++- components/glib.bst
++- components/fontconfig.bst
++- components/pipewire.bst
++- components/geoclue.bst
+ public:
+   bst:
+@@ -27,4 +24,4 @@ sources:
+ - kind: git_tag
+   url: github:flatpak/xdg-desktop-portal.git
+   track: master
+-  ref: 1.4.2-0-gf8604e337f474f053ce4c1e565bde7089d212c91
++  ref: 1.6.0-0-g28b93e213a83c78bb6d65d5a1a65c57d62957827
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch b/Tools/buildstream/patches/fdo/0001-ffmpeg-Add-MS-MPEG-DivX-variants.patch
new file mode 100644 (file)
index 0000000..20a6be0
--- /dev/null
@@ -0,0 +1,26 @@
+From 6b2584311361e3ffdf3f9fd5753e3aa81dee77e2 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 20 Dec 2019 10:27:00 +0100
+Subject: [PATCH 1/5] ffmpeg: Add MS-MPEG DivX;) variants
+
+Add support for early 2000s' MS-MPEG4 DivX;) variant.
+---
+ elements/extensions/ffmpeg-full/ffmpeg.bst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/elements/extensions/ffmpeg-full/ffmpeg.bst b/elements/extensions/ffmpeg-full/ffmpeg.bst
+index 3f6aafba..85788ed2 100644
+--- a/elements/extensions/ffmpeg-full/ffmpeg.bst
++++ b/elements/extensions/ffmpeg-full/ffmpeg.bst
+@@ -8,7 +8,7 @@ variables:
+   extra-aud-enc: wmav1,wmav2
+   extra-aud-dec: ape,dca,eac3,mlp,tak,truehd,wmav1,wmav2,wmapro
+   extra-vid-enc: h263,h264,wmv1,wmv2
+-  extra-vid-dec: hevc,h263,h264,mpeg4,wmv1,wmv2,wmv3,wmv3image
++  extra-vid-dec: hevc,h263,h264,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,wmv1,wmv2,wmv3,wmv3image
+   extra-hwaccels: h264_vaapi,h264_vdpau,hevc_vaapi,hevc_vdpau
+   extra-parsers: hevc,h264,dca
+   extra-demuxers: avi,h264,m4v
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0002-Update-PipeWire-to-0.3.1.patch b/Tools/buildstream/patches/fdo/0002-Update-PipeWire-to-0.3.1.patch
new file mode 100644 (file)
index 0000000..c825167
--- /dev/null
@@ -0,0 +1,831 @@
+From 4e0f2347b4e6610fc0cba65cf2f3a20a17cbca1f Mon Sep 17 00:00:00 2001
+From: Valentin David <valentin.david@codethink.co.uk>
+Date: Mon, 3 Feb 2020 14:42:04 +0100
+Subject: [PATCH 2/4] Update PipeWire to 0.3.1
+
+This new versions requires more dependency by default, which were all
+added.
+
+The drop-in replacement libraries have been put in
+`components/pipewire-pulse.bst` and `components/pipewire-jack.bst`.
+---
+ elements/components/pipewire-base.bst         |  52 +-
+ elements/components/pipewire-daemon.bst       |  16 +-
+ elements/components/pipewire-jack.bst         |  27 +
+ elements/components/pipewire-pulse.bst        |  33 ++
+ elements/components/pipewire.bst              |  33 +-
+ elements/components/weston.bst                |   2 +
+ elements/components/xdg-desktop-portal.bst    |   2 +
+ patches/xdg-desktop-portal/pipewire-0.3.patch | 544 ++++++++++++++++++
+ 8 files changed, 668 insertions(+), 41 deletions(-)
+ create mode 100644 elements/components/pipewire-jack.bst
+ create mode 100644 elements/components/pipewire-pulse.bst
+ create mode 100644 patches/xdg-desktop-portal/pipewire-0.3.patch
+
+diff --git a/elements/components/pipewire-base.bst b/elements/components/pipewire-base.bst
+index 685b59f1..4873175b 100644
+--- a/elements/components/pipewire-base.bst
++++ b/elements/components/pipewire-base.bst
+@@ -1,20 +1,24 @@
+ kind: meson
+-depends:
+-- filename: bootstrap-import.bst
+-- filename: components/gstreamer-plugins-base.bst
+-- filename: components/alsa-lib.bst
+-- filename: components/dbus.bst
+-- filename: components/sdl2.bst
+-- filename: components/ffmpeg.bst
+-- filename: components/systemd.bst
+-  type: build
+-- filename: components/systemd-libs.bst
+-  type: runtime
+-- filename: components/gtk-doc.bst
+-  type: build
+-- filename: public-stacks/buildsystem-meson.bst
+-  type: build
++# This element is not be used directly. Use either:
++#  - components/pipewire.bst
++#  - components/pipewire-daemon.bst
++
++build-depends:
++- bootstrap-import.bst
++- components/alsa-lib.bst
++- components/bluez.bst
++- components/dbus.bst
++- components/ffmpeg.bst
++- components/gstreamer-plugins-base.bst
++- components/gtk-doc.bst
++- components/jack.bst
++- components/sbc.bst
++- components/sdl2.bst
++- components/systemd-libs.bst
++- components/systemd.bst
++- components/vulkan.bst
++- public-stacks/buildsystem-meson.bst
+ variables:
+   # Docs depend on doxygen
+@@ -22,7 +26,7 @@ variables:
+   meson-local: >-
+     -Ddocs=false
+     -Dman=false
+-    -Dgstreamer=enabled
++    -Dgstreamer=true
+     -Dsystemd=true
+@@ -38,7 +42,19 @@ public:
+       - '%{bindir}/pipewire'
+       - '%{indep-libdir}/systemd'
+       - '%{indep-libdir}/systemd/**'
++      - '%{debugdir}%{bindir}/pipewire.debug'
++
++      jack:
++      - '%{libdir}/libjack-pw.so*'
++      - '%{debugdir}%{libdir}/libjack-pw.so*.debug'
++      pulse:
++      - '%{libdir}/libpulse-pw.so*'
++      - '%{libdir}/libpulse-simple-pw.so*'
++      - '%{libdir}/libpulse-mainloop-glib-pw.so*'
++      - '%{debugdir}%{libdir}/libpulse-pw.so*.debug'
++      - '%{debugdir}%{libdir}/libpulse-simple-pw.so*.debug'
++      - '%{debugdir}%{libdir}/libpulse-mainloop-glib-pw.so*.debug'
+   cpe:
+     product: pipewire
+@@ -46,4 +62,6 @@ sources:
+ - kind: git_tag
+   url: github:PipeWire/pipewire.git
+   track: master
+-  ref: 0.2.6-0-g4aff470a8fa1e06448b2316781b4e7a91fbda341
++  exclude:
++  - '*.*.9*'
++  ref: 0.3.4-0-g33398d7de83fad1c67c691e0712e3e0108c5e966
+diff --git a/elements/components/pipewire-daemon.bst b/elements/components/pipewire-daemon.bst
+index 2606d957..92f1c626 100644
+--- a/elements/components/pipewire-daemon.bst
++++ b/elements/components/pipewire-daemon.bst
+@@ -1,10 +1,16 @@
+ kind: filter
+-depends:
+-- filename: components/pipewire-base.bst
+-  type: build
+-- filename: components/pipewire.bst
+-  type: runtime
++build-depends:
++- components/pipewire-base.bst
++
++runtime-depends:
++- components/pipewire.bst
++- components/sbc.bst
++- components/jack.bst
++- components/bluez.bst
++# TODO: Add dependency to rtkit.
++#  This however depens on polkit, which depends on mozjs, python2 and libintl.
++#  When polkit more sensible dependencies, rtkit should be used.
+ config:
+   include:
+diff --git a/elements/components/pipewire-jack.bst b/elements/components/pipewire-jack.bst
+new file mode 100644
+index 00000000..d4dff771
+--- /dev/null
++++ b/elements/components/pipewire-jack.bst
+@@ -0,0 +1,27 @@
++kind: filter
++description: |
++  This element replaces Jack library by a drop-in replacement so that
++  Jack clients connects to Pipewire.
++  This is not to be confused with the Jack plugin for Pipewire.
++
++build-depends:
++- components/pipewire-base.bst
++
++runtime-depends:
++- components/pipewire-daemon.bst
++
++config:
++  include:
++  - jack
++  include-orphans: False
++
++public:
++  bst:
++    split-rules:
++      devel:
++        (>):
++        - '%{libdir}/libjack-pw.so'
++
++    integration-commands:
++    - rm "%{libdir}"/libjack.so*
++    - ln -sf libjack-pw.so.0.3.1 "%{libdir}/libjack.so.0"
+diff --git a/elements/components/pipewire-pulse.bst b/elements/components/pipewire-pulse.bst
+new file mode 100644
+index 00000000..90244809
+--- /dev/null
++++ b/elements/components/pipewire-pulse.bst
+@@ -0,0 +1,33 @@
++kind: filter
++description: |
++  This element replaces Pulseaudio library by a drop-in replacement so that
++  Pulsaudio clients connects to Pipewire.
++  This is not to be confused with the Pulseaudio plugin for Pipewire.
++
++build-depends:
++- components/pipewire-base.bst
++
++runtime-depends:
++- components/pipewire-daemon.bst
++
++config:
++  include:
++  - pulse
++  include-orphans: False
++
++public:
++  bst:
++    split-rules:
++      devel:
++        (>):
++        - '%{libdir}/libpulse-pw.so'
++        - '%{libdir}/libpulse-simple-pw.so'
++        - '%{libdir}/libpulse-mainloop-glib-pw.so'
++
++    integration-commands:
++    - rm "%{libdir}"/libpulse.so*
++    - rm "%{libdir}"/libpulse-simple.so*
++    - rm "%{libdir}"/libpulse-mainloop-glib.so*
++    - ln -sf libpulse-pw.so.0.3.1 "%{libdir}/libpulse.so.0"
++    - ln -sf libpulse-simple-pw.so.0.3.1 "%{libdir}/libpulse-simple.so.0"
++    - ln -sf libpulse-mainloop-glib-pw.so.0.3.1 "%{libdir}/libpulse-mainloop-glib.so.0"
+diff --git a/elements/components/pipewire.bst b/elements/components/pipewire.bst
+index 16d8b76e..6704cb73 100644
+--- a/elements/components/pipewire.bst
++++ b/elements/components/pipewire.bst
+@@ -1,28 +1,23 @@
+ kind: filter
+-depends:
+-- filename: components/pipewire-base.bst
+-  type: build
+-- filename: bootstrap-import.bst
+-  type: runtime
+-- filename: components/gstreamer-plugins-base.bst
+-  type: runtime
+-- filename: components/alsa-lib.bst
+-  type: runtime
+-- filename: components/dbus.bst
+-  type: runtime
+-- filename: components/sdl2.bst
+-  type: runtime
+-- filename: components/ffmpeg.bst
+-  type: runtime
+-- filename: components/systemd-libs.bst
+-  type: runtime
+-- filename: components/pipewire-manifest.bst
+-  type: runtime
++build-depends:
++- components/pipewire-base.bst
++
++runtime-depends:
++- bootstrap-import.bst
++- components/gstreamer-plugins-base.bst
++- components/alsa-lib.bst
++- components/dbus.bst
++- components/sdl2.bst
++- components/ffmpeg.bst
++- components/systemd-libs.bst
++- components/pipewire-manifest.bst
+ config:
+   exclude:
+   - daemon
++  - jack
++  - pulse
+   include-orphans: True
+ public:
+diff --git a/elements/components/weston.bst b/elements/components/weston.bst
+index 10aed20a..7a221c31 100644
+--- a/elements/components/weston.bst
++++ b/elements/components/weston.bst
+@@ -32,11 +32,13 @@ environment:
+   PKG_CONFIG_PATH: '%{libdir}/GL/default/lib/pkgconfig:'
+ # FIXME colord depends on intltool (polkit) and python2 (mozjs)
++# FIXME Does not build against Pipewire 0.3
+ variables:
+   meson-local: >-
+     -Dbackend-rdp=false
+     -Dcolor-management-colord=false
+     -Dsimple-dmabuf-drm=intel,etnaviv
++    -Dpipewire=false
+ sources:
+ - kind: git_tag
+diff --git a/elements/components/xdg-desktop-portal.bst b/elements/components/xdg-desktop-portal.bst
+index 46c30a23..f07cdd0c 100644
+--- a/elements/components/xdg-desktop-portal.bst
++++ b/elements/components/xdg-desktop-portal.bst
+@@ -25,3 +25,5 @@ sources:
+   url: github:flatpak/xdg-desktop-portal.git
+   track: master
+   ref: 1.6.0-0-g28b93e213a83c78bb6d65d5a1a65c57d62957827
++- kind: patch
++  path: patches/xdg-desktop-portal/pipewire-0.3.patch
+diff --git a/patches/xdg-desktop-portal/pipewire-0.3.patch b/patches/xdg-desktop-portal/pipewire-0.3.patch
+new file mode 100644
+index 00000000..40bd6ce0
+--- /dev/null
++++ b/patches/xdg-desktop-portal/pipewire-0.3.patch
+@@ -0,0 +1,544 @@
++commit a38901e5e7f835efe7b7a06c55790c8c20bc91a2
++Author: Wim Taymans <wtaymans@redhat.com>
++Date:   Tue Jan 14 09:37:09 2020 +0100
++
++    PipeWire: update to 0.3 API
++
++diff --git a/configure.ac b/configure.ac
++index 89902fa..62d7960 100644
++--- a/configure.ac
+++++ b/configure.ac
++@@ -97,7 +97,7 @@ AC_ARG_ENABLE(pipewire,
++            [AS_HELP_STRING([--enable-pipewire],[Enable PipeWire support. Needed for screen cast portal])],
++            enable_pipewire=$enableval, enable_pipewire=yes)
++ if test x$enable_pipewire = xyes ; then
++-     PKG_CHECK_MODULES(PIPEWIRE, [libpipewire-0.2 >= 0.2.6])
+++     PKG_CHECK_MODULES(PIPEWIRE, [libpipewire-0.3 >= 0.2.90])
++      AC_DEFINE([HAVE_PIPEWIRE],[1], [Define to enable PipeWire support])
++ fi
++ AM_CONDITIONAL([HAVE_PIPEWIRE],[test "$enable_pipewire" = "yes"])
++diff --git a/src/camera.c b/src/camera.c
++index c2b392c..20fe3aa 100644
++--- a/src/camera.c
+++++ b/src/camera.c
++@@ -141,7 +141,7 @@ open_pipewire_camera_remote (const char *app_id,
++                              GError **error)
++ {
++   PipeWireRemote *remote;
++-  struct spa_dict_item permission_items[1];
+++  struct pw_permission permission_items[2];
++   struct pw_properties *pipewire_properties;
++ 
++   pipewire_properties =
++@@ -158,12 +158,12 @@ open_pipewire_camera_remote (const char *app_id,
++    * Hide all existing and future nodes by default. PipeWire will use the
++    * permission store to set up permissions.
++    */
++-  permission_items[0].key = PW_CORE_PROXY_PERMISSIONS_DEFAULT;
++-  permission_items[0].value = "---";
+++  permission_items[0] = PW_PERMISSION_INIT (PW_ID_CORE, PW_PERM_RWX);
+++  permission_items[1] = PW_PERMISSION_INIT (PW_ID_ANY, 0);
++ 
++-  pw_core_proxy_permissions (pw_remote_get_core_proxy (remote->remote),
++-                             &SPA_DICT_INIT (permission_items,
++-                                             G_N_ELEMENTS (permission_items)));
+++  pw_client_update_permissions (pw_core_get_client(remote->core),
+++                                G_N_ELEMENTS (permission_items),
+++                                permission_items);
++ 
++   pipewire_remote_roundtrip (remote);
++ 
++@@ -219,7 +219,7 @@ handle_open_pipewire_remote (XdpCamera *object,
++     }
++ 
++   out_fd_list = g_unix_fd_list_new ();
++-  fd = pw_remote_steal_fd (remote->remote);
+++  fd = pw_core_steal_fd (remote->core);
++   fd_id = g_unix_fd_list_append (out_fd_list, fd, &error);
++   close (fd);
++   pipewire_remote_destroy (remote);
++@@ -250,29 +250,28 @@ camera_iface_init (XdpCameraIface *iface)
++ static void
++ global_added_cb (PipeWireRemote *remote,
++                  uint32_t id,
++-                 uint32_t type,
+++                 const char *type,
++                  const struct spa_dict *props,
++                  gpointer user_data)
++ {
++   Camera *camera = user_data;
++-  struct pw_type *core_type = pw_core_get_type (remote->core);
++   const struct spa_dict_item *media_class;
++   const struct spa_dict_item *media_role;
++ 
++-  if (type != core_type->node)
+++  if (strcmp(type, PW_TYPE_INTERFACE_Node) != 0)
++     return;
++ 
++   if (!props)
++     return;
++ 
++-  media_class = spa_dict_lookup_item (props, "media.class");
+++  media_class = spa_dict_lookup_item (props, PW_KEY_MEDIA_CLASS);
++   if (!media_class)
++     return;
++ 
++   if (g_strcmp0 (media_class->value, "Video/Source") != 0)
++     return;
++ 
++-  media_role = spa_dict_lookup_item (props, "media.role");
+++  media_role = spa_dict_lookup_item (props, PW_KEY_MEDIA_ROLE);
++   if (!media_role)
++     return;
++ 
++@@ -342,6 +341,7 @@ create_pipewire_remote (Camera *camera,
++     }
++ 
++   pipewire_properties = pw_properties_new ("pipewire.access.portal.is_portal", "true",
+++                                           "portal.monitor", "Camera",
++                                            NULL);
++   camera->pipewire_remote = pipewire_remote_new_sync (pipewire_properties,
++                                                       global_added_cb,
++diff --git a/src/pipewire.c b/src/pipewire.c
++index 793a378..162cd55 100644
++--- a/src/pipewire.c
+++++ b/src/pipewire.c
++@@ -21,6 +21,7 @@
++ #include <errno.h>
++ #include <glib.h>
++ #include <pipewire/pipewire.h>
+++#include <spa/utils/result.h>
++ 
++ #include "pipewire.h"
++ 
++@@ -36,27 +37,25 @@ static gboolean is_pipewire_initialized = FALSE;
++ static void
++ registry_event_global (void *user_data,
++                        uint32_t id,
++-                       uint32_t parent_id,
++                        uint32_t permissions,
++-                       uint32_t type,
+++                       const char *type,
++                        uint32_t version,
++                        const struct spa_dict *props)
++ {
++   PipeWireRemote *remote = user_data;
++-  struct pw_type *core_type = pw_core_get_type (remote->core);
++   const struct spa_dict_item *factory_object_type;
++   PipeWireGlobal *global;
++ 
++   global = g_new0 (PipeWireGlobal, 1);
++   *global = (PipeWireGlobal) {
++-    .parent_id = parent_id,
+++    .parent_id = id,
++   };
++ 
++   g_hash_table_insert (remote->globals, GINT_TO_POINTER (id), global);
++   if (remote->global_added_cb)
++     remote->global_added_cb (remote, id, type, props, remote->user_data);
++ 
++-  if (type != core_type->factory)
+++  if (strcmp(type, PW_TYPE_INTERFACE_Factory) != 0)
++     return;
++ 
++   factory_object_type = spa_dict_lookup_item (props, "factory.type.name");
++@@ -81,8 +80,8 @@ registry_event_global_remove (void *user_data,
++   g_hash_table_remove (remote->globals, GINT_TO_POINTER (id));
++ }
++ 
++-static const struct pw_registry_proxy_events registry_events = {
++-  PW_VERSION_REGISTRY_PROXY_EVENTS,
+++static const struct pw_registry_events registry_events = {
+++  PW_VERSION_REGISTRY_EVENTS,
++   .global = registry_event_global,
++   .global_remove = registry_event_global_remove,
++ };
++@@ -90,7 +89,7 @@ static const struct pw_registry_proxy_events registry_events = {
++ void
++ pipewire_remote_roundtrip (PipeWireRemote *remote)
++ {
++-  pw_core_proxy_sync (remote->core_proxy, ++remote->sync_seq);
+++  remote->sync_seq = pw_core_sync (remote->core, PW_ID_CORE, remote->sync_seq);
++   pw_main_loop_run (remote->loop);
++ }
++ 
++@@ -98,16 +97,13 @@ static gboolean
++ discover_node_factory_sync (PipeWireRemote *remote,
++                             GError **error)
++ {
++-  struct pw_type *core_type = pw_core_get_type (remote->core);
++-  struct pw_registry_proxy *registry_proxy;
+++  struct pw_registry *registry;
++ 
++-  registry_proxy = pw_core_proxy_get_registry (remote->core_proxy,
++-                                               core_type->registry,
++-                                               PW_VERSION_REGISTRY, 0);
++-  pw_registry_proxy_add_listener (registry_proxy,
++-                                  &remote->registry_listener,
++-                                  &registry_events,
++-                                  remote);
+++  registry = pw_core_get_registry (remote->core, PW_VERSION_REGISTRY, 0);
+++  pw_registry_add_listener (registry,
+++                            &remote->registry_listener,
+++                            &registry_events,
+++                            remote);
++ 
++   pipewire_remote_roundtrip (remote);
++ 
++@@ -122,59 +118,35 @@ discover_node_factory_sync (PipeWireRemote *remote,
++ }
++ 
++ static void
++-on_state_changed (void *user_data,
++-                  enum pw_remote_state old,
++-                  enum pw_remote_state state,
++-                  const char *error)
+++core_event_error (void       *user_data,
+++                  uint32_t    id,
+++               int         seq,
+++               int         res,
+++               const char *message)
++ {
++   PipeWireRemote *remote = user_data;
++ 
++-  switch (state)
+++  if (id == PW_ID_CORE)
++     {
++-    case PW_REMOTE_STATE_ERROR:
++-      if (!remote->error)
++-        {
++-          g_set_error (&remote->error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                       "%s", error);
++-        }
+++      g_set_error (&remote->error, G_IO_ERROR, G_IO_ERROR_FAILED,
+++                 "%s", message);
++       pw_main_loop_quit (remote->loop);
++-      break;
++-    case PW_REMOTE_STATE_UNCONNECTED:
++-      if (!remote->error)
++-        {
++-          g_set_error (&remote->error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                       "Disconnected");
++-        }
++-      pw_main_loop_quit (remote->loop);
++-      break;
++-    case PW_REMOTE_STATE_CONNECTING:
++-      break;
++-    case PW_REMOTE_STATE_CONNECTED:
++-      pw_main_loop_quit (remote->loop);
++-      break;
++-    default:
++-      g_warning ("Unknown PipeWire state");
++-      break;
++     }
++ }
++ 
++-static const struct pw_remote_events remote_events = {
++-  PW_VERSION_REMOTE_EVENTS,
++-  .state_changed = on_state_changed,
++-};
++-
++ static void
++ core_event_done (void *user_data,
++-                 uint32_t seq)
+++                 uint32_t id, int seq)
++ {
++   PipeWireRemote *remote = user_data;
++ 
++-  if (remote->sync_seq == seq)
+++  if (id == PW_ID_CORE && remote->sync_seq == seq)
++     pw_main_loop_quit (remote->loop);
++ }
++ 
++-static const struct pw_core_proxy_events core_events = {
++-  PW_VERSION_CORE_PROXY_EVENTS,
+++static const struct pw_core_events core_events = {
+++  PW_VERSION_CORE_EVENTS,
+++  .error = core_event_error,
++   .done = core_event_done,
++ };
++ 
++@@ -237,8 +209,8 @@ void
++ pipewire_remote_destroy (PipeWireRemote *remote)
++ {
++   g_clear_pointer (&remote->globals, g_hash_table_destroy);
++-  g_clear_pointer (&remote->remote, pw_remote_destroy);
++-  g_clear_pointer (&remote->core, pw_core_destroy);
+++  g_clear_pointer (&remote->core, pw_core_disconnect);
+++  g_clear_pointer (&remote->context, pw_context_destroy);
++   g_clear_pointer (&remote->loop, pw_main_loop_destroy);
++   g_clear_error (&remote->error);
++ 
++@@ -307,68 +279,31 @@ pipewire_remote_new_sync (struct pw_properties *pipewire_properties,
++       return NULL;
++     }
++ 
++-  remote->core = pw_core_new (pw_main_loop_get_loop (remote->loop), NULL);
++-  if (!remote->core)
+++  remote->context = pw_context_new (pw_main_loop_get_loop (remote->loop), NULL, 0);
+++  if (!remote->context)
++     {
++       pipewire_remote_destroy (remote);
++       pw_properties_free (pipewire_properties);
++       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                   "Couldn't create PipeWire core");
+++                   "Couldn't create PipeWire context");
++       return NULL;
++     }
++ 
++-  remote->remote = pw_remote_new (remote->core, pipewire_properties, 0);
++-  if (!remote->remote)
+++  remote->core = pw_context_connect (remote->context, pipewire_properties, 0);
+++  if (!remote->core)
++     {
++       pipewire_remote_destroy (remote);
++       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                   "Couldn't create PipeWire remote");
+++                   "Couldn't connect to PipeWire");
++       return NULL;
++     }
++ 
++   remote->globals = g_hash_table_new_full (NULL, NULL, NULL, g_free);
++ 
++-  pw_remote_add_listener (remote->remote,
++-                          &remote->remote_listener,
++-                          &remote_events,
++-                          remote);
++-
++-  if (pw_remote_connect (remote->remote) != 0)
++-    {
++-      pipewire_remote_destroy (remote);
++-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                   "Couldn't connect PipeWire remote");
++-      return NULL;
++-    }
++-
++-  pw_main_loop_run (remote->loop);
++-
++-  switch (pw_remote_get_state (remote->remote, NULL))
++-    {
++-    case PW_REMOTE_STATE_ERROR:
++-    case PW_REMOTE_STATE_UNCONNECTED:
++-      *error = g_steal_pointer (&remote->error);
++-      pipewire_remote_destroy (remote);
++-      return NULL;
++-    case PW_REMOTE_STATE_CONNECTING:
++-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                   "PipeWire loop stopped unexpectedly");
++-      pipewire_remote_destroy (remote);
++-      return NULL;
++-    case PW_REMOTE_STATE_CONNECTED:
++-      break;
++-    default:
++-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
++-                   "Unexpected PipeWire state");
++-      pipewire_remote_destroy (remote);
++-      return NULL;
++-    }
++-
++-  remote->core_proxy = pw_remote_get_core_proxy (remote->remote);
++-  pw_core_proxy_add_listener (remote->core_proxy,
++-                              &remote->core_listener,
++-                              &core_events,
++-                              remote);
+++  pw_core_add_listener (remote->core,
+++                        &remote->core_listener,
+++                        &core_events,
+++                        remote);
++ 
++   if (!discover_node_factory_sync (remote, error))
++     {
++diff --git a/src/pipewire.h b/src/pipewire.h
++index 0f1bf54..bf48d5e 100644
++--- a/src/pipewire.h
+++++ b/src/pipewire.h
++@@ -32,7 +32,7 @@ typedef struct _PipeWireGlobal
++ 
++ typedef void (* PipeWireGlobalAddedCallback) (PipeWireRemote *remote,
++                                               uint32_t id,
++-                                              uint32_t type,
+++                                              const char *type,
++                                               const struct spa_dict *props,
++                                               gpointer user_data);
++ 
++@@ -43,13 +43,11 @@ typedef void (* PipeWireGlobalRemovedCallback) (PipeWireRemote *remote,
++ struct _PipeWireRemote
++ {
++   struct pw_main_loop *loop;
+++  struct pw_context *context;
++   struct pw_core *core;
++-  struct pw_remote *remote;
++-  struct spa_hook remote_listener;
++-
++-  struct pw_core_proxy *core_proxy;
++   struct spa_hook core_listener;
++-  uint32_t sync_seq;
+++
+++  int sync_seq;
++ 
++   struct spa_hook registry_listener;
++ 
++diff --git a/src/screen-cast.c b/src/screen-cast.c
++index 7881ddc..1677050 100644
++--- a/src/screen-cast.c
+++++ b/src/screen-cast.c
++@@ -31,10 +31,10 @@
++ #include "xdp-impl-dbus.h"
++ #include "xdp-utils.h"
++ 
++-#define PERMISSION_ITEM(item_key, item_value) \
++-  ((struct spa_dict_item) { \
++-    .key = item_key, \
++-    .value = item_value \
+++#define PERMISSION_ITEM(item_id, item_permissions) \
+++  ((struct pw_permission) { \
+++    .id = item_id, \
+++    .permissions = item_permissions \
++   })
++ 
++ typedef struct _ScreenCast ScreenCast;
++@@ -517,42 +517,9 @@ screen_cast_stream_get_pipewire_node_id (ScreenCastStream *stream)
++   return stream->id;
++ }
++ 
++-static void
++-append_parent_permissions (PipeWireRemote *remote,
++-                           GArray *permission_items,
++-                           GList **string_stash,
++-                           PipeWireGlobal *global,
++-                           const char *permission)
++-{
++-  PipeWireGlobal *parent;
++-  char *parent_permission_value;
++-
++-  if (global->parent_id == 0)
++-    return;
++-
++-  parent = g_hash_table_lookup (remote->globals, GINT_TO_POINTER (global->parent_id));
++-
++-  if (parent->permission_set)
++-    return;
++-  parent->permission_set = TRUE;
++-
++-  append_parent_permissions (remote, permission_items, string_stash,
++-                             parent, permission);
++-
++-  parent_permission_value = g_strdup_printf ("%u:%s",
++-                                             global->parent_id,
++-                                             permission);
++-  *string_stash = g_list_prepend (*string_stash, parent_permission_value);
++-
++-  g_array_append_val (permission_items,
++-                      PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_GLOBAL,
++-                                       parent_permission_value));
++-}
++-
++ static void
++ append_stream_permissions (PipeWireRemote *remote,
++                            GArray *permission_items,
++-                           GList **string_stash,
++                            GList *streams)
++ {
++   GList *l;
++@@ -561,21 +528,10 @@ append_stream_permissions (PipeWireRemote *remote,
++     {
++       ScreenCastStream *stream = l->data;
++       uint32_t stream_id;
++-      PipeWireGlobal *stream_global;
++-      char *stream_permission_value;
++ 
++       stream_id = screen_cast_stream_get_pipewire_node_id (stream);
++-      stream_global = g_hash_table_lookup (remote->globals,
++-                                           GINT_TO_POINTER (stream_id));
++-
++-      append_parent_permissions (remote, permission_items, string_stash,
++-                                 stream_global, "r--");
++-
++-      stream_permission_value = g_strdup_printf ("%u:rwx", stream_id);
++-      *string_stash = g_list_prepend (*string_stash, stream_permission_value);
++       g_array_append_val (permission_items,
++-                          PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_GLOBAL,
++-                                           stream_permission_value));
+++                          PERMISSION_ITEM (stream_id, PW_PERM_RWX));
++     }
++ }
++ 
++@@ -587,9 +543,6 @@ open_pipewire_screen_cast_remote (const char *app_id,
++   struct pw_properties *pipewire_properties;
++   PipeWireRemote *remote;
++   g_autoptr(GArray) permission_items = NULL;
++-  char *node_factory_permission_string;
++-  GList *string_stash = NULL;
++-  struct spa_dict *permission_dict;
++   PipeWireGlobal *node_global;
++ 
++   pipewire_properties = pw_properties_new ("pipewire.access.portal.app_id", app_id,
++@@ -603,48 +556,31 @@ open_pipewire_screen_cast_remote (const char *app_id,
++ 
++   permission_items = g_array_new (FALSE, TRUE, sizeof (struct spa_dict_item));
++ 
++-  /*
++-   * Hide all existing and future nodes (except the ones we explicitly list below.
++-   */
++-  g_array_append_val (permission_items,
++-                      PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_EXISTING,
++-                                       "---"));
++-  g_array_append_val (permission_items,
++-                      PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_DEFAULT,
++-                                       "---"));
++-
++   /*
++    * PipeWire:Interface:Core
++    * Needs rwx to be able create the sink node using the create-object method
++    */
++   g_array_append_val (permission_items,
++-                      PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_GLOBAL,
++-                                       "0:rwx"));
+++                      PERMISSION_ITEM (PW_ID_CORE, PW_PERM_RWX));
++ 
++   /*
++    * PipeWire:Interface:NodeFactory
++    * Needs r-- so it can be passed to create-object when creating the sink node.
++    */
++-  node_factory_permission_string = g_strdup_printf ("%d:r--",
++-                                                    remote->node_factory_id);
++-  string_stash = g_list_prepend (string_stash, node_factory_permission_string);
++   g_array_append_val (permission_items,
++-                      PERMISSION_ITEM (PW_CORE_PROXY_PERMISSIONS_GLOBAL,
++-                                       node_factory_permission_string));
++-  node_global = g_hash_table_lookup (remote->globals,
++-                                     GINT_TO_POINTER (remote->node_factory_id));
++-  append_parent_permissions (remote, permission_items, &string_stash,
++-                             node_global, "r--");
+++                      PERMISSION_ITEM (remote->node_factory_id, PW_PERM_R));
++ 
++-  append_stream_permissions (remote, permission_items, &string_stash, streams);
+++  append_stream_permissions (remote, permission_items, streams);
++ 
++-  permission_dict =
++-    &SPA_DICT_INIT ((struct spa_dict_item *) permission_items->data,
++-                    permission_items->len);
++-  pw_core_proxy_permissions (pw_remote_get_core_proxy (remote->remote),
++-                             permission_dict);
+++  /*
+++   * Hide all existing and future nodes (except the ones we explicitly list above).
+++   */
+++  g_array_append_val (permission_items,
+++                      PERMISSION_ITEM (PW_ID_ANY, 0));
++ 
++-  g_list_free_full (string_stash, g_free);
+++  pw_client_update_permissions (pw_core_get_client(remote->core),
+++                                permission_items->len,
+++                                (const struct pw_permission *)permission_items->data);
++ 
++   pipewire_remote_roundtrip (remote);
++ 
++@@ -943,7 +879,7 @@ handle_open_pipewire_remote (XdpScreenCast *object,
++     }
++ 
++   out_fd_list = g_unix_fd_list_new ();
++-  fd = pw_remote_steal_fd (remote->remote);
+++  fd = pw_core_steal_fd (remote->core);
++   fd_id = g_unix_fd_list_append (out_fd_list, fd, &error);
++   close (fd);
++   pipewire_remote_destroy (remote);
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch b/Tools/buildstream/patches/fdo/0002-ffmpeg-Add-VP6-and-Sorenson-Spark-video-codecs.patch
new file mode 100644 (file)
index 0000000..5498c40
--- /dev/null
@@ -0,0 +1,26 @@
+From a54e8f158f74894f4ec7dd6935a08d72b73935fb Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 20 Dec 2019 10:39:26 +0100
+Subject: [PATCH 2/5] ffmpeg: Add VP6 and Sorenson Spark video codecs
+
+As used in FLV Flash videos.
+---
+ elements/extensions/ffmpeg-full/ffmpeg.bst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/elements/extensions/ffmpeg-full/ffmpeg.bst b/elements/extensions/ffmpeg-full/ffmpeg.bst
+index 85788ed2..30016a9e 100644
+--- a/elements/extensions/ffmpeg-full/ffmpeg.bst
++++ b/elements/extensions/ffmpeg-full/ffmpeg.bst
+@@ -8,7 +8,7 @@ variables:
+   extra-aud-enc: wmav1,wmav2
+   extra-aud-dec: ape,dca,eac3,mlp,tak,truehd,wmav1,wmav2,wmapro
+   extra-vid-enc: h263,h264,wmv1,wmv2
+-  extra-vid-dec: hevc,h263,h264,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,wmv1,wmv2,wmv3,wmv3image
++  extra-vid-dec: flv,hevc,h263,h264,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
+   extra-hwaccels: h264_vaapi,h264_vdpau,hevc_vaapi,hevc_vdpau
+   extra-parsers: hevc,h264,dca
+   extra-demuxers: avi,h264,m4v
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0003-Add-Bluez.patch b/Tools/buildstream/patches/fdo/0003-Add-Bluez.patch
new file mode 100644 (file)
index 0000000..090cee1
--- /dev/null
@@ -0,0 +1,85 @@
+From 59b898e02f7c3e2c223b859848b94e26c8b0ff80 Mon Sep 17 00:00:00 2001
+From: Valentin David <valentin.david@codethink.co.uk>
+Date: Mon, 3 Feb 2020 14:37:18 +0100
+Subject: [PATCH 3/4] Add Bluez
+
+This is a build dependency for PipeWire. PipeWire requires a bit more
+than what
+`components/bluez-headers.bst`. `components/bluez-headers.bst` remains
+in order to avoid a circular dependency with `components/python3.bst`.
+---
+ elements/components/bluez-headers.bst | 11 ++++++-----
+ elements/components/bluez.bst         | 24 ++++++++++++++++++++++++
+ elements/include/bluez.yml            |  5 +++++
+ 3 files changed, 35 insertions(+), 5 deletions(-)
+ create mode 100644 elements/components/bluez.bst
+ create mode 100644 elements/include/bluez.yml
+
+diff --git a/elements/components/bluez-headers.bst b/elements/components/bluez-headers.bst
+index 331e6216..5ac38b13 100644
+--- a/elements/components/bluez-headers.bst
++++ b/elements/components/bluez-headers.bst
+@@ -1,4 +1,8 @@
+ kind: manual
++description: |
++  This element provides just the headers required to build
++  Python. Because Bluez depends on Python, we cannot build Python without
++  this element. Full elements is `components/bluez.bst`.
+ build-depends:
+ - bootstrap-import.bst
+@@ -8,8 +12,5 @@ config:
+   - |
+     install -D -m644 -t "%{install-root}%{includedir}/bluetooth" lib/*.h
+-sources:
+-- kind: git_tag
+-  url: kernel:bluetooth/bluez.git
+-  track: master
+-  ref: 5.51-0-g6de4bdb957cdc85d89851420ab06ca8e226f8d4e
++(@): elements/include/bluez.yml
++
+diff --git a/elements/components/bluez.bst b/elements/components/bluez.bst
+new file mode 100644
+index 00000000..55ec909b
+--- /dev/null
++++ b/elements/components/bluez.bst
+@@ -0,0 +1,24 @@
++kind: autotools
++
++depends:
++- bootstrap-import.bst
++- components/glib.bst
++- components/dbus.bst
++- components/libical.bst
++
++build-depends:
++- public-stacks/buildsystem-autotools.bst
++- components/systemd.bst
++
++variables:
++  conf-local: >-
++    --enable-library
++
++public:
++  bst:
++    split-rules:
++      devel:
++        (>):
++        - '%{libdir}/libbluetooth.so'
++
++(@): elements/include/bluez.yml
+diff --git a/elements/include/bluez.yml b/elements/include/bluez.yml
+new file mode 100644
+index 00000000..1efd068d
+--- /dev/null
++++ b/elements/include/bluez.yml
+@@ -0,0 +1,5 @@
++sources:
++- kind: git_tag
++  url: kernel:bluetooth/bluez.git
++  track: master
++  ref: 5.52-0-ge002fd43636090ac246f80f5de6195055384dfed
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch b/Tools/buildstream/patches/fdo/0003-ffmpeg-Add-Intel-Indeo-and-Cinepak-video-support.patch
new file mode 100644 (file)
index 0000000..006ae91
--- /dev/null
@@ -0,0 +1,26 @@
+From f784ef4dc80cc8abfabab9ee5abe8c220c289fd0 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 20 Dec 2019 10:40:27 +0100
+Subject: [PATCH 3/5] ffmpeg: Add Intel Indeo and Cinepak video support
+
+As used in older commercial videos.
+---
+ elements/extensions/ffmpeg-full/ffmpeg.bst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/elements/extensions/ffmpeg-full/ffmpeg.bst b/elements/extensions/ffmpeg-full/ffmpeg.bst
+index 30016a9e..61c8cacb 100644
+--- a/elements/extensions/ffmpeg-full/ffmpeg.bst
++++ b/elements/extensions/ffmpeg-full/ffmpeg.bst
+@@ -8,7 +8,7 @@ variables:
+   extra-aud-enc: wmav1,wmav2
+   extra-aud-dec: ape,dca,eac3,mlp,tak,truehd,wmav1,wmav2,wmapro
+   extra-vid-enc: h263,h264,wmv1,wmv2
+-  extra-vid-dec: flv,hevc,h263,h264,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
++  extra-vid-dec: cinepak,flv,hevc,h263,h264,indeo2,indeo3,indeo4,indeo5,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
+   extra-hwaccels: h264_vaapi,h264_vdpau,hevc_vaapi,hevc_vdpau
+   extra-parsers: hevc,h264,dca
+   extra-demuxers: avi,h264,m4v
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch b/Tools/buildstream/patches/fdo/0004-ffmpeg-Add-MPEG-2-video-decoder.patch
new file mode 100644 (file)
index 0000000..9a9cefd
--- /dev/null
@@ -0,0 +1,29 @@
+From 329c2f6b2075713fe7dd2c626175745b9209ad0b Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 20 Dec 2019 10:54:42 +0100
+Subject: [PATCH 4/5] ffmpeg: Add MPEG-2 video decoder
+
+As should be used for DVD playback, rather than the older libmpeg2-based
+one fro gst-plugins-ugly.
+
+This video decoder also supports MPEG-1 video playback.
+---
+ elements/extensions/ffmpeg-full/ffmpeg.bst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/elements/extensions/ffmpeg-full/ffmpeg.bst b/elements/extensions/ffmpeg-full/ffmpeg.bst
+index 61c8cacb..bd1275f0 100644
+--- a/elements/extensions/ffmpeg-full/ffmpeg.bst
++++ b/elements/extensions/ffmpeg-full/ffmpeg.bst
+@@ -8,7 +8,7 @@ variables:
+   extra-aud-enc: wmav1,wmav2
+   extra-aud-dec: ape,dca,eac3,mlp,tak,truehd,wmav1,wmav2,wmapro
+   extra-vid-enc: h263,h264,wmv1,wmv2
+-  extra-vid-dec: cinepak,flv,hevc,h263,h264,indeo2,indeo3,indeo4,indeo5,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
++  extra-vid-dec: cinepak,flv,hevc,h263,h264,indeo2,indeo3,indeo4,indeo5,mpeg2video,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
+   extra-hwaccels: h264_vaapi,h264_vdpau,hevc_vaapi,hevc_vdpau
+   extra-parsers: hevc,h264,dca
+   extra-demuxers: avi,h264,m4v
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch b/Tools/buildstream/patches/fdo/0005-ffmpeg-Add-msmpeg4v3-support.patch
new file mode 100644 (file)
index 0000000..2eae111
--- /dev/null
@@ -0,0 +1,25 @@
+From 438145071e4370cc4a767ff37b28c82613c2f6cc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Javier=20Jard=C3=B3n?= <jjardon@gnome.org>
+Date: Sun, 5 Apr 2020 15:05:58 +0100
+Subject: [PATCH 5/5] ffmpeg: Add msmpeg4v3 support
+
+---
+ elements/extensions/ffmpeg-full/ffmpeg.bst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/elements/extensions/ffmpeg-full/ffmpeg.bst b/elements/extensions/ffmpeg-full/ffmpeg.bst
+index bd1275f0..0d61311e 100644
+--- a/elements/extensions/ffmpeg-full/ffmpeg.bst
++++ b/elements/extensions/ffmpeg-full/ffmpeg.bst
+@@ -8,7 +8,7 @@ variables:
+   extra-aud-enc: wmav1,wmav2
+   extra-aud-dec: ape,dca,eac3,mlp,tak,truehd,wmav1,wmav2,wmapro
+   extra-vid-enc: h263,h264,wmv1,wmv2
+-  extra-vid-dec: cinepak,flv,hevc,h263,h264,indeo2,indeo3,indeo4,indeo5,mpeg2video,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
++  extra-vid-dec: cinepak,flv,hevc,h263,h264,indeo2,indeo3,indeo4,indeo5,mpeg2video,mpeg4,msmpeg4,msmpeg4v1,msmpeg4v2,msmpeg4v3,vp6,vp6a,vp6f,wmv1,wmv2,wmv3,wmv3image
+   extra-hwaccels: h264_vaapi,h264_vdpau,hevc_vaapi,hevc_vdpau
+   extra-parsers: hevc,h264,dca
+   extra-demuxers: avi,h264,m4v
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch b/Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch
new file mode 100644 (file)
index 0000000..878c629
--- /dev/null
@@ -0,0 +1,30 @@
+From 2c371f17af1695bd42f572d5ccdb837152b8b67a Mon Sep 17 00:00:00 2001
+From: Thomas Coldrick <othko97@gmail.com>
+Date: Thu, 8 Nov 2018 17:46:53 +0000
+Subject: [PATCH] gst-libav-stop-caching-codecs
+
+---
+ ext/libav/gstav.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/ext/libav/gstav.c b/ext/libav/gstav.c
+index 2a88230..bfd19a1 100644
+--- a/ext/libav/gstav.c
++++ b/ext/libav/gstav.c
+@@ -155,6 +155,13 @@ plugin_init (GstPlugin * plugin)
+   /* build global ffmpeg param/property info */
+   gst_ffmpeg_cfg_init ();
++  gst_plugin_add_dependency_simple (plugin, NULL,
++      "/app/lib/" TRIPLET "/ffmpeg:/app/lib/ffmpeg:/usr/lib/" TRIPLET ":/usr/local/lib:/usr/lib/" TRIPLET "/ffmpeg",
++      "libavcodec.so.58,"
++      "libavformat.so.58,"
++      "libswscale.so.5",
++      GST_PLUGIN_DEPENDENCY_FLAG_NONE);
++
+   gst_ffmpegaudenc_register (plugin);
+   gst_ffmpegvidenc_register (plugin);
+   gst_ffmpegauddec_register (plugin);
+-- 
+2.19.1
+
diff --git a/Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch b/Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch
new file mode 100644 (file)
index 0000000..1b3b3ee
--- /dev/null
@@ -0,0 +1,25 @@
+From 475628c20e548a18c55e6bd8e9c3e3a73cf7192d Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Fri, 31 May 2019 10:12:54 -0400
+Subject: [PATCH] h264parse: Post a WARNING when data is broken
+
+---
+ gst/videoparsers/gsth264parse.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
+index 41a31eafa..fa64671de 100644
+--- a/gst/videoparsers/gsth264parse.c
++++ b/gst/videoparsers/gsth264parse.c
+@@ -1313,6 +1313,8 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
+         /* broken nal at start -> arrange to skip it,
+          * otherwise have it terminate current au
+          * (and so it will be skipped on next frame round) */
++        GST_ELEMENT_WARNING (h264parse, STREAM, DECODE,
++            (NULL), ("Broken bit stream"));
+         if (current_off == 0) {
+           GST_DEBUG_OBJECT (h264parse, "skipping broken nal");
+           *skipsize = nalu.offset;
+-- 
+2.21.0
+
diff --git a/Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch b/Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch
new file mode 100644 (file)
index 0000000..3d8d002
--- /dev/null
@@ -0,0 +1,175 @@
+From 6ceaf111870b31bff922ea35fe943d853e44afa3 Mon Sep 17 00:00:00 2001
+From: Chris Lord <clord@igalia.com>
+Date: Mon, 9 Mar 2020 10:21:53 +0000
+Subject: [PATCH 1/2] glupload: Fix fallback from direct dmabuf to dmabuf
+ upload method
+
+In the situation that the direct dmabuf path is chosen, but with an
+unsupported texture format, this causes accept to fail rather than
+continue and fail at the upload stage. It is also possibly necessary to
+reconfigure after falling back from direct to non-direct dmabuf upload
+paths.
+---
+ gst-libs/gst/gl/egl/gsteglimage.c         | 29 ++++++++++++++-----
+ gst-libs/gst/gl/egl/gsteglimage_private.h | 35 +++++++++++++++++++++++
+ gst-libs/gst/gl/gstglupload.c             | 17 +++++++++--
+ 3 files changed, 72 insertions(+), 9 deletions(-)
+ create mode 100644 gst-libs/gst/gl/egl/gsteglimage_private.h
+
+diff --git a/gst-libs/gst/gl/egl/gsteglimage.c b/gst-libs/gst/gl/egl/gsteglimage.c
+index 85fbefa6e..13e204dcd 100644
+--- a/gst-libs/gst/gl/egl/gsteglimage.c
++++ b/gst-libs/gst/gl/egl/gsteglimage.c
+@@ -39,6 +39,7 @@
+ #endif
+ #include "gsteglimage.h"
++#include "gsteglimage_private.h"
+ #include <string.h>
+@@ -673,8 +674,20 @@ _drm_direct_fourcc_from_info (GstVideoInfo * info)
+   }
+ }
+-static gboolean
+-_gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
++/*
++ * gst_egl_image_check_dmabuf_direct:
++ * @context: a #GstGLContext (must be an EGL context)
++ * @in_info: a #GstVideoInfo
++ * @target: a #GstGLTextureTarget
++ *
++ * Checks whether the video format specified by the given #GstVideoInfo is a
++ * supported texture format for the given target.
++ *
++ * Returns: %TRUE if the format is supported.
++ */
++gboolean
++gst_egl_image_check_dmabuf_direct (GstGLContext * context,
++    GstVideoInfo * in_info)
+ {
+   EGLDisplay egl_display = EGL_DEFAULT_DISPLAY;
+   GstGLDisplayEGL *display_egl;
+@@ -684,6 +697,7 @@ _gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
+   EGLBoolean *external_only;
+   int num_modifiers;
+   gboolean ret;
++  int fourcc;
+   int i;
+   EGLBoolean (*gst_eglQueryDmaBufFormatsEXT) (EGLDisplay dpy,
+@@ -692,6 +706,10 @@ _gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
+       int format, int max_modifiers, EGLuint64KHR * modifiers,
+       EGLBoolean * external_only, int *num_modifiers);
++  fourcc = _drm_direct_fourcc_from_info (in_info);
++  if (fourcc == -1)
++    return FALSE;
++
+   gst_eglQueryDmaBufFormatsEXT =
+       gst_gl_context_get_proc_address (context, "eglQueryDmaBufFormatsEXT");
+   gst_eglQueryDmaBufModifiersEXT =
+@@ -812,13 +830,10 @@ gst_egl_image_from_dmabuf_direct (GstGLContext * context,
+   guintptr attribs[41];         /* 6 + 10 * 3 + 4 + 1 */
+   gint atti = 0;
+-  fourcc = _drm_direct_fourcc_from_info (in_info);
+-  if (fourcc == -1)
+-    return NULL;
+-
+-  if (!_gst_egl_image_check_dmabuf_direct (context, fourcc))
++  if (!gst_egl_image_check_dmabuf_direct (context, in_info))
+     return NULL;
++  fourcc = _drm_direct_fourcc_from_info (in_info);
+   with_modifiers = gst_gl_context_check_feature (context,
+       "EGL_EXT_image_dma_buf_import_with_modifiers");
+diff --git a/gst-libs/gst/gl/egl/gsteglimage_private.h b/gst-libs/gst/gl/egl/gsteglimage_private.h
+new file mode 100644
+index 000000000..8326bdd05
+--- /dev/null
++++ b/gst-libs/gst/gl/egl/gsteglimage_private.h
+@@ -0,0 +1,35 @@
++/*
++ * GStreamer
++ * Copyright (C) 2020 Igalia S.L.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library 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
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
++ * Boston, MA 02110-1301, USA.
++ */
++
++#ifndef _GST_EGL_IMAGE_PRIVATE_H_
++#define _GST_EGL_IMAGE_PRIVATE_H_
++
++#include <gst/gl/gstgl_fwd.h>
++#include <gst/gl/gstglformat.h>
++
++G_BEGIN_DECLS
++
++G_GNUC_INTERNAL
++gboolean                gst_egl_image_check_dmabuf_direct       (GstGLContext * context,
++                                                                 GstVideoInfo * in_info);
++
++G_END_DECLS
++
++#endif /* _GST_EGL_IMAGE_PRIVATE_H_ */
+diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
+index e3e02ebb7..7d19f683a 100644
+--- a/gst-libs/gst/gl/gstglupload.c
++++ b/gst-libs/gst/gl/gstglupload.c
+@@ -30,6 +30,7 @@
+ #if GST_GL_HAVE_PLATFORM_EGL
+ #include "egl/gsteglimage.h"
++#include "egl/gsteglimage_private.h"
+ #include "egl/gstglmemoryegl.h"
+ #include "egl/gstglcontext_egl.h"
+ #endif
+@@ -691,9 +692,12 @@ _dma_buf_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
+     fd[i] = gst_dmabuf_memory_get_fd (mems[i]);
+   }
+-  if (dmabuf->direct)
++  if (dmabuf->direct) {
++    /* Check if this format is supported by the driver */
+     dmabuf->n_mem = 1;
+-  else
++    if (!gst_egl_image_check_dmabuf_direct (dmabuf->upload->context, in_info))
++      return FALSE;
++  } else
+     dmabuf->n_mem = n_planes;
+   /* Now create an EGLImage for each dmabufs */
+@@ -755,6 +759,15 @@ _dma_buf_upload_perform (gpointer impl, GstBuffer * buffer, GstBuffer ** outbuf)
+ {
+   struct DmabufUpload *dmabuf = impl;
++  /* The direct path sets sinkpad caps to RGBA but this may be incorrect for
++   * the non-direct path, if that path fails to accept. In that case, we need
++   * to reconfigure.
++   */
++  if (!dmabuf->direct &&
++      GST_VIDEO_INFO_FORMAT (&dmabuf->upload->priv->in_info) !=
++      GST_VIDEO_INFO_FORMAT (&dmabuf->out_info))
++    return GST_GL_UPLOAD_RECONFIGURE;
++
+   gst_gl_context_thread_add (dmabuf->upload->context,
+       (GstGLContextThreadFunc) _dma_buf_upload_perform_gl_thread, dmabuf);
+-- 
+2.25.1
+
diff --git a/Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch b/Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch
new file mode 100644 (file)
index 0000000..cb2506d
--- /dev/null
@@ -0,0 +1,100 @@
+From 6e503b6e34000a18a49d2966df2c01c2ef14bd5c Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Tue, 3 Sep 2019 16:03:49 -0400
+Subject: [PATCH] playbin: Handle error message with redirection indication
+
+There are in the wild (mp4) streams that basically contain no tracks
+but do have a redirect info[0], in which case, qtdemux won't be able
+to expose any pad (there are no tracks) so can't post anything but
+an error on the bus, as:
+  - it can't send EOS downstream, it has no pad,
+  - posting an EOS message will be useless as PAUSED state can't be
+    reached and there is no sink in the pipeline meaning GstBin will
+    simply ignore it
+
+In that case, currently the application could try to handle that but it
+is pretty complex as it will get the REDIRECT message on the bus at
+which point it could set the URL but playbin will ignore it, as
+it will only be for the next EOS, it thus need to set the pipeline to
+NULL (READY won't do as it is already in READY at that point). And it
+needs to figure out the following ERROR message on the bus needs to be
+ignored, which is not really simple.
+
+The approach here is to allow element to add details to the ERROR
+message with a `redirect-location` field which elements like playbin handle
+and use right away.
+
+We could also use the element 'redirect' message in playbin, but the
+issue with that approach is that the element will still emit the ERROR
+message on the bus, leading to wrong behaviour. That can't be avoided
+since in the case the app/parent pipeline is not handling the redirect
+instruction, the ERROR message is necessary (and there is no way to
+detect that the message has been "handled" from the element emitting the
+redirect).
+
+[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
+---
+ gst/playback/gstplaybin2.c | 40 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
+index c8bfd388e..6997a957c 100644
+--- a/gst/playback/gstplaybin2.c
++++ b/gst/playback/gstplaybin2.c
+@@ -170,6 +170,10 @@
+  * type. The new location may be a relative or an absolute URI. Examples
+  * for such redirects can be found in many quicktime movie trailers.
+  *
++ * NOTE: playbin will internally handle the redirect messages in the case
++ * that the redirecting stream doesn't contain any tracks and thus
++ * needs to report an error message on the bus.
++ *
+  * ## Examples
+  * |[
+  * gst-launch-1.0 -v playbin uri=file:///path/to/somefile.mp4
+@@ -3025,6 +3029,42 @@ gst_play_bin_handle_message (GstBin * bin, GstMessage * msg)
+           no_more_pads_cb (NULL, group);
+         }
+       }
++    } else {
++      const GstStructure *details = NULL;
++
++      gst_message_parse_error_details (msg, &details);
++      if (details && gst_structure_has_field (details, "redirect-location")) {
++        gchar *uri = NULL;
++        const gchar *location =
++            gst_structure_get_string ((GstStructure *) details,
++            "redirect-location");
++
++        if (gst_uri_is_valid (location)) {
++          uri = g_strdup (location);
++        } else {
++          uri = gst_uri_join_strings (group->uri, location);
++        }
++
++        if (g_strcmp0 (uri, group->uri)) {
++          GST_PLAY_BIN_LOCK (playbin);
++          if (playbin->next_group && playbin->next_group->valid) {
++            GST_DEBUG_OBJECT (playbin,
++                "User already setup next uri %s, using it",
++                playbin->next_group->uri);
++          } else {
++            GST_DEBUG_OBJECT (playbin,
++                "Using newly configured redirect URI: %s", uri);
++            gst_play_bin_set_uri (playbin, uri);
++          }
++          GST_PLAY_BIN_UNLOCK (playbin);
++
++          setup_next_source (playbin, GST_STATE_PAUSED);
++          gst_message_unref (msg);
++          msg = NULL;
++        }
++
++        g_free (uri);
++      }
+     }
+   }
+-- 
+2.21.0
+
diff --git a/Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch b/Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch
new file mode 100644 (file)
index 0000000..3583d5a
--- /dev/null
@@ -0,0 +1,53 @@
+From a91ab7908955aa57f4c9ca52765d7cbe1cf5e71f Mon Sep 17 00:00:00 2001
+From: Haihao Xiang <haihao.xiang@intel.com>
+Date: Thu, 26 Mar 2020 13:46:56 +0800
+Subject: [PATCH 2/2] glupload: fix segfault
+
+Without this fix, it is possible that outbuf is not initialized, which
+will result in segfault when call gst_buffer_replace (&outbuf, NULL). In
+addition, the patch fixes potential memory leak in restart path.
+
+The segfault can be reproduced by the pipeline below:
+
+GST_GL_PLATFORM=egl \
+gst-launch-1.0 videotestsrc ! msdkh265enc ! msdkh265dec ! \
+'video/x-raw(memory:DMABuf)' ! glimagesink
+
+https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/619
+---
+ gst-libs/gst/gl/gstglupload.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
+index 7d19f683a..2ef00a49b 100644
+--- a/gst-libs/gst/gl/gstglupload.c
++++ b/gst-libs/gst/gl/gstglupload.c
+@@ -1975,7 +1975,7 @@ gst_gl_upload_perform_with_buffer (GstGLUpload * upload, GstBuffer * buffer,
+     GstBuffer ** outbuf_ptr)
+ {
+   GstGLUploadReturn ret = GST_GL_UPLOAD_ERROR;
+-  GstBuffer *outbuf;
++  GstBuffer *outbuf = NULL;
+   gpointer last_impl = upload->priv->method_impl;
+   g_return_val_if_fail (GST_IS_GL_UPLOAD (upload), FALSE);
+@@ -2016,6 +2016,8 @@ restart:
+         break;
+       }
+     }
++
++    gst_buffer_replace (&outbuf, NULL);
+     goto restart;
+   } else if (ret == GST_GL_UPLOAD_DONE || ret == GST_GL_UPLOAD_RECONFIGURE) {
+     if (last_impl != upload->priv->method_impl) {
+@@ -2030,6 +2032,7 @@ restart:
+     /* we are done */
+   } else {
+     upload->priv->method_impl = NULL;
++    gst_buffer_replace (&outbuf, NULL);
+     NEXT_METHOD;
+   }
+-- 
+2.25.1
+
diff --git a/Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch b/Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch
new file mode 100644 (file)
index 0000000..e873a7e
--- /dev/null
@@ -0,0 +1,140 @@
+From a55576d1fd25c7d67661630fc94367908802a496 Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Tue, 3 Sep 2019 16:46:30 -0400
+Subject: [PATCH] qtdemux: Specify REDIRECT information in error message
+
+There are in the wild (mp4) streams that basically contain no tracks
+but do have a redirect info[0], in which case, we won't be able
+to expose any pad (there are no tracks) so we can't post anything but
+an error on the bus, as:
+
+- it can't send EOS downstream, it has no pad,
+- posting an EOS message will be useless as PAUSED state can't be
+  reached and there is no sink in the pipeline meaning GstBin will
+  simply ignore it
+
+The approach here is to to add details to the ERROR message with a
+`redirect-location` field which elements like playbin handle and use right
+away.
+
+[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
+---
+ gst/isomp4/qtdemux.c | 32 +++++++++++++++++++++++++-------
+ gst/isomp4/qtdemux.h |  2 +-
+ 2 files changed, 26 insertions(+), 8 deletions(-)
+
+diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
+index ba4d43648..8a6bf08c7 100644
+--- a/gst/isomp4/qtdemux.c
++++ b/gst/isomp4/qtdemux.c
+@@ -526,6 +526,7 @@ GST_STATIC_PAD_TEMPLATE ("subtitle_%u",
+ G_DEFINE_TYPE (GstQTDemux, gst_qtdemux, GST_TYPE_ELEMENT);
+ static void gst_qtdemux_dispose (GObject * object);
++static void gst_qtdemux_finalize (GObject * object);
+ static guint32
+ gst_qtdemux_find_index_linear (GstQTDemux * qtdemux, QtDemuxStream * str,
+@@ -628,6 +629,7 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass)
+   parent_class = g_type_class_peek_parent (klass);
+   gobject_class->dispose = gst_qtdemux_dispose;
++  gobject_class->finalize = gst_qtdemux_finalize;
+   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_qtdemux_change_state);
+ #if 0
+@@ -683,6 +685,16 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
+   gst_qtdemux_reset (qtdemux, TRUE);
+ }
++static void
++gst_qtdemux_finalize (GObject * object)
++{
++  GstQTDemux *qtdemux = GST_QTDEMUX (object);
++
++  g_free (qtdemux->redirect_location);
++
++  G_OBJECT_CLASS (parent_class)->finalize (object);
++}
++
+ static void
+ gst_qtdemux_dispose (GObject * object)
+ {
+@@ -711,10 +723,11 @@ gst_qtdemux_dispose (GObject * object)
+ static void
+ gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux)
+ {
+-  if (qtdemux->posted_redirect) {
+-    GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
++  if (qtdemux->redirect_location) {
++    GST_ELEMENT_ERROR_WITH_DETAILS (qtdemux, STREAM, DEMUX,
+         (_("This file contains no playable streams.")),
+-        ("no known streams found, a redirect message has been posted"));
++        ("no known streams found, a redirect message has been posted"),
++        ("redirect-location", G_TYPE_STRING, qtdemux->redirect_location, NULL));
+   } else {
+     GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
+         (_("This file contains no playable streams.")),
+@@ -2111,7 +2124,7 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
+     qtdemux->neededbytes = 16;
+     qtdemux->todrop = 0;
+     qtdemux->pullbased = FALSE;
+-    qtdemux->posted_redirect = FALSE;
++    g_clear_pointer (&qtdemux->redirect_location, g_free);
+     qtdemux->first_mdat = -1;
+     qtdemux->header_size = 0;
+     qtdemux->mdatoffset = -1;
+@@ -6065,11 +6078,12 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux,
+     gst_buffer_unmap (buf, &map);
+     if (url != NULL && strlen (url) != 0) {
+       /* we have RTSP redirect now */
++      g_free (qtdemux->redirect_location);
++      qtdemux->redirect_location = g_strdup (url);
+       gst_element_post_message (GST_ELEMENT_CAST (qtdemux),
+           gst_message_new_element (GST_OBJECT_CAST (qtdemux),
+               gst_structure_new ("redirect",
+                   "new-location", G_TYPE_STRING, url, NULL)));
+-      qtdemux->posted_redirect = TRUE;
+     } else {
+       GST_WARNING_OBJECT (qtdemux, "Redirect URI of stream is empty, not "
+           "posting");
+@@ -12915,7 +12929,9 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
+             "new-location", G_TYPE_STRING,
+             QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri, NULL));
+     gst_element_post_message (GST_ELEMENT_CAST (qtdemux), m);
+-    qtdemux->posted_redirect = TRUE;
++    g_free (qtdemux->redirect_location);
++    qtdemux->redirect_location =
++        g_strdup (QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri);
+   }
+   g_ptr_array_foreach (qtdemux->active_streams,
+@@ -13968,9 +13984,11 @@ qtdemux_process_redirects (GstQTDemux * qtdemux, GList * references)
+   g_list_free (references);
+   GST_INFO_OBJECT (qtdemux, "posting redirect message: %" GST_PTR_FORMAT, s);
++  g_free (qtdemux->redirect_location);
++  qtdemux->redirect_location =
++      g_strdup (gst_structure_get_string (s, "new-location"));
+   msg = gst_message_new_element (GST_OBJECT_CAST (qtdemux), s);
+   gst_element_post_message (GST_ELEMENT_CAST (qtdemux), msg);
+-  qtdemux->posted_redirect = TRUE;
+ }
+ /* look for redirect nodes, collect all redirect information and
+diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
+index f9731b2b8..c5e85c721 100644
+--- a/gst/isomp4/qtdemux.h
++++ b/gst/isomp4/qtdemux.h
+@@ -69,7 +69,7 @@ struct _GstQTDemux {
+   /* TRUE if pull-based */
+   gboolean pullbased;
+-  gboolean posted_redirect;
++  gchar *redirect_location;
+   /* Protect pad exposing from flush event */
+   GMutex expose_lock;
+-- 
+2.21.0
+
diff --git a/Tools/buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch b/Tools/buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch
new file mode 100644 (file)
index 0000000..50817d0
--- /dev/null
@@ -0,0 +1,24 @@
+From c010a95d8c9aeda827d78884f93f152706ea6232 Mon Sep 17 00:00:00 2001
+From: Philippe Normand <philn@igalia.com>
+Date: Fri, 3 Apr 2020 10:52:29 +0100
+Subject: [PATCH] meson: Bump to latest version of the 3.24 branch
+
+3.24.16 was tagged without bumping the version in the Meson build definitions.
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 0c31ca0f30..a7acd96ce7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,5 +1,5 @@
+ project('gtk+-3.0', 'c',
+-        version: '3.24.14',
++        version: '3.24.16',
+         default_options: [
+           'buildtype=debugoptimized',
+           'warning_level=1'
+-- 
+2.25.1
+
diff --git a/Tools/buildstream/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch b/Tools/buildstream/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch
new file mode 100644 (file)
index 0000000..d36a694
--- /dev/null
@@ -0,0 +1,50 @@
+From b5ebe404f1388ddda3603e53277f87e0b96ba695 Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Mon, 11 Jun 2018 16:14:38 -0400
+Subject: [PATCH] configure: use pkg-config for PCRE detection
+
+---
+ configure.in | 27 +++++----------------------
+ 1 file changed, 5 insertions(+), 22 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 761e836..b155d4b 100644
+--- a/configure.in
++++ b/configure.in
+@@ -215,28 +215,11 @@ fi
+ AC_ARG_WITH(pcre,
+ APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library))
+-AC_PATH_PROG(PCRE_CONFIG, pcre-config, false)
+-if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then
+-   PCRE_CONFIG=$with_pcre/bin/pcre-config
+-elif test -x "$with_pcre"; then
+-   PCRE_CONFIG=$with_pcre
+-fi
+-
+-if test "$PCRE_CONFIG" != "false"; then
+-  if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
+-    AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
+-  fi
+-  case `$PCRE_CONFIG --version` in
+-  [[1-5].*])
+-    AC_MSG_ERROR([Need at least pcre version 6.0])
+-    ;;
+-  esac
+-  AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
+-  APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`])
+-  APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`])
+-else
+-  AC_MSG_ERROR([pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/])
+-fi
++PKG_CHECK_MODULES([PCRE], [libpcre], [
++  AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library])
++], [
++  AC_MSG_ERROR([$PCRE_PKG_ERRORS])
++])
+ APACHE_SUBST(PCRE_LIBS)
+ AC_MSG_NOTICE([])
+-- 
+2.17.1
+
diff --git a/Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch b/Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch
new file mode 100644 (file)
index 0000000..5a4a0a4
--- /dev/null
@@ -0,0 +1,42 @@
+From b7d450b11834d0a510fdcb661ce105860338e2d6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ntrrgc@gmail.com>
+Date: Thu, 19 Dec 2019 17:58:56 +0100
+Subject: [PATCH] gstavviddec: Limit default number of decoder threads
+
+When the `max-threads` property is not specified, GStreamer defaults to
+the amount of CPU threads in the system.
+
+The number of threads used in avdec has a direct impact on the latency
+of the decoder, which is of as many frames as threads. Therefore, big
+numbers of threads can make latency levels that can be problematic in
+some applications.
+
+For this reason, ffmpeg emits a warning when more than 16 threads are
+requested.
+
+This patch limits the default number of threads to 16. This affects only
+computers with more than 16 CPU threads when using avviddec without
+setting `max-threads`.
+
+Backport for 1.16.1.
+---
+ ext/libav/gstavviddec.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
+index 650de2d..edde934 100644
+--- a/ext/libav/gstavviddec.c
++++ b/ext/libav/gstavviddec.c
+@@ -494,7 +494,8 @@
+     if (ffmpegdec->max_threads == 0) {
+       if (!(oclass->in_plugin->capabilities & AV_CODEC_CAP_AUTO_THREADS))
+-        ffmpegdec->context->thread_count = gst_ffmpeg_auto_max_threads ();
++        ffmpegdec->context->thread_count =
++            MIN (gst_ffmpeg_auto_max_threads (), 16);
+       else
+         ffmpegdec->context->thread_count = 0;
+     } else
+-- 
+2.23.0
+
diff --git a/Tools/buildstream/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch b/Tools/buildstream/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch
new file mode 100644 (file)
index 0000000..c57727f
--- /dev/null
@@ -0,0 +1,110 @@
+From 9aff3f1b344fc8666b14c57629162c2b9007cad8 Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Fri, 29 Jun 2018 09:05:52 -0400
+Subject: [PATCH] Use pkg-config to detect gpg-error
+
+---
+ m4/gpg-error.m4 | 88 +++++++------------------------------------------
+ 1 file changed, 12 insertions(+), 76 deletions(-)
+
+diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4
+index 1661204c..5f9f33c2 100644
+--- a/m4/gpg-error.m4
++++ b/m4/gpg-error.m4
+@@ -41,81 +41,17 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
+   AC_ARG_WITH(gpg-error-prefix,,
+               [gpg_error_config_prefix="$withval"])
+-  if test x"${GPG_ERROR_CONFIG}" = x ; then
+-     if test x"${gpg_error_config_prefix}" != x ; then
+-        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
+-     else
+-       case "${SYSROOT}" in
+-         /*)
+-           if test -x "${SYSROOT}/bin/gpg-error-config" ; then
+-             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
+-           fi
+-           ;;
+-         '')
+-           ;;
+-          *)
+-           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
+-           ;;
+-       esac
+-     fi
+-  fi
++  PKG_CHECK_MODULES([GPG_ERROR], [gpg-error], [
++    AC_DEFINE([HAVE_GPG_ERROR], [1], [Define if you have gpg-error library])
+-  AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
+-  min_gpg_error_version=ifelse([$1], ,0.0,$1)
+-  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
+-  ok=no
+-  if test "$GPG_ERROR_CONFIG" != "no" \
+-     && test -f "$GPG_ERROR_CONFIG" ; then
+-    req_major=`echo $min_gpg_error_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+-    req_minor=`echo $min_gpg_error_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+-    gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
+-    major=`echo $gpg_error_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+-    minor=`echo $gpg_error_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+-    if test "$major" -gt "$req_major"; then
+-        ok=yes
+-    else
+-        if test "$major" -eq "$req_major"; then
+-            if test "$minor" -ge "$req_minor"; then
+-               ok=yes
+-            fi
+-        fi
+-    fi
+-  fi
+-  if test $ok = yes; then
+-    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
+-    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
+-    GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --cflags 2>/dev/null`
+-    GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --libs 2>/dev/null`
+-    AC_MSG_RESULT([yes ($gpg_error_config_version)])
+-    ifelse([$2], , :, [$2])
+-    gpg_error_config_host=`$GPG_ERROR_CONFIG $gpg_error_config_args --host 2>/dev/null || echo none`
+-    if test x"$gpg_error_config_host" != xnone ; then
+-      if test x"$gpg_error_config_host" != x"$host" ; then
+-  AC_MSG_WARN([[
+-***
+-*** The config script $GPG_ERROR_CONFIG was
+-*** built for $gpg_error_config_host and thus may not match the
+-*** used host $host.
+-*** You may want to use the configure option --with-gpg-error-prefix
+-*** to specify a matching config script or use \$SYSROOT.
+-***]])
+-        gpg_config_script_warn="$gpg_config_script_warn libgpg-error"
+-      fi
+-    fi
+-  else
+-    GPG_ERROR_CFLAGS=""
+-    GPG_ERROR_LIBS=""
+-    GPG_ERROR_MT_CFLAGS=""
+-    GPG_ERROR_MT_LIBS=""
+-    AC_MSG_RESULT(no)
+-    ifelse([$3], , :, [$3])
+-  fi
+-  AC_SUBST(GPG_ERROR_CFLAGS)
+-  AC_SUBST(GPG_ERROR_LIBS)
+-  AC_SUBST(GPG_ERROR_MT_CFLAGS)
+-  AC_SUBST(GPG_ERROR_MT_LIBS)
++    GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS"
++    GPG_ERROR_MT_LIBS="-lpthread $GPG_ERROR_LIBS"
++
++    AC_SUBST(GPG_ERROR_CFLAGS)
++    AC_SUBST(GPG_ERROR_LIBS)
++    AC_SUBST(GPG_ERROR_MT_CFLAGS)
++    AC_SUBST(GPG_ERROR_MT_LIBS)
++  ], [
++    AC_MSG_ERROR([$GPG_ERROR_ERRORS])
++  ])
+ ])
+-- 
+2.18.0
+
diff --git a/Tools/buildstream/patches/libgcrypt-use-only-dev-urandom-for-testing.patch b/Tools/buildstream/patches/libgcrypt-use-only-dev-urandom-for-testing.patch
new file mode 100644 (file)
index 0000000..991d78c
--- /dev/null
@@ -0,0 +1,16 @@
+diff --git a/random/rndlinux.c b/random/rndlinux.c
+index d3a144a4..b4bdc466 100644
+--- a/random/rndlinux.c
++++ b/random/rndlinux.c
+@@ -158,6 +158,11 @@ _gcry_rndlinux_gather_random (void (*add)(const void*, size_t,
+   if (length > 1)
+     length -= n_hw;
++  // Enforce the use of /dev/urandom for testing of the libgcrypt-based
++  // Web Crypto implementation testing in WebKit.
++  // DO NOT USE THIS PATCH OUTSIDE OF TESTING ENVIRONMENTS.
++  level = 0;
++
+   /* Open the requested device.  The first time a device is to be
+      opened we fail with a fatal error if the device does not exists.
+      In case the device has ever been closed, further open requests
diff --git a/Tools/buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch b/Tools/buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch
new file mode 100644 (file)
index 0000000..f008459
--- /dev/null
@@ -0,0 +1,25 @@
+From b53e9876f4611525b7a8f69a3110fbec51dcede0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Thu, 19 Mar 2020 01:42:22 +0100
+Subject: [PATCH] docs: Add man subdir only if manpage is enabled
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ docs/meson.build | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/docs/meson.build b/docs/meson.build
+index cc8d964..06db370 100644
+--- a/docs/meson.build
++++ b/docs/meson.build
+@@ -1,4 +1,6 @@
+-subdir('man')
++if with_manpage
++  subdir('man')
++endif
+ if with_gtkdoc
+   subdir('reference/libsecret')
+ endif
diff --git a/Tools/buildstream/patches/nettle-no-debug.diff b/Tools/buildstream/patches/nettle-no-debug.diff
new file mode 100644 (file)
index 0000000..d875c3f
--- /dev/null
@@ -0,0 +1,14 @@
+diff --git a/elements/components/nettle.bst b/elements/components/nettle.bst
+index 026050dd..4f174374 100644
+--- a/elements/components/nettle.bst
++++ b/elements/components/nettle.bst
+@@ -12,6 +12,9 @@ variables:
+   # /bin/sh: line 1: ./desdata: Text file busy
+   notparallel: true
++  # Work around for crashing qemu when stripping cross-built aarch64 libraries.
++  optimize-debug: "false"
++
+ public:
+   bst:
+     split-rules:
diff --git a/Tools/buildstream/patches/openxr-0001-cmake-Check-for-C-17-and-conditionally-enable-it.patch b/Tools/buildstream/patches/openxr-0001-cmake-Check-for-C-17-and-conditionally-enable-it.patch
new file mode 100644 (file)
index 0000000..941eeaa
--- /dev/null
@@ -0,0 +1,66 @@
+From 4071543a9b783e9711aab268e8024a112ae7dcd2 Mon Sep 17 00:00:00 2001
+From: Philippe Normand <philn@igalia.com>
+Date: Wed, 6 May 2020 09:10:15 +0100
+Subject: [PATCH] cmake: Check for C++-17 and conditionally enable it
+
+In GCC __cplusplus will be 201703 only if the -std=c++17 option is passed to the
+compiler. Without this option the filesystem_utils.cpp won't compile under GCC
+9.3.0, giving the following error:
+
+src/common/filesystem_utils.cpp:74:10: fatal error: experimental/filesystem: No
+such file or directory
+---
+ src/CMakeLists.txt        |  7 +++++++
+ src/loader/CMakeLists.txt | 18 +++++++++++++-----
+ 2 files changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index b7c18cb..0ed5839 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -22,6 +22,13 @@ set(CMAKE_CXX_STANDARD 14)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
++include(CheckCXXCompilerFlag)
++
++check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17)
++if(HAVE_FLAG_STD_CXX17)
++    set(CMAKE_CXX_STANDARD 17)
++endif()
++
+ include(GNUInstallDirs)
+ ### Dependencies
+diff --git a/src/loader/CMakeLists.txt b/src/loader/CMakeLists.txt
+index ca395af..38f7ab1 100644
+--- a/src/loader/CMakeLists.txt
++++ b/src/loader/CMakeLists.txt
+@@ -143,11 +143,19 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+     endif()
+     set_target_properties(openxr_loader PROPERTIES SOVERSION "${MAJOR}" VERSION "${MAJOR}.${MINOR}.${PATCH}")
+-    target_link_libraries(
+-        openxr_loader
+-        PRIVATE stdc++fs
+-        PUBLIC m
+-    )
++
++    if(HAVE_FLAG_STD_CXX17)
++        target_link_libraries(
++            openxr_loader
++            PUBLIC m
++        )
++    else()
++        target_link_libraries(
++            openxr_loader
++            PRIVATE stdc++fs
++            PUBLIC m
++        )
++    endif()
+     add_custom_target(
+         libopenxr_loader.so.${MAJOR}.${MINOR} ALL
+-- 
+2.26.2
+
diff --git a/Tools/buildstream/patches/qtbase-avoid-hardcoding-kernel-version.patch b/Tools/buildstream/patches/qtbase-avoid-hardcoding-kernel-version.patch
new file mode 100644 (file)
index 0000000..49bb338
--- /dev/null
@@ -0,0 +1,31 @@
+diff --git a/src/corelib/configure.json b/src/corelib/configure.json
+index 183eb3a13e..c981b9d742 100644
+--- a/src/corelib/configure.json
++++ b/src/corelib/configure.json
+@@ -501,7 +501,7 @@
+         },
+         "getentropy": {
+             "label": "getentropy()",
+-            "condition": "config.unix && tests.getentropy",
++            "disable": "true",
+             "output": [ "privateFeature" ]
+         },
+         "glib": {
+@@ -629,7 +629,7 @@
+         },
+         "renameat2": {
+             "label": "renameat2()",
+-            "condition": "config.linux && tests.renameat2",
++            "disable": "true",
+             "output": [ "privateFeature" ]
+         },
+         "slog2": {
+@@ -639,7 +639,7 @@
+         },
+         "statx": {
+             "label": "statx() in libc",
+-            "condition": "config.linux && tests.statx",
++            "disable": "true",
+             "output": [ "privateFeature" ]
+         },
+         "syslog": {
diff --git a/Tools/buildstream/patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch b/Tools/buildstream/patches/qtbase-revert-correct-handling-for-xdg-runtime-dir.patch
new file mode 100644 (file)
index 0000000..86aab81
--- /dev/null
@@ -0,0 +1,85 @@
+diff --git a/src/corelib/io/qstandardpaths_unix.cpp b/src/corelib/io/qstandardpaths_unix.cpp
+index 5f4955c53f..ba351acf77 100644
+--- a/src/corelib/io/qstandardpaths_unix.cpp
++++ b/src/corelib/io/qstandardpaths_unix.cpp
+@@ -142,58 +142,53 @@ QString QStandardPaths::writableLocation(StandardLocation type)
+     }
+     case RuntimeLocation:
+     {
+-        // http://standards.freedesktop.org/basedir-spec/latest/
+         const uint myUid = uint(geteuid());
+-        // since the current user is the owner, set both xxxUser and xxxOwner
+-        const QFile::Permissions wantedPerms = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser
+-                                               | QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner;
++        // http://standards.freedesktop.org/basedir-spec/latest/
+         QFileInfo fileInfo;
+         QString xdgRuntimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
+         if (xdgRuntimeDir.isEmpty()) {
+             const QString userName = QFileSystemEngine::resolveUserName(myUid);
+             xdgRuntimeDir = QDir::tempPath() + QLatin1String("/runtime-") + userName;
+             fileInfo.setFile(xdgRuntimeDir);
++            if (!fileInfo.isDir()) {
++                if (!QDir().mkdir(xdgRuntimeDir)) {
++                    qWarning("QStandardPaths: error creating runtime directory %s: %s", qPrintable(xdgRuntimeDir), qPrintable(qt_error_string(errno)));
++                    return QString();
++                }
++            }
+ #ifndef Q_OS_WASM
+             qWarning("QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '%ls'", qUtf16Printable(xdgRuntimeDir));
+ #endif
+         } else {
+             fileInfo.setFile(xdgRuntimeDir);
+-        }
+-        if (fileInfo.exists()) {
++            if (!fileInfo.exists()) {
++                qWarning("QStandardPaths: XDG_RUNTIME_DIR points to non-existing path '%s', "
++                         "please create it with 0700 permissions.", qPrintable(xdgRuntimeDir));
++                return QString();
++            }
+             if (!fileInfo.isDir()) {
+                 qWarning("QStandardPaths: XDG_RUNTIME_DIR points to '%ls' which is not a directory",
+                          qUtf16Printable(xdgRuntimeDir));
+                 return QString();
+             }
+-        } else {
+-            QFileSystemEntry entry(xdgRuntimeDir);
+-            if (!QFileSystemEngine::createDirectory(entry, false)) {
+-                if (errno != EEXIST) {
+-                    qErrnoWarning("QStandardPaths: error creating runtime directory %ls",
+-                                  qUtf16Printable(xdgRuntimeDir));
+-                    return QString();
+-                }
+-            } else {
+-                QSystemError error;
+-                if (!QFileSystemEngine::setPermissions(entry, wantedPerms, error)) {
+-                    qWarning("QStandardPaths: could not set correct permissions on runtime directory %ls: %ls",
+-                             qUtf16Printable(xdgRuntimeDir), qUtf16Printable(error.toString()));
+-                    return QString();
+-                }
+-            }
+         }
+         // "The directory MUST be owned by the user"
+         if (fileInfo.ownerId() != myUid) {
+-            qWarning("QStandardPaths: wrong ownership on runtime directory %ls, %d instead of %d",
+-                     qUtf16Printable(xdgRuntimeDir),
++            qWarning("QStandardPaths: wrong ownership on runtime directory %s, %d instead of %d", qPrintable(xdgRuntimeDir),
+                      fileInfo.ownerId(), myUid);
+             return QString();
+         }
+         // "and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700."
++        // since the current user is the owner, set both xxxUser and xxxOwner
++        const QFile::Permissions wantedPerms = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser
++                                               | QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner;
+         if (fileInfo.permissions() != wantedPerms) {
+-            qWarning("QStandardPaths: wrong permissions on runtime directory %ls, %x instead of %x",
+-                     qUtf16Printable(xdgRuntimeDir), uint(fileInfo.permissions()), uint(wantedPerms));
+-            return QString();
++            QFile file(xdgRuntimeDir);
++            if (!file.setPermissions(wantedPerms)) {
++                qWarning("QStandardPaths: could not set correct permissions on runtime directory %s: %s",
++                         qPrintable(xdgRuntimeDir), qPrintable(file.errorString()));
++                return QString();
++            }
+         }
+         return xdgRuntimeDir;
diff --git a/Tools/buildstream/patches/qtbase-use-wayland-on-gnome.patch b/Tools/buildstream/patches/qtbase-use-wayland-on-gnome.patch
new file mode 100644 (file)
index 0000000..526963c
--- /dev/null
@@ -0,0 +1,20 @@
+diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
+index b8bfad4f16..676fdfad5e 100644
+--- a/src/gui/kernel/qguiapplication.cpp
++++ b/src/gui/kernel/qguiapplication.cpp
+@@ -1376,14 +1376,7 @@ void QGuiApplicationPrivate::createPlatformIntegration()
+         if (sessionType == QByteArrayLiteral("x11") && !platformName.contains(QByteArrayLiteral("xcb"))) {
+             platformName = QByteArrayLiteral("xcb");
+         } else if (sessionType == QByteArrayLiteral("wayland") && !platformName.contains(QByteArrayLiteral("wayland"))) {
+-            QByteArray currentDesktop = qgetenv("XDG_CURRENT_DESKTOP").toLower();
+-            QByteArray sessionDesktop = qgetenv("XDG_SESSION_DESKTOP").toLower();
+-            if (currentDesktop.contains("gnome") || sessionDesktop.contains("gnome")) {
+-                qInfo() << "Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome."
+-                        << "Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.";
+-            } else {
+-                platformName = QByteArrayLiteral("wayland");
+-            }
++            platformName = QByteArrayLiteral("wayland");
+         }
+     }
+ #ifdef QT_QPA_DEFAULT_PLATFORM_NAME
diff --git a/Tools/buildstream/patches/qtdeclarative-use-python3.patch b/Tools/buildstream/patches/qtdeclarative-use-python3.patch
new file mode 100644 (file)
index 0000000..b0df614
--- /dev/null
@@ -0,0 +1,55 @@
+diff --git a/qtdeclarative.pro b/qtdeclarative.pro
+index 5b94da9b6..0e3496ce8 100644
+--- a/qtdeclarative.pro
++++ b/qtdeclarative.pro
+@@ -2,7 +2,7 @@ CONFIG += tests_need_tools examples_need_tools
+ load(qt_parts)
+ !python_available {
+-    py_out = $$system('python -c "print(1)"')
++    py_out = $$system('python3 -c "print(1)"')
+     !equals(py_out, 1): error("Building QtQml requires Python.")
+     tmp = python_available
+     CONFIG += $$tmp
+diff --git a/src/3rdparty/masm/masm.pri b/src/3rdparty/masm/masm.pri
+index 0e63ac2ce..7a30ab64e 100644
+--- a/src/3rdparty/masm/masm.pri
++++ b/src/3rdparty/masm/masm.pri
+@@ -58,7 +58,7 @@ contains(DEFINES, WTF_USE_UDIS86=1) {
+     udis86.output = udis86_itab.h
+     udis86.input = ITAB
+     udis86.CONFIG += no_link
+-    udis86.commands = python $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
++    udis86.commands = python3 $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
+     QMAKE_EXTRA_COMPILERS += udis86
+     udis86_tab_cfile.target = $$OUT_PWD/udis86_itab.c
+@@ -113,7 +113,7 @@ retgen.output = $$GENERATEDDIR/RegExpJitTables.h
+ retgen.script = $$PWD/yarr/create_regex_tables
+ retgen.input = retgen.script
+ retgen.CONFIG += no_link
+-retgen.commands = python $$retgen.script > ${QMAKE_FILE_OUT}
++retgen.commands = python3 $$retgen.script > ${QMAKE_FILE_OUT}
+ QMAKE_EXTRA_COMPILERS += retgen
+ # Taken from WebKit/Tools/qmake/mkspecs/features/unix/default_post.prf
+diff --git a/src/3rdparty/masm/yarr/create_regex_tables b/src/3rdparty/masm/yarr/create_regex_tables
+index 4c3dbbe3f..d13084d6c 100644
+--- a/src/3rdparty/masm/yarr/create_regex_tables
++++ b/src/3rdparty/masm/yarr/create_regex_tables
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright (C) 2010, 2013-2017 Apple Inc. All rights reserved.
+ # 
+diff --git a/src/3rdparty/masm/yarr/generateYarrCanonicalizeUnicode b/src/3rdparty/masm/yarr/generateYarrCanonicalizeUnicode
+index a103bcdf1..20a358c1a 100644
+--- a/src/3rdparty/masm/yarr/generateYarrCanonicalizeUnicode
++++ b/src/3rdparty/masm/yarr/generateYarrCanonicalizeUnicode
+@@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#! /usr/bin/env python3
+ # Copyright (C) 2016 Apple Inc. All rights reserved.
+ #
diff --git a/Tools/buildstream/patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch b/Tools/buildstream/patches/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch
new file mode 100644 (file)
index 0000000..d4463bf
--- /dev/null
@@ -0,0 +1,39 @@
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index 97e0203c..5bee160a 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -99,20 +99,26 @@ public:
+         if (QGuiApplication::desktopSettingsAware()) {
+             const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();
+-
++            QList<QByteArray> gtkBasedEnvironments;
++            gtkBasedEnvironments << "GNOME"
++                                 << "X-CINNAMON"
++                                 << "UNITY"
++                                 << "MATE"
++                                 << "XFCE"
++                                 << "LXDE";
+             if (desktopEnvironment == QByteArrayLiteral("KDE")) {
+ #if QT_CONFIG(settings)
+                 result.push_back(QStringLiteral("kde"));
+ #endif
+-            } else if (!desktopEnvironment.isEmpty() &&
+-                desktopEnvironment != QByteArrayLiteral("UNKNOWN") &&
+-                desktopEnvironment != QByteArrayLiteral("GNOME") &&
+-                desktopEnvironment != QByteArrayLiteral("UNITY") &&
+-                desktopEnvironment != QByteArrayLiteral("MATE") &&
+-                desktopEnvironment != QByteArrayLiteral("XFCE") &&
+-                desktopEnvironment != QByteArrayLiteral("LXDE"))
++            } else if (gtkBasedEnvironments.contains(desktopEnvironment)) {
++                // prefer the GTK3 theme implementation with native dialogs etc.
++                result.push_back(QStringLiteral("gtk3"));
++                // fallback to the generic Gnome theme if loading the GTK3 theme fails
++                result.push_back(QLatin1String(QGnomeTheme::name));
++            } else if (!desktopEnvironment.isEmpty() && desktopEnvironment != QByteArrayLiteral("UNKNOWN")) {
+                 // Ignore X11 desktop environments
+                 result.push_back(QString::fromLocal8Bit(desktopEnvironment.toLower()));
++            }
+         }
+         if (result.isEmpty())
diff --git a/Tools/buildstream/patches/sccache-no-selenium.patch b/Tools/buildstream/patches/sccache-no-selenium.patch
new file mode 100644 (file)
index 0000000..038ab78
--- /dev/null
@@ -0,0 +1,65 @@
+From 5cf27388fcdc934bcf3b50d5756148261dc50068 Mon Sep 17 00:00:00 2001
+From: Philippe Normand <philn@igalia.com>
+Date: Sun, 29 Mar 2020 18:19:15 +0100
+Subject: [PATCH] sccache: no selenium
+
+---
+ Cargo.lock | 14 --------------
+ Cargo.toml |  2 +-
+ 2 files changed, 1 insertion(+), 15 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 4670f68..5ad5ee9 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -1833,7 +1833,6 @@ dependencies = [
+  "retry 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+  "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)",
+  "rouille 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "selenium-rs 0.1.1 (git+https://github.com/saresend/selenium-rs.git?rev=0314a2420da78cce7454a980d862995750771722)",
+  "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
+  "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
+  "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
+@@ -1900,18 +1899,6 @@ dependencies = [
+  "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ ]
+-[[package]]
+-name = "selenium-rs"
+-version = "0.1.1"
+-source = "git+https://github.com/saresend/selenium-rs.git?rev=0314a2420da78cce7454a980d862995750771722#0314a2420da78cce7454a980d862995750771722"
+-dependencies = [
+- "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+ [[package]]
+ name = "semver"
+ version = "0.9.0"
+@@ -3121,7 +3108,6 @@ dependencies = [
+ "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
+ "checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df"
+ "checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895"
+-"checksum selenium-rs 0.1.1 (git+https://github.com/saresend/selenium-rs.git?rev=0314a2420da78cce7454a980d862995750771722)" = "<none>"
+ "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+ "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+ "checksum serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)" = "1217f97ab8e8904b57dd22eb61cde455fa7446a9c1cf43966066da047c1f3702"
+diff --git a/Cargo.toml b/Cargo.toml
+index d5ff8a8..a8633a7 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -102,7 +102,7 @@ escargot = "0.3"
+ itertools = "0.7"
+ predicates = "0.9.0"
+ # Waiting for #15 to make it into a release
+-selenium-rs = { git = "https://github.com/saresend/selenium-rs.git", rev = "0314a2420da78cce7454a980d862995750771722" }
++#selenium-rs = { git = "https://github.com/saresend/selenium-rs.git", rev = "0314a2420da78cce7454a980d862995750771722" }
+ [target.'cfg(unix)'.dependencies]
+ daemonize = "0.3"
+-- 
+2.25.1
+
diff --git a/Tools/buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch b/Tools/buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch
new file mode 100644 (file)
index 0000000..ad380c8
--- /dev/null
@@ -0,0 +1,84 @@
+From fcbd29debee422bcb147057a089fd1da5e699656 Mon Sep 17 00:00:00 2001
+From: Carlos Alberto Lopez Perez <clopez@igalia.com>
+Date: Wed, 23 Mar 2016 03:47:58 +0100
+Subject: [PATCH xserver] Search for DRI drivers at LIBGL_DRIVERS_PATH
+ environment variable.
+
+  * The Mesa driver uses this environment variable to override the
+    default compiled search path for DRI drivers.
+
+  * This is useful for testing purposes when the user needs to
+    override the system default one at runtime.
+---
+ glx/glxdricommon.c | 40 ++++++++++++++++++++++++++++++----------
+ 1 file changed, 30 insertions(+), 10 deletions(-)
+
+diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c
+index 62cce13..543f631 100644
+--- a/glx/glxdricommon.c
++++ b/glx/glxdricommon.c
+@@ -246,8 +246,6 @@ glxConvertConfigs(const __DRIcoreExtension * core,
+     return head.next;
+ }
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ /* Temporary define to allow building without a dri_interface.h from
+  * updated Mesa.  Some day when we don't care about Mesa that old any
+  * more this can be removed.
+@@ -261,22 +259,44 @@ glxProbeDriver(const char *driverName,
+                void **coreExt, const char *coreName, int coreVersion,
+                void **renderExt, const char *renderName, int renderVersion)
+ {
+-    int i;
++    int i, len;
+     void *driver;
+     char filename[PATH_MAX];
+     char *get_extensions_name;
+     const __DRIextension **extensions = NULL;
++    const char *dri_driver_path, *p, *next;
+-    snprintf(filename, sizeof filename, "%s/%s_dri.so",
+-             dri_driver_path, driverName);
++    dri_driver_path = getenv("LIBGL_DRIVERS_PATH");
++
++    if (dri_driver_path == NULL)
++        dri_driver_path = DRI_DRIVER_PATH;
++
++    for (p = dri_driver_path; *p; p = next) {
++        next = strchr(p, ':');
++        if (next == NULL) {
++            len = strlen(p);
++            next = p + len;
++        }
++        else {
++            len = next - p;
++            next++;
++        }
++
++        snprintf(filename, sizeof filename, "%.*s/%s_dri.so",
++                len, p, driverName);
++
++        driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
++        if (driver == NULL)
++            LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
++                    filename, dlerror());
++        else
++            break;
+-    driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+-    if (driver == NULL) {
+-        LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
+-                   filename, dlerror());
+-        goto cleanup_failure;
+     }
++    if (driver == NULL)
++        goto cleanup_failure;
++
+     if (asprintf(&get_extensions_name, "%s_%s",
+                  __DRI_DRIVER_GET_EXTENSIONS, driverName) != -1) {
+         const __DRIextension **(*get_extensions)(void);
+-- 
+2.1.4
+
diff --git a/Tools/buildstream/project.conf b/Tools/buildstream/project.conf
new file mode 100644 (file)
index 0000000..5a2af3c
--- /dev/null
@@ -0,0 +1,272 @@
+# Project name
+name: webkit-sdk
+
+# The minimum base BuildStream format
+format-version: 17
+
+# Where elements are stored
+element-path: elements
+
+fatal-warnings:
+- overlaps
+
+# Options to specify for the project, these provide
+# command line switches which control the behavior of
+# conditional directives in the element.bst files.
+#
+options:
+  arch:
+    type: arch
+    description: Machine architecture
+    variable: arch
+    values:
+    - aarch64
+    - x86_64
+
+  bootstrap_build_arch:
+    type: arch
+    description: Bootstrap build machine architecture
+    variable: bootstrap_build_arch
+    values:
+    - aarch64
+    - x86_64
+
+# Source aliases.
+#
+# These are used in the individual element.bst files in
+# place of specifying full uris.
+# 
+# The location from where source code is downloaded can
+# be changed without triggering a rebuild.
+#
+aliases:
+  gitlab_freedesktop_org: https://gitlab.freedesktop.org/
+  github_com: https://github.com/
+  gitlab_com: https://gitlab.com/
+  gitlab_gnome_org: https://gitlab.gnome.org/
+  raw_githubusercontent_com: https://raw.githubusercontent.com/
+  gnome_downloads: https://download.gnome.org/sources/
+  gst_downloads: https://gstreamer.freedesktop.org/src/
+
+# Some overrides to the default sandbox execution environment
+#
+environment:
+  LC_ALL: en_US.UTF-8
+  LD_LIBRARY_PATH: '%{libdir}'
+  PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+  PKG_CONFIG_PATH: /usr/local/lib/pkgconfig:%{libdir}/pkgconfig
+  (?):
+  - arch == "x86_64":
+      CFLAGS: "%{flags_x86_64}"
+      CXXFLAGS: "%{flags_x86_64}"
+      LDFLAGS: "%{ldflags_defaults}"
+  - arch == "aarch64":
+      CFLAGS: "%{flags_aarch64}"
+      CXXFLAGS: "%{flags_aarch64}"
+      LDFLAGS: "%{ldflags_defaults}"
+
+# Some overrides to element configuration based on type
+#
+# Here we can set a project wide options for various build systems,
+# e.g. we can add --disable-gtk-doc to every `./configure` line.
+elements:
+  autotools:
+    variables:
+      conf-global: --disable-static --disable-Werror --host=%{triplet} --build=%{triplet}
+
+      # Temporary workaround to avoid regenerating existing
+      # configure scripts when building tarballs.
+      #
+      # We can remove this after addressing the upstream issue:
+      #
+      #    https://gitlab.com/BuildStream/buildstream/issues/256
+      #
+      # XXX: updating config.{sub,guess} would be still useful in that case
+      # to fix compilation on recent architectures such as aarch64.
+      autogen: |
+        export NOCONFIGURE=1
+        if [ -x %{conf-cmd} ]; then cp -f /usr/share/automake*/config.{sub,guess} %{conf-aux}
+        elif [ -x autogen ]; then ./autogen
+        elif [ -x autogen.sh ]; then ./autogen.sh
+        elif [ -x bootstrap ]; then ./bootstrap
+        elif [ -x bootstrap.sh ]; then ./bootstrap.sh
+        else autoreconf -ivf
+        fi
+      # the directory where config.sub and config.guess are stored
+      conf-aux: .
+
+  cmake:
+    variables:
+      cmake-global: -DCMAKE_BUILD_TYPE=RelWithDebInfo
+      generator: Ninja
+  distutils:
+    variables:
+      prefix: /usr/local
+      python-install: '%{python} setup.py install --root "%{install-root}"'
+      fix-pyc-timestamps: ''
+    config:
+      install-commands:
+        (>):
+          # There's no way to get the setup.py to install this in the right place.
+        - |
+          if [ -d '%{install-root}/usr/lib/pkgconfig/' ]; then
+            mkdir -p %{install-root}/usr/%{lib}/
+            mv -f %{install-root}/usr/lib/pkgconfig/ %{install-root}/usr/%{lib}/
+          fi
+  meson:
+    variables:
+      meson-global: --buildtype=plain --auto-features=enabled
+  pip:
+    variables:
+      pip: pip3
+      fix-pyc-timestamps: "true"
+    config:
+      install-commands:
+        - |
+          %{pip} install --no-build-isolation --no-deps --root=%{install-root} --prefix=%{prefix} .
+  filter:
+    config:
+      include-orphans: true
+
+sources:
+  git_tag:
+    config:
+      checkout-submodules: false
+      track-tags: false
+
+split-rules:
+  devel:
+    (>):
+    - '%{libdir}/cmake'
+    - '%{libdir}/cmake/**'
+    - '%{libdir}/cmake/**'
+    - '%{datadir}/gir-1.0/**'
+  vm:
+  - '%{datadir}/dbus-1/**'
+
+# Define some behavior for `bst shell`
+#
+shell:
+
+  # Default command for `bst shell`, we prefer bash, and disable
+  # parsing of profile and rc files so that the prompt BuildStream
+  # sets is not overwritten.
+  command: ['bash', '--noprofile', '--norc', '-i']
+
+  # Some environment variables to inherit from the host environment
+  environment:
+    LANG: '$LANG'
+    DISPLAY: '$DISPLAY'
+    DBUS_SESSION_BUS_ADDRESS: '$DBUS_SESSION_BUS_ADDRESS'
+    XDG_RUNTIME_DIR: '$XDG_RUNTIME_DIR'
+
+    # Inform applications which use pulseaudio of the server socket
+    PULSE_SERVER: 'unix:${XDG_RUNTIME_DIR}/pulse/native'
+
+  # Some things to mount into the sandbox
+  host-files:
+  # Understand user inherited uid/gid
+  - '/etc/passwd'
+  - '/etc/group'
+  # Allow network resolution
+  - '/etc/resolv.conf'
+
+  # Allow access to plausible video devices,
+  # declare these optional to avoid meaningless warnings
+  - path: '/dev/dri'
+    optional: true
+  - path: '/dev/mali'
+    optional: true
+  - path: '/dev/mali0'
+    optional: true
+  - path: '/dev/umplock'
+    optional: true
+  - path: '/dev/nvidiactl'
+    optional: true
+  - path: '/dev/nvidia0'
+    optional: true
+  - path: '/dev/nvidia-modeset'
+    optional: true
+
+  # Allow access to sysfs, needed for local device discovery
+  - '/sys'
+
+  # Allow access to the user runtime directory, this
+  # will include the pulseaudio socket along with some
+  # other things.
+  - '${XDG_RUNTIME_DIR}'
+
+variables:
+  sdk-branch: "0.2"
+  gcc_arch: "%{arch}"
+  abi: "gnu"
+  gcc_triplet: "%{gcc_arch}-linux-%{abi}"
+  triplet: "%{arch}-unknown-linux-%{abi}"
+  lib: "lib/%{gcc_triplet}"
+  sbindir: "%{bindir}"
+  sysconfdir: "/etc"
+  localstatedir: "/var"
+  indep-libdir: "%{prefix}/lib"
+  debugdir: "%{indep-libdir}/debug"
+  common_flags: "-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions\
+    \ -fstack-protector-strong -grecord-gcc-switches"
+  flags_x86_64: "-march=x86-64 -mtune=generic %{common_flags} -fasynchronous-unwind-tables\
+    \ -fstack-clash-protection -fcf-protection"
+  flags_aarch64: "%{common_flags} -fasynchronous-unwind-tables -fstack-clash-protection"
+  ldflags_defaults: "-Wl,-z,relro,-z,now -Wl,--as-needed -L%{libdir}"
+
+  # This should eventually done with buildstream includes
+  strip-binaries: |
+    touch source-files
+    find "%{install-root}" -type f \
+      '(' -perm -111 -o -name '*.so*' \
+          -o -name '*.cmxs' -o -name '*.node' ')' \
+          -print0 | while read -r -d $'\0' file; do
+      read -n4 hdr <"${file}" || continue # check for elf header
+      if [ "$hdr" != "$(printf \\x7fELF)" ]; then
+        continue
+      fi
+      if objdump -j .gnu_debuglink -s "${file}" &>/dev/null; then
+        continue
+      fi
+      case "${file}" in
+        "%{install-root}%{debugdir}/"*)
+          continue
+          ;;
+        *)
+          ;;
+      esac
+      realpath="$(realpath -s --relative-to="%{install-root}" "${file}")"
+      debugfile="%{install-root}%{debugdir}/${realpath}.debug"
+      mkdir -p "$(dirname "$debugfile")"
+      debugedit -i --list-file=source-files.part --base-dir="%{build-root}" --dest-dir="%{debugdir}/source/%{element-name}" "${file}"
+      cat source-files.part >>source-files
+      objcopy %{objcopy-extract-args} "${file}" "$debugfile"
+      chmod 644 "$debugfile"
+      mode="$(stat -c 0%a "${file}")"
+      [ -w "${file}" ] || chmod +w "${file}"
+      strip %{strip-args} "${file}"
+      objcopy %{objcopy-link-args} "$debugfile" "${file}"
+      chmod "${mode}" "${file}"
+    done
+    sort -zu  <source-files | while read -r -d $'\0' source; do
+      dst="%{install-root}%{debugdir}/source/%{element-name}/${source}"
+      src="%{build-root}/${source}"
+      if [ -d "${src}" ]; then
+        install -m0755 -d "${dst}"
+        continue
+      fi
+      [ -f "${src}" ] || continue
+      install -m0644 -D "${src}" "${dst}"
+    done
+
+plugins:
+- origin: pip
+  package-name: buildstream-external
+  elements:
+    flatpak_image: 0
+    flatpak_repo: 0
+    collect_manifest: 0
+  sources:
+    cargo: 0
+    git_tag: 1
diff --git a/Tools/buildstream/utils/generate-version b/Tools/buildstream/utils/generate-version
new file mode 100755 (executable)
index 0000000..f594f40
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -eu
+
+datestring=$(date -Idate)
+
+version=$($PWD/../glib/svn-revision)
+
+cat >$1 <<EOF
+# no-commit
+# This file is generated by utils/generate-version as part of the
+# Makefile / CI system. Please do not commit it.
+
+variables:
+  runtime-version: '${version}'
+  runtime-version-date: '${datestring}'
+EOF
index 59d5a2b..6b50926 100755 (executable)
@@ -181,7 +181,8 @@ function installDependenciesWithApt {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     packages="$packages \
@@ -357,7 +358,8 @@ function installDependenciesWithPacman {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        python-pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     # Note: Could not find libegl-mesa
@@ -537,7 +539,8 @@ function installDependenciesWithDnf {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     packages="$packages \
index 9962c91..51f6054 100755 (executable)
@@ -114,7 +114,8 @@ function installDependenciesWithApt {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     packages="$packages \
@@ -223,7 +224,8 @@ function installDependenciesWithPacman {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        python-pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     packages="$packages \
@@ -341,7 +343,8 @@ function installDependenciesWithDnf {
 
     # These are dependencies necessary for building with the Flatpak SDK.
     packages="$packages \
-        flatpak"
+        flatpak \
+        pipenv"
 
     # These are dependencies necessary for building the jhbuild.
     packages="$packages \