This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git
commit 52c3ab049165e0b6970f63b333898a3c0b544479 Author: Tristan van Berkom <[email protected]> AuthorDate: Fri Mar 18 17:15:55 2022 +0900 Initially adding meson element From bst-plugins-experimental --- src/buildstream_plugins/elements/meson.py | 66 ++++++++++++++++++++++++ src/buildstream_plugins/elements/meson.yaml | 79 +++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) diff --git a/src/buildstream_plugins/elements/meson.py b/src/buildstream_plugins/elements/meson.py new file mode 100644 index 0000000..e9d1d8d --- /dev/null +++ b/src/buildstream_plugins/elements/meson.py @@ -0,0 +1,66 @@ +# Copyright (C) 2017 Patrick Griffis +# Copyright (C) 2018 Codethink Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +meson - Meson build element +=========================== +This is a `BuildElement +<https://docs.buildstream.build/master/buildstream.buildelement.html#module-buildstream.buildelement>`_ +implementation for using `Meson <http://mesonbuild.com/>`_ build scripts. + +You will often want to pass additional arguments to ``meson``. This should +be done on a per-element basis by setting the ``meson-local`` variable. Here is +an example: + +.. code:: yaml + + variables: + meson-local: | + -Dmonkeys=yes + +If you want to pass extra options to ``meson`` for every element in your +project, set the ``meson-global`` variable in your project.conf file. Here is +an example of that: + +.. code:: yaml + + elements: + meson: + variables: + meson-global: | + -Dmonkeys=always + +Here is the default configuration for the ``meson`` element in full: + + .. literalinclude:: ../../../src/buildstream_plugins/elements/meson.yaml + :language: yaml + +See `built-in functionality documentation +<https://docs.buildstream.build/master/buildstream.buildelement.html#core-buildelement-builtins>`_ for +details on common configuration options for build elements. +""" + +from buildstream import BuildElement + + +# Element implementation for the 'meson' kind. +class MesonElement(BuildElement): + + BST_MIN_VERSION = "2.0" + + +# Plugin entry point +def setup(): + return MesonElement diff --git a/src/buildstream_plugins/elements/meson.yaml b/src/buildstream_plugins/elements/meson.yaml new file mode 100644 index 0000000..2172cb3 --- /dev/null +++ b/src/buildstream_plugins/elements/meson.yaml @@ -0,0 +1,79 @@ +# Meson default configuration + +variables: + + build-dir: _builddir + + # Project-wide extra arguments to be passed to `meson` + meson-global: '' + + # Element-specific extra arguments to be passed to `meson`. + meson-local: '' + + # For backwards compatibility only, do not use. + meson-extra: '' + + meson-args: | + + --prefix=%{prefix} \ + --bindir=%{bindir} \ + --sbindir=%{sbindir} \ + --sysconfdir=%{sysconfdir} \ + --datadir=%{datadir} \ + --includedir=%{includedir} \ + --libdir=%{libdir} \ + --libexecdir=%{libexecdir} \ + --localstatedir=%{localstatedir} \ + --sharedstatedir=%{sharedstatedir} \ + --mandir=%{mandir} \ + --infodir=%{infodir} %{meson-extra} %{meson-global} %{meson-local} + + meson: meson %{conf-root} %{build-dir} %{meson-args} + + ninja: | + ninja -j ${NINJAJOBS} -C %{build-dir} + + ninja-install: | + env DESTDIR="%{install-root}" ninja -C %{build-dir} install + + # Set this if the sources cannot handle parallelization. + # + # notparallel: True + +config: + + # Commands for configuring the software + # + configure-commands: + - | + %{meson} + + # Commands for building the software + # + build-commands: + - | + %{ninja} + + # Commands for installing the software into a + # destination folder + # + install-commands: + - | + %{ninja-install} + + # Commands for stripping debugging information out of + # installed binaries + # + strip-commands: + - | + %{strip-binaries} + +# Use max-jobs CPUs for building +environment: + NINJAJOBS: | + %{max-jobs} + +# And dont consider NINJAJOBS as something which may +# affect build output. +environment-nocache: +- NINJAJOBS
