rmdepcheck


Namermdepcheck JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryRPM installability and repoclosure checks based on repomd.xml modification
upload_time2025-07-14 23:03:35
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords rpm dependency test check reverse
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # rmdepcheck

rmdepcheck is an RPM dependency check tool based on a repository metadata modification approach.
It works by comparing a checked repository to one or more base repositories. First, checks are run
on the base repositories as-is. Next, modified copies of the base repositories' metadata is
created, with all packages from the same source RPM(s) as the package(s) in the checked
repositories removed. Finally, checks are run again on the modified base repositories, with the
checked repositories available to the dependency solver. The results of the two runs are compared.
New failures should indicate problems introduced by the checked repositories. Also, some relevant
checks are run on the checked repositories with reference to the modified base repositories.

Optionally, additional base repositories can be specified which will not be modified, and
additional new repositories can be specified which will not be checked directly. The former is
intended for testing scenarios like stable Fedora releases, which have a frozen release repository
which is never modified, and an updates repository which is updated. The latter is intended for
multilib scenarios; it may be desirable to use such an additional repository for packages for
the multilib arch(es), if e.g. installability of these should not be tested directly.

An alternative mode allows simply testing the consequences of *removing* a list of source packages
entirely; in this mode, in the second step, the base repository's metadata is modified to entirely
remove all binary packages built from the specified source packages. The installability check is
skipped in this context.

## Requirements

rmdepcheck has no run-time Python dependencies outside the standard library. However, it requires
several command-line utilities:

* dnf
* zstd
* curl

It checks for these, and will exit early with an error if any of them is not found. rmdepcheck
is written primarily for Red Hat-family distributions, but should in theory be usable anywhere
these utilities can be installed (and forward slashes act as directory separators).

## Installation

Installation of rmdepcheck is entirely optional, it can be run just as well directly from the
repository. Otherwise, rmdepcheck uses setuptools for installation and is PEP 518-compliant. You
can build and install with e.g. the `build` module and `pip`. rmdepcheck can also be installed
directly from PyPI with pip and other tools.

## Usage

Simple usage looks like this:
```
rmdepcheck https://a.base.repo.example/repo,file:///another/baserepo file:///the/testedrepo
```

The to-be-modified base repositories are specified as a comma-separated list. Repositories are
always specified as URLs. Only file:// , http:// and https:// URLs are accepted.

For the alternative 'removal' mode, usage looks like:
```
rmdepcheck --removes https://a.base.repo.example/repo,file:///another/baserepo sourcepkg1,sourcepkg2
```

This tests removing all binary packages built from sourcepkg1 or sourcepkg2 from the base
repositories.

For more complex usage, see `rmdepcheck --help`.

Note rmdepcheck is really only intended for use as a script, not as an importable library. If you
want to use it as a library go ahead, but this isn't a supported use case and bugs in it may not
be addressed.

## License

