Commit Graph

159 Commits

Author SHA1 Message Date
Petr Viktorin
aeb21f671f Split requirements.txt parsing to its own module; test & improve it 2021-07-23 10:00:01 +02:00
Miro Hrončok
f8a3343abc %pyproject_buildrequires now fails when it encounters an invalid requirement
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1983053
2021-07-23 10:00:01 +02:00
Fedora Release Engineering
3406e9332b - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 04:29:49 +00:00
Miro Hrončok
196bc9049d All supported Fedoras can have dependencies on extras 2021-07-17 15:06:23 +02:00
Miro Hrončok
c3161aefe4 Explicitly require the "basic" Python RPM macros 2021-07-17 15:05:33 +02:00
Tomas Hrnciar
5b1caad68e %pyproject_buildrequires: Fallback to setuptools.build_meta:__legacy__ only if setup.py exists
Fixes: rhbz#1976459
2021-07-17 00:36:57 +02:00
Miro Hrončok
49b58d7869 CI tests: Skip failing tests of python-httpbin
The tests are failing on Fedora 35+ for reasons beyond pyproject-rpm-macros.
2021-07-17 00:29:04 +02:00
Miro Hrončok
ddaf2e9fb2 %pyproject_buildrequires: Support x.* versions
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1981558
2021-07-13 12:23:35 +02:00
Miro Hrončok
d204ac14cd Escape weird paths generated by %pyproject_save_files 2021-07-13 11:29:19 +02:00
Miro Hrončok
299caacb5b Fix typos in %changelog 2021-07-13 01:30:43 +02:00
Miro Hrončok
639beeeaac CI tests: Update pytest's patch for Python 3.10.0b4+ 2021-07-13 01:29:48 +02:00
Tomas Hrnciar
d6ad9a778a Generate BuildRequires from file
%pyproject_buildrequires macro now accepts multiple file names to load
additional dependencies from them.

New option -N was added to disable automatical generation of requirements
in case package does not use build system. Option -N cannot be used in
combination with options -r, -e, -t, -x.

Co-authored-by: Miro Hrončok <miro@hroncok.cz>
2021-07-08 13:08:04 +02:00
Miro Hrončok
2abcad96dd Don't accidentally treat "~= X.0" requirement as "~= X"
Don't canonicalize the version twice.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1977060
2021-06-29 12:43:13 +02:00
Miro Hrončok
5470f5688e Avoid leaking %{_pyproject_builddir} to pytest collection
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1935212

Requires a %pytest change: https://src.fedoraproject.org/rpms/python-rpm-macros/pull-request/102
2021-06-28 14:07:29 +02:00
Miro Hrončok
346c9bc80a Fix a typo 2021-06-23 12:26:28 +02:00
Miro Hrončok
46e4eb4bcd CI tests: Make python-pytest.spec build with Python 3.10+
Preserve compatibility with Fedora 33.
2021-06-17 13:08:36 +02:00
Miro Hrončok
29157c19b0 Set %_pyproject_wheeldir and %_pyproject_builddir relative to the source tree, not $PWD
This allows users to do:

    %build
    cd somewhere
    %pyproject_wheel
    cd -
    cd somewhere_else
    %pyproject_wheel
    cd -

    %install
    %pyproject_install

Without a need to copy paste the wheels to a common location.

This is in fact a breaking change, I'll make sure to adapt the affected packages in Fedora.
2021-05-27 21:28:01 +02:00
Miro Hrončok
c95238388a Don't leak $TMPDIR outside of pyproject macros
During %install, the BRB scripts might be affected by it
2021-05-27 21:28:01 +02:00
Miro Hrončok
c0c09a476a Cleanup the tests (and docs) for Fedora 32 EOL 2021-05-27 21:27:39 +02:00
Major Hayden
3309d2d16d Write warning to >&2 instead of /dev/stderr
Writing to /dev/stderr with > or >> does not work properly in a mock chroot.

