- update to 0.17.1:

* Update tests to work with newly released pyproject-metadata
    0.9.0.
  * Fix tests to work when not executed in a git work tree.
  * Refuse to build wheels targeting the limited API and free-
    threaded CPython: the free-threaded CPython build does not
    support the limited API yet.
  * Always use UTF-8 encoding for writing Meson native and cross
    files. Always use UTF-8 encoding for reading read Meson
    introspection data and pyproject.toml.
  * Do not include uncommitted changes when creating source
    distributions. Previously, uncommitted changes to files under
    version control were included, but not untracked files. There
    was no strong use case for this behavior and it was too
    surprising to keep it.
  * Make source distribution reproducible: use the modification
    time of pyproject.toml for the generated files in the source
    distribution archives.
  * Disable the abi3 wheel tag for PyPy when building wheels
    targeting the limited API: PyPy supports the limited API but
    not the stable ABI.
  * Raise ImportError when the package rebuild fails when
    importing an editable install.
  * Fix the wheel platform tag for GraalPy.
  * Add .gitignore and .hgignore files to build directory if it
    is empty.
  * Allow install_subdir() of missing directories.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-meson-python?expand=0&rev=26
This commit is contained in:
Dirk Mueller 2024-11-20 14:58:19 +00:00 committed by Git OBS Bridge
commit 5663ae30f8
9 changed files with 423 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

BIN
meson_python-0.15.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9068c17e36c89d6c7ff709fffb2a8a9925e8cd0b02629728e5ceaf2ec505cb5f
size 82012

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:efb91f69f2e19eef7bc9a471ed2a4e730088cc6b39eacaf3e49fc4f930eb5f83
size 82687

View File

