- Add mesonpy-reproducible.patch gh#openSUSE/python-rpm-macros#182

initiated by Bernhard Wiedemann @bmwiedemann

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-meson-python?expand=0&rev=24
This commit is contained in:
Matej Cepl 2024-09-30 21:33:31 +00:00 committed by Git OBS Bridge
commit 839c5b9903
8 changed files with 389 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,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"',

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

@ -0,0 +1,216 @@
-------------------------------------------------------------------
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.16.0
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