linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] btrfs-progs: libbtrfsutil/python: fix all the warnings
@ 2024-09-21  2:26 Qu Wenruo
  2024-09-21  2:26 ` [PATCH 1/3] btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers Qu Wenruo
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Qu Wenruo @ 2024-09-21  2:26 UTC (permalink / raw)
  To: linux-btrfs

There are the following warnings when building the python binding the
proper way (directly calling "setup.py build" is no longer recommended):

 $ python -m build btrfs-progs/libbtrfsutil/python
 * Creating isolated environment: venv+pip...
 * Installing packages in isolated environment:
   - setuptools >= 40.8.0
 * Getting build dependencies for sdist...
 /tmp/build-env-2u6q_udl/lib/python3.12/site-packages/setuptools/_distutils/extension.py:139: UserWarning: Unknown Extension options: 'headers'
   warnings.warn(msg)
 * Building sdist...
 /tmp/build-env-2u6q_udl/lib/python3.12/site-packages/setuptools/_distutils/extension.py:139: UserWarning: Unknown Extension options: 'headers'
   warnings.warn(msg)
 writing manifest file 'btrfsutil.egg-info/SOURCES.txt'
 warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md

This patch fixes them by:

- Use MANIFEST.in to properly include the "btrfsutilpy.h"
- Remove unnecessary build options for C files
- Reuse the existing README.md by a softlink
  So that even in a virtual environment the README.md will still be
  properly copied.

TODO: Migrate the "python setup.py build" system to "python -m build"
for building and tox for tests.

Qu Wenruo (3):
  btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers
  btrfs-progs: libbtrfsutil/python: remove unnecessary build options
  btrfs-progs: libbtrfsutil/python: reuse existing README.md for long
    description

 libbtrfsutil/python/MANIFEST.in | 1 +
 libbtrfsutil/python/README.md   | 1 +
 libbtrfsutil/python/setup.py    | 7 ++-----
 3 files changed, 4 insertions(+), 5 deletions(-)
 create mode 100644 libbtrfsutil/python/MANIFEST.in
 create mode 120000 libbtrfsutil/python/README.md

--
2.46.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers
  2024-09-21  2:26 [PATCH 0/3] btrfs-progs: libbtrfsutil/python: fix all the warnings Qu Wenruo
@ 2024-09-21  2:26 ` Qu Wenruo
  2024-09-21  2:26 ` [PATCH 2/3] btrfs-progs: libbtrfsutil/python: remove unnecessary build options Qu Wenruo
  2024-09-21  2:26 ` [PATCH 3/3] btrfs-progs: libbtrfsutil/python: reuse existing README.md for long description Qu Wenruo
  2 siblings, 0 replies; 4+ messages in thread
From: Qu Wenruo @ 2024-09-21  2:26 UTC (permalink / raw)
  To: linux-btrfs

[BUG]
Currently with python3.12, the python bindding will always result the
following warning:

    [PY]     libbtrfsutil
/usr/lib/python3.12/site-packages/setuptools/_distutils/extension.py:134: UserWarning: Unknown Extension options: 'headers'
  warnings.warn(msg)

[CAUSE]
In the setup.py which specifies the files to be included into the package,
we use setuptools::Extension to specify the file lists and include paths.

But there is no handling of Extension::headers member, thus resulting the
above warning.

[FIX]
According to the docs of setuptools, MANIFEST.in is the file controlling
what files should be included.
So instead of the non-supported headers, use MANIFEST.in to include the
needed headers.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 libbtrfsutil/python/MANIFEST.in | 1 +
 libbtrfsutil/python/setup.py    | 3 ---
 2 files changed, 1 insertion(+), 3 deletions(-)
 create mode 100644 libbtrfsutil/python/MANIFEST.in

diff --git a/libbtrfsutil/python/MANIFEST.in b/libbtrfsutil/python/MANIFEST.in
new file mode 100644
index 000000000000..b613db8ea918
--- /dev/null
+++ b/libbtrfsutil/python/MANIFEST.in
@@ -0,0 +1 @@
+include btrfsutilpy.h
diff --git a/libbtrfsutil/python/setup.py b/libbtrfsutil/python/setup.py
index e0ffb7c52c5b..79c0b48dee7d 100755
--- a/libbtrfsutil/python/setup.py
+++ b/libbtrfsutil/python/setup.py
@@ -97,9 +97,6 @@ module = Extension(
         'qgroup.c',
         'subvolume.c',
     ],