@ -0,0 +1,24 @@
Authors: code@bnavigator.de, bwiedemann@suse.com
Ref: https://github.com/openSUSE/python-rpm-macros/issues/182
Ref: https://github.com/mesonbuild/meson-python/issues/671
Reproducible builds require a deterministic build path.
Use the python-rpm-macros shuffled build directory.
Index: meson_python-0.16.0/mesonpy/__init__.py
===================================================================
--- meson_python-0.16.0.orig/mesonpy/__init__.py
+++ meson_python-0.16.0/mesonpy/__init__.py
@@ -943,7 +943,10 @@ def _project(config_settings: Optional[D
with contextlib.ExitStack() as ctx:
if build_dir is None:
- build_dir = ctx.enter_context(tempfile.TemporaryDirectory(prefix='.mesonpy-', dir=source_dir))
+ if(os.environ.get('SOURCE_DATE_EPOCH')):
+ build_dir = pathlib.Path(source_dir) / 'build'
+ else:
+ build_dir = ctx.enter_context(tempfile.TemporaryDirectory(prefix='.mesonpy-', dir=source_dir))
yield Project(source_dir, build_dir, meson_args, editable_verbose)

25
mesonpy-trim-deps.patch Normal file
View File

@ -0,0 +1,25 @@
The backend does not require a mesonbuild module for every flavor.
the `meson` command from the regular RPM package is sufficient.
Index: meson_python-0.16.0/pyproject.toml
===================================================================
--- meson_python-0.16.0.orig/pyproject.toml
+++ meson_python-0.16.0/pyproject.toml
@@ -6,8 +6,6 @@
build-backend = 'mesonpy'
backend-path = ['.']
requires = [
- 'meson >= 0.63.3; python_version < "3.12"',
- 'meson >= 1.2.3; python_version >= "3.12"',
'packaging >= 19.0',
'pyproject-metadata >= 0.7.1',
'tomli >= 1.0.0; python_version < "3.11"',
@@ -33,8 +31,6 @@ classifiers = [
]
dependencies = [
- 'meson >= 0.63.3; python_version < "3.12"',
- 'meson >= 1.2.3; python_version >= "3.12"',
'packaging >= 19.0',
'pyproject-metadata >= 0.7.1',
'tomli >= 1.0.0; python_version < "3.11"',

247
python-meson-python.changes Normal file
View File

@ -0,0 +1,247 @@
-------------------------------------------------------------------
Wed Nov 20 14:58:13 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.17.1:
* Update tests to work with newly released pyproject-metadata
0.9.0.
* Fix tests to work when not executed in a git work tree.
* Refuse to build wheels targeting the limited API and free-
threaded CPython: the free-threaded CPython build does not
support the limited API yet.
* Always use UTF-8 encoding for writing Meson native and cross
files. Always use UTF-8 encoding for reading read Meson
introspection data and pyproject.toml.
* Do not include uncommitted changes when creating source
distributions. Previously, uncommitted changes to files under
version control were included, but not untracked files. There
was no strong use case for this behavior and it was too
surprising to keep it.
* Make source distribution reproducible: use the modification
time of pyproject.toml for the generated files in the source
distribution archives.
* Disable the abi3 wheel tag for PyPy when building wheels
targeting the limited API: PyPy supports the limited API but
not the stable ABI.
* Raise ImportError when the package rebuild fails when
importing an editable install.
* Fix the wheel platform tag for GraalPy.
* Add .gitignore and .hgignore files to build directory if it
is empty.
* Allow install_subdir() of missing directories.
-------------------------------------------------------------------
Sun Sep 29 11:22:59 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Add mesonpy-reproducible.patch gh#openSUSE/python-rpm-macros#182
initiated by Bernhard Wiedemann @bmwiedemann
-------------------------------------------------------------------
Mon Jul 22 04:20:32 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- update to 0.16.0:
* Correctly detect a wheel shipping shared libraries as being
platform dependent also when it does not ship compiled
executables or Python extension modules.
* Improve parsing of the $ARCHFLAGS environment variable.
Correctly handle repeated -arch flags.
* Do not break when trying to log filename containing Unicode
characters that cannot be encoded in the encoding used by the
standard output stream.
* Suppress all uses of ANSI terminal escapes when logging to a
stream that does not support them.
* Fix ANSI escape coloring of error messages.
* Respect the exclude_dirs and exclude_files arguments passed to
the install_subdir() Meson function in editable installs too.
* Make pkgutil.iter_packages() work properly for modules loaded
from editable installs.
* Add support for the custom_target() Meson function installing a
directory.
* In editable installs, when a rebuild is triggered on module
import, emit a message indicating that the package is being
rebuilt but suppress any output when there is no work to do.
-------------------------------------------------------------------
Tue Apr 16 19:27:36 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Update to 0.15.0
* Enable compression for wheel files. The may result in several
times smaller wheels.
* Require Meson 1.2.3 or later on Python 3.12 or later. Meson
1.2.3 does not require anymore ``distutils``, allowing to
remove the dependency on ``setuptools`` on Python 3.12 or
later.
* Unconditionally require ``patchelf`` on Linux. The
``patchelf`` package is added to the build dependencies if a
suitable ``patchelf`` executable is not find on the ``$PATH``.
This avoids cases where ``meson setup`` was run twice during
the build process to determine whether ``patchelf`` is
required.
* Allow to configure the ``meson`` executable to use for the
build process through the ``$MESON`` environment variable or
the ``meson`` key under ``[tool.meson-python]`` in
``pyproject.toml``.
* Fix wheel platform tag generation on FreeBSD.
* Extend support to other UNIX-like systems and make the tests
pass on FreeBSD.
* Fix package name normalization in package metadata and improve
package name validation.
* Fix ``RPATH`` handling when the build ``RPATH`` points to
subdirectories of the build directory.
* Fix support for the Python limited C API when compiling for
PyPy.
* Rename the ``builddir`` config-setting to ``build-dir``. For
backwards compatibility, the ``buildir`` config-setting remains
supported as an alias.
- Drop no longer needed test patches and test wheels
* no-build-isolation-in-test.patch
* mesonpy-no-wheel-rebuild.patch
-------------------------------------------------------------------
Thu Sep 21 06:01:08 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 0.14.0:
* Do not run ``meson install`` to build a wheel.
* Obey the ``--skip-subprojects`` when specified for the ``meson
install`` command.
* Implement support for the ``exclude_directories`` and
``exclude_files`` arguments to Meson ``install_subdir()`` function
and similar installation functions. This requires Meson version
1.1.0 or later.
* Implement support for building wheels targeting the Python limited API.
* When ``pyproject.toml`` does not contain a ``version`` field and
``version`` is not declared dynamic, raise an error instead of
silently using the version declared in ``meson.build``.
* Fix the mtime of source files in the sdist tarball.
* Add ``objc`` and ``objcpp`` compilers to the cross file generated
when the ``$ARCHFLAGS`` is set.
- Add patch no-build-isolation-in-test.patch, don't use an isolated
environment.
-------------------------------------------------------------------
Thu Aug 17 12:57:55 UTC 2023 - Markéta Machová <mmachova@suse.com>
- Update to 0.13.2
* Add support for editable installs.
* Adjust the default build options passed to meson setup.
* Make sure that the directory where the wheel or sdist build artifacts are
created exists. Fixes building with PDM.
* Fix the specification of the C++ compiler for cross-compilation with
$ARCHFLAGS on macOS.
* Pass the --reconfigure option to meson setup if and only if the specified
build directory exists and is a valid Meson build directory.
* Pass the --no-rebuild option to meson install.
* Allow to select the files to be included in the wheel via Meson install
tags passing the --tags option to meson install via pyproject.toml or
config settings.
* Do not use the meson compile indirection to build the project, except on
Windows, where it is required to setup the Visual Studio environment.
* Do not add ninja to the build dependencies if $NINJA is set but it does not
point to a ninja executable with the required minimum version.
* Verify at run time that Meson satisfies the minimum required version.
* Place native and cross files in the build directory instead of in the source directory.
* Drop the typing-extensions package dependency.
* Add dependency on setuptools on Python 3.12 and later. This fixes build
error due to Meson depending on the distutils standard library module
removed in Python 3.12.
* Bump the required pyproject-metadata version to 0.7.1.
* Allows some more cross-compilation setups by not checking extension modules
filename suffixes against the suffixes accepted by the current interpreter.
* Raise an error when a file that would be installed by Meson cannot be
mapped to a wheel location.
* Raise an error when a package is split between platlib and purelib.
* Do not generate a warning when pyproject.toml does not contain a project
section and Python package metadata is derived from meson.build.
* Improve reporting of pyproject.toml validation errors.
* Fix validation of tool specific options in pyproject.toml. In particular,
allows to specify an incomplete set of options in the
tool.meson-python.args table.
* Add the --quiet option when invoking meson install. The installation paths
are a detail of the meson-python implementation and are generally not
interesting for the user.
-------------------------------------------------------------------
Sat Jun 10 17:53:58 UTC 2023 - ecsos <ecsos@opensuse.org>
- Add %{?sle15_python_module_pythons}
-------------------------------------------------------------------
Sun Mar 26 19:49:50 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 0.12.1:
* Fix regression where the ``MACOSX_DEPLOYMENT_TARGET``
environment variable was accidentally renamed to
``MACOS_DEPLOYMENT_TARGET``
-------------------------------------------------------------------
Fri Jan 13 14:35:33 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Update to 0.12.0
* Raise SystemExit on expected errors
* Revise error messages for consistency
* Support setuptools-style macOS cross compilation via ARCHFLAGS
* Allow to overwrite macOS platform tag via _PYTHON_HOST_PLATFORM
* Include (similar) allowed keys in error messages
- Refresh test wheels
------------------------------------------------------------------
Thu Nov 24 11:31:07 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.11.0
* Project moved to the mesonbuild organization
* Determine wheel tags by introspecting the Python interpreter
* Allow users to pass options directly to Meson via the
tools.meson-python.args.{dist,setup,compile,install}
pyproject.toml keys, and the {dist,setup,compile,install}-args
frontend config options
* Use the system ninja dependency if possible
* Include files generated by mesonadd_dist_script to sdists
* Use tomllib on Python>=3.11
* Drop wheel dependency in favor of in-house solution
* Fix bug where the entry_points.txt file wasn't being generated
* Fix bug where Cygwin Python extensions were not being noticed
- Drop meson-subdir-fix.patch fixed upstream
- Add mesonpy-no-wheel-rebuild.patch
-------------------------------------------------------------------
Fri Oct 14 12:44:56 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
- Update meson-subdir-fix.patch to fix the failure for python3.8 and python3.9
because the meson package is only available for python3.10
-------------------------------------------------------------------
Fri Oct 14 08:49:00 UTC 2022 - Markéta Machová <mmachova@suse.com>
- Add meson-subdir-fix.patch to fix the failure with new meson
-------------------------------------------------------------------
Tue Oct 11 09:01:00 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.10.0
* Ignore the macOS minor version on >=11, to match the behavior
with pypa/packaging
* More fixes on ABI tag detection
* Fix incorrect tag on 32-bit Python running on a x86_64 host
* Fix sdist permissions
* Fix incorrect PyPy tags
* Fix ``install_subdirs`` not being included in wheels
* Take ``MACOSX_DEPLOYMENT_TARGET`` into account for the platform
tag
* Don't set the rpath on binaries if unneeded
- Drop patches
* mesonpy-force-flavor.patch
* mesonpy-no-rpath.patch
-------------------------------------------------------------------
Tue Sep 13 01:16:30 UTC 2022 - Ben Greiner <code@bnavigator.de>
- add mesonpy-no-rpath.patch -- gh#FFY00/meson-python#125
-------------------------------------------------------------------
Sat Sep 10 21:18:06 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Initial specfile for v0.8.1
- Used by new SciPy pyproject.toml
- Force correct flavor by mesonpy-force-flavor.patch
* gh#FY00/meson-python#51, gh#FY00/meson-python#127
- Use mesonpy-trim-deps.patch for single-flavor meson and ninja
commands

94
python-meson-python.spec Normal file
View File

@ -0,0 +1,94 @@
#
# spec file for package python-meson-python
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?sle15_python_module_pythons}
Name: python-meson-python
Version: 0.17.1
Release: 0
Summary: Meson Python build backend (PEP 517)
License: MIT
URL: https://github.com/mesonbuild/meson-python
Source0: https://files.pythonhosted.org/packages/source/m/meson_python/meson_python-%{version}.tar.gz
# PATCH-FEATURE-OPENSUSE mesonpy-trim-deps.patch code@bnavigator.de
Patch11: mesonpy-trim-deps.patch
# PATCH-FEATURE-OPENSUSE mesonpy-reproducible.patch gh#openSUSE/python-rpm-macros#182
Patch12: mesonpy-reproducible.patch
BuildRequires: %{python_module base >= 3.7}
BuildRequires: %{python_module packaging >= 0.19}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pyproject-metadata >= 0.7.1}
BuildRequires: %{python_module tomli >= 1.0.0 if %python-base < 3.11}
BuildRequires: fdupes
BuildRequires: meson >= 1.2.3
BuildRequires: ninja
BuildRequires: python-rpm-macros
Requires: python-packaging >= 0.19
Requires: python-pyproject-metadata >= 0.7.1
BuildArch: noarch
%if 0%{python_version_nodots} >= 312
Requires: meson >= 1.2.3
%else
Requires: meson >= 0.63.3
%endif
%if 0%{python_version_nodots} < 311
Requires: python-tomli >= 1.0.0
%endif
# SECTION test
BuildRequires: %{python_module Cython}
BuildRequires: %{python_module GitPython}
BuildRequires: %{python_module build}
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module wheel}
BuildRequires: patchelf
# /SECTION
%python_subpackages
%description
meson-python is a Python build backend built on top of the Meson build system.
It enables using Meson for the configuration and build steps of Python packages.
meson-python is best suited for building Python packages containing extension
modules implemented in languages such as C, C++, Cython, Fortran, Pythran, or Rust.
%prep
%autosetup -p1 -n meson_python-%{version}
%build
%pyproject_wheel
%install
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
# test suite path issues
donttest="test_vendored_meson"
%{python_expand # clear test builds
find tests -name build -type d -prune -print -exec rm -r {} +
$python -m pytest -v -k "not ($donttest)"
}
%files %{python_files}
%license LICENSE
%doc README.rst
%{python_sitelib}/mesonpy
%{python_sitelib}/meson_python-%{version}*-info
%changelog