Hey, On Mon, May 15, 2023, 22:04 Dan Čermák <dan.cer...@cgc-instruments.de> wrote:
> Hi Igor, > > On May 15, 2023 6:24:07 PM UTC, Igor Raits <igor.ra...@gmail.com> wrote: > >On Thu, Mar 30, 2023 at 11:56 PM Miro Hrončok <mhron...@redhat.com> > wrote: > >> > >> Hello Python packagers. > >> > >> RPM 4.19 introduces this feature: > >> > >> https://rpm-software-management.github.io/rpm/manual/dynamic_specs.html > >> > >> I decided to write this email to gather my thoughts. I believe that > with this, > >> we can turn manual Python extras subpackages like this: > > > >Is there a reason not to write a brp script so that users won't have > >to do anything manually at all? Basically scan the sitelibdir for the > >dist-info and create necessary parts from there? > > Don't the brp-scripts run after the build? I though the dynamic subpackage > creation has to occur beforehand. > I think brp script runs exactly before subpackages are created. > >> > >> %package -n python3-... > >> Summary: %{summary} > >> > >> %description -n python3-... %_description > >> > >> %pyproject_extras_subpkg -n python3-xxx extra1 extra2 > >> > >> (See > https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#Extras > >> for what that means.) > >> > >> Into something like this: > >> > >> %package -n python3-... > >> Summary: %{summary} > >> > >> %description -n python3-... %_description > >> ... > >> > >> %install > >> %pyproject_install > >> ... > >> %pyproject_generate_extras_subpkgs -n python3-xxx > >> > >> > >> The %pyproject_generate_extras_subpkgs macro would parse the installed > >> .dist-info directory to find out what extras are available and generate > >> subpackages for all of them. > >> > >> (Obviously, the macro name is open up for discussion.) > >> > >> ---------------- > >> > >> An API would be required to exclude extras: > >> > >> - that are not useful for other packages > >> (for example build/development requirements, commonly named dev, doc > or test) > >> - that have requirements that are not packaged in Fedora > >> > >> For example (mimicking the API of %pyproject_check_import): > >> > >> %pyproject_generate_extras_subpkgs -n python3-xxx -e test -e > 'nonfree*' > >> > >> ---------------- > >> > >> However, extras are also currently manually passed to > %pyproject_buildrequires: > >> > >> %generate_buildrequires > >> %pyproject_buildrequires -x extra1 -x extra2 -x test > >> > >> It should already be possible to implement automatic extras discovery in > >> %pyproject_buildrequires with older RPM versions and allow it to be > used this way: > >> > >> %generate_buildrequires > >> %pyproject_buildrequires <FLAG_TO_ENABLE_ALL_EXTRAS> -X 'nonfree*' > >> > >> RPM macros can only accept short flags, so <FLAG_TO_ENABLE_ALL_EXTRAS> > can > >> either be -x '*' (if we start treating -x values as globs, which is > backwards > >> compatible and probably generally useful), or a single-letter switch > such as -a > >> (but honestly we are running out of meaningful letters). > >> > >> (When -X is used, <FLAG_TO_ENABLE_ALL_EXTRAS> can probably be implied. > However, > >> an explicit form needs to exist for packages that don't need to exclude > any > >> extras at all.) > >> > >> > >> Eventually, I'd like to make <FLAG_TO_ENABLE_ALL_EXTRAS> the default, > once RPM > >> 4.19 is omnipresent. > >> > >> ---------------- > >> > >> Combined, this would mean that the packager needs to: > >> > >> 1. specify extras that are not supposed to be used as BRs > >> 2. specify extras that are not supposed to be packaged > >> > >> In the ideal word (2) is a superset of (1). > >> > >> Should %pyproject_generate_extras_subpkgs somehow inherit the -Xes from > >> %pyproject_buildrequires? > >> > >> When a package has extra1, extra2, nonfree1, nonfree2 and test extras, > one > >> could do: > >> > >> %generate_buildrequires > >> %pyproject_buildrequires <FLAG_TO_ENABLE_ALL_EXTRAS> -X 'nonfree*' > >> > >> ... > >> > >> %pyproject_install > >> ... > >> %pyproject_generate_extras_subpkgs -X test > >> > >> That would mean: > >> > >> - extra1 is BRed and packaged > >> - extra2 is BRed and packaged > >> - test is BRed but not packaged > >> - nonfree1 is neither > >> - nonfree2 is neither > >> > >> ---------------- > >> > >> Alternatively the information could be supplied by %globals: > >> > >> %global _python_ignored_extras nonfree* > >> %global _python_unpackaged_extras test > >> > >> However, I somehow dislike this approach. > >> > >> ---------------- > >> > >> I'd appreciate your thoughts on the matter. > >> > >> -- > >> Miro Hrončok > >> -- > >> Phone: +420777974800 > >> IRC: mhroncok > >> _______________________________________________ > >> packaging mailing list -- packag...@lists.fedoraproject.org > >> To unsubscribe send an email to packaging-le...@lists.fedoraproject.org > >> Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > >> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > >> List Archives: > https://lists.fedoraproject.org/archives/list/packag...@lists.fedoraproject.org > >> Do not reply to spam, report it: > https://pagure.io/fedora-infrastructure/new_issue > > > > > > >
_______________________________________________ python-devel mailing list -- python-devel@lists.fedoraproject.org To unsubscribe send an email to python-devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue