diff mbox series

[v6,07/25] python: add MANIFEST.in

Message ID 20210512231241.2816122-8-jsnow@redhat.com
State New
Headers show
Series python: create installable package | expand

Commit Message

John Snow May 12, 2021, 11:12 p.m. UTC
When creating a source distribution via 'python3 setup.py sdist', the
VERSION and PACKAGE.rst files aren't bundled by default. Create a
MANIFEST.in file that instructs the build tools to include these so that
installation from source dists won't fail.

(This invocation is required by 'tox', as well as by the tooling needed
to upload packages to PyPI.)

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/README.rst  | 2 ++
 python/MANIFEST.in | 2 ++
 2 files changed, 4 insertions(+)
 create mode 100644 python/MANIFEST.in

Comments

Cleber Rosa May 25, 2021, 2:42 a.m. UTC | #1
On Wed, May 12, 2021 at 07:12:23PM -0400, John Snow wrote:
> When creating a source distribution via 'python3 setup.py sdist', the
> VERSION and PACKAGE.rst files aren't bundled by default. Create a
> MANIFEST.in file that instructs the build tools to include these so that
> installation from source dists won't fail.
> 
> (This invocation is required by 'tox', as well as by the tooling needed
> to upload packages to PyPI.)
> 
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  python/README.rst  | 2 ++
>  python/MANIFEST.in | 2 ++
>  2 files changed, 4 insertions(+)
>  create mode 100644 python/MANIFEST.in
>

I was about to propose mypy.ini to be included here, but given
that it's merged into setup.cfg later in this series:

Reviewed-by: Cleber Rosa <crosa@redhat.com>

---

Note to self (and to you) when generating the sdist, I get:

   ...
   package init file 'qemu/__init__.py' not found (or not a regular file)
   package init file 'dist/__init__.py' not found (or not a regular file)
   ...

Which may not be too harmful, but deserves investigation.
John Snow May 25, 2021, 2:12 p.m. UTC | #2
On 5/24/21 10:42 PM, Cleber Rosa wrote:
> On Wed, May 12, 2021 at 07:12:23PM -0400, John Snow wrote:
>> When creating a source distribution via 'python3 setup.py sdist', the
>> VERSION and PACKAGE.rst files aren't bundled by default. Create a
>> MANIFEST.in file that instructs the build tools to include these so that
>> installation from source dists won't fail.
>>
>> (This invocation is required by 'tox', as well as by the tooling needed
>> to upload packages to PyPI.)
>>
>> Signed-off-by: John Snow <jsnow@redhat.com>
>> ---
>>   python/README.rst  | 2 ++
>>   python/MANIFEST.in | 2 ++
>>   2 files changed, 4 insertions(+)
>>   create mode 100644 python/MANIFEST.in
>>
> 
> I was about to propose mypy.ini to be included here, but given
> that it's merged into setup.cfg later in this series:
> 
> Reviewed-by: Cleber Rosa <crosa@redhat.com>
> 
> ---
> 
> Note to self (and to you) when generating the sdist, I get:
> 
>     ...
>     package init file 'qemu/__init__.py' not found (or not a regular file)

I think this one is fine, it's just a consequence of PEP420.

>     package init file 'dist/__init__.py' not found (or not a regular file)

This is kinda weird, but it only happens if you run sdist a *second* 
time, and it has created a dist/ folder. It shouldn't be trying to 
package its own dist folder ... !

After a 60 second look I don't know how to rectify this behavior, I will 
look into it.

>     ...
> 
> Which may not be too harmful, but deserves investigation.
> 

fwiw clean run vs re-run:

--- run1	2021-05-25 10:10:37.166975879 -0400
+++ run2	2021-05-25 10:10:48.527966676 -0400
@@ -1,11 +1,10 @@
  running sdist
  running egg_info
-creating qemu.egg-info
  writing qemu.egg-info/PKG-INFO
  writing dependency_links to qemu.egg-info/dependency_links.txt
  writing top-level names to qemu.egg-info/top_level.txt
-writing manifest file 'qemu.egg-info/SOURCES.txt'
  package init file 'qemu/__init__.py' not found (or not a regular file)
+package init file 'dist/__init__.py' not found (or not a regular file)
  reading manifest file 'qemu.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  writing manifest file 'qemu.egg-info/SOURCES.txt'
@@ -35,6 +34,5 @@
  copying qemu/utils/__init__.py -> qemu-0.6.1.0a1/qemu/utils
  copying qemu/utils/accel.py -> qemu-0.6.1.0a1/qemu/utils
  Writing qemu-0.6.1.0a1/setup.cfg
-creating dist
  Creating tar archive
  removing 'qemu-0.6.1.0a1' (and everything under it)



at the very least, it doesn't look like it does anything actively 
harmful, but it seems to want to find sources in the dist, so I should 
steer it towards exclusively the qemu/ folder.

Thanks for this, Cleber!

--js
diff mbox series

Patch

diff --git a/python/README.rst b/python/README.rst
index 7a0dc5dff4a..86364367261 100644
--- a/python/README.rst
+++ b/python/README.rst
@@ -33,6 +33,8 @@  Files in this directory
 -----------------------
 
 - ``qemu/`` Python package source directory.
+- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
+  that should be included by a source distribution.
 - ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
 - ``README.rst`` you are here!
 - ``VERSION`` contains the PEP-440 compliant version used to describe
diff --git a/python/MANIFEST.in b/python/MANIFEST.in
new file mode 100644
index 00000000000..2b1ee8b4e72
--- /dev/null
+++ b/python/MANIFEST.in
@@ -0,0 +1,2 @@ 
+include VERSION
+include PACKAGE.rst
\ No newline at end of file