rmdepcheck is released under the [GPL](https://www.gnu.org/licenses/gpl.txt), version 3 or later.
See `COPYING` and the header of `rmdepcheck.py` itself.

## Contributing

Issues and pull requests can be filed in [Codeberg](https://codeberg.org/AdamWill/rmdepcheck).
Pull requests must be signed off (use the `-s` git argument). By signing off
your pull request you are agreeing to the
[Developer's Certificate of Origin](http://developercertificate.org/):

    Developer's Certificate of Origin 1.1

    By making a contribution to this project, I certify that:

    (a) The contribution was created in whole or in part by me and I
        have the right to submit it under the open source license
        indicated in the file; or

    (b) The contribution is based upon previous work that, to the best
        of my knowledge, is covered under an appropriate open source
        license and I have the right under that license to submit that
        work with modifications, whether created in whole or in part
        by me, under the same open source license (unless I am
        permitted to submit under a different license), as indicated
        in the file; or

    (c) The contribution was provided directly to me by some other
        person who certified (a), (b) or (c) and I have not modified
        it.

    (d) I understand and agree that this project and the contribution
        are public and that a record of the contribution (including all
        personal information I submit with it, including my sign-off) is
        maintained indefinitely and may be redistributed consistent with
        this project or the open source license(s) involved.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rmdepcheck",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "rpm, dependency, test, check, reverse",
    "author": null,
    "author_email": "Adam Williamson <awilliam@redhat.com>",
    "download_url": "https://files.pythonhosted.org/packages/c3/f7/61a72c243c75a3ecefc0dd05ce238615307cf9253ce1eedcdf9a37652d34/rmdepcheck-1.1.0.tar.gz",
    "platform": null,
    "description": "# rmdepcheck\n\nrmdepcheck is an RPM dependency check tool based on a repository metadata modification approach.\nIt works by comparing a checked repository to one or more base repositories. First, checks are run\non the base repositories as-is. Next, modified copies of the base repositories' metadata is\ncreated, with all packages from the same source RPM(s) as the package(s) in the checked\nrepositories removed. Finally, checks are run again on the modified base repositories, with the\nchecked repositories available to the dependency solver. The results of the two runs are compared.\nNew failures should indicate problems introduced by the checked repositories. Also, some relevant\nchecks are run on the checked repositories with reference to the modified base repositories.\n\nOptionally, additional base repositories can be specified which will not be modified, and\nadditional new repositories can be specified which will not be checked directly. The former is\nintended for testing scenarios like stable Fedora releases, which have a frozen release repository\nwhich is never modified, and an updates repository which is updated. The latter is intended for\nmultilib scenarios; it may be desirable to use such an additional repository for packages for\nthe multilib arch(es), if e.g. installability of these should not be tested directly.\n\nAn alternative mode allows simply testing the consequences of *removing* a list of source packages\nentirely; in this mode, in the second step, the base repository's metadata is modified to entirely\nremove all binary packages built from the specified source packages. The installability check is\nskipped in this context.\n\n## Requirements\n\nrmdepcheck has no run-time Python dependencies outside the standard library. However, it requires\nseveral command-line utilities:\n\n* dnf\n* zstd\n* curl\n\nIt checks for these, and will exit early with an error if any of them is not found. rmdepcheck\nis written primarily for Red Hat-family distributions, but should in theory be usable anywhere\nthese utilities can be installed (and forward slashes act as directory separators).\n\n## Installation\n\nInstallation of rmdepcheck is entirely optional, it can be run just as well directly from the\nrepository. Otherwise, rmdepcheck uses setuptools for installation and is PEP 518-compliant. You\ncan build and install with e.g. the `build` module and `pip`. rmdepcheck can also be installed\ndirectly from PyPI with pip and other tools.\n\n## Usage\n\nSimple usage looks like this:\n```\nrmdepcheck https://a.base.repo.example/repo,file:///another/baserepo file:///the/testedrepo\n```\n\nThe to-be-modified base repositories are specified as a comma-separated list. Repositories are\nalways specified as URLs. Only file:// , http:// and https:// URLs are accepted.\n\nFor the alternative 'removal' mode, usage looks like:\n```\nrmdepcheck --removes https://a.base.repo.example/repo,file:///another/baserepo sourcepkg1,sourcepkg2\n```\n\nThis tests removing all binary packages built from sourcepkg1 or sourcepkg2 from the base\nrepositories.\n\nFor more complex usage, see `rmdepcheck --help`.\n\nNote rmdepcheck is really only intended for use as a script, not as an importable library. If you\nwant to use it as a library go ahead, but this isn't a supported use case and bugs in it may not\nbe addressed.\n\n## License\n\nrmdepcheck is released under the [GPL](https://www.gnu.org/licenses/gpl.txt), version 3 or later.\nSee `COPYING` and the header of `rmdepcheck.py` itself.\n\n## Contributing\n\nIssues and pull requests can be filed in [Codeberg](https://codeberg.org/AdamWill/rmdepcheck).\nPull requests must be signed off (use the `-s` git argument). By signing off\nyour pull request you are agreeing to the\n[Developer's Certificate of Origin](http://developercertificate.org/):\n\n    Developer's Certificate of Origin 1.1\n\n    By making a contribution to this project, I certify that:\n\n    (a) The contribution was created in whole or in part by me and I\n        have the right to submit it under the open source license\n        indicated in the file; or\n\n    (b) The contribution is based upon previous work that, to the best\n        of my knowledge, is covered under an appropriate open source\n        license and I have the right under that license to submit that\n        work with modifications, whether created in whole or in part\n        by me, under the same open source license (unless I am\n        permitted to submit under a different license), as indicated\n        in the file; or\n\n    (c) The contribution was provided directly to me by some other\n        person who certified (a), (b) or (c) and I have not modified\n        it.\n\n    (d) I understand and agree that this project and the contribution\n        are public and that a record of the contribution (including all\n        personal information I submit with it, including my sign-off) is\n        maintained indefinitely and may be redistributed consistent with\n        this project or the open source license(s) involved.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "RPM installability and repoclosure checks based on repomd.xml modification",
    "version": "1.1.0",
    "project_urls": {
        "Changelog": "https://codeberg.org/AdamWill/rmdepcheck/src/branch/main/CHANGELOG.md",
        "Documentation": "https://codeberg.org/AdamWill/rmdepcheck/src/branch/main/README.md",
        "Homepage": "https://codeberg.org/AdamWill/rmdepcheck",
        "Issues": "https://codeberg.org/AdamWill/rmdepcheck/issues",
        "Repository": "https://codeberg.org/AdamWill/rmdepcheck"
    },
    "split_keywords": [
        "rpm",
        " dependency",
        " test",
        " check",
        " reverse"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9466bb6eb4585aa2cdb0a9680dd83cc86d67de0344be2cedf503561b27c27f6a",
                "md5": "131d168fbbd0e4386de66829789f7557",
                "sha256": "3ac8c2a3b495872af7c4d7708d5282b77ce33c243e20d6684b4474ceed3a6b40"
            },
            "downloads": -1,
            "filename": "rmdepcheck-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "131d168fbbd0e4386de66829789f7557",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 21772,
            "upload_time": "2025-07-14T23:03:34",
            "upload_time_iso_8601": "2025-07-14T23:03:34.239561Z",
            "url": "https://files.pythonhosted.org/packages/94/66/bb6eb4585aa2cdb0a9680dd83cc86d67de0344be2cedf503561b27c27f6a/rmdepcheck-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3f761a72c243c75a3ecefc0dd05ce238615307cf9253ce1eedcdf9a37652d34",
                "md5": "759db775c781767c3e8a52ed51e3559f",
                "sha256": "c7903041123afbd1456db966b710b97cd589a55432a64bd2beb91c109429607d"
            },
            "downloads": -1,
            "filename": "rmdepcheck-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "759db775c781767c3e8a52ed51e3559f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 54228,
            "upload_time": "2025-07-14T23:03:35",
            "upload_time_iso_8601": "2025-07-14T23:03:35.636386Z",
            "url": "https://files.pythonhosted.org/packages/c3/f7/61a72c243c75a3ecefc0dd05ce238615307cf9253ce1eedcdf9a37652d34/rmdepcheck-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-14 23:03:35",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": true,
    "codeberg_user": "AdamWill",
    "codeberg_project": "rmdepcheck",
    "lcname": "rmdepcheck"
}
        
Elapsed time: 1.71488s