summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'guide/distutils.html')
-rw-r--r--guide/distutils.html703
1 files changed, 350 insertions, 353 deletions
diff --git a/guide/distutils.html b/guide/distutils.html
index 73d1297..aa1b028 100644
--- a/guide/distutils.html
+++ b/guide/distutils.html
@@ -10,9 +10,6 @@
<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/_sphinx_javascript_frameworks_compat.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<link rel="index" title="Index" href="genindex.html" />
@@ -79,22 +76,22 @@ PEP 517 mode and declare the build system used. The eclass
automatically generates a build-time dependency on the packages needed
for the build system.</p>
<p>The simplest case of ebuild is:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
- <span class="c1"># Distributed under the terms of the GNU General Public License v2</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
+<span class="w"> </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">8</span>
+<span class="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">8</span>
-<span class="hll"> <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
-</span><span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span> pypy3 <span class="o">)</span>
-</span><span class="hll"> inherit distutils-r1
+<span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
+</span><span class="hll"><span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
+</span><span class="hll"><span class="w"> </span>inherit<span class="w"> </span>distutils-r1
</span>
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Makes working with XML feel like you are working with JSON&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/martinblech/xmltodict/ https://pypi.org/project/xmltodict/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Makes working with XML feel like you are working with JSON&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/martinblech/xmltodict/ https://pypi.org/project/xmltodict/&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~x86&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~x86&quot;</span>
</pre></div>
</div>
</section>
@@ -190,36 +187,36 @@ maximum compatibility between these two modes, so most of the existing
code will work with either. However, the functions specific to
the underlying eclass are not compatible — e.g. the dependencies need
to be rewritten.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
- <span class="c1"># Distributed under the terms of the GNU General Public License v2</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
+<span class="w"> </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="w"> </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> python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span> <span class="o">)</span>
- <span class="nv">PYTHON_REQ_USE</span><span class="o">=</span><span class="s2">&quot;readline&quot;</span>
- <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
-<span class="hll"> <span class="nv">DISTUTILS_SINGLE_IMPL</span><span class="o">=</span><span class="m">1</span>
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span><span class="w"> </span><span class="o">)</span>
+<span class="w"> </span><span class="nv">PYTHON_REQ_USE</span><span class="o">=</span><span class="s2">&quot;readline&quot;</span>
+<span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
+<span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_SINGLE_IMPL</span><span class="o">=</span><span class="m">1</span>
</span>
- inherit distutils-r1
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Pythonic layer on top of the ROOT framework&#39;s PyROOT bindings&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;http://rootpy.org&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Pythonic layer on top of the ROOT framework&#39;s PyROOT bindings&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;http://rootpy.org&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;BSD&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;BSD&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> sci-physics/root:=[</span><span class="si">${</span><span class="nv">PYTHON_SINGLE_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> dev-python/root_numpy[</span><span class="si">${</span><span class="nv">PYTHON_SINGLE_USEDEP</span><span class="si">}</span><span class="s2">]</span>
-<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep <span class="s1">&#39;</span>
+<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep<span class="w"> </span><span class="s1">&#39;</span>
<span class="s1"> dev-python/matplotlib[${PYTHON_USEDEP}]</span>
<span class="s1"> dev-python/pytables[${PYTHON_USEDEP}]</span>
<span class="s1"> dev-python/termcolor[${PYTHON_USEDEP}]</span>
<span class="s1"> &#39;</span><span class="k">)</span><span class="s2">&quot;</span>
- <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> sci-physics/root[</span><span class="si">${</span><span class="nv">PYTHON_SINGLE_USEDEP</span><span class="si">}</span><span class="s2">]&quot;</span>
</pre></div>
</div>
@@ -230,9 +227,9 @@ to be rewritten.</p>
system. However, PEP 517 mode provides support for other build systems.</p>
<p>In order to determine the correct build system used, read
the <code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code> file. An example file could start with:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit_core &gt;=3.6.0,&lt;4&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit_core.buildapi&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit_core &gt;=3.6.0,&lt;4&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit_core.buildapi&quot;</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">requires</span></code> key indicates the packages required in order to run
@@ -322,17 +319,17 @@ for them.</p>
<p>Some packages are still found using the historical flit build backend.
Their <code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code> files contain a section similar
to the following:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit.buildapi&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit.buildapi&quot;</span>
</pre></div>
</div>
<p>This backend requires installing the complete flit package manager.
Instead, the package should be fixed upstream to use flit_core
per <a class="reference external" href="https://flit.readthedocs.io/en/latest/pyproject_toml.html#build-system-section">flit build system section documentation</a> instead:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit_core&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit_core.buildapi&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;flit_core&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;flit_core.buildapi&quot;</span>
</pre></div>
</div>
<p>flit_core produces identical artifacts to flit. At the same time, it
@@ -343,16 +340,16 @@ PEP 517 builds faster.</p>
<h3>poetry.masonry.api<a class="headerlink" href="#poetry-masonry-api" title="Permalink to this heading">¶</a></h3>
<p>A similar problem applies to the packages using poetry. The respective
<code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code> files contain:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;poetry&gt;=0.12&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;poetry.masonry.api&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;poetry&gt;=0.12&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;poetry.masonry.api&quot;</span>
</pre></div>
</div>
<p>Instead, the lightweight poetry-core module should be used per <a class="reference external" href="https://python-poetry.org/docs/pyproject/#poetry-and-pep-517">poetry
PEP-517 documentation</a>:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;poetry_core&gt;=1.0.0&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;poetry.core.masonry.api&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;poetry_core&gt;=1.0.0&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;poetry.core.masonry.api&quot;</span>
</pre></div>
</div>
<p>poetry-core produces identical artifacts to poetry. It has smaller
@@ -361,17 +358,17 @@ dependency footprint and makes isolated builds much faster.</p>
<section id="setuptools-build-meta-legacy">
<h3>setuptools.build_meta:__legacy__<a class="headerlink" href="#setuptools-build-meta-legacy" title="Permalink to this heading">¶</a></h3>
<p>Some packages using setuptools specify the following:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;setuptools&gt;=40.8.0&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;wheel&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;setuptools.build_meta:__legacy__&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;setuptools&gt;=40.8.0&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;wheel&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;setuptools.build_meta:__legacy__&quot;</span>
</pre></div>
</div>
<p>This is incorrect, as the legacy backend is intended to be used only
as an implicit fallback. All packages should be using the regular
backend instead:</p>
-<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span><span class="w"></span>
-<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;setuptools&gt;=40.8.0&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;setuptools.build_meta&quot;</span><span class="w"></span>
+<div class="highlight-toml notranslate"><div class="highlight"><pre><span></span><span class="k">[build-system]</span>
+<span class="n">requires</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">&quot;setuptools&gt;=40.8.0&quot;</span><span class="p">]</span>
+<span class="n">build-backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;setuptools.build_meta&quot;</span>
</pre></div>
</div>
<p>Please also note that the <code class="docutils literal notranslate"><span class="pre">wheel</span></code> package should <em>not</em> be listed
@@ -389,35 +386,35 @@ from VCS tags. However, this works correctly only when the package
is built from VCS checkout or an <code class="docutils literal notranslate"><span class="pre">sdist</span></code> archive containing
pregenerated metadata. It does not work when building from a GitHub
snapshot:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Traceback <span class="o">(</span>most recent call last<span class="o">)</span>:
- File <span class="s2">&quot;/tmp/executing-0.5.2/setup.py&quot;</span>, line <span class="m">4</span>, <span class="k">in</span> &lt;module&gt;
- setup<span class="o">()</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/__init__.py&quot;</span>, line <span class="m">143</span>, <span class="k">in</span> setup
- _install_setup_requires<span class="o">(</span>attrs<span class="o">)</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/__init__.py&quot;</span>, line <span class="m">131</span>, <span class="k">in</span> _install_setup_requires
- <span class="nv">dist</span> <span class="o">=</span> distutils.core.Distribution<span class="o">(</span>dict<span class="o">(</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/dist.py&quot;</span>, line <span class="m">425</span>, <span class="k">in</span> __init__
- _Distribution.__init__<span class="o">(</span>self, <span class="o">{</span>
- File <span class="s2">&quot;/usr/lib/python3.9/distutils/dist.py&quot;</span>, line <span class="m">292</span>, <span class="k">in</span> __init__
- self.finalize_options<span class="o">()</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/dist.py&quot;</span>, line <span class="m">717</span>, <span class="k">in</span> finalize_options
- ep<span class="o">(</span>self<span class="o">)</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/integration.py&quot;</span>, line <span class="m">48</span>, <span class="k">in</span> infer_version
- dist.metadata.version <span class="o">=</span> _get_version<span class="o">(</span>config<span class="o">)</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/__init__.py&quot;</span>, line <span class="m">148</span>, <span class="k">in</span> _get_version
- <span class="nv">parsed_version</span> <span class="o">=</span> _do_parse<span class="o">(</span>config<span class="o">)</span>
- File <span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/__init__.py&quot;</span>, line <span class="m">110</span>, <span class="k">in</span> _do_parse
- raise LookupError<span class="o">(</span>
-LookupError: setuptools-scm was unable to detect version <span class="k">for</span> <span class="s1">&#39;/tmp/executing-0.5.2&#39;</span>.
-
-Make sure you<span class="s1">&#39;re either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub&#39;</span>s tarballs, a git checkout without the .git folder<span class="o">)</span> don<span class="s1">&#39;t contain the necessary metadata and will not work.</span>
-
-<span class="s1">For example, if you&#39;</span>re using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg<span class="o">=</span>proj
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Traceback<span class="w"> </span><span class="o">(</span>most<span class="w"> </span>recent<span class="w"> </span>call<span class="w"> </span>last<span class="o">)</span>:
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/tmp/executing-0.5.2/setup.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">4</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
+<span class="w"> </span>setup<span class="o">()</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/__init__.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">143</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>setup
+<span class="w"> </span>_install_setup_requires<span class="o">(</span>attrs<span class="o">)</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/__init__.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">131</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>_install_setup_requires
+<span class="w"> </span><span class="nv">dist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>distutils.core.Distribution<span class="o">(</span>dict<span class="o">(</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/dist.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">425</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>__init__
+<span class="w"> </span>_Distribution.__init__<span class="o">(</span>self,<span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/distutils/dist.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">292</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>__init__
+<span class="w"> </span>self.finalize_options<span class="o">()</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools/dist.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">717</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>finalize_options
+<span class="w"> </span>ep<span class="o">(</span>self<span class="o">)</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/integration.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">48</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>infer_version
+<span class="w"> </span>dist.metadata.version<span class="w"> </span><span class="o">=</span><span class="w"> </span>_get_version<span class="o">(</span>config<span class="o">)</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/__init__.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">148</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>_get_version
+<span class="w"> </span><span class="nv">parsed_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>_do_parse<span class="o">(</span>config<span class="o">)</span>
+<span class="w"> </span>File<span class="w"> </span><span class="s2">&quot;/usr/lib/python3.9/site-packages/setuptools_scm/__init__.py&quot;</span>,<span class="w"> </span>line<span class="w"> </span><span class="m">110</span>,<span class="w"> </span><span class="k">in</span><span class="w"> </span>_do_parse
+<span class="w"> </span>raise<span class="w"> </span>LookupError<span class="o">(</span>
+LookupError:<span class="w"> </span>setuptools-scm<span class="w"> </span>was<span class="w"> </span>unable<span class="w"> </span>to<span class="w"> </span>detect<span class="w"> </span>version<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="s1">&#39;/tmp/executing-0.5.2&#39;</span>.
+
+Make<span class="w"> </span>sure<span class="w"> </span>you<span class="s1">&#39;re either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub&#39;</span>s<span class="w"> </span>tarballs,<span class="w"> </span>a<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>without<span class="w"> </span>the<span class="w"> </span>.git<span class="w"> </span>folder<span class="o">)</span><span class="w"> </span>don<span class="s1">&#39;t contain the necessary metadata and will not work.</span>
+
+<span class="s1">For example, if you&#39;</span>re<span class="w"> </span>using<span class="w"> </span>pip,<span class="w"> </span>instead<span class="w"> </span>of<span class="w"> </span>https://github.com/user/proj/archive/master.zip<span class="w"> </span>use<span class="w"> </span>git+https://github.com/user/proj.git#egg<span class="o">=</span>proj
</pre></div>
</div>
<p>This problem can be resolved by providing the correct version externally
via <code class="docutils literal notranslate"><span class="pre">SETUPTOOLS_SCM_PRETEND_VERSION</span></code>:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span> <span class="nv">SETUPTOOLS_SCM_PRETEND_VERSION</span><span class="o">=</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">SETUPTOOLS_SCM_PRETEND_VERSION</span><span class="o">=</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span>
</pre></div>
</div>
<p>The <a class="reference external" href="https://pypi.org/project/flit_scm/">flit_scm</a> and <a class="reference external" href="https://pypi.org/project/hatch-vcs/">hatch-vcs</a> packages are both built on top
@@ -440,8 +437,8 @@ as simple as removing the pregenerated files:</p>
<span class="s2"> dev-python/cython[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2">&quot;</span>
-src_configure<span class="o">()</span> <span class="o">{</span>
- rm src/frobnicate.c <span class="o">||</span> die
+src_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>rm<span class="w"> </span>src/frobnicate.c<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
<span class="o">}</span>
</pre></div>
</div>
@@ -452,8 +449,8 @@ to run Cythonize. It is also possible to call Cython directly:</p>
<span class="s2"> dev-python/cython[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2">&quot;</span>
-src_configure<span class="o">()</span> <span class="o">{</span>
- cython -3 jq.pyx -o jq.c <span class="o">||</span> die
+src_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>cython<span class="w"> </span>-3<span class="w"> </span>jq.pyx<span class="w"> </span>-o<span class="w"> </span>jq.c<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
<span class="o">}</span>
</pre></div>
</div>
@@ -471,19 +468,19 @@ generally does not cause immediate build failures but results in broken
extensions causing cryptic issues in reverse dependencies.</p>
<p>For example, a miscompilation of <code class="docutils literal notranslate"><span class="pre">dev-python/pandas</span></code> have recently
caused breakage in <code class="docutils literal notranslate"><span class="pre">dev-python/dask</span></code>:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>/usr/lib/python3.8/site-packages/pandas/__init__.py:29: <span class="k">in</span> &lt;module&gt;
- from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
-/usr/lib/python3.8/site-packages/pandas/_libs/__init__.py:13: <span class="k">in</span> &lt;module&gt;
- from pandas._libs.interval import Interval
-pandas/_libs/interval.pyx:1: <span class="k">in</span> init pandas._libs.interval
- ???
-pandas/_libs/hashtable.pyx:1: <span class="k">in</span> init pandas._libs.hashtable
- ???
-pandas/_libs/missing.pyx:1: <span class="k">in</span> init pandas._libs.missing
- ???
-/usr/lib/python3.8/site-packages/pandas/_libs/tslibs/__init__.py:30: <span class="k">in</span> &lt;module&gt;
- from .conversion import OutOfBoundsTimedelta, localize_pydatetime
-E ImportError: /usr/lib/python3.8/site-packages/pandas/_libs/tslibs/conversion.cpython-38-x86_64-linux-gnu.so: undefined symbol: pandas_datetime_to_datetimestruct
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>/usr/lib/python3.8/site-packages/pandas/__init__.py:29:<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
+<span class="w"> </span>from<span class="w"> </span>pandas._libs<span class="w"> </span>import<span class="w"> </span>hashtable<span class="w"> </span>as<span class="w"> </span>_hashtable,<span class="w"> </span>lib<span class="w"> </span>as<span class="w"> </span>_lib,<span class="w"> </span>tslib<span class="w"> </span>as<span class="w"> </span>_tslib
+/usr/lib/python3.8/site-packages/pandas/_libs/__init__.py:13:<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
+<span class="w"> </span>from<span class="w"> </span>pandas._libs.interval<span class="w"> </span>import<span class="w"> </span>Interval
+pandas/_libs/interval.pyx:1:<span class="w"> </span><span class="k">in</span><span class="w"> </span>init<span class="w"> </span>pandas._libs.interval
+<span class="w"> </span>???
+pandas/_libs/hashtable.pyx:1:<span class="w"> </span><span class="k">in</span><span class="w"> </span>init<span class="w"> </span>pandas._libs.hashtable
+<span class="w"> </span>???
+pandas/_libs/missing.pyx:1:<span class="w"> </span><span class="k">in</span><span class="w"> </span>init<span class="w"> </span>pandas._libs.missing
+<span class="w"> </span>???
+/usr/lib/python3.8/site-packages/pandas/_libs/tslibs/__init__.py:30:<span class="w"> </span><span class="k">in</span><span class="w"> </span>&lt;module&gt;
+<span class="w"> </span>from<span class="w"> </span>.conversion<span class="w"> </span>import<span class="w"> </span>OutOfBoundsTimedelta,<span class="w"> </span>localize_pydatetime
+E<span class="w"> </span>ImportError:<span class="w"> </span>/usr/lib/python3.8/site-packages/pandas/_libs/tslibs/conversion.cpython-38-x86_64-linux-gnu.so:<span class="w"> </span>undefined<span class="w"> </span>symbol:<span class="w"> </span>pandas_datetime_to_datetimestruct
</pre></div>
</div>
<p>The easiest way to workaround the problem in ebuild is to append <code class="docutils literal notranslate"><span class="pre">-j1</span></code>
@@ -537,15 +534,15 @@ sub-phase or <code class="docutils literal notranslate"><span class="pre">src_pr
you should always call the original implementation from your override.
For example, you could use it to strip extraneous dependencies or broken
tests:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_prepare_all<span class="o">()</span> <span class="o">{</span>
- <span class="c1"># FIXME</span>
- rm tests/test_pytest_plugin.py <span class="o">||</span> die
- sed -i -e <span class="s1">&#39;s:test_testcase_no_app:_&amp;:&#39;</span> tests/test_test_utils.py <span class="o">||</span> die
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_prepare_all<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="c1"># FIXME</span>
+<span class="w"> </span>rm<span class="w"> </span>tests/test_pytest_plugin.py<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
+<span class="w"> </span>sed<span class="w"> </span>-i<span class="w"> </span>-e<span class="w"> </span><span class="s1">&#39;s:test_testcase_no_app:_&amp;:&#39;</span><span class="w"> </span>tests/test_test_utils.py<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
- <span class="c1"># remove pointless dep on pytest-cov</span>
- sed -i -e <span class="s1">&#39;/addopts/s/--cov=aiohttp//&#39;</span> pytest.ini <span class="o">||</span> die
+<span class="w"> </span><span class="c1"># remove pointless dep on pytest-cov</span>
+<span class="w"> </span>sed<span class="w"> </span>-i<span class="w"> </span>-e<span class="w"> </span><span class="s1">&#39;/addopts/s/--cov=aiohttp//&#39;</span><span class="w"> </span>pytest.ini<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
- distutils-r1_python_prepare_all
+<span class="w"> </span>distutils-r1_python_prepare_all
<span class="o">}</span>
</pre></div>
</div>
@@ -559,10 +556,10 @@ since this modification needs to be done on a subset of all Python
interpreters, the eclass needs to keep a separate copy of the sources
for every one of them. This is why <code class="docutils literal notranslate"><span class="pre">python_prepare</span></code> automatically
enables in-source builds.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_prepare<span class="o">()</span> <span class="o">{</span>
- <span class="k">if</span> ! use cli <span class="o">||</span> ! has <span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span> python3.<span class="o">{</span><span class="m">7</span>..9<span class="o">}</span><span class="p">;</span> <span class="k">then</span>
- sed -i -e <span class="s1">&#39;/console_scripts/d&#39;</span> setup.py <span class="o">||</span> die
- <span class="k">fi</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_prepare<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span>!<span class="w"> </span>use<span class="w"> </span>cli<span class="w"> </span><span class="o">||</span><span class="w"> </span>!<span class="w"> </span>has<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span><span class="w"> </span>python3.<span class="o">{</span><span class="m">7</span>..9<span class="o">}</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
+<span class="w"> </span>sed<span class="w"> </span>-i<span class="w"> </span>-e<span class="w"> </span><span class="s1">&#39;/console_scripts/d&#39;</span><span class="w"> </span>setup.py<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
+<span class="w"> </span><span class="k">fi</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -573,16 +570,16 @@ enables in-source builds.</p>
functionality. The former is convenient for running additional
configuration steps if needed by the package, the latter for defining
global environment variables.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_configure<span class="o">()</span> <span class="o">{</span>
- esetup.py configure <span class="k">$(</span>usex mpi --mpi <span class="s1">&#39;&#39;</span><span class="k">)</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>esetup.py<span class="w"> </span>configure<span class="w"> </span><span class="k">$(</span>usex<span class="w"> </span>mpi<span class="w"> </span>--mpi<span class="w"> </span><span class="s1">&#39;&#39;</span><span class="k">)</span>
<span class="o">}</span>
</pre></div>
</div>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_configure_all<span class="o">()</span> <span class="o">{</span>
- <span class="nv">DISTUTILS_ARGS</span><span class="o">=(</span>
- --resourcepath<span class="o">=</span>/usr/share
- --no-compress-manpages
- <span class="o">)</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_configure_all<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="nv">DISTUTILS_ARGS</span><span class="o">=(</span>
+<span class="w"> </span>--resourcepath<span class="o">=</span>/usr/share
+<span class="w"> </span>--no-compress-manpages
+<span class="w"> </span><span class="o">)</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -593,8 +590,8 @@ global environment variables.</p>
to pass additional arguments to the build step. For example, it can
be used to disable parallel extension builds in packages that are broken
with it:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_compile<span class="o">()</span> <span class="o">{</span>
- distutils-r1_python_compile -j1
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_compile<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>distutils-r1_python_compile<span class="w"> </span>-j1
<span class="o">}</span>
</pre></div>
</div>
@@ -602,8 +599,8 @@ with it:</p>
has no default implementation. It is convenient for performing
additional common build steps, in particular for building
the documentation (see <code class="docutils literal notranslate"><span class="pre">distutils_enable_sphinx</span></code>).</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_compile_all<span class="o">()</span> <span class="o">{</span>
- use doc <span class="o">&amp;&amp;</span> emake -C docs html
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_compile_all<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>use<span class="w"> </span>doc<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>emake<span class="w"> </span>-C<span class="w"> </span>docs<span class="w"> </span>html
<span class="o">}</span>
</pre></div>
</div>
@@ -615,8 +612,8 @@ implementation but you are strongly encouraged to provide one (either
directly or via <code class="docutils literal notranslate"><span class="pre">distutils_enable_tests</span></code>). <code class="docutils literal notranslate"><span class="pre">python_test_all</span></code>
can be used to run additional testing code that is not specific
to Python.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_test<span class="o">()</span> <span class="o">{</span>
- <span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span> TestBitVector/Test.py <span class="o">||</span> die <span class="s2">&quot;Tests fail with </span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span><span class="w"> </span>TestBitVector/Test.py<span class="w"> </span><span class="o">||</span><span class="w"> </span>die<span class="w"> </span><span class="s2">&quot;Tests fail with </span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -626,25 +623,25 @@ to Python.</p>
<p><code class="docutils literal notranslate"><span class="pre">python_install</span></code> installs the package’s Python part. It is usually
redefined in order to pass additional <code class="docutils literal notranslate"><span class="pre">setup.py</span></code> arguments
or to install additional Python modules.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install<span class="o">()</span> <span class="o">{</span>
- distutils-r1_python_install
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>distutils-r1_python_install
- <span class="c1"># ensure data files for tests are getting installed too</span>
- python_moduleinto collada/tests/
- python_domodule collada/tests/data
+<span class="w"> </span><span class="c1"># ensure data files for tests are getting installed too</span>
+<span class="w"> </span>python_moduleinto<span class="w"> </span>collada/tests/
+<span class="w"> </span>python_domodule<span class="w"> </span>collada/tests/data
<span class="o">}</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">python_install_all</span></code> installs documentation via <code class="docutils literal notranslate"><span class="pre">einstalldocs</span></code>.
It is usually defined by ebuilds to install additional common files
such as bash completions or examples.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install_all<span class="o">()</span> <span class="o">{</span>
- <span class="k">if</span> use examples<span class="p">;</span> <span class="k">then</span>
- docinto examples
- dodoc -r Sample_Code/.
- docompress -x /usr/share/doc/<span class="si">${</span><span class="nv">PF</span><span class="si">}</span>/examples
- <span class="k">fi</span>
- distutils-r1_python_install_all
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install_all<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span>use<span class="w"> </span>examples<span class="p">;</span><span class="w"> </span><span class="k">then</span>
+<span class="w"> </span>docinto<span class="w"> </span>examples
+<span class="w"> </span>dodoc<span class="w"> </span>-r<span class="w"> </span>Sample_Code/.
+<span class="w"> </span>docompress<span class="w"> </span>-x<span class="w"> </span>/usr/share/doc/<span class="si">${</span><span class="nv">PF</span><span class="si">}</span>/examples
+<span class="w"> </span><span class="k">fi</span>
+<span class="w"> </span>distutils-r1_python_install_all
<span class="o">}</span>
</pre></div>
</div>
@@ -657,8 +654,8 @@ in <code class="docutils literal notranslate"><span class="pre">setup.py</span><
<p>Global options are usually implemented through manipulating <code class="docutils literal notranslate"><span class="pre">sys.path</span></code>
directly. The recommended way to use them is to specify them
via <code class="docutils literal notranslate"><span class="pre">DISTUTILS_ARGS</span></code> array:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_configure<span class="o">()</span> <span class="o">{</span>
- <span class="nv">DISTUTILS_ARGS</span><span class="o">=(</span> --external <span class="o">)</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="nv">DISTUTILS_ARGS</span><span class="o">=(</span><span class="w"> </span>--external<span class="w"> </span><span class="o">)</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -669,15 +666,15 @@ it is recommended to avoid adding command names to <code class="docutils literal
<p>The recommended way to pass command options is to use the <code class="docutils literal notranslate"><span class="pre">setup.cfg</span></code>
file. For example, Pillow provides for configuring available backends
via additional <code class="docutils literal notranslate"><span class="pre">build_ext</span></code> command flags:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>setup.py build_ext --enable-tiff --disable-webp ...
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>setup.py<span class="w"> </span>build_ext<span class="w"> </span>--enable-tiff<span class="w"> </span>--disable-webp<span class="w"> </span>...
</pre></div>
</div>
<p>The respective options can be setup via the configuration file, where
sections represent the commands and individual keys — options. Note
that dashes need to be replaced by underscores, and flag-style options
take boolean arguments. In this case, the ebuild can use:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_configure<span class="o">()</span> <span class="o">{</span>
- cat &gt;&gt; setup.cfg <span class="s">&lt;&lt;-EOF</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>cat<span class="w"> </span>&gt;&gt;<span class="w"> </span>setup.cfg<span class="w"> </span><span class="s">&lt;&lt;-EOF</span>
<span class="s"> [build_ext]</span>
<span class="s"> disable_tiff = $(usex !tiff True False)</span>
<span class="s"> enable_tiff = $(usex tiff True False)</span>
@@ -697,8 +694,8 @@ a <code class="docutils literal notranslate"><span class="pre">esetup.py</span><
handling and ensures that the override configuration file is created
beforehand (much like <code class="docutils literal notranslate"><span class="pre">econf</span></code> or <code class="docutils literal notranslate"><span class="pre">emake</span></code>).</p>
<p><code class="docutils literal notranslate"><span class="pre">esetup.py</span></code> passes all its paremeters to <code class="docutils literal notranslate"><span class="pre">./setup.py</span></code>.</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_test<span class="o">()</span> <span class="o">{</span>
- esetup.py check
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>esetup.py<span class="w"> </span>check
<span class="o">}</span>
</pre></div>
</div>
@@ -729,9 +726,9 @@ files found there, including the files that are now excluded.</p>
</div>
<p>As an intermediate solution it is possible to strip the extra
directories in the install phase:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install<span class="o">()</span> <span class="o">{</span>
- rm -r <span class="s2">&quot;</span><span class="si">${</span><span class="nv">BUILD_DIR</span><span class="si">}</span><span class="s2">&quot;</span>/lib/tests <span class="o">||</span> die
- distutils-r1_python_install
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python_install<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>rm<span class="w"> </span>-r<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">BUILD_DIR</span><span class="si">}</span><span class="s2">&quot;</span>/lib/tests<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
+<span class="w"> </span>distutils-r1_python_install
<span class="o">}</span>
</pre></div>
</div>
@@ -756,28 +753,28 @@ in global scope, passing the test runner name as the first argument.
This function takes care of declaring test phase, setting appropriate
dependencies and <code class="docutils literal notranslate"><span class="pre">test</span></code> USE flag if necessary. If called after
setting <code class="docutils literal notranslate"><span class="pre">RDEPEND</span></code>, it also copies it to test dependencies.</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> pypy3 <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python2_7<span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;An easy whitelist-based HTML-sanitizing tool&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/mozilla/bleach https://pypi.org/project/bleach/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;An easy whitelist-based HTML-sanitizing tool&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/mozilla/bleach https://pypi.org/project/bleach/&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;Apache-2.0&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;Apache-2.0&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86&quot;</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> dev-python/six[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> dev-python/webencodings[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> &quot;</span>
-<span class="hll"> distutils_enable_tests pytest
+<span class="hll"><span class="w"> </span>distutils_enable_tests<span class="w"> </span>pytest
</span></pre></div>
</div>
<p>The valid values include:</p>
@@ -793,36 +790,36 @@ setting <code class="docutils literal notranslate"><span class="pre">RDEPEND</sp
<p>Additional test dependencies can be specified in <code class="docutils literal notranslate"><span class="pre">test?</span></code> conditional.
The flag normally does not need to be explicitly declared,
as <code class="docutils literal notranslate"><span class="pre">distutils_enable_tests</span></code> does that in the majority of cases.</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">6</span>
- <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python2_7 python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> pypy3 <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python2_7<span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Universal encoding detector&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/chardet/chardet https://pypi.org/project/chardet/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;https://github.com/chardet/chardet/archive/</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">.tar.gz -&gt; </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Universal encoding detector&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/chardet/chardet https://pypi.org/project/chardet/&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;https://github.com/chardet/chardet/archive/</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">.tar.gz -&gt; </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;LGPL-2.1&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 s390 ~sh sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x64-solaris&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;LGPL-2.1&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 s390 ~sh sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x64-solaris&quot;</span>
- <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="hll"><span class="s2"> test? ( dev-python/hypothesis[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">] )</span>
</span><span class="s2"> &quot;</span>
-<span class="hll"> distutils_enable_tests pytest
+<span class="hll"><span class="w"> </span>distutils_enable_tests<span class="w"> </span>pytest
</span></pre></div>
</div>
<p>Note that <code class="docutils literal notranslate"><span class="pre">distutils_enable_tests</span></code> modifies variables directly
in the ebuild environment. This means that if you wish to change their
values, you need to append to them, i.e. the bottom part of that ebuild
can be rewritten as:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> distutils_enable_tests pytest
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span>distutils_enable_tests<span class="w"> </span>pytest
-<span class="hll"> <span class="nv">DEPEND</span><span class="o">+=</span><span class="s2">&quot;</span>
+<span class="hll"><span class="w"> </span><span class="nv">DEPEND</span><span class="o">+=</span><span class="s2">&quot;</span>
</span><span class="s2"> test? ( dev-python/hypothesis[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">] )</span>
<span class="s2"> &quot;</span>
</pre></div>
@@ -867,40 +864,40 @@ use tox in ebuilds.</p>
<p>If additional pre-/post-test phase actions need to be performed,
they can be easily injected via overriding <code class="docutils literal notranslate"><span class="pre">src_test()</span></code> and making
it call <code class="docutils literal notranslate"><span class="pre">distutils-r1_src_test</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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> python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Extra features for standard library&#39;s cmd module&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/python-cmd2/cmd2&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Extra features for standard library&#39;s cmd module&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/python-cmd2/cmd2&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> dev-python/attrs[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> &gt;=dev-python/colorama-0.3.7[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> &gt;=dev-python/pyperclip-1.6[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> dev-python/six[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> dev-python/wcwidth[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> &quot;</span>
- <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> dev-python/setuptools_scm[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="s2"> &quot;</span>
- distutils_enable_tests pytest
+<span class="w"> </span>distutils_enable_tests<span class="w"> </span>pytest
-<span class="hll"> src_test<span class="o">()</span> <span class="o">{</span>
-</span><span class="hll"> <span class="c1"># tests rely on very specific text wrapping...</span>
-</span><span class="hll"> <span class="nb">local</span> -x <span class="nv">COLUMNS</span><span class="o">=</span><span class="m">80</span>
-</span><span class="hll"> distutils-r1_src_test
-</span><span class="hll"> <span class="o">}</span>
+<span class="hll"><span class="w"> </span>src_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+</span><span class="hll"><span class="w"> </span><span class="c1"># tests rely on very specific text wrapping...</span>
+</span><span class="hll"><span class="w"> </span><span class="nb">local</span><span class="w"> </span>-x<span class="w"> </span><span class="nv">COLUMNS</span><span class="o">=</span><span class="m">80</span>
+</span><span class="hll"><span class="w"> </span>distutils-r1_src_test
+</span><span class="hll"><span class="w"> </span><span class="o">}</span>
</span></pre></div>
</div>
<p>If the actual test command needs to be customized, or a non-standard
@@ -910,30 +907,30 @@ by the default <code class="docutils literal notranslate"><span class="pre">src_
with <code class="docutils literal notranslate"><span class="pre">distutils_enable_tests</span></code> call, or used instead of it. In fact,
the former function simply defines a <code class="docutils literal notranslate"><span class="pre">python_test()</span></code> function as part
of its logic.</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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> python<span class="o">{</span>2_7,3_6,3_7,3_8<span class="o">}</span> pypy3 <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python<span class="o">{</span>2_7,3_6,3_7,3_8<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Bash tab completion for argparse&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://pypi.org/project/argcomplete/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Bash tab completion for argparse&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://pypi.org/project/argcomplete/&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;Apache-2.0&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~hppa ~x86 ~amd64-linux ~x86-linux ~x64-macos&quot;</span>
-<span class="hll"> <span class="nv">IUSE</span><span class="o">=</span><span class="s2">&quot;test&quot;</span>
-</span><span class="hll"> <span class="nv">RESTRICT</span><span class="o">=</span><span class="s2">&quot;!test? ( test )&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;Apache-2.0&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm ~arm64 ~hppa ~x86 ~amd64-linux ~x86-linux ~x64-macos&quot;</span>
+<span class="hll"><span class="w"> </span><span class="nv">IUSE</span><span class="o">=</span><span class="s2">&quot;test&quot;</span>
+</span><span class="hll"><span class="w"> </span><span class="nv">RESTRICT</span><span class="o">=</span><span class="s2">&quot;!test? ( test )&quot;</span>
</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
-<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep <span class="s1">&#39;</span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="s2"> </span><span class="k">$(</span>python_gen_cond_dep<span class="w"> </span><span class="s1">&#39;</span>
<span class="s1"> &lt;dev-python/importlib_metadata-2[${PYTHON_USEDEP}]</span>
-<span class="s1"> &#39;</span> -2 python3_<span class="o">{</span><span class="m">5</span>,6,7<span class="o">}</span> pypy3<span class="k">)</span><span class="s2">&quot;</span>
- <span class="c1"># pip is called as an external tool</span>
- <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="s1"> &#39;</span><span class="w"> </span>-2<span class="w"> </span>python3_<span class="o">{</span><span class="m">5</span>,6,7<span class="o">}</span><span class="w"> </span>pypy3<span class="k">)</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="c1"># pip is called as an external tool</span>
+<span class="w"> </span><span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> dev-python/setuptools[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
<span class="hll"><span class="s2"> test? (</span>
</span><span class="hll"><span class="s2"> app-shells/fish</span>
@@ -942,9 +939,9 @@ of its logic.</p>
</span><span class="hll"><span class="s2"> dev-python/pip</span>
</span><span class="hll"><span class="s2"> )&quot;</span>
</span>
-<span class="hll"> python_test<span class="o">()</span> <span class="o">{</span>
-</span><span class="hll"> <span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span> test/test.py -v <span class="o">||</span> die
-</span><span class="hll"> <span class="o">}</span>
+<span class="hll"><span class="w"> </span>python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+</span><span class="hll"><span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span><span class="w"> </span>test/test.py<span class="w"> </span>-v<span class="w"> </span><span class="o">||</span><span class="w"> </span>die
+</span><span class="hll"><span class="w"> </span><span class="o">}</span>
</span></pre></div>
</div>
<p>Note that <code class="docutils literal notranslate"><span class="pre">python_test</span></code> is called by <code class="docutils literal notranslate"><span class="pre">distutils-r1_src_test</span></code>,
@@ -959,10 +956,10 @@ of test failures.</p>
<p>For example, if upstream uses <code class="docutils literal notranslate"><span class="pre">network</span></code> marker to disable
network-based tests, you can override the test phase in the following
way:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>distutils_enable_tests pytest
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>distutils_enable_tests<span class="w"> </span>pytest
-python_test<span class="o">()</span> <span class="o">{</span>
- epytest -m <span class="s1">&#39;not network&#39;</span>
+python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>epytest<span class="w"> </span>-m<span class="w"> </span><span class="s1">&#39;not network&#39;</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -974,22 +971,22 @@ usng Xvfb. If the package in question does not start Xvfb directly,
<code class="docutils literal notranslate"><span class="pre">virtualx.eclass</span></code> can be used to do that. Whenever possible, it is
preferable to run a single server in <code class="docutils literal notranslate"><span class="pre">src_test()</span></code> for all passes
of the test suite, e.g.:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>distutils_enable_tests pytest
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>distutils_enable_tests<span class="w"> </span>pytest
-src_test<span class="o">()</span> <span class="o">{</span>
- virtx distutils-r1_src_test
+src_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>virtx<span class="w"> </span>distutils-r1_src_test
<span class="o">}</span>
</pre></div>
</div>
<p>Note that <code class="docutils literal notranslate"><span class="pre">virtx</span></code> implicitly enables nonfatal mode. This means that
e.g. <code class="docutils literal notranslate"><span class="pre">epytest</span></code> will no longer terminate the ebuild on failure, and you
need to use <code class="docutils literal notranslate"><span class="pre">die</span></code> explicitly for it:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_test<span class="o">()</span> <span class="o">{</span>
- virtx distutils-r1_src_test
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>src_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>virtx<span class="w"> </span>distutils-r1_src_test
<span class="o">}</span>
-python_test<span class="o">()</span> <span class="o">{</span>
- epytest -m <span class="s2">&quot;not network&quot;</span> <span class="o">||</span> die <span class="s2">&quot;Tests failed with </span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span>
+python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>epytest<span class="w"> </span>-m<span class="w"> </span><span class="s2">&quot;not network&quot;</span><span class="w"> </span><span class="o">||</span><span class="w"> </span>die<span class="w"> </span><span class="s2">&quot;Tests failed with </span><span class="si">${</span><span class="nv">EPYTHON</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="o">}</span>
</pre></div>
</div>
@@ -1023,30 +1020,30 @@ It can be recognized by <code class="docutils literal notranslate"><span class="
in the extension list. In order to support building documentation,
call <code class="docutils literal notranslate"><span class="pre">distutils_enable_sphinx</span></code> and pass the path to the directory
containing Sphinx documentation:</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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> python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> <span class="o">)</span>
- <span class="nv">DISTUTILS_USE_SETUPTOOLS</span><span class="o">=</span>rdepend
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span><span class="o">)</span>
+<span class="w"> </span><span class="nv">DISTUTILS_USE_SETUPTOOLS</span><span class="o">=</span>rdepend
- inherit distutils-r1
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Colored stream handler for the logging module&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Colored stream handler for the logging module&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> https://pypi.org/project/coloredlogs/</span>
<span class="s2"> https://github.com/xolox/python-coloredlogs</span>
<span class="s2"> https://coloredlogs.readthedocs.io/en/latest/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~x86 ~amd64-linux ~x86-linux&quot;</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;dev-python/humanfriendly[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]&quot;</span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;dev-python/humanfriendly[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]&quot;</span>
-<span class="hll"> distutils_enable_sphinx docs
+<span class="hll"><span class="w"> </span>distutils_enable_sphinx<span class="w"> </span>docs
</span></pre></div>
</div>
<p>This call takes care of it all: it adds <code class="docutils literal notranslate"><span class="pre">doc</span></code> USE flag to control
@@ -1061,26 +1058,26 @@ implementation to build and install HTML documentation.</p>
extensions to Sphinx. Those include themes. In order to specify
dependencies on the additional packages, pass them as extra arguments
to <code class="docutils literal notranslate"><span class="pre">distutils_enable_sphinx</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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> pypy3 python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>pypy3<span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Correctly inflect words and numbers&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/jazzband/inflect&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Correctly inflect words and numbers&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/jazzband/inflect&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm64 ~ia64 ~ppc ~ppc64 ~x86&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~amd64 ~arm64 ~ia64 ~ppc ~ppc64 ~x86&quot;</span>
-<span class="hll"> distutils_enable_sphinx docs <span class="se">\</span>
-</span><span class="hll"> <span class="s1">&#39;&gt;=dev-python/jaraco-packaging-3.2&#39;</span> <span class="se">\</span>
-</span><span class="hll"> <span class="s1">&#39;&gt;=dev-python/rst-linker-1.9&#39;</span> <span class="se">\</span>
-</span><span class="hll"> dev-python/alabaster
+<span class="hll"><span class="w"> </span>distutils_enable_sphinx<span class="w"> </span>docs<span class="w"> </span><span class="se">\</span>
+</span><span class="hll"><span class="w"> </span><span class="s1">&#39;&gt;=dev-python/jaraco-packaging-3.2&#39;</span><span class="w"> </span><span class="se">\</span>
+</span><span class="hll"><span class="w"> </span><span class="s1">&#39;&gt;=dev-python/rst-linker-1.9&#39;</span><span class="w"> </span><span class="se">\</span>
+</span><span class="hll"><span class="w"> </span>dev-python/alabaster
</span></pre></div>
</div>
<p>In this case, the function uses the any-r1 API to request one
@@ -1096,23 +1093,23 @@ For those packages, the any-r1 API can be omitted entirely and plain
dependency on <code class="docutils literal notranslate"><span class="pre">dev-python/sphinx</span></code> is sufficient. In this case,
the <code class="docutils literal notranslate"><span class="pre">--no-autodoc</span></code> option can be specified instead of additional
packages.</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>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2020 Gentoo Authors</span>
+<span class="w"> </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="w"> </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_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span> <span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python2_7<span class="w"> </span>python3_<span class="o">{</span><span class="m">6</span>,7,8<span class="o">}</span><span class="w"> </span><span class="o">)</span>
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Python Serial Port extension&quot;</span>
- <span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/pyserial/pyserial https://pypi.org/project/pyserial/&quot;</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
+<span class="w"> </span><span class="nv">DESCRIPTION</span><span class="o">=</span><span class="s2">&quot;Python Serial Port extension&quot;</span>
+<span class="w"> </span><span class="nv">HOMEPAGE</span><span class="o">=</span><span class="s2">&quot;https://github.com/pyserial/pyserial https://pypi.org/project/pyserial/&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz&quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;PSF-2&quot;</span>
- <span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
- <span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;PSF-2&quot;</span>
+<span class="w"> </span><span class="nv">SLOT</span><span class="o">=</span><span class="s2">&quot;0&quot;</span>
+<span class="w"> </span><span class="nv">KEYWORDS</span><span class="o">=</span><span class="s2">&quot;~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86&quot;</span>
-<span class="hll"> distutils_enable_sphinx documentation --no-autodoc
+<span class="hll"><span class="w"> </span>distutils_enable_sphinx<span class="w"> </span>documentation<span class="w"> </span>--no-autodoc
</span></pre></div>
</div>
<p>Note that this is valid only if no third-party extensions are used.
@@ -1171,63 +1168,63 @@ on <code class="docutils literal notranslate"><span class="pre">dev-python/setup
<p>An example ebuild for a package utilizing autotools as a primary build
system alongside a flit-based <code class="docutils literal notranslate"><span class="pre">pyproject.toml</span></code> in the top directory
follows:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
- <span class="c1"># Distributed under the terms of the GNU General Public License v2</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 1999-2022 Gentoo Authors</span>
+<span class="w"> </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">8</span>
+<span class="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">8</span>
-<span class="hll"> <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>flit
-</span><span class="hll"> <span class="nv">DISTUTILS_OPTIONAL</span><span class="o">=</span><span class="m">1</span>
-</span><span class="hll"> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span> pypy3 <span class="o">)</span>
+<span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>flit
+</span><span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_OPTIONAL</span><span class="o">=</span><span class="m">1</span>
+</span><span class="hll"><span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
</span><span class="hll">
-</span><span class="hll"> inherit distutils-r1
+</span><span class="hll"><span class="w"> </span>inherit<span class="w"> </span>distutils-r1
</span>
- <span class="c1"># ...</span>
-<span class="hll"> <span class="nv">IUSE</span><span class="o">=</span><span class="s2">&quot;python test&quot;</span>
-</span><span class="hll"> <span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="c1"># ...</span>
+<span class="hll"><span class="w"> </span><span class="nv">IUSE</span><span class="o">=</span><span class="s2">&quot;python test&quot;</span>
+</span><span class="hll"><span class="w"> </span><span class="nv">REQUIRED_USE</span><span class="o">=</span><span class="s2">&quot;</span>
</span><span class="hll"><span class="s2"> python? ( </span><span class="si">${</span><span class="nv">PYTHON_REQUIRED_USE</span><span class="si">}</span><span class="s2"> )&quot;</span>
</span>
- <span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">DEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> dev-libs/libfoo:=&quot;</span>
- <span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
-<span class="s2"> </span><span class="si">${</span><span class="nv">DEPEND</span><span class="si">}</span><span class="s2"></span>
+<span class="w"> </span><span class="nv">RDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="s2"> </span><span class="si">${</span><span class="nv">DEPEND</span><span class="si">}</span>
<span class="hll"><span class="s2"> python? (</span>
-</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="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span>
</span><span class="hll"><span class="s2"> dev-python/frobnicate[</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="s2"> )&quot;</span>
-</span> <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+</span><span class="w"> </span><span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="hll"><span class="s2"> python? (</span>
-</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="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">DISTUTILS_DEPS</span><span class="si">}</span><span class="s2"></span>
+</span><span class="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">PYTHON_DEPS</span><span class="si">}</span>
+</span><span class="hll"><span class="s2"> </span><span class="si">${</span><span class="nv">DISTUTILS_DEPS</span><span class="si">}</span>
</span><span class="hll"><span class="s2"> test? (</span>
</span><span class="hll"><span class="s2"> dev-python/frobnicate[</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="s2"> dev-python/pytest[</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="s2"> )</span>
</span><span class="hll"><span class="s2"> )&quot;</span>
</span>
- src_prepare<span class="o">()</span> <span class="o">{</span>
- default
-<span class="hll"> use python <span class="o">&amp;&amp;</span> distutils-r1_src_prepare
-</span> <span class="o">}</span>
-
- src_compile<span class="o">()</span> <span class="o">{</span>
- default
-<span class="hll"> use python <span class="o">&amp;&amp;</span> distutils-r1_src_compile
-</span> <span class="o">}</span>
-
-<span class="hll"> python_test<span class="o">()</span> <span class="o">{</span>
-</span><span class="hll"> epytest
-</span><span class="hll"> <span class="o">}</span>
+<span class="w"> </span>src_prepare<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>default
+<span class="hll"><span class="w"> </span>use<span class="w"> </span>python<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>distutils-r1_src_prepare
+</span><span class="w"> </span><span class="o">}</span>
+
+<span class="w"> </span>src_compile<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>default
+<span class="hll"><span class="w"> </span>use<span class="w"> </span>python<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>distutils-r1_src_compile
+</span><span class="w"> </span><span class="o">}</span>
+
+<span class="hll"><span class="w"> </span>python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+</span><span class="hll"><span class="w"> </span>epytest
+</span><span class="hll"><span class="w"> </span><span class="o">}</span>
</span>
- src_test<span class="o">()</span> <span class="o">{</span>
- default
-<span class="hll"> use python <span class="o">&amp;&amp;</span> distutils-r1_src_test
-</span> <span class="o">}</span>
-
- src_install<span class="o">()</span> <span class="o">{</span>
- default
-<span class="hll"> use python <span class="o">&amp;&amp;</span> distutils-r1_src_install
-</span> <span class="o">}</span>
+<span class="w"> </span>src_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>default
+<span class="hll"><span class="w"> </span>use<span class="w"> </span>python<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>distutils-r1_src_test
+</span><span class="w"> </span><span class="o">}</span>
+
+<span class="w"> </span>src_install<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>default
+<span class="hll"><span class="w"> </span>use<span class="w"> </span>python<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>distutils-r1_src_install
+</span><span class="w"> </span><span class="o">}</span>
</pre></div>
</div>
</section>
@@ -1243,7 +1240,7 @@ download the Rust dependencies over the Internet. In Gentoo,
or bumping one, you need to locate the <code class="docutils literal notranslate"><span class="pre">Cargo.lock</span></code> files within
the package’s sources. Run <code class="docutils literal notranslate"><span class="pre">pycargoebuild</span></code> passing the list of
the containing directories to generate a template ebuild, e.g.:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pycargoebuild /tmp/portage/dev-python/setuptools-rust-1.5.2/work/setuptools-rust-1.5.2/examples/*/
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pycargoebuild<span class="w"> </span>/tmp/portage/dev-python/setuptools-rust-1.5.2/work/setuptools-rust-1.5.2/examples/*/
</pre></div>
</div>
<p>The actual ebuild inherits both <code class="docutils literal notranslate"><span class="pre">cargo</span></code> and <code class="docutils literal notranslate"><span class="pre">distutils-r1</span></code> eclasses.
@@ -1255,45 +1252,45 @@ the crate licenses in addition to the Python package’s license.
to prevent false positives on ignored <code class="docutils literal notranslate"><span class="pre">CFLAGS</span></code> and <code class="docutils literal notranslate"><span class="pre">LDFLAGS</span></code>
warnings. Finally, the ebuild needs to call <code class="docutils literal notranslate"><span class="pre">cargo_src_unpack</span></code>.</p>
<p>An example ebuild follows:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="c1"># Copyright 2022 Gentoo Authors</span>
- <span class="c1"># Distributed under the terms of the GNU General Public License v2</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="c1"># Copyright 2022 Gentoo Authors</span>
+<span class="w"> </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">8</span>
+<span class="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">8</span>
-<span class="hll"> <span class="nv">CARGO_OPTIONAL</span><span class="o">=</span><span class="m">1</span>
-</span> <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
- <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span> pypy3 <span class="o">)</span>
+<span class="hll"><span class="w"> </span><span class="nv">CARGO_OPTIONAL</span><span class="o">=</span><span class="m">1</span>
+</span><span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>setuptools
+<span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
-<span class="hll"> <span class="nv">CRATES</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="hll"><span class="w"> </span><span class="nv">CRATES</span><span class="o">=</span><span class="s2">&quot;</span>
</span><span class="hll"><span class="s2"> Inflector-0.11.4</span>
</span><span class="hll"><span class="s2"> aliasable-0.1.3</span>
</span><span class="hll"><span class="s2"> asn1-0.8.7</span>
</span><span class="hll"><span class="s2"> asn1_derive-0.8.7</span>
</span><span class="hll"><span class="s2"> &quot;</span>
</span>
-<span class="hll"> inherit cargo distutils-r1
+<span class="hll"><span class="w"> </span>inherit<span class="w"> </span>cargo<span class="w"> </span>distutils-r1
</span>
- <span class="c1"># ...</span>
+<span class="w"> </span><span class="c1"># ...</span>
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> mirror://pypi/</span><span class="si">${</span><span class="nv">PN</span><span class="p">:</span><span class="nv">0</span><span class="p">:</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">.tar.gz</span>
-<span class="hll"><span class="s2"> </span><span class="k">$(</span>cargo_crate_uris <span class="si">${</span><span class="nv">CRATES</span><span class="si">}</span><span class="k">)</span><span class="s2"></span>
+<span class="hll"><span class="s2"> </span><span class="k">$(</span>cargo_crate_uris<span class="w"> </span><span class="si">${</span><span class="nv">CRATES</span><span class="si">}</span><span class="k">)</span>
</span><span class="s2"> &quot;</span>
- <span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;|| ( BSD-2 Apache-2.0 )&quot;</span>
- <span class="c1"># Crate licenses</span>
-<span class="hll"> <span class="nv">LICENSE</span><span class="o">+=</span><span class="s2">&quot; Apache-2.0 BSD BSD-2 MIT&quot;</span>
+<span class="w"> </span><span class="nv">LICENSE</span><span class="o">=</span><span class="s2">&quot;|| ( BSD-2 Apache-2.0 )&quot;</span>
+<span class="w"> </span><span class="c1"># Crate licenses</span>
+<span class="hll"><span class="w"> </span><span class="nv">LICENSE</span><span class="o">+=</span><span class="s2">&quot; Apache-2.0 BSD BSD-2 MIT&quot;</span>
</span>
- <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="hll"><span class="s2"> dev-python/setuptools-rust[</span><span class="si">${</span><span class="nv">PYTHON_USEDEP</span><span class="si">}</span><span class="s2">]</span>
</span><span class="s2"> &quot;</span>
- <span class="c1"># Rust does not respect CFLAGS/LDFLAGS</span>
-<span class="hll"> <span class="nv">QA_FLAGS_IGNORED</span><span class="o">=</span><span class="s2">&quot;.*/_rust.*&quot;</span>
+<span class="w"> </span><span class="c1"># Rust does not respect CFLAGS/LDFLAGS</span>
+<span class="hll"><span class="w"> </span><span class="nv">QA_FLAGS_IGNORED</span><span class="o">=</span><span class="s2">&quot;.*/_rust.*&quot;</span>
</span>
- src_unpack<span class="o">()</span> <span class="o">{</span>
-<span class="hll"> cargo_src_unpack
-</span> <span class="o">}</span>
+<span class="w"> </span>src_unpack<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="hll"><span class="w"> </span>cargo_src_unpack
+</span><span class="w"> </span><span class="o">}</span>
</pre></div>
</div>
</section>
@@ -1348,29 +1345,29 @@ effectively enabling them to be picked up for the test phase
and merged in <code class="docutils literal notranslate"><span class="pre">distutils-r1_python_install</span></code>.</p>
<p>An example ebuild using a combination of GitHub archive (for tests)
and PyPI wheel (for generated .dist-info) follows:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span>
-<span class="hll"> <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>no
-</span> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">8</span>..11<span class="o">}</span> pypy3 <span class="o">)</span>
+<span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>no
+</span><span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..11<span class="o">}</span><span class="w"> </span>pypy3<span class="w"> </span><span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
- <span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">SRC_URI</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> https://github.com/hukkin/tomli/archive/</span><span class="si">${</span><span class="nv">PV</span><span class="si">}</span><span class="s2">.tar.gz</span>
<span class="s2"> -&gt; </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">.gh.tar.gz</span>
<span class="s2"> https://files.pythonhosted.org/packages/py3/</span><span class="si">${</span><span class="nv">PN</span><span class="p">::</span><span class="nv">1</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">P</span><span class="si">}</span><span class="s2">-py3-none-any.whl</span>
<span class="s2"> -&gt; </span><span class="si">${</span><span class="nv">P</span><span class="si">}</span><span class="s2">-py3-none-any.whl.zip</span>
<span class="s2"> &quot;</span>
- <span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
+<span class="w"> </span><span class="nv">BDEPEND</span><span class="o">=</span><span class="s2">&quot;</span>
<span class="s2"> app-arch/unzip</span>
<span class="s2"> &quot;</span>
-<span class="hll"> distutils_enable_tests unittest
+<span class="hll"><span class="w"> </span>distutils_enable_tests<span class="w"> </span>unittest
</span>
- python_compile<span class="o">()</span> <span class="o">{</span>
-<span class="hll"> python_domodule src/tomli <span class="s2">&quot;</span><span class="si">${</span><span class="nv">WORKDIR</span><span class="si">}</span><span class="s2">&quot;</span>/*.dist-info
-</span> <span class="o">}</span>
+<span class="w"> </span>python_compile<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="hll"><span class="w"> </span>python_domodule<span class="w"> </span>src/tomli<span class="w"> </span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">WORKDIR</span><span class="si">}</span><span class="s2">&quot;</span>/*.dist-info
+</span><span class="w"> </span><span class="o">}</span>
</pre></div>
</div>
<p>Note that the wheel suffix is deliberately changed in order to enable
@@ -1383,24 +1380,24 @@ phase. This provides a greater number of helpers. However,
the installed modules will not be provided in the venv for the test
phase.</p>
<p>An example ebuild follows:</p>
-<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span> <span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="nv">EAPI</span><span class="o">=</span><span class="m">7</span>
-<span class="hll"> <span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>no
-</span> <span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> pypy3 python3_<span class="o">{</span><span class="m">8</span>..11<span class="o">}</span> <span class="o">)</span>
+<span class="hll"><span class="w"> </span><span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>no
+</span><span class="w"> </span><span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>pypy3<span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..11<span class="o">}</span><span class="w"> </span><span class="o">)</span>
- inherit distutils-r1
+<span class="w"> </span>inherit<span class="w"> </span>distutils-r1
-<span class="hll"> distutils_enable_tests pytest
+<span class="hll"><span class="w"> </span>distutils_enable_tests<span class="w"> </span>pytest
</span>
- python_install<span class="o">()</span> <span class="o">{</span>
-<span class="hll"> python_domodule gpep517
-</span><span class="hll"> python_newscript - gpep517 <span class="s">&lt;&lt;-EOF</span>
+<span class="w"> </span>python_install<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="hll"><span class="w"> </span>python_domodule<span class="w"> </span>gpep517
+</span><span class="hll"><span class="w"> </span>python_newscript<span class="w"> </span>-<span class="w"> </span>gpep517<span class="w"> </span><span class="s">&lt;&lt;-EOF</span>
</span><span class="hll"><span class="s"> #!${EPREFIX}/usr/bin/python</span>
</span><span class="hll"><span class="s"> import sys</span>
</span><span class="hll"><span class="s"> from gpep517.__main__ import main</span>
</span><span class="hll"><span class="s"> sys.exit(main())</span>
</span><span class="hll"><span class="s"> EOF</span>
-</span> <span class="o">}</span>
+</span><span class="w"> </span><span class="o">}</span>
</pre></div>
</div>
<p>It is also valid to combine both approaches, e.g. install Python modules
@@ -1415,28 +1412,28 @@ ebuild fragment demonstrates using it with Meson:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">EAPI</span><span class="o">=</span><span class="m">8</span>
<span class="nv">DISTUTILS_USE_PEP517</span><span class="o">=</span>no
-<span class="nv">PYTHON_COMPAT</span><span class="o">=(</span> python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span> <span class="o">)</span>
+<span class="nv">PYTHON_COMPAT</span><span class="o">=(</span><span class="w"> </span>python3_<span class="o">{</span><span class="m">8</span>..10<span class="o">}</span><span class="w"> </span><span class="o">)</span>
-inherit meson distutils-r1
+inherit<span class="w"> </span>meson<span class="w"> </span>distutils-r1
-python_configure<span class="o">()</span> <span class="o">{</span>
- <span class="nb">local</span> <span class="nv">emesonargs</span><span class="o">=(</span>
- -Dlint<span class="o">=</span><span class="nb">false</span>
- <span class="o">)</span>
+python_configure<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span><span class="nb">local</span><span class="w"> </span><span class="nv">emesonargs</span><span class="o">=(</span>
+<span class="w"> </span>-Dlint<span class="o">=</span><span class="nb">false</span>
+<span class="w"> </span><span class="o">)</span>
- meson_src_configure
+<span class="w"> </span>meson_src_configure
<span class="o">}</span>
-python_compile<span class="o">()</span> <span class="o">{</span>
- meson_src_compile
+python_compile<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>meson_src_compile
<span class="o">}</span>
-python_test<span class="o">()</span> <span class="o">{</span>
- meson_src_test
+python_test<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>meson_src_test
<span class="o">}</span>
-python_install<span class="o">()</span> <span class="o">{</span>
- meson_src_install
+python_install<span class="o">()</span><span class="w"> </span><span class="o">{</span>
+<span class="w"> </span>meson_src_install
<span class="o">}</span>
</pre></div>
</div>
@@ -1542,7 +1539,7 @@ python_install<span class="o">()</span> <span class="o">{</span>
&copy;2020, Michał Górny, license: CC BY 4.0.
|
- Powered by <a href="http://sphinx-doc.org/">Sphinx 5.3.0</a>
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 6.1.3</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|