You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/04/05 10:04:25 UTC
[buildstream-plugins] 10/49: Initially adding meson element
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 <tr...@codethink.co.uk>
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