Compare commits

...

No commits in common. 'c9' and 'c10-beta' have entirely different histories.
c9 ... c10-beta

@ -288,6 +288,12 @@ However, in Fedora packages, always list executables explicitly to avoid uninten
and language (`*.mo`) files with `%lang` macro and appropriate language code. and language (`*.mo`) files with `%lang` macro and appropriate language code.
Only license files declared via [PEP 639] `License-File` field are detected. Only license files declared via [PEP 639] `License-File` field are detected.
[PEP 639] is still a draft and can be changed in the future. [PEP 639] is still a draft and can be changed in the future.
It is possible to use the `-l` flag to declare that a missing license should
terminate the build or `-L` (the default) to explicitly disable this check.
Packagers are encouraged to use the `-l` flag when the `%license` file is not manually listed in `%files`
to avoid accidentally losing the file in a future version.
When the `%license` file is manually listed in `%files`,
packagers can use the `-L` flag to ensure future compatibility in case the `-l` behavior eventually becomes a default.
Note that `%pyproject_save_files` uses data from the [RECORD file](https://www.python.org/dev/peps/pep-0627/). Note that `%pyproject_save_files` uses data from the [RECORD file](https://www.python.org/dev/peps/pep-0627/).
If you wish to rename, remove or otherwise change the installed files of a package If you wish to rename, remove or otherwise change the installed files of a package
@ -342,6 +348,12 @@ The `%pyproject_check_import` macro also accepts positional arguments with
additional qualified module names to check, useful for example if some modules are installed manually. additional qualified module names to check, useful for example if some modules are installed manually.
Note that filtering by `-t`/`-e` also applies to the positional arguments. Note that filtering by `-t`/`-e` also applies to the positional arguments.
Another macro, `%_pyproject_check_import_allow_no_modules` allows to pass the import check,
even if no Python modules are detected in the package.
This may be a valid case for packages containing e.g. typing stubs.
Don't use this macro in Fedora packages.
It's only intended to be used in automated build environments such as Copr.
Generating Extras subpackages Generating Extras subpackages
----------------------------- -----------------------------

@ -1,5 +1,9 @@
# This is a backward-compatible suffix used in all pyproject-rpm-macros directories
# For the main Python it's empty, for all others it's "-3.X"
%_pyproject_files_pkgversion %{expr:"%{python3_pkgversion}" != "3" ? "-%{python3_pkgversion}" : ""}
# This is a directory where wheels are stored and installed from, absolute # This is a directory where wheels are stored and installed from, absolute
%_pyproject_wheeldir %{_builddir}%{?buildsubdir:/%{buildsubdir}}/pyproject-wheeldir %_pyproject_wheeldir %{_builddir}%{?buildsubdir:/%{buildsubdir}}/pyproject-wheeldir%{_pyproject_files_pkgversion}
# This is a directory used as TMPDIR, where pip copies sources to and builds from, relative to PWD # This is a directory used as TMPDIR, where pip copies sources to and builds from, relative to PWD
# For proper debugsource packages, we create TMPDIR within PWD # For proper debugsource packages, we create TMPDIR within PWD
@ -8,12 +12,12 @@
# This will be used in debugsource package paths (applies to extension modules only) # This will be used in debugsource package paths (applies to extension modules only)
# NB: pytest collects tests from here if not hidden # NB: pytest collects tests from here if not hidden
# https://docs.pytest.org/en/latest/reference.html#confval-norecursedirs # https://docs.pytest.org/en/latest/reference.html#confval-norecursedirs
%_pyproject_builddir %{_builddir}%{?buildsubdir:/%{buildsubdir}}/.pyproject-builddir %_pyproject_builddir %{_builddir}%{?buildsubdir:/%{buildsubdir}}/.pyproject-builddir%{_pyproject_files_pkgversion}
# We prefix all created files with this value to make them unique # We prefix all created files with this value to make them unique
# Ideally, we would put them into %%{buildsubdir}, but that value changes during the spec # Ideally, we would put them into %%{buildsubdir}, but that value changes during the spec
# The used value is similar to the one used to define the default %%buildroot # The used value is similar to the one used to define the default %%buildroot
%_pyproject_files_prefix %{name}-%{version}-%{release}.%{_arch} %_pyproject_files_prefix %{name}-%{version}-%{release}.%{_arch}%{_pyproject_files_pkgversion}
%pyproject_files %{_builddir}/%{_pyproject_files_prefix}-pyproject-files %pyproject_files %{_builddir}/%{_pyproject_files_prefix}-pyproject-files
%_pyproject_modules %{_builddir}/%{_pyproject_files_prefix}-pyproject-modules %_pyproject_modules %{_builddir}/%{_pyproject_files_prefix}-pyproject-modules
@ -65,6 +69,10 @@ echo $(IFS=:; echo "${pyproject_build_lib[*]}")
%pyproject_install() %{expand:\\\ %pyproject_install() %{expand:\\\
specifier=$(ls %{_pyproject_wheeldir}/*.whl | xargs basename --multiple | sed -E 's/([^-]+)-([^-]+)-.+\\\.whl/\\\1==\\\2/') specifier=$(ls %{_pyproject_wheeldir}/*.whl | xargs basename --multiple | sed -E 's/([^-]+)-([^-]+)-.+\\\.whl/\\\1==\\\2/')
if [ -z $specifier ]; then
echo 'ERROR: %%%%pyproject_install found no wheel in %%%%{_pyproject_wheeldir} %{_pyproject_wheeldir}' >&2
exit 1
fi
TMPDIR="%{_pyproject_builddir}" %{__python3} -m pip install --root %{buildroot} --prefix %{_prefix} --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links %{_pyproject_wheeldir} $specifier TMPDIR="%{_pyproject_builddir}" %{__python3} -m pip install --root %{buildroot} --prefix %{_prefix} --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links %{_pyproject_wheeldir} $specifier
if [ -d %{buildroot}%{_bindir} ]; then if [ -d %{buildroot}%{_bindir} ]; then
%py3_shebang_fix %{buildroot}%{_bindir}/* %py3_shebang_fix %{buildroot}%{_bindir}/*
@ -106,12 +114,10 @@ fi
# Escaping an actual percentage sign in path by 8 signs has been verified in RPM 4.16 and 4.17. # Escaping an actual percentage sign in path by 8 signs has been verified in RPM 4.16 and 4.17.
# See this thread http://lists.rpm.org/pipermail/rpm-list/2021-June/002048.html # See this thread http://lists.rpm.org/pipermail/rpm-list/2021-June/002048.html
# Since RPM 4.19, 2 signs are needed instead. # Since RPM 4.19, 2 signs are needed instead. 4.18.90+ is a pre-release of RPM 4.19.
# On the CI, we build tests/escape_percentages.spec to verify the assumptions. # On the CI, we build tests/escape_percentages.spec to verify the assumptions.
# We should check RPM version here instead of Fedora/RHEL, but it's hard; %pyproject_save_files(lL) %{expand:\\\
# see https://github.com/rpm-software-management/rpm/issues/2523 %{expr:v"0%{?rpmversion}" >= v"4.18.90" ? "RPM_PERCENTAGES_COUNT=2" : "RPM_PERCENTAGES_COUNT=8" } \\
%pyproject_save_files() %{expand:\\\
%{expr:0%{?fedora} >= 39 || 0%{?rhel} >= 10 ? "RPM_PERCENTAGES_COUNT=2" : "RPM_PERCENTAGES_COUNT=8" } \\
%{__python3} %{_rpmconfigdir}/redhat/pyproject_save_files.py \\ %{__python3} %{_rpmconfigdir}/redhat/pyproject_save_files.py \\
--output-files "%{pyproject_files}" \\ --output-files "%{pyproject_files}" \\
--output-modules "%{_pyproject_modules}" \\ --output-modules "%{_pyproject_modules}" \\
@ -121,7 +127,7 @@ fi
--python-version "%{python3_version}" \\ --python-version "%{python3_version}" \\
--pyproject-record "%{_pyproject_record}" \\ --pyproject-record "%{_pyproject_record}" \\
--prefix "%{_prefix}" \\ --prefix "%{_prefix}" \\
%{*} %{**}
} }
# -t - Process only top-level modules # -t - Process only top-level modules
@ -135,6 +141,14 @@ fi
} }
%_pyproject_check_import_allow_no_modules(e:t) \
if [ -z "$(cat %{_pyproject_modules})" ]; then\
echo "No modules to check found, exiting check"\
else\
%pyproject_check_import %{?**}\
fi
%default_toxenv py%{python3_version_nodots} %default_toxenv py%{python3_version_nodots}
%toxenv %{default_toxenv} %toxenv %{default_toxenv}
@ -150,6 +164,9 @@ fi
%{?_package_note_flags:%_generate_package_note_file} %{?_package_note_flags:%_generate_package_note_file}
%{-R: %{-R:
%{-r:%{error:The -R and -r options are mutually exclusive}} %{-r:%{error:The -R and -r options are mutually exclusive}}
%{-x:%{error:The -R and -x options are mutually exclusive}}
%{-e:%{error:The -R and -e options are mutually exclusive}}
%{-t:%{error:The -R and -t options are mutually exclusive}}
%{-w:%{error:The -R and -w options are mutually exclusive}} %{-w:%{error:The -R and -w options are mutually exclusive}}
} }
%{-N: %{-N:

@ -328,6 +328,11 @@ def generate_run_requirements_wheel(backend, requirements, wheeldir):
# Reuse the wheel from the previous round of %pyproject_buildrequires (if it exists) # Reuse the wheel from the previous round of %pyproject_buildrequires (if it exists)
wheel = find_built_wheel(wheeldir) wheel = find_built_wheel(wheeldir)
if not wheel: if not wheel:
# pip is already echoed from the macro
# but we need to explicitly restart if has not yet been installed
# see https://bugzilla.redhat.com/2169855
requirements.add('pip >= 19', source='%pyproject_buildrequires -w')
requirements.check(source='%pyproject_buildrequires -w')
import pyproject_wheel import pyproject_wheel
returncode = pyproject_wheel.build_wheel( returncode = pyproject_wheel.build_wheel(
wheeldir=wheeldir, wheeldir=wheeldir,
@ -386,7 +391,7 @@ def generate_tox_requirements(toxenv, requirements):
provision_content = provision.read() provision_content = provision.read()
if provision_content and r.returncode != 0: if provision_content and r.returncode != 0:
provision_requires = json.loads(provision_content) provision_requires = json.loads(provision_content)
if 'minversion' in provision_requires: if provision_requires.get('minversion') is not None:
requirements.add(f'tox >= {provision_requires["minversion"]}', requirements.add(f'tox >= {provision_requires["minversion"]}',
source='tox provision (minversion)') source='tox provision (minversion)')
if 'requires' in provision_requires: if 'requires' in provision_requires:

@ -365,6 +365,7 @@ Run dependencies with extras and build wheel option:
setuptools: 50 setuptools: 50
wheel: 1 wheel: 1
pyyaml: 1 pyyaml: 1
pip: 20
include_runtime: true include_runtime: true
build_wheel: true build_wheel: true
extras: extras:
@ -375,6 +376,7 @@ Run dependencies with extras and build wheel option:
python3dist(wheel) python3dist(wheel)
python3dist(wheel) python3dist(wheel)
python3dist(setuptools) >= 40 python3dist(setuptools) >= 40
python3dist(pip) >= 19
python3dist(py) >= 1.5 python3dist(py) >= 1.5
python3dist(six) >= 1.10 python3dist(six) >= 1.10
python3dist(setuptools) python3dist(setuptools)
@ -589,6 +591,43 @@ tox provision satisfied:
python3dist(inst) python3dist(inst)
result: 0 result: 0
tox provision no minversion:
installed:
setuptools: 50
wheel: 1
tox: 3.5.3
tox-current-env: 0.0.6
toxenv:
- py3
setup.py: |
from setuptools import setup
setup(
name='test',
version='0.1',
)
tox.ini: |
[tox]
requires =
setuptools > 40
wheel > 2
expected:
- | # tox 3
python3dist(setuptools) >= 40.8
python3dist(wheel)
python3dist(wheel)
python3dist(tox-current-env) >= 0.0.6
python3dist(setuptools) > 40.0
python3dist(wheel) > 2.0
- | # tox 4
python3dist(setuptools) >= 40.8
python3dist(wheel)
python3dist(wheel)
python3dist(tox-current-env) >= 0.0.6
python3dist(setuptools) > 40.0
python3dist(wheel) > 2.0
python3dist(tox)
result: 0
Default build system, unmet deps in requirements file: Default build system, unmet deps in requirements file:
installed: installed:
setuptools: 50 setuptools: 50

@ -345,7 +345,7 @@ def classify_paths(
} }
license_files = metadata.get_all('License-File') license_files = metadata.get_all('License-File')
license_directory = distinfo / 'licenses' # See PEP 369 "Root License Directory" license_directory = distinfo / 'licenses' # See PEP 639 "Root License Directory"
# setuptools was the first known build backend to implement License-File. # setuptools was the first known build backend to implement License-File.
# Unfortunately they don't put licenses to the license directory (yet): # Unfortunately they don't put licenses to the license directory (yet):
# https://github.com/pypa/setuptools/issues/3596 # https://github.com/pypa/setuptools/issues/3596
@ -673,7 +673,7 @@ def load_parsed_record(pyproject_record):
content = json.load(pyproject_record_file) content = json.load(pyproject_record_file)
if len(content) > 1: if len(content) > 1:
raise FileExistsError("%pyproject install has found more than one *.dist-info/RECORD file. " raise FileExistsError("%pyproject_install has found more than one *.dist-info/RECORD file. "
"Currently, %pyproject_save_files supports only one wheel → one file list mapping. " "Currently, %pyproject_save_files supports only one wheel → one file list mapping. "
"Feel free to open a bugzilla for pyproject-rpm-macros and describe your usecase.") "Feel free to open a bugzilla for pyproject-rpm-macros and describe your usecase.")
@ -693,12 +693,15 @@ def dist_metadata(buildroot, record_path):
return dist.metadata return dist.metadata
def pyproject_save_files_and_modules(buildroot, sitelib, sitearch, python_version, pyproject_record, prefix, varargs): def pyproject_save_files_and_modules(buildroot, sitelib, sitearch, python_version, pyproject_record, prefix, assert_license, varargs):
""" """
Takes arguments from the %{pyproject_save_files} macro Takes arguments from the %{pyproject_save_files} macro
Returns tuple: list of paths for the %files section and list of module names Returns tuple: list of paths for the %files section and list of module names
for the %check section for the %check section
Raises ValueError when assert_license is true and no License-File (PEP 639)
is found.
""" """
# On 32 bit architectures, sitelib equals to sitearch # On 32 bit architectures, sitelib equals to sitearch
# This saves us browsing one directory twice # This saves us browsing one directory twice
@ -710,11 +713,15 @@ def pyproject_save_files_and_modules(buildroot, sitelib, sitearch, python_versio
final_file_list = [] final_file_list = []
final_module_list = [] final_module_list = []
# we assume OK when not asserting
license_ok = not assert_license
for record_path, files in parsed_records.items(): for record_path, files in parsed_records.items():
metadata = dist_metadata(buildroot, record_path) metadata = dist_metadata(buildroot, record_path)
paths_dict = classify_paths( paths_dict = classify_paths(
record_path, files, metadata, sitedirs, python_version, prefix record_path, files, metadata, sitedirs, python_version, prefix
) )
license_ok = license_ok or bool(paths_dict["metadata"]["licenses"])
final_file_list.extend( final_file_list.extend(
generate_file_list(paths_dict, globs, include_auto) generate_file_list(paths_dict, globs, include_auto)
@ -723,6 +730,15 @@ def pyproject_save_files_and_modules(buildroot, sitelib, sitearch, python_versio
generate_module_list(paths_dict, globs) generate_module_list(paths_dict, globs)
) )
if not license_ok:
raise ValueError(
"No License-File (PEP 639) in upstream metadata found. "
"Adjust the upstream metadata "
"if the project's build backend supports PEP 639 "
"or use `%pyproject_save_files -L` "
"and include the %license file in %files manually."
)
return final_file_list, final_module_list return final_file_list, final_module_list
@ -734,6 +750,7 @@ def main(cli_args):
cli_args.python_version, cli_args.python_version,
cli_args.pyproject_record, cli_args.pyproject_record,
cli_args.prefix, cli_args.prefix,
cli_args.assert_license,
cli_args.varargs, cli_args.varargs,
) )
@ -747,7 +764,7 @@ def argparser():
prog="%pyproject_save_files", prog="%pyproject_save_files",
add_help=False, add_help=False,
# custom usage to add +auto # custom usage to add +auto
usage="%(prog)s MODULE_GLOB [MODULE_GLOB ...] [+auto]", usage="%(prog)s [-l|-L] MODULE_GLOB [MODULE_GLOB ...] [+auto]",
) )
parser.add_argument( parser.add_argument(
'--help', action='help', '--help', action='help',
@ -763,6 +780,14 @@ def argparser():
r.add_argument("--python-version", type=str, required=True, help=argparse.SUPPRESS) r.add_argument("--python-version", type=str, required=True, help=argparse.SUPPRESS)
r.add_argument("--pyproject-record", type=PosixPath, required=True, help=argparse.SUPPRESS) r.add_argument("--pyproject-record", type=PosixPath, required=True, help=argparse.SUPPRESS)
r.add_argument("--prefix", type=PosixPath, required=True, help=argparse.SUPPRESS) r.add_argument("--prefix", type=PosixPath, required=True, help=argparse.SUPPRESS)
parser.add_argument(
"-l", "--assert-license", action="store_true", default=False,
help="Fail when no License-File (PEP 639) is found.",
)
parser.add_argument(
"-L", "--no-assert-license", action="store_false", dest="assert_license",
help="Don't fail when no License-File (PEP 639) is found (the default).",
)
parser.add_argument( parser.add_argument(
"varargs", nargs="+", metavar="MODULE_GLOB", "varargs", nargs="+", metavar="MODULE_GLOB",
help="Shell-like glob matching top-level module names to save into %%{pyproject_files}", help="Shell-like glob matching top-level module names to save into %%{pyproject_files}",

@ -13,8 +13,8 @@ License: MIT
# Increment Y and reset Z when new macros or features are added # Increment Y and reset Z when new macros or features are added
# Increment Z when this is a bugfix or a cosmetic change # Increment Z when this is a bugfix or a cosmetic change
# Dropping support for EOL Fedoras is *not* considered a breaking change # Dropping support for EOL Fedoras is *not* considered a breaking change
Version: 1.9.0 Version: 1.12.0
Release: 1%{?dist} Release: 2%{?dist}
# Macro files # Macro files
Source001: macros.pyproject Source001: macros.pyproject
@ -62,14 +62,6 @@ BuildRequires: python3dist(tox-current-env) >= 0.0.6
%endif %endif
BuildRequires: python3dist(wheel) BuildRequires: python3dist(wheel)
BuildRequires: (python3dist(tomli) if python3 < 3.11) BuildRequires: (python3dist(tomli) if python3 < 3.11)
# RHEL 9: We also run pytest with Python 3.11
BuildRequires: python3.11dist(pytest)
BuildRequires: python3.11dist(pyyaml)
BuildRequires: python3.11dist(packaging)
BuildRequires: python3.11dist(pip)
BuildRequires: python3.11dist(setuptools)
BuildRequires: python3.11dist(wheel)
%endif %endif
# We build on top of those: # We build on top of those:
@ -85,6 +77,12 @@ Requires: (pyproject-srpm-macros = %{?epoch:%{epoch}:}%{version}-%{release
Requires: /usr/bin/find Requires: /usr/bin/find
Requires: /usr/bin/sed Requires: /usr/bin/sed
# This package requires the %%generate_buildrequires functionality.
# It has been introduced in RPM 4.15 (4.14.90 is the alpha of 4.15).
# What we need is rpmlib(DynamicBuildRequires), but that is impossible to (Build)Require.
Requires: (rpm-build >= 4.14.90 if rpm-build)
BuildRequires: rpm-build >= 4.14.90
%description %description
These macros allow projects that follow the Python packaging specifications These macros allow projects that follow the Python packaging specifications
to be packaged as RPMs. to be packaged as RPMs.
@ -103,6 +101,7 @@ which only work with setup.py.
%package -n pyproject-srpm-macros %package -n pyproject-srpm-macros
Summary: Minimal implementation of %%pyproject_buildrequires Summary: Minimal implementation of %%pyproject_buildrequires
Requires: (pyproject-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} if pyproject-rpm-macros) Requires: (pyproject-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release} if pyproject-rpm-macros)
Requires: (rpm-build >= 4.14.90 if rpm-build)
%description -n pyproject-srpm-macros %description -n pyproject-srpm-macros
This package contains a minimal implementation of %%pyproject_buildrequires. This package contains a minimal implementation of %%pyproject_buildrequires.
@ -117,6 +116,9 @@ takes precedence.
%setup -c -T %setup -c -T
cp -p %{sources} . cp -p %{sources} .
%generate_buildrequires
# nothing to do, this is here just to assert we have that functionality
%build %build
# nothing to do, sources are not buildable # nothing to do, sources are not buildable
@ -145,10 +147,6 @@ test "$signature1" != ""
export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856356 export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856356
%pytest -vv --doctest-modules %{?with_pytest_xdist:-n auto} %{!?with_tox_tests:-k "not tox"} %pytest -vv --doctest-modules %{?with_pytest_xdist:-n auto} %{!?with_tox_tests:-k "not tox"}
# RHEL 9 only:
%global __pytest %{__pytest}-3.11
%pytest -vv --doctest-modules -k "not tox"
# brp-compress is provided as an argument to get the right directory macro expansion # brp-compress is provided as an argument to get the right directory macro expansion
%{python3} compare_mandata.py -f %{_rpmconfigdir}/brp-compress %{python3} compare_mandata.py -f %{_rpmconfigdir}/brp-compress
%endif %endif
@ -173,8 +171,42 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
%changelog %changelog
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.12.0-2
- Bump release for June 2024 mass rebuild
* Fri Jan 26 2024 Miro Hrončok <miro@hroncok.cz> - 1.12.0-1
- Namespace pyproject-rpm-macros generated text files with %%{python3_pkgversion}
- That way, a single-spec can be used to build packages for multiple Python versions
- Fixes: rhbz#2209055
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Sep 27 2023 Miro Hrončok <mhroncok@redhat.com> - 1.11.0-1
- Add the -l/-L flag to %%pyproject_save_files
- The -l flag can be used to assert at least 1 License-File was detected
- The -L flag explicitly disables this check (which remains the default)
- Prevent incorrect usage of %%pyproject_buildrequires -R with -x/-e/-t
- Fixes: rhbz#2244282
- Show a better error message when %%pyproject_install finds no wheel
- Fixes: rhbz#2242452
- Fix %%pyproject_buildrequires -w when the build backend is already installed and pip isn't
- Fixes: rhbz#2169855
* Wed Sep 13 2023 Python Maint <python-maint@redhat.com> - 1.10.0-1
- Add %%_pyproject_check_import_allow_no_modules for automated environments
- Fix handling of tox 4 provision without an explicit tox minversion
- Fixes: rhbz#2240590
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed May 31 2023 Maxwell G <maxwell@gtmx.me> - 1.9.0-1 * Wed May 31 2023 Maxwell G <maxwell@gtmx.me> - 1.9.0-1
- Allow passing config_settings to the build backend. - Allow passing config_settings to the build backend.
- Resolves: rhbz#2192581
* Wed May 31 2023 Miro Hrončok <mhroncok@redhat.com> - 1.8.1-1 * Wed May 31 2023 Miro Hrončok <mhroncok@redhat.com> - 1.8.1-1
- On Python older than 3.11, use tomli instead of deprecated toml - On Python older than 3.11, use tomli instead of deprecated toml
@ -185,12 +217,14 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Thu Apr 27 2023 Miro Hrončok <mhroncok@redhat.com> - 1.8.0-1 * Thu Apr 27 2023 Miro Hrončok <mhroncok@redhat.com> - 1.8.0-1
- %%pyproject_buildrequires: Add support for self-referential extras requirements - %%pyproject_buildrequires: Add support for self-referential extras requirements
Fixes: rhbz#2171343
- Deprecate the provisional %%{pyproject_build_lib} macro - Deprecate the provisional %%{pyproject_build_lib} macro
See https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/thread/HMLOPAU3RZLXD4BOJHTIPKI3I4U6U7OE/ See https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/thread/HMLOPAU3RZLXD4BOJHTIPKI3I4U6U7OE/
* Fri Mar 31 2023 Miro Hrončok <mhroncok@redhat.com> - 1.7.0-1 * Fri Mar 31 2023 Miro Hrončok <mhroncok@redhat.com> - 1.7.0-1
- %%pyproject_buildrequires: Redirect stdout to stderr via Shell - %%pyproject_buildrequires: Redirect stdout to stderr via Shell
- Dependencies are recorded to a text file that is catted at the end - Dependencies are recorded to a text file that is catted at the end
- Fixes: rhbz#2183519
* Mon Feb 13 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.3-1 * Mon Feb 13 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.3-1
- Remove .dist-info directory at the end of %%pyproject_buildrequires - Remove .dist-info directory at the end of %%pyproject_buildrequires
@ -198,23 +232,31 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Wed Feb 08 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.2-1 * Wed Feb 08 2023 Lumír Balhar <lbalhar@redhat.com> - 1.6.2-1
- Improve detection of lang files - Improve detection of lang files
- Fixes: rhbz#2166295
* Fri Feb 03 2023 Miro Hrončok <mhroncok@redhat.com> - 1.6.1-1 * Fri Feb 03 2023 Miro Hrončok <mhroncok@redhat.com> - 1.6.1-1
- %%pyproject_buildrequires: Avoid leaking stdout from subprocesses - %%pyproject_buildrequires: Avoid leaking stdout from subprocesses
- Fixes: rhbz#2166888
* Fri Jan 20 2023 Miro Hrončok <miro@hroncok.cz> - 1.6.0-1 * Fri Jan 20 2023 Miro Hrončok <miro@hroncok.cz> - 1.6.0-1
- Add pyproject-srpm-macros with a minimal %%pyproject_buildrequires macro - Add pyproject-srpm-macros with a minimal %%pyproject_buildrequires macro
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Jan 13 2023 Miro Hrončok <mhroncok@redhat.com> - 1.5.1-1 * Fri Jan 13 2023 Miro Hrončok <mhroncok@redhat.com> - 1.5.1-1
- Adjusts %%pyproject_buildrequires tests for tox 4 - Adjusts %%pyproject_buildrequires tests for tox 4
- Fixes: rhbz#2160687
* Mon Nov 28 2022 Miro Hrončok <mhroncok@redhat.com> - 1.5.0-1 * Mon Nov 28 2022 Miro Hrončok <mhroncok@redhat.com> - 1.5.0-1
- Use %%py3_test_envvars in %%tox when available - Use %%py3_test_envvars in %%tox when available
* Mon Sep 19 2022 Python Maint <python-maint@redhat.com> - 1.4.0-1 * Mon Sep 19 2022 Python Maint <python-maint@redhat.com> - 1.4.0-1
- %%pyproject_save_files: Support License-Files installed into the *Root License Directory* from PEP 369 - %%pyproject_save_files: Support License-Files installed into the *Root License Directory* from PEP 639
- Fixes: rhbz#2127946
- %%pyproject_check_import: Import only the modules whose top-level names - %%pyproject_check_import: Import only the modules whose top-level names
match any of the globs provided to %%pyproject_save_files match any of the globs provided to %%pyproject_save_files
- Fixes: rhbz#2127958
* Tue Aug 30 2022 Otto Liljalaakso <otto.liljalaakso@iki.fi> - 1.3.4-1 * Tue Aug 30 2022 Otto Liljalaakso <otto.liljalaakso@iki.fi> - 1.3.4-1
- Fix typo in internal function name - Fix typo in internal function name
@ -222,10 +264,15 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Tue Aug 09 2022 Karolina Surma <ksurma@redhat.com> - 1.3.3-1 * Tue Aug 09 2022 Karolina Surma <ksurma@redhat.com> - 1.3.3-1
- Don't fail %%pyproject_save_files '*' if no modules are detected - Don't fail %%pyproject_save_files '*' if no modules are detected
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jun 15 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 1.3.2-1 * Wed Jun 15 2022 Benjamin A. Beasley <code@musicinmybrain.net> - 1.3.2-1
- Update %%pyproject_build_lib to support setuptools 62.1.0 and later - Update %%pyproject_build_lib to support setuptools 62.1.0 and later
- Fixes: rhbz#2097158
- %%pyproject_buildrequires: When extension modules are built, - %%pyproject_buildrequires: When extension modules are built,
support https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects support https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects
- Fixes: rhbz#2097535
* Fri May 27 2022 Owen Taylor <otaylor@redhat.com> - 1.3.1-1 * Fri May 27 2022 Owen Taylor <otaylor@redhat.com> - 1.3.1-1
- %%pyproject_install: pass %%{_prefix} explicitly to pip install - %%pyproject_install: pass %%{_prefix} explicitly to pip install
@ -238,9 +285,11 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
prepare_metadata_for_build_wheel hook prepare_metadata_for_build_wheel hook
When used, the wheel is built in %%pyproject_buildrequires When used, the wheel is built in %%pyproject_buildrequires
and information about runtime requires and extras is read from that wheel. and information about runtime requires and extras is read from that wheel.
- Fixes: rhbz#2076994
* Tue Apr 12 2022 Miro Hrončok <mhroncok@redhat.com> - 1.1.0-1 * Tue Apr 12 2022 Miro Hrončok <mhroncok@redhat.com> - 1.1.0-1
- %%pyproject_save_files: Support nested directories in dist-info - %%pyproject_save_files: Support nested directories in dist-info
- Fixes: rhbz#1985340
* Tue Mar 22 2022 Miro Hrončok <mhroncok@redhat.com> - 1.0.1-1 * Tue Mar 22 2022 Miro Hrončok <mhroncok@redhat.com> - 1.0.1-1
- Prefix paths of intermediate files (such as %%{pyproject_files}) with NVRA - Prefix paths of intermediate files (such as %%{pyproject_files}) with NVRA
@ -260,6 +309,7 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Wed Jan 19 2022 Karolina Surma <ksurma@redhat.com> - 0-54 * Wed Jan 19 2022 Karolina Surma <ksurma@redhat.com> - 0-54
- Include compressed manpages to the package if flag '+auto' is provided to %%pyproject_save_files - Include compressed manpages to the package if flag '+auto' is provided to %%pyproject_save_files
- Fixes: rhbz#2033254
* Fri Jan 14 2022 Miro Hrončok <mhroncok@redhat.com> - 0-53 * Fri Jan 14 2022 Miro Hrončok <mhroncok@redhat.com> - 0-53
- %%pyproject_buildrequires: Make -r (include runtime) the default, use -R to opt-out - %%pyproject_buildrequires: Make -r (include runtime) the default, use -R to opt-out
@ -282,6 +332,7 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Sat Oct 16 2021 Miro Hrončok <mhroncok@redhat.com> - 0-48 * Sat Oct 16 2021 Miro Hrončok <mhroncok@redhat.com> - 0-48
- %%pyproject_buildrequires: Accept installed pre-releases for all requirements - %%pyproject_buildrequires: Accept installed pre-releases for all requirements
- Fixes: rhbz#2014639
* Thu Sep 09 2021 Miro Hrončok <mhroncok@redhat.com> - 0-47 * Thu Sep 09 2021 Miro Hrončok <mhroncok@redhat.com> - 0-47
- %%pyproject_save_files: Expand the namespace error message, also display it with / - %%pyproject_save_files: Expand the namespace error message, also display it with /
@ -289,6 +340,7 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Fri Jul 23 2021 Miro Hrončok <miro@hroncok.cz> - 0-46 * Fri Jul 23 2021 Miro Hrončok <miro@hroncok.cz> - 0-46
- %%pyproject_buildrequires now fails when it encounters an invalid requirement - %%pyproject_buildrequires now fails when it encounters an invalid requirement
- Fixes: rhbz#1983053
- Rename %%_pyproject_ghost_distinfo and %%_pyproject_record to indicate they are private - Rename %%_pyproject_ghost_distinfo and %%_pyproject_record to indicate they are private
- Automatically detect LICENSE files and mark them with %%license macro - Automatically detect LICENSE files and mark them with %%license macro
@ -297,36 +349,34 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
* Fri Jul 09 2021 Python Maint <python-maint@redhat.com> - 0-44 * Fri Jul 09 2021 Python Maint <python-maint@redhat.com> - 0-44
- Escape weird paths generated by %%pyproject_save_files - Escape weird paths generated by %%pyproject_save_files
- Fixes rhbz#1976363
- Support x.* versions in %%pyproject_buildrequires - Support x.* versions in %%pyproject_buildrequires
- Fixes rhbz#1981558
- %%pyproject_buildrequires fallbacks to setuptools only if setup.py exists - %%pyproject_buildrequires fallbacks to setuptools only if setup.py exists
- Fixes: rhbz#1976459
- Explicitly require the "basic" Python RPM macros - Explicitly require the "basic" Python RPM macros
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Jul 01 2021 Tomas Hrnciar <thrnciar@redhat.com> - 0-43 * Thu Jul 01 2021 Tomas Hrnciar <thrnciar@redhat.com> - 0-43
- Generate BuildRequires from file - Generate BuildRequires from file
- Fixes: rhbz#1936448
* Tue Jun 29 2021 Miro Hrončok <mhroncok@redhat.com> - 0-42 * Tue Jun 29 2021 Miro Hrončok <mhroncok@redhat.com> - 0-42
- Don't accidentally treat "~= X.0" requirement as "~= X" - Don't accidentally treat "~= X.0" requirement as "~= X"
- Fixes rhzb#1977060 - Fixes rhbz#1977060
* Mon Jun 28 2021 Miro Hrončok <mhroncok@redhat.com> - 0-41 * Mon Jun 28 2021 Miro Hrončok <mhroncok@redhat.com> - 0-41
- Don't leak %%{_pyproject_builddir} to pytest collection - Don't leak %%{_pyproject_builddir} to pytest collection
- Fixes rhbz#1935212
* Thu May 27 2021 Miro Hrončok <mhroncok@redhat.com> - 0-40 * Thu May 27 2021 Miro Hrončok <mhroncok@redhat.com> - 0-40
- Don't leak $TMPDIR outside of pyproject macros - Don't leak $TMPDIR outside of pyproject macros
- Set %%_pyproject_wheeldir and %%_pyproject_builddir relative to the source tree, not $PWD - Set %%_pyproject_wheeldir and %%_pyproject_builddir relative to the source tree, not $PWD
* Thu Apr 22 2021 Miro Hrončok <mhroncok@redhat.com> - 0-39.2 * Mon Mar 29 2021 Miro Hrončok <mhroncok@redhat.com> - 0-39
- Handle tox provision (tox.requires / tox.minversion) - Handle tox provision (tox.requires / tox.minversion)
- Fixes: rhbz#1922495
- Generate BuildRequires on extras in lower case - Generate BuildRequires on extras in lower case
- Fixes: rhbz#1947074 - Fixes: rhbz#1937944
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0-39.1
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Mar 08 2021 Charalampos Stratakis <cstratak@redhat.com> - 0-38.1
- Disable tests on RHEL9 to remove tox dependency
* Sun Feb 07 2021 Miro Hrončok <mhroncok@redhat.com> - 0-38 * Sun Feb 07 2021 Miro Hrončok <mhroncok@redhat.com> - 0-38
- Include nested __pycache__ directories in %%pyproject_save_files - Include nested __pycache__ directories in %%pyproject_save_files

Loading…
Cancel
Save