# 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: 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/ gst_downloads: https://gstreamer.freedesktop.org/src/ ruby_gems: https://rubygems.org/downloads/ kde: https://invent.kde.org/qt/qt/ pypi: https://files.pythonhosted.org/packages/ vlc: https://code.videolan.org/ # 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.3" 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