-    headers=[
-        'btrfsutilpy.h'
-    ],
     include_dirs=['..'],
     library_dirs=['../..'],
     libraries=['btrfsutil'],
-- 
2.46.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] btrfs-progs: libbtrfsutil/python: remove unnecessary build options
  2024-09-21  2:26 [PATCH 0/3] btrfs-progs: libbtrfsutil/python: fix all the warnings Qu Wenruo
  2024-09-21  2:26 ` [PATCH 1/3] btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers Qu Wenruo
@ 2024-09-21  2:26 ` Qu Wenruo
  2024-09-21  2:26 ` [PATCH 3/3] btrfs-progs: libbtrfsutil/python: reuse existing README.md for long description Qu Wenruo
  2 siblings, 0 replies; 4+ messages in thread
From: Qu Wenruo @ 2024-09-21  2:26 UTC (permalink / raw)
  To: linux-btrfs

There is no special include and libarary path required for the build of
cpython binding.

Just remove the unnecessary build options.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 libbtrfsutil/python/setup.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/libbtrfsutil/python/setup.py b/libbtrfsutil/python/setup.py
index 79c0b48dee7d..8b377b9fa1b6 100755
--- a/libbtrfsutil/python/setup.py
+++ b/libbtrfsutil/python/setup.py
@@ -97,8 +97,6 @@ module = Extension(
         'qgroup.c',
         'subvolume.c',
     ],
-    include_dirs=['..'],
-    library_dirs=['../..'],
     libraries=['btrfsutil'],
 )
 
-- 
2.46.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] btrfs-progs: libbtrfsutil/python: reuse existing README.md for long description
  2024-09-21  2:26 [PATCH 0/3] btrfs-progs: libbtrfsutil/python: fix all the warnings Qu Wenruo
  2024-09-21  2:26 ` [PATCH 1/3] btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers Qu Wenruo
  2024-09-21  2:26 ` [PATCH 2/3] btrfs-progs: libbtrfsutil/python: remove unnecessary build options Qu Wenruo
@ 2024-09-21  2:26 ` Qu Wenruo
  2 siblings, 0 replies; 4+ messages in thread
From: Qu Wenruo @ 2024-09-21  2:26 UTC (permalink / raw)
  To: linux-btrfs

Instead of copying the file during custom build commands, just use a
soft link to re-use the existing README.d from libbtrfsutil.

Issue: #310
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 libbtrfsutil/python/README.md | 1 +
 libbtrfsutil/python/setup.py  | 2 ++
 2 files changed, 3 insertions(+)
 create mode 120000 libbtrfsutil/python/README.md

diff --git a/libbtrfsutil/python/README.md b/libbtrfsutil/python/README.md
new file mode 120000
index 000000000000..32d46ee883b5
--- /dev/null
+++ b/libbtrfsutil/python/README.md
@@ -0,0 +1 @@
+../README.md
\ No newline at end of file
diff --git a/libbtrfsutil/python/setup.py b/libbtrfsutil/python/setup.py
index 8b377b9fa1b6..5e3bcf088699 100755
--- a/libbtrfsutil/python/setup.py
+++ b/libbtrfsutil/python/setup.py
@@ -106,6 +106,8 @@ setup(
     #version=get_version(),
     version='6.11',
     description='Library for managing Btrfs filesystems',
+    long_description=open('README.md').read(),
+    long_description_content_type='text/markdown',
     url='https://github.com/kdave/btrfs-progs',
     license='LGPLv2+',
     cmdclass={'build_ext': my_build_ext},
-- 
2.46.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-09-21  2:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-21  2:26 [PATCH 0/3] btrfs-progs: libbtrfsutil/python: fix all the warnings Qu Wenruo
2024-09-21  2:26 ` [PATCH 1/3] btrfs-progs: libbtrfsutil/python: use MANIFEST.in for headers Qu Wenruo
2024-09-21  2:26 ` [PATCH 2/3] btrfs-progs: libbtrfsutil/python: remove unnecessary build options Qu Wenruo
2024-09-21  2:26 ` [PATCH 3/3] btrfs-progs: libbtrfsutil/python: reuse existing README.md for long description Qu Wenruo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).