https://bugzilla.redhat.com/show_bug.cgi?id=1965470
2021-05-27 18:42:37 +00:00
Miro Hrončok
99ed4639da Generate BuildRequires on extras in lower case 2021-04-07 16:25:06 +02:00
Miro Hrončok
7e1a8fd079 Handle tox provision (tox.requires / tox.minversion) 2021-04-07 16:01:33 +02:00
Miro Hrončok
11021cf250 CI: Update requests version to work with chardet 4 (needed for Fedora 34+) 2021-02-07 21:26:32 +01:00
Miro Hrončok
cc5688e49d Include nested __pycache__ directories in %pyproject_save_files 2021-02-07 20:05:47 +01:00
Miro Hrončok
26bb3cb4d1 Tests: Update setuptools_scm to fix a problem with pytest 6.2 2021-02-04 12:41:09 +01:00
Miro Hrončok
ff396611dd Generate python3dist(setuptools/wheel) BuildRequires directly from the macro
The macro already checks if pyproject.toml exists and echoes the dependency
on python3dist(toml) early. This adds an else branch to echo the default backend.

For projects without pyproject.toml, the number of installation rounds
is reduced. Previously:

 1. (python3-devel +) pip + packaging
 2. setuptools + wheel
 3. ...

Now:

 1. (python3-devel +) pip + packaging + setuptools + wheel
 2. ...

This duplicates the information about the default build backend,
because the script still needs to handle projects with pyproject.toml without
an explicit build backend option.
Hence, the script was not adapted (except a comment).
2021-02-03 12:00:58 +01:00
Miro Hrončok
06b21e1976 Generate python3dist(toml) BuildRequires directly from the macro
The macro checks if pyproject.toml exists and echoes the dependency early.

For projects with pyproject.toml, this saves one installation round.
Previously, the installation steps by %generate_buildrequires were:

 1. (python3-devel +) pip + packaging
 2. toml
 3. parsed dependencies from pyproject.toml
 4. ...

Now they are:

 1. (python3-devel +) pip + packaging + toml
 2. parsed dependencies from pyproject.toml
 3. ...

For projects without pyproject.toml, the number of rounds remains the same:

 1. (python3-devel +) pip + packaging
 2. setuptools + wheel
 3. ...

This is also more consistent:
The Python script now only outputs dependencies of the probed project,
it no longer partially outputs dependencies for itself.
2021-02-03 12:00:58 +01:00
Miro Hrončok
390b9713aa Remove support for Python 3.7 from %pyproject_buildrequires
Fedora 31 is EOL and was the last one with Python 3.7 packages.
EL 8 has Python 3.6 but doesn'T have %generate_buildrequires.
2021-02-03 12:00:58 +01:00
Fedora Release Engineering
59d092e9dd - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 08:56:41 +00:00
Miro Hrončok
7d98feee23 Update the description of the package to match the new README content
https://bugzilla.redhat.com/show_bug.cgi?id=1914450#c5
2021-01-15 18:47:11 +01:00
Miro Hrončok
d8b6408932 %pyproject_save_files: List all files from RECORD and their %dirs
This is done to avoid troubles with %lang files listed as duplicated.

 1. It gets rid of a warning
 2. It fixes a problem described in:
    http://lists.rpm.org/pipermail/rpm-list/2020-November/002041.html

This is a backwards incompatible change,
packages that rename or remove the installed files after %pyproject_install
might no longer be compatible with %pyproject_save_files.
2021-01-11 15:14:21 +01:00
Miro Hrončok
8a31feb8e1 CI: Allow passing extra arguments to mocktest.sh 2021-01-08 23:45:30 +01:00
Miro Hrončok
76613bd4a7 CI mock: Attempt to retry package manager action
This should be more robust when hitting:

 Errors during downloading metadata for repository 'local':
   - Status code: 404 for https://kojipkgs.fedoraproject.org/repos/rawhide/latest/x86_64/repodata/...-primary.xml.gz
   - Status code: 404 for https://kojipkgs.fedoraproject.org/repos/rawhide/latest/x86_64/repodata/...-filelists.xml.gz
