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 f803536ac2fbf8365edc248128221a1dd42607c2 Author: Tristan van Berkom <[email protected]> AuthorDate: Fri Mar 18 17:27:38 2022 +0900 Initially adding autotools element From buildstream core plugins --- src/buildstream_plugins/elements/autotools.py | 70 +++++++++++++ src/buildstream_plugins/elements/autotools.yaml | 129 ++++++++++++++++++++++++ 2 files changed, 199 insertions(+) diff --git a/src/buildstream_plugins/elements/autotools.py b/src/buildstream_plugins/elements/autotools.py new file mode 100644 index 0000000..7f9e6d0 --- /dev/null +++ b/src/buildstream_plugins/elements/autotools.py @@ -0,0 +1,70 @@ +# +# Copyright (C) 2016, 2018 Codethink Limited +# +# 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. +# +# Authors: +# Tristan Van Berkom <[email protected]> + +""" +autotools - Autotools build element +=================================== +This is a :mod:`BuildElement <buildstream.buildelement>` implementation for +using Autotools build scripts (also known as the `GNU Build System +<https://en.wikipedia.org/wiki/GNU_Build_System>`_). + +You will often want to pass additional arguments to ``configure``. This should +be done on a per-element basis by setting the ``conf-local`` variable. Here is +an example: + +.. code:: yaml + + variables: + conf-local: | + --disable-foo --enable-bar + +If you want to pass extra options to ``configure`` for every element in your +project, set the ``conf-global`` variable in your project.conf file. Here is +an example of that: + +.. code:: yaml + + elements: + autotools: + variables: + conf-global: | + --disable-gtk-doc --disable-static + +Here is the default configuration for the ``autotools`` element in full: + + .. literalinclude:: ../../../src/buildstream_plugins/elements/autotools.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 'autotools' kind. +class AutotoolsElement(BuildElement): + # pylint: disable=attribute-defined-outside-init + + BST_MIN_VERSION = "2.0" + + +# Plugin entry point +def setup(): + return AutotoolsElement diff --git a/src/buildstream_plugins/elements/autotools.yaml b/src/buildstream_plugins/elements/autotools.yaml new file mode 100644 index 0000000..85f7393 --- /dev/null +++ b/src/buildstream_plugins/elements/autotools.yaml @@ -0,0 +1,129 @@ +# Autotools default configurations + +variables: + + autogen: | + export NOCONFIGURE=1; + + if [ -x %{conf-cmd} ]; then true; + elif [ -x %{conf-root}/autogen ]; then %{conf-root}/autogen; + elif [ -x %{conf-root}/autogen.sh ]; then %{conf-root}/autogen.sh; + elif [ -x %{conf-root}/bootstrap ]; then %{conf-root}/bootstrap; + elif [ -x %{conf-root}/bootstrap.sh ]; then %{conf-root}/bootstrap.sh; + else autoreconf -ivf %{conf-root}; + fi + + # Project-wide extra arguments to be passed to `configure` + conf-global: '' + + # Element-specific extra arguments to be passed to `configure`. + conf-local: '' + + # For backwards compatibility only, do not use. + conf-extra: '' + + conf-cmd: "%{conf-root}/configure" + + conf-args: | + + --prefix=%{prefix} \ + --exec-prefix=%{exec_prefix} \ + --bindir=%{bindir} \ + --sbindir=%{sbindir} \ + --sysconfdir=%{sysconfdir} \ + --datadir=%{datadir} \ + --includedir=%{includedir} \ + --libdir=%{libdir} \ + --libexecdir=%{libexecdir} \ + --localstatedir=%{localstatedir} \ + --sharedstatedir=%{sharedstatedir} \ + --mandir=%{mandir} \ + --infodir=%{infodir} %{conf-extra} %{conf-global} %{conf-local} + + configure: | + + %{conf-cmd} %{conf-args} + + make: make + make-install: make -j1 DESTDIR="%{install-root}" install + + # Set this if the sources cannot handle parallelization. + # + # notparallel: True + + + # Automatically remove libtool archive files + # + # Set remove-libtool-modules to "true" to remove .la files for + # modules intended to be opened with lt_dlopen() + # + # Set remove-libtool-libraries to "true" to remove .la files for + # libraries + # + # Value must be "true" or "false" + remove-libtool-modules: "false" + remove-libtool-libraries: "false" + + delete-libtool-archives: | + if %{remove-libtool-modules} || %{remove-libtool-libraries}; then + find "%{install-root}" -name "*.la" -print0 | while read -d '' -r file; do + if grep '^shouldnotlink=yes$' "${file}" &>/dev/null; then + if %{remove-libtool-modules}; then + echo "Removing ${file}." + rm "${file}" + else + echo "Not removing ${file}." + fi + else + if %{remove-libtool-libraries}; then + echo "Removing ${file}." + rm "${file}" + else + echo "Not removing ${file}." + fi + fi + done + fi + +config: + + # Commands for configuring the software + # + configure-commands: + - | + %{autogen} + - | + %{configure} + + # Commands for building the software + # + build-commands: + - | + %{make} + + # Commands for installing the software into a + # destination folder + # + install-commands: + - | + %{make-install} + - | + %{delete-libtool-archives} + + # Commands for stripping debugging information out of + # installed binaries + # + strip-commands: + - | + %{strip-binaries} + +# Use max-jobs CPUs for building and enable verbosity +environment: + MAKEFLAGS: -j%{max-jobs} + V: 1 + +# And dont consider MAKEFLAGS or V as something which may +# affect build output. +environment-nocache: +- MAKEFLAGS +- V
