diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-01-27 21:11:58 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-01-27 21:11:58 +0100 |
commit | 14070722c8111a273d3c76af27983a414f939ab1 (patch) | |
tree | 976c7691c0ad9b4d8e9743cdb44af5f058d575bc /guide/buildsys.html | |
parent | Update the feed list (diff) | |
download | python-14070722c8111a273d3c76af27983a414f939ab1.tar.gz python-14070722c8111a273d3c76af27983a414f939ab1.tar.bz2 python-14070722c8111a273d3c76af27983a414f939ab1.zip |
Import the current version of python-guide
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'guide/buildsys.html')
-rw-r--r-- | guide/buildsys.html | 745 |
1 files changed, 745 insertions, 0 deletions
diff --git a/guide/buildsys.html b/guide/buildsys.html new file mode 100644 index 0000000..fe5e788 --- /dev/null +++ b/guide/buildsys.html @@ -0,0 +1,745 @@ + +<!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" /> + + <title>Integration with build systems written in Python — Gentoo Python Guide documentation</title> + <link rel="stylesheet" type="text/css" href="_static/pygments.css" /> + <link rel="stylesheet" type="text/css" href="_static/alabaster.css" /> + <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> + <script src="_static/jquery.js"></script> + <script src="_static/underscore.js"></script> + <script src="_static/doctools.js"></script> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="Porting tips" href="porting.html" /> + <link rel="prev" title="Expert python-r1 usage" href="expert-multi.html" /> + + <link rel="stylesheet" href="_static/custom.css" type="text/css" /> + + + <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> + + </head><body> + + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + + + <div class="body" role="main"> + + <section id="integration-with-build-systems-written-in-python"> +<h1>Integration with build systems written in Python<a class="headerlink" href="#integration-with-build-systems-written-in-python" title="Permalink to this headline">¶</a></h1> +<p>Besides the build systems commonly used by Python packages there are +a few build systems written in Python and requiring the packages +to script them in Python. This makes it necessary to use a proper +Python eclass in order to declare their compatibility with Python +versions.</p> +<section id="meson"> +<h2>Meson<a class="headerlink" href="#meson" title="Permalink to this headline">¶</a></h2> +<p><a class="reference external" href="https://mesonbuild.com/">Meson</a> build system is a fairly recent addition. While it is written +in Python, its scripts use a custom Python-agnostic script language. +Hence, it can be treated as an arbitrary external tool and does not need +any Python eclass.</p> +</section> +<section id="scons"> +<h2>SCons<a class="headerlink" href="#scons" title="Permalink to this headline">¶</a></h2> +<p><a class="reference external" href="https://scons.org/">SCons</a> has gained Python 3 support quite recently. At the same time, +many old script files were written for Python 2 and fail when run +via Python 3 SCons. For this reason, it is necessary to use Python +eclass when using SCons.</p> +<p>In the simplest case when the package has no other use for Python, +it is sufficient to declare <code class="docutils literal notranslate"><span class="pre">PYTHON_COMPAT</span></code> for the SCons scripts +in the package, and inherit <code class="docutils literal notranslate"><span class="pre">python-any-r1</span></code> prior to <code class="docutils literal notranslate"><span class="pre">scons-utils</span></code> +(this happens naturally when you sort includes by eclass name). +The latter eclass takes care of setting as much as possible.</p> +<p>If the package has other Python components, it is necessary to account +for them and use an appropriate eclass as detailed in the eclass choice +chapter.</p> +<section id="build-time-use-with-no-extra-dependencies"> +<h3>Build-time use with no extra dependencies<a class="headerlink" href="#build-time-use-with-no-extra-dependencies" title="Permalink to this headline">¶</a></h3> +<p>If the package either has no other Python components than SCons, or all +of them are purely build-time and have no dependencies, it is sufficient +to inherit <code class="docutils literal notranslate"><span class="pre">python-any-r1</span></code>. The eclass takes care of setting +<code class="docutils literal notranslate"><span class="pre">BDEPEND</span></code> along with matching <code class="docutils literal notranslate"><span class="pre">python_check_deps()</span></code>.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">6</span>,7<span class="o">}</span> <span class="o">)</span> +</span><span class="hll"> inherit python-any-r1 scons-utils toolchain-funcs +</span> + <span class="nv">COMMIT</span><span class="o">=</span><span class="s2">"6e5e8a57628095d8d0c8bbb38187afb0f3a42112"</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"Userspace Xbox 360 Controller driver"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://xboxdrv.gitlab.io"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://github.com/chewi/xboxdrv/archive/</span><span class="si">${</span><span class="nv">COMMIT</span><span class="si">}</span><span class="s2">.tar.gz -> </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + <span class="nv">S</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">WORKDIR</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nv">COMMIT</span><span class="si">}</span><span class="s2">"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"GPL-3"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~amd64 ~x86"</span> + + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> dev-libs/boost:=</span> +<span class="s2"> dev-libs/dbus-glib</span> +<span class="s2"> dev-libs/glib:2</span> +<span class="s2"> sys-apps/dbus</span> +<span class="s2"> virtual/libudev:=</span> +<span class="s2"> virtual/libusb:1</span> +<span class="s2"> x11-libs/libX11</span> +<span class="s2"> "</span> + + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> </span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> "</span> + + <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> dev-util/glib-utils</span> +<span class="s2"> virtual/pkgconfig</span> +<span class="s2"> "</span> + + src_compile<span class="o">()</span> <span class="o">{</span> + escons <span class="se">\</span> + <span class="nv">BUILD</span><span class="o">=</span>custom <span class="se">\</span> + <span class="nv">CXX</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getCXX<span class="k">)</span><span class="s2">"</span> <span class="se">\</span> + <span class="nv">AR</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getAR<span class="k">)</span><span class="s2">"</span> <span class="se">\</span> + <span class="nv">RANLIB</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getRANLIB<span class="k">)</span><span class="s2">"</span> <span class="se">\</span> + <span class="nv">CXXFLAGS</span><span class="o">=</span><span class="s2">"-Wall </span><span class="si">${</span><span class="nv">CXXFLAGS</span><span class="si">}</span><span class="s2">"</span> <span class="se">\</span> + <span class="nv">LINKFLAGS</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">LDFLAGS</span><span class="si">}</span><span class="s2">"</span> + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + dobin xboxdrv + doman doc/xboxdrv.1 + dodoc AUTHORS NEWS PROTOCOL README.md TODO + <span class="o">}</span> +</pre></div> +</div> +</section> +<section id="build-time-use-with-extra-dependencies"> +<h3>Build-time use with extra dependencies<a class="headerlink" href="#build-time-use-with-extra-dependencies" title="Permalink to this headline">¶</a></h3> +<p>If the package has extra dependencies, you need to take care of <em>all</em> +dependencies yourself. This is because <code class="docutils literal notranslate"><span class="pre">python_gen_any_dep</span></code> cannot +be combined.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">6</span>,7<span class="o">}</span> <span class="o">)</span> +</span><span class="hll"> inherit python-any-r1 scons-utils toolchain-funcs +</span> + <span class="nv">MY_P</span><span class="o">=</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span>-src-r<span class="si">${</span><span class="nv">PV</span><span class="p">/_rc/-rc</span><span class="si">}</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"A high-performance, open source, schema-free document-oriented database"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://www.mongodb.com"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://fastdl.mongodb.org/src/</span><span class="si">${</span><span class="nv">MY_P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + <span class="nv">S</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">WORKDIR</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">MY_P</span><span class="si">}</span><span class="s2">"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"Apache-2.0 SSPL-1"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~amd64"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"test +tools"</span> + <span class="nv">RESTRICT</span><span class="o">=</span><span class="s2">"!test? ( test )"</span> + + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"acct-group/mongodb</span> +<span class="s2"> acct-user/mongodb</span> +<span class="s2"> >=app-arch/snappy-1.1.3</span> +<span class="s2"> >=dev-cpp/yaml-cpp-0.6.2:=</span> +<span class="s2"> >=dev-libs/boost-1.70:=[threads(+)]</span> +<span class="s2"> >=dev-libs/libpcre-8.42[cxx]</span> +<span class="s2"> app-arch/zstd</span> +<span class="s2"> dev-libs/snowball-stemmer</span> +<span class="s2"> net-libs/libpcap</span> +<span class="s2"> >=sys-libs/zlib-1.2.11:="</span> + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> </span><span class="k">$(</span>python_gen_any_dep <span class="s1">'</span> +<span class="s1"> test? ( dev-python/pymongo[${PYTHON_USEDEP}] )</span> +<span class="hll"><span class="s1"> >=dev-util/scons-2.5.0[${PYTHON_USEDEP}]</span> +</span><span class="s1"> dev-python/cheetah3[${PYTHON_USEDEP}]</span> +<span class="s1"> dev-python/psutil[${PYTHON_USEDEP}]</span> +<span class="s1"> dev-python/pyyaml[${PYTHON_USEDEP}]</span> +<span class="s1"> virtual/python-typing[${PYTHON_USEDEP}]</span> +<span class="s1"> '</span><span class="k">)</span><span class="s2"></span> +<span class="s2"> sys-libs/ncurses:0=</span> +<span class="s2"> sys-libs/readline:0="</span> + <span class="nv">PDEPEND</span><span class="o">=</span><span class="s2">"tools? ( >=app-admin/mongo-tools-</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2"> )"</span> + + python_check_deps<span class="o">()</span> <span class="o">{</span> + <span class="k">if</span> use test<span class="p">;</span> <span class="k">then</span> + has_version <span class="s2">"dev-python/pymongo[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> <span class="o">||</span> + <span class="k">return</span> <span class="m">1</span> + <span class="k">fi</span> + +<span class="hll"> has_version <span class="s2">">=dev-util/scons-2.5.0[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> <span class="o">&&</span> +</span> has_version <span class="s2">"dev-python/cheetah3[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> <span class="o">&&</span> + has_version <span class="s2">"dev-python/psutil[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> <span class="o">&&</span> + has_version <span class="s2">"dev-python/pyyaml[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> <span class="o">&&</span> + has_version <span class="s2">"virtual/python-typing[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> + <span class="o">}</span> + + src_configure<span class="o">()</span> <span class="o">{</span> + <span class="nv">scons_opts</span><span class="o">=(</span> + <span class="nv">CC</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getCC<span class="k">)</span><span class="s2">"</span> + <span class="nv">CXX</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getCXX<span class="k">)</span><span class="s2">"</span> + + --disable-warnings-as-errors + --use-system-boost + --use-system-pcre + --use-system-snappy + --use-system-stemmer + --use-system-yaml + --use-system-zlib + --use-system-zstd + <span class="o">)</span> + + default + <span class="o">}</span> + + src_compile<span class="o">()</span> <span class="o">{</span> + escons <span class="s2">"</span><span class="si">${</span><span class="nv">scons_opts</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> core tools + <span class="o">}</span> + + src_test<span class="o">()</span> <span class="o">{</span> + <span class="s2">"</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">"</span> ./buildscripts/resmoke.py --dbpathPrefix<span class="o">=</span><span class="nb">test</span> <span class="se">\</span> + --suites core --jobs<span class="o">=</span><span class="k">$(</span>makeopts_jobs<span class="k">)</span> <span class="o">||</span> die <span class="s2">"Tests failed"</span> + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + escons <span class="s2">"</span><span class="si">${</span><span class="nv">scons_opts</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> --nostrip install --prefix<span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">ED</span><span class="si">}</span><span class="s2">"</span>/usr + <span class="o">}</span> +</pre></div> +</div> +</section> +<section id="single-impl-package"> +<h3>Single-impl package<a class="headerlink" href="#single-impl-package" title="Permalink to this headline">¶</a></h3> +<p>If the package needs to install some Python components, and single-impl +install is appropriate, you need to combine <code class="docutils literal notranslate"><span class="pre">python-single-r1</span></code> +with <code class="docutils literal notranslate"><span class="pre">scons-utils</span></code>. In this case, the eclass takes care of everything +needed for SCons, and you take care of everything needed for your +package.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">5</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 <span class="o">)</span> +</span><span class="hll"> inherit eutils python-single-r1 scons-utils toolchain-funcs +</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"Molecular dynamics by NMR data analysis"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://www.nmr-relax.com/"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"http://download.gna.org/relax/</span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.src.tar.bz2"</span> + + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"GPL-2"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~amd64 ~x86 ~amd64-linux ~x86-linux"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"test"</span> + <span class="nv">RESTRICT</span><span class="o">=</span><span class="s2">"!test? ( test )"</span> +<span class="hll"> <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2">"</span> +</span> + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep <span class="s2">"</span> +<span class="s2"> dev-python/Numdifftools[\${PYTHON_USEDEP}]</span> +<span class="s2"> || (</span> +<span class="s2"> dev-python/matplotlib-python2[\${PYTHON_USEDEP}]</span> +<span class="s2"> dev-python/matplotlib[\${PYTHON_USEDEP}]</span> +<span class="s2"> )</span> +<span class="s2"> || (</span> +<span class="s2"> dev-python/numpy-python2[\${PYTHON_USEDEP}]</span> +<span class="s2"> dev-python/numpy[\${PYTHON_USEDEP}]</span> +<span class="s2"> )</span> +<span class="s2"> dev-python/wxpython:</span><span class="si">${</span><span class="nv">WX_GTK_VER</span><span class="si">}</span><span class="s2">[\${PYTHON_USEDEP}]</span> +<span class="s2"> sci-chemistry/pymol[\${PYTHON_USEDEP}]</span> +<span class="s2"> >=sci-libs/bmrblib-1.0.3[\${PYTHON_USEDEP}]</span> +<span class="s2"> >=sci-libs/minfx-1.0.11[\${PYTHON_USEDEP}]</span> +<span class="s2"> || (</span> +<span class="s2"> sci-libs/scipy-python2[\${PYTHON_USEDEP}]</span> +<span class="s2"> sci-libs/scipy[\${PYTHON_USEDEP}]</span> +<span class="s2"> )</span> +<span class="s2"> "</span><span class="k">)</span><span class="s2"></span> +<span class="s2"> sci-chemistry/molmol</span> +<span class="s2"> sci-chemistry/vmd</span> +<span class="s2"> sci-visualization/grace</span> +<span class="s2"> sci-visualization/opendx"</span> + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> media-gfx/pngcrush</span> +<span class="s2"> test? ( </span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"> )</span> +<span class="s2"> "</span> + + src_compile<span class="o">()</span> <span class="o">{</span> + tc-export CC + escons + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + python_moduleinto <span class="si">${</span><span class="nv">PN</span><span class="si">}</span> + python_domodule * + + make_wrapper <span class="si">${</span><span class="nv">PN</span><span class="si">}</span>-nmr <span class="s2">"</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2"> </span><span class="k">$(</span>python_get_sitedir<span class="k">)</span><span class="s2">/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">.py </span><span class="nv">$@</span><span class="s2">"</span> + <span class="o">}</span> +</pre></div> +</div> +</section> +<section id="single-impl-package-with-conditional-python-install"> +<h3>Single-impl package with conditional Python install<a class="headerlink" href="#single-impl-package-with-conditional-python-install" title="Permalink to this headline">¶</a></h3> +<p>If the runtime part of the package uses Python only conditionally, +the use is similar to a package with unconditional build-time +and conditional runtime dependency on Python. That is, build-time +dependencies, <code class="docutils literal notranslate"><span class="pre">REQUIRED_USE</span></code> and <code class="docutils literal notranslate"><span class="pre">pkg_setup</span></code> must be called +unconditionally.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> <span class="o">)</span> +</span> + <span class="nv">FORTRAN_NEEDED</span><span class="o">=</span>fortran + <span class="nv">FORTRAN_STANDARD</span><span class="o">=</span><span class="m">90</span> + +<span class="hll"> inherit python-single-r1 scons-utils toolchain-funcs +</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"Object-oriented tool suite for chemical kinetics, thermodynamics, and transport"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://www.cantera.org"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://github.com/Cantera/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">/archive/v</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">.tar.gz -> </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"BSD"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"amd64 ~x86"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"fortran pch +python"</span> + + <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">"</span> +<span class="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2"></span> +</span><span class="s2"> "</span> + + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> python? (</span> +<span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep <span class="s1">'</span> +<span class="s1"> dev-python/numpy[${PYTHON_USEDEP}]</span> +<span class="s1"> '</span><span class="k">)</span><span class="s2"></span> +<span class="s2"> )</span> +<span class="s2"> <sci-libs/sundials-5.1.0:0=</span> +<span class="s2"> "</span> + + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> </span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> dev-cpp/eigen:3</span> +<span class="s2"> dev-libs/boost</span> +<span class="s2"> dev-libs/libfmt</span> +<span class="s2"> python? (</span> +<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep <span class="s1">'</span> +<span class="s1"> dev-python/cython[${PYTHON_USEDEP}]</span> +<span class="s1"> '</span><span class="k">)</span><span class="s2"></span> +<span class="s2"> )</span> +<span class="s2"> "</span> + + pkg_setup<span class="o">()</span> <span class="o">{</span> + fortran-2_pkg_setup +<span class="hll"> python-single-r1_pkg_setup +</span> <span class="o">}</span> + + src_configure<span class="o">()</span> <span class="o">{</span> + <span class="nv">scons_vars</span><span class="o">=(</span> + <span class="nv">CC</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getCC<span class="k">)</span><span class="s2">"</span> + <span class="nv">CXX</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getCXX<span class="k">)</span><span class="s2">"</span> + <span class="nv">cc_flags</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">CXXFLAGS</span><span class="si">}</span><span class="s2">"</span> + <span class="nv">cxx_flags</span><span class="o">=</span><span class="s2">"-std=c++11"</span> + <span class="nv">debug</span><span class="o">=</span><span class="s2">"no"</span> + <span class="nv">FORTRAN</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>tc-getFC<span class="k">)</span><span class="s2">"</span> + <span class="nv">FORTRANFLAGS</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">CXXFLAGS</span><span class="si">}</span><span class="s2">"</span> + <span class="nv">optimize_flags</span><span class="o">=</span><span class="s2">"-Wno-inline"</span> + <span class="nv">renamed_shared_libraries</span><span class="o">=</span><span class="s2">"no"</span> + <span class="nv">use_pch</span><span class="o">=</span><span class="k">$(</span>usex pch<span class="k">)</span> + <span class="nv">system_fmt</span><span class="o">=</span><span class="s2">"y"</span> + <span class="nv">system_sundials</span><span class="o">=</span><span class="s2">"y"</span> + <span class="nv">system_eigen</span><span class="o">=</span><span class="s2">"y"</span> + <span class="nv">env_vars</span><span class="o">=</span><span class="s2">"all"</span> + <span class="nv">extra_inc_dirs</span><span class="o">=</span><span class="s2">"/usr/include/eigen3"</span> + <span class="o">)</span> + + <span class="nv">scons_targets</span><span class="o">=(</span> + <span class="nv">f90_interface</span><span class="o">=</span><span class="k">$(</span>usex fortran y n<span class="k">)</span> + <span class="nv">python2_package</span><span class="o">=</span><span class="s2">"none"</span> + <span class="o">)</span> + + <span class="k">if</span> use python <span class="p">;</span> <span class="k">then</span> + <span class="nv">scons_targets</span><span class="o">+=(</span> <span class="nv">python3_package</span><span class="o">=</span><span class="s2">"full"</span> <span class="nv">python3_cmd</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">"</span> <span class="o">)</span> + <span class="k">else</span> + <span class="nv">scons_targets</span><span class="o">+=(</span> <span class="nv">python3_package</span><span class="o">=</span><span class="s2">"none"</span> <span class="o">)</span> + <span class="k">fi</span> + <span class="o">}</span> + + src_compile<span class="o">()</span> <span class="o">{</span> + escons build <span class="s2">"</span><span class="si">${</span><span class="nv">scons_vars</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> <span class="s2">"</span><span class="si">${</span><span class="nv">scons_targets</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> <span class="nv">prefix</span><span class="o">=</span><span class="s2">"/usr"</span> + <span class="o">}</span> + + src_test<span class="o">()</span> <span class="o">{</span> + escons <span class="nb">test</span> + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + escons install <span class="nv">stage_dir</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">D</span><span class="si">}</span><span class="s2">"</span> <span class="nv">libdirname</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>get_libdir<span class="k">)</span><span class="s2">"</span> + python_optimize + <span class="o">}</span> +</pre></div> +</div> +</section> +<section id="pure-python-multi-impl-package"> +<h3>Pure Python multi-impl package<a class="headerlink" href="#pure-python-multi-impl-package" title="Permalink to this headline">¶</a></h3> +<p>When you are dealing with a pure Python package using SCons, it makes +sense to use plain <code class="docutils literal notranslate"><span class="pre">python-r1</span></code> API. This means that SCons is going +to be called from a <code class="docutils literal notranslate"><span class="pre">python_foreach_impl</span></code> loop only.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 <span class="o">)</span> +</span><span class="hll"> inherit fortran-2 python-r1 scons-utils toolchain-funcs +</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"Automated pipeline for performing Poisson-Boltzmann electrostatics calculations"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://www.poissonboltzmann.org/"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://github.com/Electrostatics/apbs-</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">/releases/download/</span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">-src-</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">.tar.gz"</span> + + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"BSD"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"amd64 x86 ~amd64-linux ~x86-linux"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"opal"</span> +<span class="hll"> <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2">"</span> +</span> + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> || (</span> +<span class="s2"> dev-python/numpy-python2[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span> +<span class="s2"> dev-python/numpy[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span> +<span class="s2"> )</span> +<span class="s2"> sci-chemistry/openbabel-python[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span> +<span class="s2"> opal? ( dev-python/zsi[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">] )</span> +<span class="s2"> "</span> + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="s2"> dev-lang/swig:0</span> +<span class="hll"><span class="s2"> dev-util/scons[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> +</span> + src_prepare<span class="o">()</span> <span class="o">{</span> + find -type f <span class="se">\(</span> -name <span class="s2">"*.pyc"</span> -o -name <span class="s2">"*.pyo"</span> <span class="se">\)</span> -delete <span class="o">||</span> die + + eapply <span class="s2">"</span><span class="si">${</span><span class="nv">PATCHES</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> + eapply_user + rm -rf scons <span class="o">||</span> die + + python_copy_sources + <span class="o">}</span> + + python_configure<span class="o">()</span> <span class="o">{</span> + tc-export CXX + cat > <span class="s2">"</span><span class="si">${</span><span class="nv">BUILD_DIR</span><span class="si">}</span><span class="s2">"</span>/build_config.py <span class="s"><<-EOF || die</span> +<span class="s"> PREFIX="${D}/$(python_get_sitedir)/${PN}"</span> +<span class="s"> APBS="${EPREFIX}/usr/bin/apbs"</span> +<span class="s"> MAX_ATOMS=10000</span> +<span class="s"> BUILD_PDB2PKA=False</span> +<span class="s"> REBUILD_SWIG=True</span> +<span class="s"> EOF</span> + <span class="o">}</span> + + src_configure<span class="o">()</span> <span class="o">{</span> + python_foreach_impl python_configure + <span class="o">}</span> + + src_compile<span class="o">()</span> <span class="o">{</span> +<span class="hll"> python_foreach_impl run_in_build_dir escons +</span> <span class="o">}</span> + + python_install<span class="o">()</span> <span class="o">{</span> + <span class="nb">cd</span> <span class="s2">"</span><span class="si">${</span><span class="nv">BUILD_DIR</span><span class="si">}</span><span class="s2">"</span> <span class="o">||</span> die +<span class="hll"> escons install +</span> python_optimize + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + python_foreach_impl python_install + <span class="o">}</span> +</pre></div> +</div> +</section> +<section id="hybrid-python-r1-scons-package"> +<h3>Hybrid python-r1 + SCons package<a class="headerlink" href="#hybrid-python-r1-scons-package" title="Permalink to this headline">¶</a></h3> +<p>Finally, let’s consider a package that uses SCons as a build system +and installs Python components independently of it. This could be +e.g. a C/C++ program with separate Python bindings.</p> +<p>Let’s presume that the Python bindings need to be installed manually, +and they support a wider target range than the build system. In this +case, the any-r1 API is recommended.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + + <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 python3_6 <span class="o">)</span> + inherit python-r1 scons-utils toolchain-funcs + + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"GPS daemon and library for USB/serial GPS devices and GPS/mapping clients"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://gpsd.gitlab.io/gpsd/"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"mirror://nongnu/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"BSD"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0/24"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86"</span> + + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"python"</span> + <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> python? ( </span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2"> )"</span> + + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"</span> +<span class="s2"> >=net-misc/pps-tools-0.0.20120407</span> +<span class="s2"> python? ( </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"> )"</span> + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2"></span> +<span class="hll"><span class="s2"> </span><span class="k">$(</span>python_gen_any_dep <span class="s1">'>=dev-util/scons-2.3.0[${PYTHON_USEDEP}]'</span> -2<span class="k">)</span><span class="s2"></span> +</span><span class="s2"> virtual/pkgconfig"</span> + +<span class="hll"> python_check_deps<span class="o">()</span> <span class="o">{</span> +</span><span class="hll"> has_version <span class="s2">">=dev-util/scons-2.3.0[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]"</span> +</span><span class="hll"> <span class="o">}</span> +</span> + src_configure<span class="o">()</span> <span class="o">{</span> + <span class="nv">myesconsargs</span><span class="o">=(</span> + <span class="nv">prefix</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">EPREFIX</span><span class="si">}</span><span class="s2">/usr"</span> + <span class="nv">libdir</span><span class="o">=</span><span class="s2">"\$prefix/</span><span class="k">$(</span>get_libdir<span class="k">)</span><span class="s2">"</span> + <span class="nv">udevdir</span><span class="o">=</span><span class="s2">"</span><span class="k">$(</span>get_udevdir<span class="k">)</span><span class="s2">"</span> + <span class="nv">chrpath</span><span class="o">=</span>False + <span class="nv">gpsd_user</span><span class="o">=</span>gpsd + <span class="nv">gpsd_group</span><span class="o">=</span>uucp + <span class="nv">nostrip</span><span class="o">=</span>True + <span class="nv">manbuild</span><span class="o">=</span>False + <span class="k">$(</span>use_scons python<span class="k">)</span> + <span class="o">)</span> + + <span class="c1"># SConstruct uses py2 constructs</span> +<span class="hll"> python_setup -2 +</span> <span class="o">}</span> + + src_compile<span class="o">()</span> <span class="o">{</span> + <span class="nb">export</span> <span class="nv">CHRPATH</span><span class="o">=</span> + tc-export CC CXX PKG_CONFIG + <span class="nb">export</span> <span class="nv">SHLINKFLAGS</span><span class="o">=</span><span class="si">${</span><span class="nv">LDFLAGS</span><span class="si">}</span> <span class="nv">LINKFLAGS</span><span class="o">=</span><span class="si">${</span><span class="nv">LDFLAGS</span><span class="si">}</span> + escons + <span class="o">}</span> + + src_install<span class="o">()</span> <span class="o">{</span> + <span class="nv">DESTDIR</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">D</span><span class="si">}</span><span class="s2">"</span> escons install + use python <span class="o">&&</span> python_foreach_impl python_domodule gps + <span class="o">}</span> +</pre></div> +</div> +</section> +</section> +<section id="waf"> +<h2>waf<a class="headerlink" href="#waf" title="Permalink to this headline">¶</a></h2> +<p>The <a class="reference external" href="https://waf.io/">waf</a> build system is written in Python and bundled with the packages +using it. Therefore, it is necessary to combine <code class="docutils literal notranslate"><span class="pre">waf-utils</span></code> eclass +with one of the Python eclasses.</p> +<p>Since SCons does not have any dependencies beside the Python +interpreter, the integration is generally simple. You consider waf +like any other build-time script, and use the eclass implied by other +Python components in package.</p> +<p>Furthermore, since waf requires threading support in the Python +interpreter, it is necessary to add <code class="docutils literal notranslate"><span class="pre">PYTHON_REQ_USE='threads(+)'</span></code> in +all waf packages (combined with individual package requirements if +applicable).</p> +<section id="build-time-use"> +<h3>Build-time use<a class="headerlink" href="#build-time-use" title="Permalink to this headline">¶</a></h3> +<p>If waf is the only build-time Python script in the package, it is only +necessary to add <code class="docutils literal notranslate"><span class="pre">PYTHON_REQ_USE</span></code> and <code class="docutils literal notranslate"><span class="pre">${PYTHON_DEPS}</span></code> to build-time +dependencies. If the package had other Python dependencies, you would +specify them instead.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span> + +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 <span class="o">)</span> +</span><span class="hll"> <span class="nv">PYTHON_REQ_USE</span><span class="o">=</span><span class="s1">'threads(+)'</span> +</span> <span class="nv">NO_WAF_LIBDIR</span><span class="o">=</span>yes + +<span class="hll"> inherit python-any-r1 waf-utils +</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"C++ Template Unit Test Framework"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"http://mrzechonek.github.io/tut-framework/"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://github.com/mrzechonek/tut-framework/archive/</span><span class="si">${</span><span class="nv">PV</span><span class="p">//./-</span><span class="si">}</span><span class="s2">.tar.gz -> </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + <span class="nv">S</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">WORKDIR</span><span class="si">}</span><span class="s2">/tut-framework-</span><span class="si">${</span><span class="nv">PV</span><span class="p">//./-</span><span class="si">}</span><span class="s2">"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"BSD-2"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~amd64 ~x86"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">""</span> + +<span class="hll"> <span class="nv">BDEPEND</span><span class="o">=</span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span> +</span></pre></div> +</div> +</section> +<section id="id1"> +<h3>Single-impl package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> +<p>The rules for integrating simple-impl package are roughly the same +as for pure <code class="docutils literal notranslate"><span class="pre">python-single-r1</span></code> use. Again, waf requires only plain +build-time <code class="docutils literal notranslate"><span class="pre">${PYTHON_DEPS}</span></code> and <code class="docutils literal notranslate"><span class="pre">PYTHON_REQ_USE</span></code>.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2020 Gentoo Authors</span> + <span class="c1"># Distributed under the terms of the GNU General Public License v2</span> + + <span class="nv">EAPI</span><span class="o">=</span><span class="m">6</span> +<span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 <span class="o">)</span> +</span><span class="hll"> <span class="nv">PYTHON_REQ_USE</span><span class="o">=</span><span class="s2">"threads"</span> +</span> +<span class="hll"> inherit python-single-r1 waf-utils +</span> + <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">"An LDAP-like embedded database"</span> + <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">"https://ldb.samba.org/"</span> + <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">"https://www.samba.org/ftp/pub/</span><span class="si">${</span><span class="nv">PN</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz"</span> + + <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">"LGPL-3"</span> + <span class="nv">SLOT</span><span class="o">=</span><span class="s2">"0/</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">"</span> + <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">"~alpha amd64 arm ~arm64 ~hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86"</span> + <span class="nv">IUSE</span><span class="o">=</span><span class="s2">"+ldap python"</span> + <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">"python? ( </span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2"> )"</span> + + <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">"!elibc_FreeBSD? ( dev-libs/libbsd )</span> +<span class="s2"> dev-libs/popt</span> +<span class="s2"> >=sys-libs/talloc-2.1.8[python?]</span> +<span class="s2"> >=sys-libs/tevent-0.9.31[python(+)?]</span> +<span class="s2"> >=sys-libs/tdb-1.3.12[python?]</span> +<span class="s2"> python? ( </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"> )</span> +<span class="s2"> ldap? ( net-nds/openldap )</span> +<span class="s2"> "</span> + + <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">"dev-libs/libxslt</span> +<span class="s2"> virtual/pkgconfig</span> +<span class="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span><span class="s2"></span> +</span><span class="s2"> </span><span class="si">${</span><span class="nv">RDEPEND</span><span class="si">}</span><span class="s2">"</span> + + <span class="nv">WAF_BINARY</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">S</span><span class="si">}</span><span class="s2">/buildtools/bin/waf"</span> + + <span class="nv">PATCHES</span><span class="o">=(</span> + <span class="s2">"</span><span class="si">${</span><span class="nv">FILESDIR</span><span class="si">}</span><span class="s2">"</span>/<span class="si">${</span><span class="nv">PN</span><span class="si">}</span>-1.1.27-optional_packages.patch + <span class="s2">"</span><span class="si">${</span><span class="nv">FILESDIR</span><span class="si">}</span><span class="s2">"</span>/<span class="si">${</span><span class="nv">P</span><span class="si">}</span>-disable-python.patch + <span class="o">)</span> + + pkg_setup<span class="o">()</span> <span class="o">{</span> +<span class="hll"> python-single-r1_pkg_setup +</span> <span class="o">}</span> + + src_configure<span class="o">()</span> <span class="o">{</span> + <span class="nb">local</span> <span class="nv">myconf</span><span class="o">=(</span> + <span class="k">$(</span>usex ldap <span class="s1">''</span> --disable-ldap<span class="k">)</span> + <span class="k">$(</span>usex python <span class="s1">''</span> <span class="s1">'--disable-python'</span><span class="k">)</span> + --disable-rpath + --disable-rpath-install --bundled-libraries<span class="o">=</span>NONE + --with-modulesdir<span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">EPREFIX</span><span class="si">}</span><span class="s2">"</span>/usr/<span class="k">$(</span>get_libdir<span class="k">)</span>/samba + --builtin-libraries<span class="o">=</span>NONE + <span class="o">)</span> + waf-utils_src_configure <span class="s2">"</span><span class="si">${</span><span class="nv">myconf</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span> + <span class="o">}</span> +</pre></div> +</div> +</section> +</section> +</section> + + + </div> + + </div> + </div> + <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> + <div class="sphinxsidebarwrapper"> +<h1 class="logo"><a href="index.html">Gentoo Python Guide</a></h1> + + + + + + + + +<h3>Navigation</h3> +<p class="caption" role="heading"><span class="caption-text">Contents:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="preface.html">Preface</a></li> +<li class="toctree-l1"><a class="reference internal" href="interpreter.html">Python interpreters</a></li> +<li class="toctree-l1"><a class="reference internal" href="eclass.html">Choosing between Python eclasses</a></li> +<li class="toctree-l1"><a class="reference internal" href="basic.html">Common basics</a></li> +<li class="toctree-l1"><a class="reference internal" href="any.html">python-any-r1 — build-time dependency</a></li> +<li class="toctree-l1"><a class="reference internal" href="single.html">python-single-r1 — single-impl packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="multi.html">python-r1 — multi-impl packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="distutils.html">distutils-r1 — standard Python build systems</a></li> +<li class="toctree-l1"><a class="reference internal" href="distutils-legacy.html">distutils-r1 legacy concepts</a></li> +<li class="toctree-l1"><a class="reference internal" href="helper.html">Common helper functions</a></li> +<li class="toctree-l1"><a class="reference internal" href="depend.html">Advanced dependencies</a></li> +<li class="toctree-l1"><a class="reference internal" href="test.html">Resolving test suite problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="pytest.html">pytest recipes</a></li> +<li class="toctree-l1"><a class="reference internal" href="concept.html">Advanced concepts</a></li> +<li class="toctree-l1"><a class="reference internal" href="expert-multi.html">Expert python-r1 usage</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Integration with build systems written in Python</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#meson">Meson</a></li> +<li class="toctree-l2"><a class="reference internal" href="#scons">SCons</a></li> +<li class="toctree-l2"><a class="reference internal" href="#waf">waf</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="porting.html">Porting tips</a></li> +<li class="toctree-l1"><a class="reference internal" href="migration.html">Migration guides</a></li> +<li class="toctree-l1"><a class="reference internal" href="package-maintenance.html">Python package maintenance</a></li> +<li class="toctree-l1"><a class="reference internal" href="interpreter-maintenance.html">Maintenance of Python implementations</a></li> +</ul> + +<div class="relations"> +<h3>Related Topics</h3> +<ul> + <li><a href="index.html">Documentation overview</a><ul> + <li>Previous: <a href="expert-multi.html" title="previous chapter">Expert python-r1 usage</a></li> + <li>Next: <a href="porting.html" title="next chapter">Porting tips</a></li> + </ul></li> +</ul> +</div> +<div id="searchbox" style="display: none" role="search"> + <h3 id="searchlabel">Quick search</h3> + <div class="searchformwrapper"> + <form class="search" action="search.html" method="get"> + <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> + <input type="submit" value="Go" /> + </form> + </div> +</div> +<script>$('#searchbox').show(0);</script> + + + + + + + + + </div> + </div> + <div class="clearer"></div> + </div> + <div class="footer"> + ©2020, Michał Górny, license: CC BY 4.0. + + | + Powered by <a href="http://sphinx-doc.org/">Sphinx 4.4.0</a> + & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> + + | + <a href="_sources/buildsys.rst.txt" + rel="nofollow">Page source</a> + </div> + + + + + </body> +</html>
\ No newline at end of file |