2021-01-08 14:52:06 +01:00
Miro Hrončok
03fa61b26b CI: Upgrade dns-lexicon to 3.5.2, but only on Fedora 34+ 2020-12-04 10:50:59 +01:00
Miro Hrončok
32790fff20 Pass PYTHONDONTWRITEBYTECODE=1 to %tox to avoid packaged PYTEST bytecode 2020-12-04 10:50:58 +01:00
Miro Hrončok
38ef5fb85b Allow multiple -e in %pyproject_buildrequires 2020-11-04 18:35:22 +01:00
Miro Hrončok
2660031756 CI tests: Use ! grep to assert something is missing
Previously, we have used `grep -v` to assert something is *not* there.
However, that doesn't work. See for example this file:

    $ cat TEST
    line1
    line2
    line3

    $ grep -v line4 TEST
    line1
    line2
    line3
    $ echo $?
    0

This gives a false sense of correctness, however it exits will 0 with anything:

    $ grep -v line3 TEST
    line1
    line2
    $ echo $?
    0

Instead, we use `! grep` now:

    $ ! grep line4 TEST
    $ echo $?
    0

    $ ! grep line3 TEST
    line3
    $ echo $?
    1

Additionally, remove a trailing slash from one of the checks to match both cases
(with or without the slash).
2020-10-26 17:18:51 +01:00
Miro Hrončok
e9281281f6 BR python3-devel from the test/example specs
This is the usage we want people to see.
One spec left with a comment instead.
2020-10-26 16:11:32 +01:00
Petr Viktorin
6a44fe2d7a Fix name of option that redefines %{toxenv} 2020-10-08 17:55:43 +02:00
Miro Hrončok
57e1b00844 CI tests: Workaround old pip missing features in testing specs 2020-10-07 14:27:57 +02:00
Miro Hrončok
290941c5f3 Support PEP 517 list based backend-path
The PEP 517 shows an example backend-path like this:

    [build-system]
    # Defined by PEP 518:
    requires = ["flit"]
    # Defined by this PEP:
    build-backend = "local_backend"
    backend-path = ["backend"]

https://www.python.org/dev/peps/pep-0517/#source-trees

See that backend-path is a list. Our code previously only supported string path.

Obviously a string path is wrong, but we keep it to support projects that have
made the mistake, such as flit-core.

Add a small integration test for both cases.
Note that the new spec files deliberately don't do much, to save CI time.
2020-10-07 08:35:45 +02:00
Petr Viktorin
d719a00b93 Document %pyproject_extras_subpkg 2020-10-02 20:57:26 +00:00
Miro Hrončok
ea43eebba6 Document %pyproject_buildrequires -x a -x b 2020-10-01 19:25:55 +02:00
Miro Hrončok
6ae1be028b Fix typos 2020-10-01 18:08:06 +02:00
Miro Hrončok
b38c0ff594 CI: Add dns-lexicon to tests new things
This tests:

- https://bugzilla.redhat.com/show_bug.cgi?id=1877977
- https://bugzilla.redhat.com/show_bug.cgi?id=1877978

Unfortunately it is impossible to use this spec to test things on Fedora 31/32,
so we skip the tests there.

We keep python-requests.spec for now to test Fedora 31/32,
but it can be removed after Fedora 32 EOL.
2020-10-01 16:35:08 +02:00
Miro Hrončok
6f6a7636d4 Skip empty lines from tox deps
An empty line happens when there are not deps:

    Handling  from tox --print-deps-only: <toxname>
    WARNING: Skipping invalid requirement:
        Parse error at "''": Expected W:(abcd...)
2020-10-01 16:35:08 +02:00
Miro Hrončok
2ecbed7441 Support multiple -x options for %pyproject_buildrequires
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1877978
2020-10-01 16:35:07 +02:00
Miro Hrončok
9f3eea2ae5 Support the extras configuration option of tox in %pyproject_buildrequires -t
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1877977
2020-10-01 16:33:58 +02:00
Lumir Balhar
0498ef29dd Improve grep regex for RECORD and REQUESTED files 2020-10-01 09:28:21 +02:00
Lumir Balhar
052c239cab Modify clikit to not use %pyproject_save_files and add check there 2020-10-01 09:28:21 +02:00