There are package like glibc-locale.x86_64 where one can meet
thousands of warnings that are filtered eventually. Regex-based
filtering can be expensive and cross-directory-hard-link title-based
match can save 40% of rpmlint time.
Fixes: #989
There can be packages that a files-duplicate warning being printed
for hundreds of files. Which is slow when it comes to evaluation
of error/warning filters by regular expressions.
We can have a file like:
./usr/lib64/gcc/rx-elf/13/no-fpu-libs/big-endian-data/no-strings/libstdc++.a
that contains 500K symbols where most of them are actually of
type == NOTYPE. Thus simplify the parser and save only functions.
Speeds up
./lint.py cross-rx-gcc13-13.0.0+git197769-0.x86_64.rpm
by 40 seconds to ~18 seconds.
Set `has_file_in_lib64` to True if a package contains a symlink
to a file in that location. It's very a common pattern for shared
libraries where foo-devel package provides only the symlink.
Fixes: #73
Libraries that do not use any libc symbols are legit (e.g. libs with
just mathematical computations or lookup tables only). libc.so.6 (and
sometimes libgcc_s.so.1) used to be linked into all shared libraries
because gcc implicitly adds -lc -lgcc_s to *everything*. But ever
since distributions started using --as-needed, -lc/-lgcc_s too are
subject to being thrown at out at the linker stage.
References: #969
* Add PythonCheck (#423)
This adds a Python specific check that performs 2 tasks:
1) Verify the egg-info is folder (setuptools based) and not file based
(distutils style)
2) Check for Python specific forbidden dirs and output various warnings and
errors about them.
* PythonCheck: remove src-in-package check
* PythonCheck: extend test cases to /usr/lib64
* PythonCheck: ignore tests in -test{,s} packages.
* Update rpmlint/descriptions/PythonCheck.toml
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
* PythonCheck: update to the latest codebase
* Rename test file to be able to use get_tested_package
* Improve PythonCheck error descrpitions
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
* PythonCheck: juse endswith with tuple instead of or
* PythonCheck: Use pathlib.Path instead of os.path
* PythonCheck: recommend dist-info instead of egg-info
* PythonCheck: compile re at module level
* fixup! PythonCheck: Use pathlib.Path instead of os.path
* PythonCheck: Update test binary packages
These binary packages are generated from the following source spec:
https://build.opensuse.org/package/show/devel:openSUSE:Factory:rpmlint:tests/pythoncheck
* PythonCheck: Convert python-tests-in-package to Error
* PythonCheck: Do not warn on python modules named doc
* PythonCheck: Improve python-tests-in-package descriptions
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
* PythonCheck: Improve python-doc-in-package descriptions
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
* PythonCheck: Improve python-egg-info-distutils-style descriptions
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
Co-authored-by: Johannes Grassler <johannes.grassler@suse.com>
Co-authored-by: Johannes Grassler <jgr-github@btw23.de>
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
This patch set the DuplicatesMinSize to 2 bytes and also updates the
duplicates binary package to test this new functionality.
The sources of this package can be found here:
https://build.opensuse.org/request/show/1035083