blob: 5edcf3001d65acbf5f494f2cf1c261c3c8297d9f [file]
# Project name
name: webkit-sdk
# The minimum base BuildStream version
min-version: 2.0
# Where elements are stored
element-path: elements
fatal-warnings:
- overlaps
(@):
- freedesktop-sdk.bst:include/runtime.yml
# 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:
ffmpeg: https://git.ffmpeg.org/
gitlab_freedesktop_org: https://gitlab.freedesktop.org/
github_com: https://github.com/
#(github_files is an alias for the same url as github, but doesn't use the same mirror)
github_files: 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/
ruby_gems: https://rubygems.org/downloads/
kde: https://invent.kde.org/qt/qt/
pypi: https://files.pythonhosted.org/packages/
vlc: https://code.videolan.org/
wpe: https://wpewebkit.org/releases/
crates: https://static.crates.io/
# 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_repo:
config:
ref-format: git-describe
cargo:
config:
url: crates:crates
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: "23.08"
sdk-branch-extra: "%{sdk-branch}-extra"
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}"
plugins:
- origin: junction
junction: plugins/buildstream-plugins.bst
elements:
- autotools
- meson
- pip
- cmake
- make
sources:
- cargo
- patch
- origin: junction
junction: plugins/bst-plugins-experimental.bst
elements:
- flatpak_image
- flatpak_repo
- collect_manifest
- qmake
- makemaker
sources:
- git_module
- git_repo
- zip