File rust2rpm-helper.obscpio of Package rust2rpm-helper

0707010014ADC3000041ED00000000000000000000000369106BBC00000000000000080000001100000000000000000000001900000000rust2rpm-helper/.forgejo0707010014ADC4000041ED00000000000000000000000269106BBC00000000000000080000001100000000000000000000002300000000rust2rpm-helper/.forgejo/workflows0707010014ADC5000081A400000000000000000000000169106BBC00000523000000080000001100000000000000000000002B00000000rust2rpm-helper/.forgejo/workflows/ci.yamlon:
  push:
    branches:
      - main
  pull_request:

jobs:

  test:
    runs-on: codeberg-small-lazy
    container:
      image: quay.io/fedora/nodejs-24:latest
    strategy:
      matrix:
        toolchain: ["stable", "nightly", "1.74"]
    steps:
      - uses: actions/checkout@v4
      - name: dtolnay/rust-toolchain@master
        uses: https://github.com/dtolnay/rust-toolchain@master
        with:
          toolchain: "${{ matrix.toolchain }}"
      - name: cargo test
        run: cargo test --verbose

  clippy:
    runs-on: codeberg-small-lazy
    container:
      image: quay.io/fedora/nodejs-24:latest
    steps:
      - uses: actions/checkout@v4
      - name: dtolnay/rust-toolchain@master
        uses: https://github.com/dtolnay/rust-toolchain@master
        with:
          toolchain: nightly
          components: clippy
      - name: cargo clippy
        run: cargo clippy --workspace --verbose --all-features

  rustfmt:
    runs-on: codeberg-small-lazy
    container:
      image: quay.io/fedora/nodejs-24:latest
    steps:
      - uses: actions/checkout@v4
      - name: dtolnay/rust-toolchain@master
        uses: https://github.com/dtolnay/rust-toolchain@master
        with:
          toolchain: nightly
          components: rustfmt
      - name: rustfmt
        run: cargo fmt --check

0707010014AD8B000081A400000000000000000000000169106BBC00000008000000080000001100000000000000000000001B00000000rust2rpm-helper/.gitignore/target
0707010014AD5A000081A400000000000000000000000169106BBC00000560000000080000001100000000000000000000001D00000000rust2rpm-helper/CHANGELOG.md## Release 0.1.7

This release contains only updated dependencies, no code changes.

## Release 0.1.6

This release contains only updated dependencies, no code changes.

## Release 0.1.5

This is a small maintenance release with no user-visible changes. Some
dependencies were updated, and a test case was added to cover the special
`cfg(any())` handling that was added in the last release.

## Release 0.1.4

This release adds support for the empty `cfg(any())` predicates "hack" that some
crates use to work around limitations of dependency resolution in cargo.

## Release 0.1.3

This release fixes a logic bug that caused crashes for valid `Cargo.toml` files
when running `strip-foreign` for a crates that use plain strings or inline
tables for specifying dependencies (i.e. `Cargo.toml` files that have not been
pre-processed and normalized by `cargo package`).

## Release 0.1.2

Build with LTO enabled to reduce the size of the rust2rpm-helper binary by
almost 50%.

## Release 0.1.1

This release fixes a logic bug that caused crashes for valid `Cargo.toml`
files when running `strip-foreign` for a crate without a `[target]` table.

## Release 0.1.0

Initial release.

Basic functionality for modifying `Cargo.toml` files is implemented:

- stripping SemVer "build metadata" from the `package.version` field
- stripping dependencies for "foreign" platforms / targets
0707010014AD8A000081A400000000000000000000000169106BBC0000342B000000080000001100000000000000000000001B00000000rust2rpm-helper/Cargo.lock# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3

[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
 "memchr",
]

[[package]]
name = "anstream"
version = "0.6.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
dependencies = [
 "anstyle",
 "anstyle-parse",
 "anstyle-query",
 "anstyle-wincon",
 "colorchoice",
 "is_terminal_polyfill",
 "utf8parse",
]

[[package]]
name = "anstyle"
version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"

[[package]]
name = "anstyle-parse"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
dependencies = [
 "utf8parse",
]

[[package]]
name = "anstyle-query"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
dependencies = [
 "windows-sys",
]

[[package]]
name = "anstyle-wincon"
version = "3.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
dependencies = [
 "anstyle",
 "once_cell_polyfill",
 "windows-sys",
]

[[package]]
name = "anyhow"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"

[[package]]
name = "cfg-expr"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a2b34126159980f92da2a08bdec0694fd80fb5eb9e48aff25d20a0d8dfa710d"
dependencies = [
 "smallvec",
]

[[package]]
name = "clap"
version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
dependencies = [
 "clap_builder",
 "clap_derive",
]

[[package]]
name = "clap_builder"
version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
dependencies = [
 "anstream",
 "anstyle",
 "clap_lex",
 "strsim",
]

[[package]]
name = "clap_derive"
version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
dependencies = [
 "heck",
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "clap_lex"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"

[[package]]
name = "colorchoice"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"

[[package]]
name = "diff"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"

[[package]]
name = "env_filter"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
dependencies = [
 "log",
 "regex",
]

[[package]]
name = "env_logger"
version = "0.11.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
dependencies = [
 "anstream",
 "anstyle",
 "env_filter",
 "jiff",
 "log",
]

[[package]]
name = "equivalent"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"

[[package]]
name = "hashbrown"
version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"

[[package]]
name = "heck"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"

[[package]]
name = "indexmap"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
dependencies = [
 "equivalent",
 "hashbrown",
]

[[package]]
name = "is_terminal_polyfill"
version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"

[[package]]
name = "jiff"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
dependencies = [
 "jiff-static",
 "log",
 "portable-atomic",
 "portable-atomic-util",
 "serde",
]

[[package]]
name = "jiff-static"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
dependencies = [
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "log"
version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"

[[package]]
name = "memchr"
version = "2.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"

[[package]]
name = "once_cell_polyfill"
version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"

[[package]]
name = "portable-atomic"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"

[[package]]
name = "portable-atomic-util"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
dependencies = [
 "portable-atomic",
]

[[package]]
name = "pretty_assertions"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
dependencies = [
 "diff",
 "yansi",
]

[[package]]
name = "proc-macro2"
version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
dependencies = [
 "unicode-ident",
]

[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
 "proc-macro2",
]

[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
 "aho-corasick",
 "memchr",
 "regex-automata",
 "regex-syntax",
]

[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
 "aho-corasick",
 "memchr",
 "regex-syntax",
]

[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"

[[package]]
name = "rust2rpm-helper"
version = "0.1.7"
dependencies = [
 "anyhow",
 "cfg-expr",
 "clap",
 "env_logger",
 "log",
 "pretty_assertions",
 "similar",
 "toml_edit",
]

[[package]]
name = "serde"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
 "serde_derive",
]

[[package]]
name = "serde_derive"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "similar"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"

[[package]]
name = "smallvec"
version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"

[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"

[[package]]
name = "syn"
version = "2.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
dependencies = [
 "proc-macro2",
 "quote",
 "unicode-ident",
]

[[package]]
name = "toml_datetime"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
dependencies = [
 "serde",
]

[[package]]
name = "toml_edit"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1dee9dc43ac2aaf7d3b774e2fba5148212bf2bd9374f4e50152ebe9afd03d42"
dependencies = [
 "indexmap",
 "toml_datetime",
 "toml_parser",
 "toml_writer",
 "winnow",
]

[[package]]
name = "toml_parser"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
dependencies = [
 "winnow",
]

[[package]]
name = "toml_writer"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"

[[package]]
name = "unicode-ident"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"

[[package]]
name = "utf8parse"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"

[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
 "windows-targets",
]

[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
 "windows_aarch64_gnullvm",
 "windows_aarch64_msvc",
 "windows_i686_gnu",
 "windows_i686_gnullvm",
 "windows_i686_msvc",
 "windows_x86_64_gnu",
 "windows_x86_64_gnullvm",
 "windows_x86_64_msvc",
]

[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"

[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"

[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"

[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"

[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"

[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"

[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"

[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"

[[package]]
name = "winnow"
version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
dependencies = [
 "memchr",
]

[[package]]
name = "yansi"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
0707010014ADC2000081A400000000000000000000000169106BBC0000028A000000080000001100000000000000000000001B00000000rust2rpm-helper/Cargo.toml[package]
name = "rust2rpm-helper"
description = "Helper program for rust2rpm"
license = "MIT"
publish = false

version = "0.1.7"
edition = "2021"
rust-version = "1.74.0"

authors = ["Fabio Valentini <decathorpe@gmail.com>"]
readme = "README.md"
exclude = ["/rustfmt.toml"]
categories = ["command-line-utilities"]
keywords = ["rust2rpm", "patch"]
repository = "https://codeberg.org/rust2rpm/rust2rpm-helper"

[profile.release]
lto = true

[dependencies]
anyhow = "1"
cfg-expr = ">=0.15,<0.19"
clap = { version = "4", features = ["derive"] }
env_logger = "0.11"
log = "0.4"
similar = "2"
toml_edit = "0.23"

[dev-dependencies]
pretty_assertions = "1"
0707010014AD5B000081A400000000000000000000000169106BBC00000423000000080000001100000000000000000000001800000000rust2rpm-helper/LICENSECopyright (c) 2023 Fabio Valentini

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
0707010014AD8C000081A400000000000000000000000169106BBC00000273000000080000001100000000000000000000001A00000000rust2rpm-helper/README.md# rust2rpm-helper

This project provides helper functionality for [rust2rpm] written in Rust.

Currently, two subcommands are implemented:

1. Stripping target-specific dependencies for "foreign" targets, using TOML
   library for parsing and editing which preserves format (the `toml_edit`
   crate, which is also used by `cargo`).

2. A simple "normalization" for version strings that contain SemVer "build
   metadata".

Usage:

```shell
rust2rpm-helper strip-foreign Cargo.toml -o Cargo.toml.patched
rust2rpm-helper normalize-version Cargo.toml -o Cargo.toml.patched
```

[rust2rpm]: https://codeberg.org/rust2rpm/rust2rpm
0707010014AD89000081A400000000000000000000000169106BBC00000080000000080000001100000000000000000000001A00000000rust2rpm-helper/deny.toml[advisories]
unmaintained = "workspace"
yanked = "deny"

[licenses]
allow = [
    "MIT",
    "Apache-2.0",
    "Unicode-3.0",
]
0707010014ADBA000081A400000000000000000000000169106BBC000000FC000000080000001100000000000000000000001D00000000rust2rpm-helper/rustfmt.tomlblank_lines_lower_bound = 0
blank_lines_upper_bound = 2
comment_width = 100
format_code_in_doc_comments = true
imports_layout = "HorizontalVertical"
match_block_trailing_comma = true
max_width = 120
use_field_init_shorthand = true
wrap_comments = true
0707010014ADBB000041ED00000000000000000000000269106BBC00000000000000080000001100000000000000000000001400000000rust2rpm-helper/src0707010014ADC0000081A400000000000000000000000169106BBC00001CA7000000080000001100000000000000000000001B00000000rust2rpm-helper/src/cfg.rsuse cfg_expr::{
    targets::{Arch, Family, Os, Triple, Vendor},
    Expression,
    Predicate,
    TargetPredicate,
};

pub const TARGET_ARCHES: [Arch; 7] = [
    Arch::x86_64,
    Arch::x86,
    Arch::aarch64,
    Arch::arm,
    Arch::powerpc64,
    Arch::s390x,
    Arch::riscv64,
];

pub const TARGET_TRIPLES: [Triple; 7] = [
    Triple::new_const("x86_64-unknown-linux-gnu"),
    Triple::new_const("i686-unknown-linux-gnu"),
    Triple::new_const("aarch64-unknown-linux-gnu"),
    Triple::new_const("armv7-unknown-linux-gnueabihf"),
    Triple::new_const("powerpc64le-unknown-linux-gnu"),
    Triple::new_const("s390x-unknown-linux-gnu"),
    Triple::new_const("riscv64gc-unknown-linux-gnu"),
];

pub fn applicable(expression: &Expression) -> bool {
    if expression.original() == "any()" {
        // empty "any()" predicates are used as "hacks" to improve cargo
        // dependency resolution and need to be kept
        return true;
    }

    TARGET_ARCHES
        .iter()
        .any(|target_arch| expression.eval(|pred| evaluate(pred, target_arch)))
}

pub fn evaluate(predicate: &Predicate, target_arch: &Arch) -> bool {
    use Predicate::*;

    match predicate {
        Target(target) => {
            use TargetPredicate as TP;
            match target {
                TP::Arch(arch) => {
                    let e = arch == target_arch;
                    log::debug!("eval: target_arch = {} (for {}) => {}", arch, target_arch, e);
                    e
                },
                TP::Endian(endian) => {
                    log::debug!("eval: target_endian = {:?} => true", endian);
                    true
                },
                TP::Env(env) => {
                    let e = ["", "gnu"].contains(&env.as_str());
                    log::debug!("eval: target_env = {} => {}", env, e);
                    e
                },
                TP::Family(family) => {
                    let e = family == &Family::unix;
                    log::debug!("eval: target_family = {} => {}", family, e);
                    e
                },
                TP::HasAtomic(atomic) => {
                    log::debug!("eval: target_has_atomic = {} => true", atomic);
                    true
                },
                TP::Os(os) => {
                    let e = os == &Os::linux;
                    log::debug!("eval: target_os = {} => {}", os, e);
                    e
                },
                TP::PointerWidth(pointer_width) => {
                    log::debug!("eval: target_pointer_width = {} => true", pointer_width);
                    true
                },
                TP::Vendor(vendor) => {
                    let e = vendor == &Vendor::unknown;
                    log::debug!("eval: target_vendor = {} => {}", vendor, e);
                    e
                },
                // ignore predicates that are not supported in Cargo.toml
                TP::Panic(panic) => {
                    log::debug!("eval: panic = {} => false", panic);
                    false
                },
                // ignore unstable attributes
                TP::Abi(_) => true,
            }
        },
        TargetFeature(_) => true,
        // ignore unknown bare predicates
        Flag(flag) => {
            log::debug!("eval: {} => false", flag);
            false
        },
        // ignore predicates that are not supported in Cargo.toml
        Test => {
            log::debug!("eval: test => false");
            false
        },
        DebugAssertions => {
            log::debug!("eval: debug_assertions => false");
            false
        },
        ProcMacro => {
            log::debug!("eval: proc_macro => false");
            false
        },
        Feature(feature) => {
            log::debug!("eval: feature = {} => false", feature);
            false
        },
        KeyValue { key, val } => {
            log::debug!("eval: {} = {} => false", key, val);
            false
        },
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn eval() {
        let test_cases = [
            ("cfg(any())", true),
            ("cfg(target_os = \"macos\")", false),
            ("cfg(any(foo, bar))", false),
            ("cfg(all(unix, target_pointer_width = \"16\"))", true),
            ("cfg(not(foo))", true),
            ("cfg(unix)", true),
            ("cfg(not(unix))", false),
            ("cfg(windows)", false),
            ("cfg(miri)", false),
            ("cfg(linux)", false),
            ("cfg(not(windows))", true),
            ("cfg(any(unix, windows))", true),
            ("cfg(any(windows, unix))", true),
            ("cfg(any(windows, windows, windows))", false),
            ("cfg(target_os = \"linux\")", true),
            ("cfg(any(target_os = \"linux\"))", true),
            ("cfg(all(target_os = \"linux\"))", true),
            ("cfg(any(target_os = \"linux\", target_os = \"macos\"))", true),
            ("cfg(any(target_pointer_width = \"16\", target_pointer_width = \"32\", target_pointer_width = \"64\"))", true),
            ("cfg(any(target_os = \"android\", target_os = \"linux\"))", true),
            // from rustix 0.36.8
            ("cfg(all(criterion, not(any(target_os = \"emscripten\", target_os = \"wasi\"))))", false),
            ("cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))", true),
            ("cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))", true),
            ("cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))", true),
            ("cfg(any(target_os = \"android\", target_os = \"linux\"))", true),
            // from tokio 1.21.2
            ("cfg(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), not(target_os = \"wasi\")))", false),
            ("cfg(loom)", false),
            ("cfg(not(all(any(target_arch = \"wasm32\", target_arch = \"wasm64\"), target_os = \"unknown\")))", true),
            ("cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))", true),
            ("cfg(target_os = \"freebsd\")", false),
            ("cfg(tokio_unstable)", false),
        ];

        for (expr, expected) in test_cases {
            let cfg = Expression::parse(expr).unwrap();
            assert_eq!(applicable(&cfg), expected, "{}", expr);
        }
    }
}
0707010014ADBC000081A400000000000000000000000169106BBC0000003E000000080000001100000000000000000000001B00000000rust2rpm-helper/src/lib.rspub mod cfg;
pub mod normalize;
pub mod patch;
pub mod strip;
0707010014ADBE000081A400000000000000000000000169106BBC00000BD2000000080000001100000000000000000000001C00000000rust2rpm-helper/src/main.rsuse std::borrow::Cow;
use std::{fs, io};

use clap::{Parser, Subcommand};

mod cfg;
mod normalize;
mod patch;
mod strip;

#[derive(Debug, Parser)]
#[command(disable_help_subcommand(true))]
struct Args {
    #[command(subcommand)]
    command: Command,
}

#[derive(Debug, Subcommand)]
enum Command {
    /// normalize crate version (i.e. drop +build metadata)
    NormalizeVersion {
        /// path to Cargo.toml file
        path: String,
        /// path to output file
        #[clap(short = 'o')]
        output: Option<String>,
        /// write patch directly
        #[clap(short = 'p')]
        patch: bool,
    },
    /// strip unused target-specific dependencies
    StripForeign {
        /// path to Cargo.toml file
        path: String,
        /// path to output file
        #[clap(short = 'o')]
        output: Option<String>,
        /// write patch directly
        #[clap(short = 'p')]
        patch: bool,
    },
}

fn main() -> anyhow::Result<()> {
    env_logger::builder()
        .format_timestamp(None)
        .format_module_path(false)
        .format_target(false)
        .filter_level(if cfg!(debug_assertions) {
            log::LevelFilter::Debug
        } else {
            log::LevelFilter::Info
        })
        .init();

    let args = Args::parse();

    match args.command {
        Command::NormalizeVersion { path, output, patch } => normalize_version(path, output, patch),
        Command::StripForeign { path, output, patch } => strip_foreign(path, output, patch),
    }
}

fn normalize_version(path: String, output: Option<String>, patch: bool) -> anyhow::Result<()> {
    let original = read_input(&path)?;
    let patched = normalize::normalize_version(&original)?;

    process_output(&original, patched.as_ref(), output.as_deref(), patch)
}

fn strip_foreign(path: String, output: Option<String>, patch: bool) -> anyhow::Result<()> {
    let original = read_input(&path)?;
    let patched = strip::strip_foreign(&original)?;

    process_output(&original, patched.as_ref(), output.as_deref(), patch)
}

fn process_output(original: &str, patched: &str, output: Option<&str>, patch: bool) -> anyhow::Result<()> {
    if original == patched {
        return Ok(());
    }

    let result = if patch {
        Cow::Owned(patch::make_patch(original, patched))
    } else {
        Cow::Borrowed(patched)
    };

    write_output(output, result.as_ref())?;

    Ok(())
}

fn read_input(path: &str) -> anyhow::Result<String> {
    if path == "-" {
        // read from stdin
        let mut buf = String::new();
        loop {
            let read = io::stdin().read_line(&mut buf)?;
            if read == 0 {
                break;
            }
        }
        Ok(buf)
    } else {
        // read file from path
        Ok(fs::read_to_string(path)?)
    }
}

fn write_output(output: Option<&str>, contents: &str) -> anyhow::Result<()> {
    if let Some(output) = output {
        fs::write(output, contents)?;
    } else {
        println!("{}", contents);
    }

    Ok(())
}
0707010014ADC1000081A400000000000000000000000169106BBC00000508000000080000001100000000000000000000002100000000rust2rpm-helper/src/normalize.rsuse std::borrow::Cow;

use anyhow::anyhow;
use toml_edit::{DocumentMut, Entry, Formatted, Item, Value};

pub fn normalize_version<'a>(original: &'a str) -> anyhow::Result<Cow<'a, str>> {
    let mut toml: DocumentMut = original.parse()?;

    let Some(package_item) = toml.get_mut("package") else {
        return Err(anyhow!("Cargo.toml invalid: no [package] table"));
    };

    let Some(package) = package_item.as_table_mut() else {
        return Err(anyhow!("Cargo.toml invalid: [target] is not a table"));
    };

    let Entry::Occupied(mut version_entry) = package.entry("version") else {
        return Err(anyhow!("Cargo.toml invalid: package.version is not set"));
    };

    let Some(version_value) = version_entry.get().as_value() else {
        return Err(anyhow!("Cargo.toml invalid: package.version is not a value"));
    };

    let Some(version) = version_value.as_str() else {
        return Err(anyhow!("Cargo.toml invalid: package.version is not a string"));
    };

    let replacement = if let Some((version, _meta)) = version.split_once('+') {
        String::from(version)
    } else {
        return Ok(Cow::Borrowed(original));
    };

    version_entry.insert(Item::Value(Value::String(Formatted::new(replacement))));

    Ok(Cow::Owned(toml.to_string()))
}
0707010014ADBF000081A400000000000000000000000169106BBC0000010C000000080000001100000000000000000000001D00000000rust2rpm-helper/src/patch.rsuse similar::TextDiff;

pub fn make_patch(original: &str, patched: &str) -> String {
    let diff = TextDiff::from_lines(original, patched);
    let mut udiff = diff.unified_diff();
    let patch = udiff.header("a/Cargo.toml", "b/Cargo.toml");
    patch.to_string()
}
0707010014ADBD000081A400000000000000000000000169106BBC000052EB000000080000001100000000000000000000001D00000000rust2rpm-helper/src/strip.rsuse std::borrow::Cow;
use std::collections::HashSet;

use anyhow::anyhow;
use cfg_expr::{targets::Triple, Expression};
use toml_edit::DocumentMut;

use crate::cfg::{self, TARGET_TRIPLES};

fn get_known_target_triples() -> HashSet<Triple> {
    use cfg_expr::targets::ALL_BUILTINS;
    ALL_BUILTINS.iter().map(|t| t.triple.clone()).collect()
}

pub fn strip_foreign<'a>(original: &'a str) -> anyhow::Result<Cow<'a, str>> {
    let mut toml: DocumentMut = original.parse()?;

    if toml.get("target").is_none() {
        // no "target" table: nothing to do
        return Ok(Cow::Borrowed(original));
    }

    // collect names of optional dependencies with and without associated implicit features
    let (_, implicit_optional) = get_optional_features_explicit_implicit(&mut toml)?;

    let target_item = toml
        .get_mut("target")
        .expect("Existence of target table was already checked");

    let Some(targets) = target_item.as_table_mut() else {
        return Err(anyhow!("Cargo.toml invalid: [target] is not a table"));
    };

    // remove non-applicable target-specific dependencies
    let removed_targets = remove_foreign_targets(targets);

    // collect names of removed dependencies and if they are optional
    let removed_with_optional = parse_removed_targets(removed_targets)?;

    // collect names of all remaining dependencies and if they are optional
    let remaining_with_optional = get_dependencies(&mut toml)?;

    // collect names of optional dependencies for which all occurrences were dropped
    let dropped_with_optional = get_dropped_dependencies(&removed_with_optional, &remaining_with_optional);

    // remove references to dropped dependencies from feature dependencies
    strip_dropped_features(&mut toml, dropped_with_optional, &implicit_optional)?;

    Ok(Cow::Owned(toml.to_string()))
}

fn remove_foreign_targets(targets: &mut toml_edit::Table) -> Vec<(String, toml_edit::Item)> {
    let known_target_triples = get_known_target_triples();

    // remove non-applicable target-specific dependencies
    let mut removed_targets = Vec::new();
    targets.retain(|key, item| {
        // check if key is a valid target triple
        // and check if key is a supported target
        let maybe_triple = Triple::new(key.to_owned());
        if known_target_triples.contains(&maybe_triple) {
            if TARGET_TRIPLES.contains(&maybe_triple) {
                return true;
            } else {
                log::info!("Removing dependencies for target: '{}'", key);
                removed_targets.push((key.to_owned(), item.clone()));
                return false;
            }
        }

        // check if key is a valid cfg-expression
        // and check if it is applicable on any supported target
        match Expression::parse(key) {
            Ok(expr) => {
                if cfg::applicable(&expr) {
                    true
                } else {
                    log::info!("Removing dependencies for target: '{}'", key);
                    removed_targets.push((key.to_owned(), item.clone()));
                    false
                }
            },
            Err(_) => {
                log::info!("Unknown target configuration: '{}'", key);
                removed_targets.push((key.to_owned(), item.clone()));
                false
            },
        }
    });

    removed_targets
}

fn parse_removed_targets(removed_targets: Vec<(String, toml_edit::Item)>) -> anyhow::Result<Vec<(String, bool)>> {
    let result = removed_targets
        .into_iter()
        .map(|(target_name, item)| {
            let Some(target) = item.as_table() else {
                return Err(anyhow!("Cannot parse target: {}", target_name));
            };

            let mut ret = Vec::new();

            // check dependencies
            if let Some(deps_item) = target.get("dependencies") {
                let Some(deps) = deps_item.as_table() else {
                    return Err(anyhow!("Cannot parse dependencies for target: {}", target_name));
                };

                for (dep_name, dep_item) in deps {
                    // plain string
                    if let Some(_version) = dep_item.as_str() {
                        ret.push((String::from(dep_name), false));
                        continue;
                    }

                    // table
                    if let Some(dep) = dep_item.as_table() {
                        if let Some(optional_item) = dep.get("optional") {
                            let Some(optional) = optional_item.as_bool() else {
                                return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                            };
                            ret.push((String::from(dep_name), optional));
                        } else {
                            ret.push((String::from(dep_name), false));
                        }
                        continue;
                    }

                    // inline table
                    if let Some(dep) = dep_item.as_inline_table() {
                        if let Some(optional_item) = dep.get("optional") {
                            let Some(optional) = optional_item.as_bool() else {
                                return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                            };
                            ret.push((String::from(dep_name), optional));
                        } else {
                            ret.push((String::from(dep_name), false));
                        }
                        continue;
                    }

                    return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                }
            }

            // check build-dependencies
            if let Some(deps_item) = target.get("build-dependencies") {
                let Some(deps) = deps_item.as_table() else {
                    return Err(anyhow!("Cannot parse build-dependencies for target: {}", target_name));
                };

                for (dep_name, dep_item) in deps {
                    // plain string
                    if let Some(_version) = dep_item.as_str() {
                        ret.push((String::from(dep_name), false));
                        continue;
                    }

                    // table
                    if let Some(dep) = dep_item.as_table() {
                        if let Some(optional_item) = dep.get("optional") {
                            let Some(optional) = optional_item.as_bool() else {
                                return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                            };
                            ret.push((String::from(dep_name), optional));
                        } else {
                            ret.push((String::from(dep_name), false));
                        }
                        continue;
                    }

                    // inline table
                    if let Some(dep) = dep_item.as_inline_table() {
                        if let Some(optional_item) = dep.get("optional") {
                            let Some(optional) = optional_item.as_bool() else {
                                return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                            };
                            ret.push((String::from(dep_name), optional));
                        } else {
                            ret.push((String::from(dep_name), false));
                        }
                        continue;
                    }

                    return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                }
            }

            // dev-dependencies cannot be optional or referenced by features
            Ok(ret)
        })
        .collect::<anyhow::Result<Vec<Vec<(String, bool)>>>>()?
        .into_iter()
        .flatten()
        .collect();

    Ok(result)
}

fn get_dependencies(toml: &mut DocumentMut) -> anyhow::Result<HashSet<(String, bool)>> {
    let target_item = toml
        .get_mut("target")
        .expect("Existence of target table was already checked");
    let Some(targets) = target_item.as_table_mut() else {
        return Err(anyhow!("Cargo.toml invalid: [target] is not a table"));
    };

    let mut remaining_with_optional = HashSet::new();

    for (target_name, item) in targets.iter() {
        let Some(target) = item.as_table() else {
            return Err(anyhow!("Cannot parse target: {}", target_name));
        };

        if let Some(deps_item) = target.get("dependencies") {
            let Some(deps) = deps_item.as_table() else {
                return Err(anyhow!("Cannot parse dependencies for target: {}", target_name));
            };

            for (dep_name, dep_item) in deps {
                // plain string
                if let Some(_version) = dep_item.as_str() {
                    remaining_with_optional.insert((String::from(dep_name), false));
                    continue;
                }

                // table
                if let Some(dep) = dep_item.as_table() {
                    if let Some(optional_item) = dep.get("optional") {
                        let Some(optional) = optional_item.as_bool() else {
                            return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                        };
                        remaining_with_optional.insert((String::from(dep_name), optional));
                    } else {
                        remaining_with_optional.insert((String::from(dep_name), false));
                    }
                    continue;
                }

                // inline table
                if let Some(dep) = dep_item.as_inline_table() {
                    if let Some(optional_item) = dep.get("optional") {
                        let Some(optional) = optional_item.as_bool() else {
                            return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                        };
                        remaining_with_optional.insert((String::from(dep_name), optional));
                    } else {
                        remaining_with_optional.insert((String::from(dep_name), false));
                    }
                    continue;
                }

                return Err(anyhow!("Cannot parse dependency: {}", dep_name));
            }
        }

        if let Some(deps_item) = target.get("build-dependencies") {
            let Some(deps) = deps_item.as_table() else {
                return Err(anyhow!("Cannot parse build-dependencies for target: {}", target_name));
            };

            for (dep_name, dep_item) in deps {
                // plain string
                if let Some(_version) = dep_item.as_str() {
                    remaining_with_optional.insert((String::from(dep_name), false));
                    continue;
                }

                // table
                if let Some(dep) = dep_item.as_table() {
                    if let Some(optional_item) = dep.get("optional") {
                        let Some(optional) = optional_item.as_bool() else {
                            return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                        };
                        remaining_with_optional.insert((String::from(dep_name), optional));
                    } else {
                        remaining_with_optional.insert((String::from(dep_name), false));
                    }
                    continue;
                }

                // inline table
                if let Some(dep) = dep_item.as_inline_table() {
                    if let Some(optional_item) = dep.get("optional") {
                        let Some(optional) = optional_item.as_bool() else {
                            return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                        };
                        remaining_with_optional.insert((String::from(dep_name), optional));
                    } else {
                        remaining_with_optional.insert((String::from(dep_name), false));
                    }
                    continue;
                }

                return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
            }
        }
    }

    if let Some(deps_item) = toml.get("dependencies") {
        let Some(deps) = deps_item.as_table() else {
            return Err(anyhow!("Cannot parse dependencies."));
        };

        for (dep_name, dep_item) in deps {
            // plain string
            if let Some(_version) = dep_item.as_str() {
                remaining_with_optional.insert((String::from(dep_name), false));
                continue;
            }

            // table
            if let Some(dep) = dep_item.as_table() {
                if let Some(optional_item) = dep.get("optional") {
                    let Some(optional) = optional_item.as_bool() else {
                        return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                    };
                    remaining_with_optional.insert((String::from(dep_name), optional));
                } else {
                    remaining_with_optional.insert((String::from(dep_name), false));
                }
                continue;
            }

            // inline table
            if let Some(dep) = dep_item.as_inline_table() {
                if let Some(optional_item) = dep.get("optional") {
                    let Some(optional) = optional_item.as_bool() else {
                        return Err(anyhow!("Cannot parse dependency: {}", dep_name));
                    };
                    remaining_with_optional.insert((String::from(dep_name), optional));
                } else {
                    remaining_with_optional.insert((String::from(dep_name), false));
                }
                continue;
            }

            return Err(anyhow!("Cannot parse dependency: {}", dep_name));
        }
    }

    if let Some(deps_item) = toml.get("build-dependencies") {
        let Some(deps) = deps_item.as_table() else {
            return Err(anyhow!("Cannot parse build-dependencies."));
        };

        for (dep_name, dep_item) in deps {
            // plain string
            if let Some(_version) = dep_item.as_str() {
                remaining_with_optional.insert((String::from(dep_name), false));
                continue;
            }

            // table
            if let Some(dep) = dep_item.as_table() {
                if let Some(optional_item) = dep.get("optional") {
                    let Some(optional) = optional_item.as_bool() else {
                        return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                    };
                    remaining_with_optional.insert((String::from(dep_name), optional));
                } else {
                    remaining_with_optional.insert((String::from(dep_name), false));
                }
                continue;
            }

            // inline table
            if let Some(dep) = dep_item.as_inline_table() {
                if let Some(optional_item) = dep.get("optional") {
                    let Some(optional) = optional_item.as_bool() else {
                        return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
                    };
                    remaining_with_optional.insert((String::from(dep_name), optional));
                } else {
                    remaining_with_optional.insert((String::from(dep_name), false));
                }
                continue;
            }

            return Err(anyhow!("Cannot parse build-dependency: {}", dep_name));
        }
    }

    Ok(remaining_with_optional)
}

fn get_optional_features_explicit_implicit(
    toml: &mut DocumentMut,
) -> anyhow::Result<(HashSet<String>, HashSet<String>)> {
    let dependencies = get_dependencies(toml)?;
    let optional_dependencies: HashSet<String> = dependencies
        .into_iter()
        .filter(|(_, optional)| *optional)
        .map(|(dep_name, _)| dep_name)
        .collect();

    let mut feature_names: HashSet<String> = HashSet::new();
    if let Some(features_item) = toml.get_mut("features") {
        let Some(features) = features_item.as_table_mut() else {
            return Err(anyhow!("Cannot parse features."));
        };

        for (feature_name, _) in features.iter_mut() {
            feature_names.insert(feature_name.to_string());
        }
    }

    let mut explicit_optional: HashSet<String> = HashSet::new();
    if let Some(features_item) = toml.get_mut("features") {
        let Some(features) = features_item.as_table_mut() else {
            return Err(anyhow!("Cannot parse features."));
        };

        for (feature_name, feature_item) in features.iter_mut() {
            let Some(feature_deps_array) = feature_item.as_array_mut() else {
                return Err(anyhow!(
                    "Cannot parse feature dependencies for feature: {}",
                    feature_name
                ));
            };

            for feature_dep in feature_deps_array.iter() {
                let Some(feature_dep_name) = feature_dep.as_str() else {
                    return Err(anyhow!(
                        "Cannot parse feature dependencies for feature: {}",
                        feature_name
                    ));
                };

                if let Some(dep) = feature_dep_name.strip_prefix("dep:") {
                    explicit_optional.insert(String::from(dep));
                }
            }
        }
    }

    let implicit_optional: HashSet<String> = optional_dependencies
        .iter()
        .filter(|dep| !explicit_optional.contains(*dep))
        .cloned()
        .collect();

    Ok((explicit_optional, implicit_optional))
}

fn get_dropped_dependencies<'a>(
    removed_with_optional: &'a [(String, bool)],
    remaining_with_optional: &HashSet<(String, bool)>,
) -> Vec<&'a (String, bool)> {
    removed_with_optional
        .iter()
        .filter(|(dep_name, _optional)| {
            !remaining_with_optional.contains(&(dep_name.to_owned(), true))
                && !remaining_with_optional.contains(&(dep_name.to_owned(), false))
        })
        .collect()
}

fn strip_dropped_features(
    toml: &mut DocumentMut,
    dropped_with_optional: Vec<&(String, bool)>,
    implicit_optional: &HashSet<String>,
) -> anyhow::Result<()> {
    let mut dropped_features: HashSet<String> = HashSet::new();

    if let Some(features_item) = toml.get_mut("features") {
        let Some(features) = features_item.as_table_mut() else {
            return Err(anyhow!("Cannot parse features."));
        };

        for (feature_name, feature_item) in features.iter_mut() {
            let Some(feature_deps_array) = feature_item.as_array_mut() else {
                return Err(anyhow!(
                    "Cannot parse feature dependencies for feature: {}",
                    feature_name
                ));
            };

            let feature_deps_len = feature_deps_array.len();
            let mut removed_feat_dep = Vec::new();

            for feature_dep in feature_deps_array.iter() {
                let Some(feature_dep_name) = feature_dep.as_str() else {
                    return Err(anyhow!(
                        "Cannot parse feature dependencies for feature: {}",
                        feature_name
                    ));
                };

                if implicit_optional.contains(feature_dep_name)
                    && dropped_with_optional.contains(&&(String::from(feature_dep_name), true))
                {
                    removed_feat_dep.push(String::from(feature_dep_name));
                }

                if let Some(dep) = feature_dep_name.strip_prefix("dep:") {
                    if dropped_with_optional.contains(&&(String::from(dep), true)) {
                        removed_feat_dep.push(String::from(feature_dep_name));

                        if feature_name == dep && feature_deps_len == 1 {
                            dropped_features.insert(feature_name.to_string());
                        }
                    }
                    continue;
                }

                if let Some((dep, _feat)) = feature_dep_name.split_once("?/") {
                    if dropped_with_optional.contains(&&(String::from(dep), true)) {
                        removed_feat_dep.push(String::from(feature_dep_name));
                    }
                    continue;
                }

                if let Some((dep, _feat)) = feature_dep_name.split_once('/') {
                    if dropped_with_optional.contains(&&(String::from(dep), true))
                        || dropped_with_optional.contains(&&(String::from(dep), false))
                    {
                        removed_feat_dep.push(String::from(feature_dep_name));
                    }
                    continue;
                }
            }

            feature_deps_array.retain(|n| !removed_feat_dep.contains(&String::from(n.as_str().unwrap())));
        }

        features.retain(|key, _value| !dropped_features.contains(key));
    }

    Ok(())
}
0707010014AD8D000041ED00000000000000000000000369106BBC00000000000000080000001100000000000000000000001600000000rust2rpm-helper/tests0707010014AD8F000041ED00000000000000000000000269106BBC00000000000000080000001100000000000000000000001B00000000rust2rpm-helper/tests/data0707010014ADAC000081A400000000000000000000000169106BBC00000B31000000080000001100000000000000000000003500000000rust2rpm-helper/tests/data/anstream-0.5.0.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.70.0"
name = "anstream"
version = "0.5.0"
include = [
    "build.rs",
    "src/**/*",
    "Cargo.toml",
    "Cargo.lock",
    "LICENSE*",
    "README.md",
    "benches/**/*",
    "examples/**/*",
]
description = "A simple cross platform library for writing colored text to a terminal."
homepage = "https://github.com/rust-cli/anstyle"
readme = "README.md"
keywords = [
    "ansi",
    "terminal",
    "color",
    "strip",
    "wincon",
]
categories = ["command-line-interface"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-cli/anstyle.git"

[package.metadata.docs.rs]
cargo-args = [
    "-Zunstable-options",
    "-Zrustdoc-scrape-examples",
]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
min = 1
replace = "{{version}}"
search = "Unreleased"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = "...{{tag_name}}"
search = '\.\.\.HEAD'

[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
min = 1
replace = "{{date}}"
search = "ReleaseDate"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = """
<!-- next-header -->
## [Unreleased] - ReleaseDate
"""
search = "<!-- next-header -->"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = """
<!-- next-url -->
[Unreleased]: https://github.com/rust-cli/anstyle/compare/{{tag_name}}...HEAD"""
search = "<!-- next-url -->"

[[bench]]
name = "strip"
harness = false

[[bench]]
name = "wincon"
harness = false

[[bench]]
name = "stream"
harness = false

[dependencies.anstyle]
version = "1.0.0"

[dependencies.anstyle-parse]
version = "0.2.0"

[dependencies.anstyle-query]
version = "1.0.0"
optional = true

[dependencies.colorchoice]
version = "1.0.0"
optional = true

[dependencies.utf8parse]
version = "0.2.1"

[dev-dependencies.criterion]
version = "0.4.0"

[dev-dependencies.owo-colors]
version = "3.5.0"

[dev-dependencies.proptest]
version = "1.1.0"

[dev-dependencies.strip-ansi-escapes]
version = "0.1.1"

[features]
auto = [
    "dep:anstyle-query",
    "dep:colorchoice",
]
default = [
    "auto",
    "wincon",
]
wincon = ["dep:anstyle-wincon"]

[target."cfg(windows)".dependencies.anstyle-wincon]
version = "2.0.0"
optional = true
0707010014ADA2000081A400000000000000000000000169106BBC00000AC6000000080000001100000000000000000000003D00000000rust2rpm-helper/tests/data/anstream-0.5.0.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.70.0"
name = "anstream"
version = "0.5.0"
include = [
    "build.rs",
    "src/**/*",
    "Cargo.toml",
    "Cargo.lock",
    "LICENSE*",
    "README.md",
    "benches/**/*",
    "examples/**/*",
]
description = "A simple cross platform library for writing colored text to a terminal."
homepage = "https://github.com/rust-cli/anstyle"
readme = "README.md"
keywords = [
    "ansi",
    "terminal",
    "color",
    "strip",
    "wincon",
]
categories = ["command-line-interface"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-cli/anstyle.git"

[package.metadata.docs.rs]
cargo-args = [
    "-Zunstable-options",
    "-Zrustdoc-scrape-examples",
]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
min = 1
replace = "{{version}}"
search = "Unreleased"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = "...{{tag_name}}"
search = '\.\.\.HEAD'

[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
min = 1
replace = "{{date}}"
search = "ReleaseDate"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = """
<!-- next-header -->
## [Unreleased] - ReleaseDate
"""
search = "<!-- next-header -->"

[[package.metadata.release.pre-release-replacements]]
exactly = 1
file = "CHANGELOG.md"
replace = """
<!-- next-url -->
[Unreleased]: https://github.com/rust-cli/anstyle/compare/{{tag_name}}...HEAD"""
search = "<!-- next-url -->"

[[bench]]
name = "strip"
harness = false

[[bench]]
name = "wincon"
harness = false

[[bench]]
name = "stream"
harness = false

[dependencies.anstyle]
version = "1.0.0"

[dependencies.anstyle-parse]
version = "0.2.0"

[dependencies.anstyle-query]
version = "1.0.0"
optional = true

[dependencies.colorchoice]
version = "1.0.0"
optional = true

[dependencies.utf8parse]
version = "0.2.1"

[dev-dependencies.criterion]
version = "0.4.0"

[dev-dependencies.owo-colors]
version = "3.5.0"

[dev-dependencies.proptest]
version = "1.1.0"

[dev-dependencies.strip-ansi-escapes]
version = "0.1.1"

[features]
auto = [
    "dep:anstyle-query",
    "dep:colorchoice",
]
default = [
    "auto",
    "wincon",
]
wincon = []
0707010014AD94000081A400000000000000000000000169106BBC00000C97000000080000001100000000000000000000003700000000rust2rpm-helper/tests/data/backtrace-0.3.69.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "backtrace"
version = "0.3.69"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = ["/ci/"]
autoexamples = true
autotests = true
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
homepage = "https://github.com/rust-lang/backtrace-rs"
documentation = "https://docs.rs/backtrace"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/backtrace-rs"

[[example]]
name = "backtrace"
required-features = ["std"]

[[example]]
name = "raw"
required-features = ["std"]

[[test]]
name = "skip_inner_frames"
required-features = ["std"]

[[test]]
name = "long_fn_name"
required-features = ["std"]

[[test]]
name = "smoke"
required-features = ["std"]
edition = "2018"

[[test]]
name = "accuracy"
required-features = ["std"]
edition = "2018"

[[test]]
name = "concurrent-panics"
harness = false
required-features = ["std"]

[[test]]
name = "current-exe-mismatch"
harness = false
required-features = ["std"]

[dependencies.cfg-if]
version = "1.0"

[dependencies.cpp_demangle]
version = "0.4.0"
features = ["alloc"]
optional = true
default-features = false

[dependencies.rustc-demangle]
version = "0.1.4"

[dependencies.rustc-serialize]
version = "0.3"
optional = true

[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true

[dev-dependencies.libloading]
version = "0.7"

[build-dependencies.cc]
version = "1.0.67"

[features]
coresymbolication = []
dbghelp = []
default = ["std"]
dladdr = []
gimli-symbolize = []
kernel32 = []
libbacktrace = []
libunwind = []
serialize-rustc = ["rustc-serialize"]
serialize-serde = ["serde"]
std = []
unix-backtrace = []
verify-winapi = [
    "winapi/dbghelp",
    "winapi/handleapi",
    "winapi/libloaderapi",
    "winapi/memoryapi",
    "winapi/minwindef",
    "winapi/processthreadsapi",
    "winapi/synchapi",
    "winapi/tlhelp32",
    "winapi/winbase",
    "winapi/winnt",
]

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.addr2line]
version = "0.21.0"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.libc]
version = "0.2.146"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.miniz_oxide]
version = "0.7.0"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.object]
version = "0.32.0"
features = [
    "read_core",
    "elf",
    "macho",
    "pe",
    "unaligned",
    "archive",
]
default-features = false

[target."cfg(windows)".dependencies.winapi]
version = "0.3.9"
optional = true
0707010014ADB0000081A400000000000000000000000169106BBC00000B57000000080000001100000000000000000000003F00000000rust2rpm-helper/tests/data/backtrace-0.3.69.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "backtrace"
version = "0.3.69"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = ["/ci/"]
autoexamples = true
autotests = true
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
homepage = "https://github.com/rust-lang/backtrace-rs"
documentation = "https://docs.rs/backtrace"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/backtrace-rs"

[[example]]
name = "backtrace"
required-features = ["std"]

[[example]]
name = "raw"
required-features = ["std"]

[[test]]
name = "skip_inner_frames"
required-features = ["std"]

[[test]]
name = "long_fn_name"
required-features = ["std"]

[[test]]
name = "smoke"
required-features = ["std"]
edition = "2018"

[[test]]
name = "accuracy"
required-features = ["std"]
edition = "2018"

[[test]]
name = "concurrent-panics"
harness = false
required-features = ["std"]

[[test]]
name = "current-exe-mismatch"
harness = false
required-features = ["std"]

[dependencies.cfg-if]
version = "1.0"

[dependencies.cpp_demangle]
version = "0.4.0"
features = ["alloc"]
optional = true
default-features = false

[dependencies.rustc-demangle]
version = "0.1.4"

[dependencies.rustc-serialize]
version = "0.3"
optional = true

[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true

[dev-dependencies.libloading]
version = "0.7"

[build-dependencies.cc]
version = "1.0.67"

[features]
coresymbolication = []
dbghelp = []
default = ["std"]
dladdr = []
gimli-symbolize = []
kernel32 = []
libbacktrace = []
libunwind = []
serialize-rustc = ["rustc-serialize"]
serialize-serde = ["serde"]
std = []
unix-backtrace = []
verify-winapi = [
]

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.addr2line]
version = "0.21.0"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.libc]
version = "0.2.146"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.miniz_oxide]
version = "0.7.0"
default-features = false

[target."cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))".dependencies.object]
version = "0.32.0"
features = [
    "read_core",
    "elf",
    "macho",
    "pe",
    "unaligned",
    "archive",
]
default-features = false
0707010014AD93000081A400000000000000000000000169106BBC000004BD000000080000001100000000000000000000003200000000rust2rpm-helper/tests/data/bytes-1.5.0.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "bytes"
version = "1.5.0"
authors = [
    "Carl Lerche <me@carllerche.com>",
    "Sean McArthur <sean@seanmonstar.com>",
]
description = "Types and traits for working with bytes"
readme = "README.md"
keywords = [
    "buffers",
    "zero-copy",
    "io",
]
categories = [
    "network-programming",
    "data-structures",
]
license = "MIT"
repository = "https://github.com/tokio-rs/bytes"

[package.metadata.docs.rs]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dependencies.serde]
version = "1.0.60"
features = ["alloc"]
optional = true
default-features = false

[dev-dependencies.serde_test]
version = "1.0"

[features]
default = ["std"]
std = []

[target."cfg(loom)".dev-dependencies.loom]
version = "0.5"
0707010014ADB7000081A400000000000000000000000169106BBC00000481000000080000001100000000000000000000003A00000000rust2rpm-helper/tests/data/bytes-1.5.0.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "bytes"
version = "1.5.0"
authors = [
    "Carl Lerche <me@carllerche.com>",
    "Sean McArthur <sean@seanmonstar.com>",
]
description = "Types and traits for working with bytes"
readme = "README.md"
keywords = [
    "buffers",
    "zero-copy",
    "io",
]
categories = [
    "network-programming",
    "data-structures",
]
license = "MIT"
repository = "https://github.com/tokio-rs/bytes"

[package.metadata.docs.rs]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dependencies.serde]
version = "1.0.60"
features = ["alloc"]
optional = true
default-features = false

[dev-dependencies.serde_test]
version = "1.0"

[features]
default = ["std"]
std = []
0707010014ADB4000081A400000000000000000000000169106BBC000004A9000000080000001100000000000000000000003700000000rust2rpm-helper/tests/data/bzip2-sys-0.1.11.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies
#
# If you believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
# editing this file be aware that the upstream Cargo.toml
# will likely look very different (and much more reasonable)

[package]
name = "bzip2-sys"
version = "0.1.11+1.0.8"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
build = "build.rs"
links = "bzip2"
description = "Bindings to libbzip2 for bzip2 compression and decompression exposed as\nReader/Writer streams.\n"
homepage = "https://github.com/alexcrichton/bzip2-rs"
documentation = "https://docs.rs/bzip2-sys"
categories = ["external-ffi-bindings"]
license = "MIT/Apache-2.0"
repository = "https://github.com/alexcrichton/bzip2-rs"

[lib]
name = "bzip2_sys"
path = "lib.rs"
[dependencies.libc]
version = "0.2"
[build-dependencies.cc]
version = "1.0"

[build-dependencies.pkg-config]
version = "0.3.9"

[features]
static = []
0707010014AD99000081A400000000000000000000000169106BBC000004A3000000080000001100000000000000000000003F00000000rust2rpm-helper/tests/data/bzip2-sys-0.1.11.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies
#
# If you believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
# editing this file be aware that the upstream Cargo.toml
# will likely look very different (and much more reasonable)

[package]
name = "bzip2-sys"
version = "0.1.11"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
build = "build.rs"
links = "bzip2"
description = "Bindings to libbzip2 for bzip2 compression and decompression exposed as\nReader/Writer streams.\n"
homepage = "https://github.com/alexcrichton/bzip2-rs"
documentation = "https://docs.rs/bzip2-sys"
categories = ["external-ffi-bindings"]
license = "MIT/Apache-2.0"
repository = "https://github.com/alexcrichton/bzip2-rs"

[lib]
name = "bzip2_sys"
path = "lib.rs"
[dependencies.libc]
version = "0.2"
[build-dependencies.cc]
version = "1.0"

[build-dependencies.pkg-config]
version = "0.3.9"

[features]
static = []
0707010014ADB2000081A400000000000000000000000169106BBC00000B3A000000080000001100000000000000000000003400000000rust2rpm-helper/tests/data/chrono-0.4.31.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.57.0"
name = "chrono"
version = "0.4.31"
exclude = ["/ci/*"]
description = "Date and time library for Rust"
homepage = "https://github.com/chronotope/chrono"
documentation = "https://docs.rs/chrono/"
readme = "README.md"
keywords = [
    "date",
    "time",
    "calendar",
]
categories = ["date-and-time"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/chronotope/chrono"

[package.metadata.docs.rs]
features = ["serde"]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[package.metadata.playground]
features = ["serde"]

[lib]
name = "chrono"

[dependencies.arbitrary]
version = "1.0.0"
features = ["derive"]
optional = true

[dependencies.num-traits]
version = "0.2"
default-features = false

[dependencies.pure-rust-locales]
version = "0.7"
optional = true

[dependencies.rkyv]
version = "0.7"
optional = true

[dependencies.rustc-serialize]
version = "0.3.20"
optional = true

[dependencies.serde]
version = "1.0.99"
optional = true
default-features = false

[dev-dependencies.bincode]
version = "1.3.0"

[dev-dependencies.serde_derive]
version = "1"
default-features = false

[dev-dependencies.serde_json]
version = "1"

[features]
__internal_bench = []
alloc = []
clock = [
    "std",
    "winapi",
    "iana-time-zone",
    "android-tzdata",
]
default = [
    "clock",
    "std",
    "oldtime",
    "wasmbind",
]
libc = []
oldtime = []
std = []
unstable-locales = [
    "pure-rust-locales",
    "alloc",
]
wasmbind = [
    "wasm-bindgen",
    "js-sys",
]
winapi = ["windows-targets"]

[target."cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dependencies.js-sys]
version = "0.3"
optional = true

[target."cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dependencies.wasm-bindgen]
version = "0.2"
optional = true

[target."cfg(all(target_arch = \"wasm32\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dev-dependencies.wasm-bindgen-test]
version = "0.3"

[target."cfg(target_os = \"android\")".dependencies.android-tzdata]
version = "0.1.1"
optional = true

[target."cfg(unix)".dependencies.iana-time-zone]
version = "0.1.45"
features = ["fallback"]
optional = true

[target."cfg(windows)".dependencies.windows-targets]
version = "0.48"
optional = true

[target."cfg(windows)".dev-dependencies.windows-bindgen]
version = "0.51"
0707010014ADA9000081A400000000000000000000000169106BBC00000806000000080000001100000000000000000000003C00000000rust2rpm-helper/tests/data/chrono-0.4.31.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.57.0"
name = "chrono"
version = "0.4.31"
exclude = ["/ci/*"]
description = "Date and time library for Rust"
homepage = "https://github.com/chronotope/chrono"
documentation = "https://docs.rs/chrono/"
readme = "README.md"
keywords = [
    "date",
    "time",
    "calendar",
]
categories = ["date-and-time"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/chronotope/chrono"

[package.metadata.docs.rs]
features = ["serde"]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[package.metadata.playground]
features = ["serde"]

[lib]
name = "chrono"

[dependencies.arbitrary]
version = "1.0.0"
features = ["derive"]
optional = true

[dependencies.num-traits]
version = "0.2"
default-features = false

[dependencies.pure-rust-locales]
version = "0.7"
optional = true

[dependencies.rkyv]
version = "0.7"
optional = true

[dependencies.rustc-serialize]
version = "0.3.20"
optional = true

[dependencies.serde]
version = "1.0.99"
optional = true
default-features = false

[dev-dependencies.bincode]
version = "1.3.0"

[dev-dependencies.serde_derive]
version = "1"
default-features = false

[dev-dependencies.serde_json]
version = "1"

[features]
__internal_bench = []
alloc = []
clock = [
    "std",
    "winapi",
    "iana-time-zone",
]
default = [
    "clock",
    "std",
    "oldtime",
    "wasmbind",
]
libc = []
oldtime = []
std = []
unstable-locales = [
    "pure-rust-locales",
    "alloc",
]
wasmbind = [
]
winapi = []

[target."cfg(unix)".dependencies.iana-time-zone]
version = "0.1.45"
features = ["fallback"]
optional = true
0707010014ADA3000081A400000000000000000000000169106BBC000004FF000000080000001100000000000000000000003800000000rust2rpm-helper/tests/data/cpufeatures-0.2.9.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "cpufeatures"
version = "0.2.9"
authors = ["RustCrypto Developers"]
description = """
Lightweight runtime CPU feature detection for x86/x86_64 and aarch64 with
no_std support and support for mobile targets including Android and iOS
"""
documentation = "https://docs.rs/cpufeatures"
readme = "README.md"
keywords = [
    "cpuid",
    "target-feature",
]
categories = [
    "hardware-support",
    "no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/RustCrypto/utils"

[target.aarch64-linux-android.dependencies.libc]
version = "0.2.95"

[target."cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))".dependencies.libc]
version = "0.2.95"

[target."cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))".dependencies.libc]
version = "0.2.95"
0707010014ADA1000081A400000000000000000000000169106BBC0000044A000000080000001100000000000000000000004000000000rust2rpm-helper/tests/data/cpufeatures-0.2.9.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "cpufeatures"
version = "0.2.9"
authors = ["RustCrypto Developers"]
description = """
Lightweight runtime CPU feature detection for x86/x86_64 and aarch64 with
no_std support and support for mobile targets including Android and iOS
"""
documentation = "https://docs.rs/cpufeatures"
readme = "README.md"
keywords = [
    "cpuid",
    "target-feature",
]
categories = [
    "hardware-support",
    "no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/RustCrypto/utils"

[target."cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))".dependencies.libc]
version = "0.2.95"
0707010014ADA8000081A400000000000000000000000169106BBC000007F3000000080000001100000000000000000000003600000000rust2rpm-helper/tests/data/curl-sys-0.4.66.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "curl-sys"
version = "0.4.66+curl-8.3.0"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
build = "build.rs"
links = "curl"
description = "Native bindings to the libcurl library"
documentation = "https://docs.rs/curl-sys"
categories = ["external-ffi-bindings"]
license = "MIT"
repository = "https://github.com/alexcrichton/curl-rust"

[lib]
name = "curl_sys"
path = "lib.rs"

[dependencies.libc]
version = "0.2.2"

[dependencies.libnghttp2-sys]
version = "0.1.3"
optional = true

[dependencies.libz-sys]
version = "1.0.18"
features = ["libc"]
default-features = false

[dependencies.rustls-ffi]
version = "0.8"
features = ["no_log_capture"]
optional = true

[build-dependencies.cc]
version = "1.0"

[build-dependencies.pkg-config]
version = "0.3.3"

[features]
default = ["ssl"]
force-system-lib-on-osx = []
http2 = ["libnghttp2-sys"]
mesalink = []
ntlm = []
poll_7_68_0 = []
protocol-ftp = []
rustls = ["rustls-ffi"]
spnego = []
ssl = ["openssl-sys"]
static-curl = []
static-ssl = ["openssl-sys/vendored"]
upkeep_7_62_0 = []
windows-static-ssl = []
zlib-ng-compat = [
    "libz-sys/zlib-ng",
    "static-curl",
]

[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies.openssl-sys]
version = "0.9.64"
optional = true

[target."cfg(target_env = \"msvc\")".build-dependencies.vcpkg]
version = "0.2"

[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
features = ["Win32_Networking_WinSock"]

[badges.appveyor]
repository = "alexcrichton/curl-rust"

[badges.travis-ci]
repository = "alexcrichton/curl-rust"
0707010014ADAA000081A400000000000000000000000169106BBC000007E8000000080000001100000000000000000000003E00000000rust2rpm-helper/tests/data/curl-sys-0.4.66.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "curl-sys"
version = "0.4.66"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
build = "build.rs"
links = "curl"
description = "Native bindings to the libcurl library"
documentation = "https://docs.rs/curl-sys"
categories = ["external-ffi-bindings"]
license = "MIT"
repository = "https://github.com/alexcrichton/curl-rust"

[lib]
name = "curl_sys"
path = "lib.rs"

[dependencies.libc]
version = "0.2.2"

[dependencies.libnghttp2-sys]
version = "0.1.3"
optional = true

[dependencies.libz-sys]
version = "1.0.18"
features = ["libc"]
default-features = false

[dependencies.rustls-ffi]
version = "0.8"
features = ["no_log_capture"]
optional = true

[build-dependencies.cc]
version = "1.0"

[build-dependencies.pkg-config]
version = "0.3.3"

[features]
default = ["ssl"]
force-system-lib-on-osx = []
http2 = ["libnghttp2-sys"]
mesalink = []
ntlm = []
poll_7_68_0 = []
protocol-ftp = []
rustls = ["rustls-ffi"]
spnego = []
ssl = ["openssl-sys"]
static-curl = []
static-ssl = ["openssl-sys/vendored"]
upkeep_7_62_0 = []
windows-static-ssl = []
zlib-ng-compat = [
    "libz-sys/zlib-ng",
    "static-curl",
]

[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies.openssl-sys]
version = "0.9.64"
optional = true

[target."cfg(target_env = \"msvc\")".build-dependencies.vcpkg]
version = "0.2"

[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
features = ["Win32_Networking_WinSock"]

[badges.appveyor]
repository = "alexcrichton/curl-rust"

[badges.travis-ci]
repository = "alexcrichton/curl-rust"
0707010014ADB8000081A400000000000000000000000169106BBC00000D7B000000080000001100000000000000000000003D00000000rust2rpm-helper/tests/data/gst-plugin-gtk4-0.11.0.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.70"
name = "gst-plugin-gtk4"
version = "0.11.0"
authors = [
    "Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>",
    "Jordan Petridis <jordan@centricular.com>",
    "Sebastian Dröge <sebastian@centricular.com>",
]
description = "GStreamer GTK 4 Sink element and Paintable widget"
readme = "README.md"
license = "MPL-2.0"
repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs"

[package.metadata.capi]
min_version = "0.9.21"

[package.metadata.capi.header]
enabled = false

[package.metadata.capi.library]
import_library = false
install_subdir = "gstreamer-1.0"
versioning = false

[package.metadata.capi.pkg_config]
requires_private = "gstreamer-1.0, gstreamer-base-1.0, gstreamer-video-1.0, gtk4, gobject-2.0, glib-2.0, gmodule-2.0"

[lib]
name = "gstgtk4"
crate-type = [
    "cdylib",
    "rlib",
]
path = "src/lib.rs"

[dependencies.gdk_wayland]
version = "0.7"
features = ["v4_4"]
optional = true
package = "gdk4-wayland"

[dependencies.gdk_x11]
version = "0.7"
features = ["v4_4"]
optional = true
package = "gdk4-x11"

[dependencies.gst]
version = "0.21"
features = ["v1_16"]
package = "gstreamer"

[dependencies.gst_base]
version = "0.21"
package = "gstreamer-base"

[dependencies.gst_gl]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl"

[dependencies.gst_gl_egl]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-egl"

[dependencies.gst_gl_wayland]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-wayland"

[dependencies.gst_gl_x11]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-x11"

[dependencies.gst_video]
version = "0.21"
package = "gstreamer-video"

[dependencies.gtk]
version = "0.7"
package = "gtk4"

[build-dependencies.gst-plugin-version-helper]
version = "0.7"

[features]
capi = []
default = []
doc = ["gst/v1_18"]
static = []
wayland = [
    "gtk/v4_6",
    "gdk_wayland",
    "gst_gl",
    "gst_gl_wayland",
]
winegl = [
    "gdk_win32/egl",
    "gst_gl_egl",
]
x11egl = [
    "gtk/v4_6",
    "gdk_x11",
    "gst_gl",
    "gst_gl_egl",
]
x11glx = [
    "gtk/v4_6",
    "gdk_x11",
    "gst_gl",
    "gst_gl_x11",
]

[target."cfg(target_os = \"macos\")".dependencies.gst_gl]
version = "0.21"
features = ["v1_16"]
package = "gstreamer-gl"

[target."cfg(target_os = \"macos\")".dependencies.gtk]
version = "0.7"
features = ["v4_6"]
package = "gtk4"

[target."cfg(target_os = \"windows\")".dependencies.gdk_win32]
version = "0.7"
features = ["v4_4"]
package = "gdk4-win32"

[target."cfg(target_os = \"windows\")".dependencies.gst_gl]
version = "0.21"
features = ["v1_20"]
package = "gstreamer-gl"

[target."cfg(target_os = \"windows\")".dependencies.gtk]
version = "0.7"
features = ["v4_6"]
package = "gtk4"

[target."cfg(target_os = \"windows\")".dependencies.windows-sys]
version = "0.48"
features = [
    "Win32_Graphics_OpenGL",
    "Win32_Foundation",
    "Win32_Graphics_Gdi",
]
0707010014ADA4000081A400000000000000000000000169106BBC00000A68000000080000001100000000000000000000004500000000rust2rpm-helper/tests/data/gst-plugin-gtk4-0.11.0.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.70"
name = "gst-plugin-gtk4"
version = "0.11.0"
authors = [
    "Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>",
    "Jordan Petridis <jordan@centricular.com>",
    "Sebastian Dröge <sebastian@centricular.com>",
]
description = "GStreamer GTK 4 Sink element and Paintable widget"
readme = "README.md"
license = "MPL-2.0"
repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs"

[package.metadata.capi]
min_version = "0.9.21"

[package.metadata.capi.header]
enabled = false

[package.metadata.capi.library]
import_library = false
install_subdir = "gstreamer-1.0"
versioning = false

[package.metadata.capi.pkg_config]
requires_private = "gstreamer-1.0, gstreamer-base-1.0, gstreamer-video-1.0, gtk4, gobject-2.0, glib-2.0, gmodule-2.0"

[lib]
name = "gstgtk4"
crate-type = [
    "cdylib",
    "rlib",
]
path = "src/lib.rs"

[dependencies.gdk_wayland]
version = "0.7"
features = ["v4_4"]
optional = true
package = "gdk4-wayland"

[dependencies.gdk_x11]
version = "0.7"
features = ["v4_4"]
optional = true
package = "gdk4-x11"

[dependencies.gst]
version = "0.21"
features = ["v1_16"]
package = "gstreamer"

[dependencies.gst_base]
version = "0.21"
package = "gstreamer-base"

[dependencies.gst_gl]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl"

[dependencies.gst_gl_egl]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-egl"

[dependencies.gst_gl_wayland]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-wayland"

[dependencies.gst_gl_x11]
version = "0.21"
features = ["v1_16"]
optional = true
package = "gstreamer-gl-x11"

[dependencies.gst_video]
version = "0.21"
package = "gstreamer-video"

[dependencies.gtk]
version = "0.7"
package = "gtk4"

[build-dependencies.gst-plugin-version-helper]
version = "0.7"

[features]
capi = []
default = []
doc = ["gst/v1_18"]
static = []
wayland = [
    "gtk/v4_6",
    "gdk_wayland",
    "gst_gl",
    "gst_gl_wayland",
]
winegl = [
    "gst_gl_egl",
]
x11egl = [
    "gtk/v4_6",
    "gdk_x11",
    "gst_gl",
    "gst_gl_egl",
]
x11glx = [
    "gtk/v4_6",
    "gdk_x11",
    "gst_gl",
    "gst_gl_x11",
]
0707010014ADA6000081A400000000000000000000000169106BBC000008D0000000080000001100000000000000000000003700000000rust2rpm-helper/tests/data/indicatif-0.17.7.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "indicatif"
version = "0.17.7"
exclude = ["screenshots/*"]
description = "A progress bar and cli reporting library for Rust"
documentation = "https://docs.rs/indicatif"
readme = "README.md"
keywords = [
    "cli",
    "progress",
    "pb",
    "colors",
    "progressbar",
]
categories = ["command-line-interface"]
license = "MIT"
repository = "https://github.com/console-rs/indicatif"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dependencies.console]
version = "0.15"
features = ["ansi-parsing"]
default-features = false

[dependencies.futures-core]
version = "0.3"
optional = true
default-features = false

[dependencies.number_prefix]
version = "0.4"

[dependencies.portable-atomic]
version = "1.0.0"

[dependencies.rayon]
version = "1.1"
optional = true

[dependencies.tokio]
version = "1"
features = ["io-util"]
optional = true

[dependencies.unicode-segmentation]
version = "1"
optional = true

[dependencies.unicode-width]
version = "0.1"
optional = true

[dependencies.vt100]
version = "0.15.1"
optional = true

[dev-dependencies.clap]
version = "4"
features = [
    "color",
    "derive",
]

[dev-dependencies.futures]
version = "0.3"

[dev-dependencies.once_cell]
version = "1"

[dev-dependencies.pretty_assertions]
version = "1.4.0"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.tokio]
version = "1"
features = [
    "fs",
    "time",
    "rt",
]

[features]
default = [
    "unicode-width",
    "console/unicode-width",
]
futures = ["dep:futures-core"]
improved_unicode = [
    "unicode-segmentation",
    "unicode-width",
    "console/unicode-width",
]
in_memory = ["vt100"]

[target."cfg(target_arch = \"wasm32\")".dependencies.instant]
version = "0.1"
0707010014AD9E000081A400000000000000000000000169106BBC00000881000000080000001100000000000000000000003F00000000rust2rpm-helper/tests/data/indicatif-0.17.7.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "indicatif"
version = "0.17.7"
exclude = ["screenshots/*"]
description = "A progress bar and cli reporting library for Rust"
documentation = "https://docs.rs/indicatif"
readme = "README.md"
keywords = [
    "cli",
    "progress",
    "pb",
    "colors",
    "progressbar",
]
categories = ["command-line-interface"]
license = "MIT"
repository = "https://github.com/console-rs/indicatif"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dependencies.console]
version = "0.15"
features = ["ansi-parsing"]
default-features = false

[dependencies.futures-core]
version = "0.3"
optional = true
default-features = false

[dependencies.number_prefix]
version = "0.4"

[dependencies.portable-atomic]
version = "1.0.0"

[dependencies.rayon]
version = "1.1"
optional = true

[dependencies.tokio]
version = "1"
features = ["io-util"]
optional = true

[dependencies.unicode-segmentation]
version = "1"
optional = true

[dependencies.unicode-width]
version = "0.1"
optional = true

[dependencies.vt100]
version = "0.15.1"
optional = true

[dev-dependencies.clap]
version = "4"
features = [
    "color",
    "derive",
]

[dev-dependencies.futures]
version = "0.3"

[dev-dependencies.once_cell]
version = "1"

[dev-dependencies.pretty_assertions]
version = "1.4.0"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.tokio]
version = "1"
features = [
    "fs",
    "time",
    "rt",
]

[features]
default = [
    "unicode-width",
    "console/unicode-width",
]
futures = ["dep:futures-core"]
improved_unicode = [
    "unicode-segmentation",
    "unicode-width",
    "console/unicode-width",
]
in_memory = ["vt100"]
0707010014ADB1000081A400000000000000000000000169106BBC0000063F000000080000001100000000000000000000003900000000rust2rpm-helper/tests/data/libgit2-sys-0.16.1.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "libgit2-sys"
version = "0.16.1+1.7.1"
authors = [
    "Josh Triplett <josh@joshtriplett.org>",
    "Alex Crichton <alex@alexcrichton.com>",
]
build = "build.rs"
links = "git2"
exclude = [
    "libgit2/ci/*",
    "libgit2/docs/*",
    "libgit2/examples/*",
    "libgit2/fuzzers/*",
    "libgit2/tests/*",
]
description = "Native bindings to the libgit2 library"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/git2-rs"

[lib]
name = "libgit2_sys"
path = "lib.rs"

[dependencies.libc]
version = "0.2"

[dependencies.libssh2-sys]
version = "0.3.0"
optional = true

[dependencies.libz-sys]
version = "1.1.0"
features = ["libc"]
default-features = false

[build-dependencies.cc]
version = "1.0.43"
features = ["parallel"]

[build-dependencies.pkg-config]
version = "0.3.15"

[features]
https = ["openssl-sys"]
ssh = ["libssh2-sys"]
ssh_key_from_memory = []
vendored = []
vendored-openssl = ["openssl-sys/vendored"]
zlib-ng-compat = [
    "libz-sys/zlib-ng",
    "libssh2-sys?/zlib-ng-compat",
]

[target."cfg(unix)".dependencies.openssl-sys]
version = "0.9.45"
optional = true
0707010014AD98000081A400000000000000000000000169106BBC00000639000000080000001100000000000000000000004100000000rust2rpm-helper/tests/data/libgit2-sys-0.16.1.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "libgit2-sys"
version = "0.16.1"
authors = [
    "Josh Triplett <josh@joshtriplett.org>",
    "Alex Crichton <alex@alexcrichton.com>",
]
build = "build.rs"
links = "git2"
exclude = [
    "libgit2/ci/*",
    "libgit2/docs/*",
    "libgit2/examples/*",
    "libgit2/fuzzers/*",
    "libgit2/tests/*",
]
description = "Native bindings to the libgit2 library"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/git2-rs"

[lib]
name = "libgit2_sys"
path = "lib.rs"

[dependencies.libc]
version = "0.2"

[dependencies.libssh2-sys]
version = "0.3.0"
optional = true

[dependencies.libz-sys]
version = "1.1.0"
features = ["libc"]
default-features = false

[build-dependencies.cc]
version = "1.0.43"
features = ["parallel"]

[build-dependencies.pkg-config]
version = "0.3.15"

[features]
https = ["openssl-sys"]
ssh = ["libssh2-sys"]
ssh_key_from_memory = []
vendored = []
vendored-openssl = ["openssl-sys/vendored"]
zlib-ng-compat = [
    "libz-sys/zlib-ng",
    "libssh2-sys?/zlib-ng-compat",
]

[target."cfg(unix)".dependencies.openssl-sys]
version = "0.9.45"
optional = true
0707010014AD9D000081A400000000000000000000000169106BBC00000886000000080000001100000000000000000000003800000000rust2rpm-helper/tests/data/native-tls-0.2.11.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
name = "native-tls"
version = "0.2.11"
authors = ["Steven Fackler <sfackler@gmail.com>"]
description = "A wrapper over a platform's native TLS implementation"
readme = "README.md"
license = "MIT/Apache-2.0"
repository = "https://github.com/sfackler/rust-native-tls"

[package.metadata.docs.rs]
features = ["alpn"]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dev-dependencies.tempfile]
version = "3.0"

[dev-dependencies.test-cert-gen]
version = "0.7"

[features]
alpn = ["security-framework/alpn"]
vendored = ["openssl/vendored"]

[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.lazy_static]
version = "1.4.0"

[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.libc]
version = "0.2"

[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.security-framework]
version = "2.0.0"

[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.security-framework-sys]
version = "2.0.0"

[target."cfg(any(target_os = \"macos\", target_os = \"ios\"))".dependencies.tempfile]
version = "3.1.0"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.log]
version = "0.4.5"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl]
version = "0.10.29"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl-probe]
version = "0.1"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl-sys]
version = "0.9.55"

[target."cfg(target_os = \"windows\")".dependencies.schannel]
version = "0.1.17"
0707010014AD96000081A400000000000000000000000169106BBC000005F9000000080000001100000000000000000000004000000000rust2rpm-helper/tests/data/native-tls-0.2.11.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
name = "native-tls"
version = "0.2.11"
authors = ["Steven Fackler <sfackler@gmail.com>"]
description = "A wrapper over a platform's native TLS implementation"
readme = "README.md"
license = "MIT/Apache-2.0"
repository = "https://github.com/sfackler/rust-native-tls"

[package.metadata.docs.rs]
features = ["alpn"]
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[dev-dependencies.tempfile]
version = "3.0"

[dev-dependencies.test-cert-gen]
version = "0.7"

[features]
alpn = []
vendored = ["openssl/vendored"]

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.log]
version = "0.4.5"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl]
version = "0.10.29"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl-probe]
version = "0.1"

[target."cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))".dependencies.openssl-sys]
version = "0.9.55"
0707010014ADA0000081A400000000000000000000000169106BBC00000ADE000000080000001100000000000000000000003100000000rust2rpm-helper/tests/data/nix-0.27.1.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.65"
name = "nix"
version = "0.27.1"
authors = ["The nix-rust Project Developers"]
include = [
    "src/**/*",
    "test/**/*",
    "LICENSE",
    "README.md",
    "CHANGELOG.md",
]
description = "Rust friendly bindings to *nix APIs"
readme = "README.md"
categories = ["os::unix-apis"]
license = "MIT"
repository = "https://github.com/nix-rust/nix"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]
targets = [
    "x86_64-unknown-linux-gnu",
    "aarch64-linux-android",
    "x86_64-apple-darwin",
    "aarch64-apple-ios",
    "x86_64-unknown-freebsd",
    "x86_64-unknown-openbsd",
    "x86_64-unknown-netbsd",
    "x86_64-unknown-dragonfly",
    "x86_64-fuchsia",
    "x86_64-unknown-redox",
    "x86_64-unknown-illumos",
]

[[test]]
name = "test"
path = "test/test.rs"

[[test]]
name = "test-aio-drop"
path = "test/sys/test_aio_drop.rs"

[[test]]
name = "test-clearenv"
path = "test/test_clearenv.rs"

[[test]]
name = "test-mount"
path = "test/test_mount.rs"
harness = false

[[test]]
name = "test-prctl"
path = "test/sys/test_prctl.rs"

[dependencies.bitflags]
version = "2.3.1"

[dependencies.cfg-if]
version = "1.0"

[dependencies.libc]
version = "0.2.147"
features = ["extra_traits"]

[dependencies.memoffset]
version = "0.9"
optional = true

[dependencies.pin-utils]
version = "0.1.0"
optional = true

[dev-dependencies.assert-impl]
version = "0.1"

[dev-dependencies.parking_lot]
version = "0.12"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.semver]
version = "1.0.7"

[dev-dependencies.tempfile]
version = "3.7.1"

[features]
acct = []
aio = ["pin-utils"]
default = []
dir = ["fs"]
env = []
event = []
feature = []
fs = []
hostname = []
inotify = []
ioctl = []
kmod = []
mman = []
mount = ["uio"]
mqueue = ["fs"]
net = ["socket"]
personality = []
poll = []
process = []
pthread = []
ptrace = ["process"]
quota = []
reboot = []
resource = []
sched = ["process"]
signal = ["process"]
socket = ["memoffset"]
term = []
time = []
ucontext = ["signal"]
uio = []
user = ["feature"]
zerocopy = [
    "fs",
    "uio",
]

[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dev-dependencies.caps]
version = "0.5.3"

[target."cfg(target_os = \"freebsd\")".dev-dependencies.sysctl]
version = "0.4"
0707010014AD9C000081A400000000000000000000000169106BBC00000A8D000000080000001100000000000000000000003900000000rust2rpm-helper/tests/data/nix-0.27.1.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.65"
name = "nix"
version = "0.27.1"
authors = ["The nix-rust Project Developers"]
include = [
    "src/**/*",
    "test/**/*",
    "LICENSE",
    "README.md",
    "CHANGELOG.md",
]
description = "Rust friendly bindings to *nix APIs"
readme = "README.md"
categories = ["os::unix-apis"]
license = "MIT"
repository = "https://github.com/nix-rust/nix"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]
targets = [
    "x86_64-unknown-linux-gnu",
    "aarch64-linux-android",
    "x86_64-apple-darwin",
    "aarch64-apple-ios",
    "x86_64-unknown-freebsd",
    "x86_64-unknown-openbsd",
    "x86_64-unknown-netbsd",
    "x86_64-unknown-dragonfly",
    "x86_64-fuchsia",
    "x86_64-unknown-redox",
    "x86_64-unknown-illumos",
]

[[test]]
name = "test"
path = "test/test.rs"

[[test]]
name = "test-aio-drop"
path = "test/sys/test_aio_drop.rs"

[[test]]
name = "test-clearenv"
path = "test/test_clearenv.rs"

[[test]]
name = "test-mount"
path = "test/test_mount.rs"
harness = false

[[test]]
name = "test-prctl"
path = "test/sys/test_prctl.rs"

[dependencies.bitflags]
version = "2.3.1"

[dependencies.cfg-if]
version = "1.0"

[dependencies.libc]
version = "0.2.147"
features = ["extra_traits"]

[dependencies.memoffset]
version = "0.9"
optional = true

[dependencies.pin-utils]
version = "0.1.0"
optional = true

[dev-dependencies.assert-impl]
version = "0.1"

[dev-dependencies.parking_lot]
version = "0.12"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.semver]
version = "1.0.7"

[dev-dependencies.tempfile]
version = "3.7.1"

[features]
acct = []
aio = ["pin-utils"]
default = []
dir = ["fs"]
env = []
event = []
feature = []
fs = []
hostname = []
inotify = []
ioctl = []
kmod = []
mman = []
mount = ["uio"]
mqueue = ["fs"]
net = ["socket"]
personality = []
poll = []
process = []
pthread = []
ptrace = ["process"]
quota = []
reboot = []
resource = []
sched = ["process"]
signal = ["process"]
socket = ["memoffset"]
term = []
time = []
ucontext = ["signal"]
uio = []
user = ["feature"]
zerocopy = [
    "fs",
    "uio",
]

[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dev-dependencies.caps]
version = "0.5.3"
0707010014ADA5000081A400000000000000000000000169106BBC00001A90000000080000001100000000000000000000003400000000rust2rpm-helper/tests/data/rustix-0.36.8.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.48"
name = "rustix"
version = "0.36.8"
authors = [
    "Dan Gohman <dev@sunfishcode.online>",
    "Jakub Konka <kubkon@jakubkonka.com>",
]
include = [
    "src",
    "build.rs",
    "Cargo.toml",
    "COPYRIGHT",
    "LICENSE*",
    "/*.md",
    "benches",
]
description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls"
documentation = "https://docs.rs/rustix"
readme = "README.md"
keywords = [
    "api",
    "file",
    "network",
    "safe",
    "syscall",
]
categories = [
    "os::unix-apis",
    "date-and-time",
    "filesystem",
    "network-programming",
]
license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
repository = "https://github.com/bytecodealliance/rustix"

[package.metadata.docs.rs]
features = ["all-apis"]
rustdoc-args = [
    "--cfg",
    "doc_cfg",
]
targets = [
    "x86_64-unknown-linux-gnu",
    "i686-unknown-linux-gnu",
    "x86_64-apple-darwin",
    "x86_64-pc-windows-msvc",
]

[[bench]]
name = "mod"
harness = false

[dependencies.alloc]
version = "1.0.0"
optional = true
package = "rustc-std-workspace-alloc"

[dependencies.bitflags]
version = "1.2.1"

[dependencies.compiler_builtins]
version = "0.1.49"
optional = true

[dependencies.core]
version = "1.0.0"
optional = true
package = "rustc-std-workspace-core"

[dependencies.io-lifetimes]
version = "1.0.0"
features = ["close"]
optional = true
default-features = false

[dependencies.itoa]
version = "1.0.1"
optional = true
default-features = false

[dev-dependencies.flate2]
version = "1.0"

[dev-dependencies.io-lifetimes]
version = "1.0.0"
features = ["close"]
default-features = false

[dev-dependencies.libc]
version = "0.2.133"

[dev-dependencies.libc_errno]
version = "0.2.8"
default-features = false
package = "errno"

[dev-dependencies.memoffset]
version = "0.7.1"

[dev-dependencies.serial_test]
version = "0.6"

[dev-dependencies.tempfile]
version = "3.2.0"

[build-dependencies.cc]
version = "1.0.68"
optional = true

[features]
all-apis = [
    "fs",
    "io_uring",
    "mm",
    "net",
    "param",
    "process",
    "procfs",
    "rand",
    "runtime",
    "termios",
    "thread",
    "time",
]
all-impls = [
    "os_pipe",
    "fs-err",
]
default = [
    "std",
    "use-libc-auxv",
]
fs = []
fs-err = ["io-lifetimes/fs-err"]
io_uring = [
    "fs",
    "net",
]
mm = []
net = []
os_pipe = ["io-lifetimes/os_pipe"]
param = ["fs"]
process = []
procfs = [
    "once_cell",
    "itoa",
    "fs",
]
rand = []
runtime = []
rustc-dep-of-std = [
    "core",
    "alloc",
    "compiler_builtins",
    "linux-raw-sys/rustc-dep-of-std",
    "bitflags/rustc-dep-of-std",
]
std = ["io-lifetimes"]
termios = []
thread = []
time = []
use-libc = [
    "libc_errno",
    "libc",
]
use-libc-auxv = ["libc"]

[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.linux-raw-sys]
version = "0.1.2"
features = [
    "general",
    "no_std",
]
default-features = false

[target."cfg(all(criterion, not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dev-dependencies.criterion]
version = "0.4"

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc]
version = "0.2.133"
features = ["extra_traits"]
optional = true

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc_errno]
version = "0.2.8"
optional = true
default-features = false
package = "errno"

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.linux-raw-sys]
version = "0.1.2"
features = [
    "general",
    "errno",
    "ioctl",
    "no_std",
]
default-features = false

[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc]
version = "0.2.133"
features = ["extra_traits"]

[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc_errno]
version = "0.2.8"
default-features = false
package = "errno"

[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.once_cell]
version = "1.5.2"
optional = true

[target."cfg(windows)".dependencies.windows-sys]
version = "0.45.0"
features = [
    "Win32_Foundation",
    "Win32_Networking_WinSock",
    "Win32_NetworkManagement_IpHelper",
    "Win32_System_Threading",
]

[target."cfg(windows)".dev-dependencies.ctor]
version = "0.1.21"
0707010014AD95000081A400000000000000000000000169106BBC000018F5000000080000001100000000000000000000003C00000000rust2rpm-helper/tests/data/rustix-0.36.8.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.48"
name = "rustix"
version = "0.36.8"
authors = [
    "Dan Gohman <dev@sunfishcode.online>",
    "Jakub Konka <kubkon@jakubkonka.com>",
]
include = [
    "src",
    "build.rs",
    "Cargo.toml",
    "COPYRIGHT",
    "LICENSE*",
    "/*.md",
    "benches",
]
description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls"
documentation = "https://docs.rs/rustix"
readme = "README.md"
keywords = [
    "api",
    "file",
    "network",
    "safe",
    "syscall",
]
categories = [
    "os::unix-apis",
    "date-and-time",
    "filesystem",
    "network-programming",
]
license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
repository = "https://github.com/bytecodealliance/rustix"

[package.metadata.docs.rs]
features = ["all-apis"]
rustdoc-args = [
    "--cfg",
    "doc_cfg",
]
targets = [
    "x86_64-unknown-linux-gnu",
    "i686-unknown-linux-gnu",
    "x86_64-apple-darwin",
    "x86_64-pc-windows-msvc",
]

[[bench]]
name = "mod"
harness = false

[dependencies.alloc]
version = "1.0.0"
optional = true
package = "rustc-std-workspace-alloc"

[dependencies.bitflags]
version = "1.2.1"

[dependencies.compiler_builtins]
version = "0.1.49"
optional = true

[dependencies.core]
version = "1.0.0"
optional = true
package = "rustc-std-workspace-core"

[dependencies.io-lifetimes]
version = "1.0.0"
features = ["close"]
optional = true
default-features = false

[dependencies.itoa]
version = "1.0.1"
optional = true
default-features = false

[dev-dependencies.flate2]
version = "1.0"

[dev-dependencies.io-lifetimes]
version = "1.0.0"
features = ["close"]
default-features = false

[dev-dependencies.libc]
version = "0.2.133"

[dev-dependencies.libc_errno]
version = "0.2.8"
default-features = false
package = "errno"

[dev-dependencies.memoffset]
version = "0.7.1"

[dev-dependencies.serial_test]
version = "0.6"

[dev-dependencies.tempfile]
version = "3.2.0"

[build-dependencies.cc]
version = "1.0.68"
optional = true

[features]
all-apis = [
    "fs",
    "io_uring",
    "mm",
    "net",
    "param",
    "process",
    "procfs",
    "rand",
    "runtime",
    "termios",
    "thread",
    "time",
]
all-impls = [
    "os_pipe",
    "fs-err",
]
default = [
    "std",
    "use-libc-auxv",
]
fs = []
fs-err = ["io-lifetimes/fs-err"]
io_uring = [
    "fs",
    "net",
]
mm = []
net = []
os_pipe = ["io-lifetimes/os_pipe"]
param = ["fs"]
process = []
procfs = [
    "once_cell",
    "itoa",
    "fs",
]
rand = []
runtime = []
rustc-dep-of-std = [
    "core",
    "alloc",
    "compiler_builtins",
    "linux-raw-sys/rustc-dep-of-std",
    "bitflags/rustc-dep-of-std",
]
std = ["io-lifetimes"]
termios = []
thread = []
time = []
use-libc = [
    "libc_errno",
    "libc",
]
use-libc-auxv = ["libc"]

[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.linux-raw-sys]
version = "0.1.2"
features = [
    "general",
    "no_std",
]
default-features = false

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc]
version = "0.2.133"
features = ["extra_traits"]
optional = true

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc_errno]
version = "0.2.8"
optional = true
default-features = false
package = "errno"

[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.linux-raw-sys]
version = "0.1.2"
features = [
    "general",
    "errno",
    "ioctl",
    "no_std",
]
default-features = false

[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc]
version = "0.2.133"
features = ["extra_traits"]

[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc_errno]
version = "0.2.8"
default-features = false
package = "errno"

[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.once_cell]
version = "1.5.2"
optional = true
0707010014AD91000081A400000000000000000000000169106BBC00000661000000080000001100000000000000000000003400000000rust2rpm-helper/tests/data/serde-1.0.196.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.31"
name = "serde"
version = "1.0.196"
authors = [
    "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
    "David Tolnay <dtolnay@gmail.com>",
]
build = "build.rs"
description = "A generic serialization/deserialization framework"
homepage = "https://serde.rs"
documentation = "https://docs.rs/serde"
readme = "crates-io.md"
keywords = [
    "serde",
    "serialization",
    "no_std",
]
categories = [
    "encoding",
    "no-std",
    "no-std::no-alloc",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/serde"

[package.metadata.docs.rs]
features = [
    "derive",
    "rc",
    "unstable",
]
rustdoc-args = [
    "--cfg",
    "doc_cfg",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[package.metadata.playground]
features = [
    "derive",
    "rc",
]

[lib]
doc-scrape-examples = false

[dependencies.serde_derive]
version = "1"
optional = true

[dev-dependencies.serde_derive]
version = "1"

[features]
alloc = []
default = ["std"]
derive = ["serde_derive"]
rc = []
std = []
unstable = []

[target."cfg(any())".dependencies.serde_derive]
version = "=1.0.196"
0707010014AD9F000081A400000000000000000000000169106BBC00000661000000080000001100000000000000000000003C00000000rust2rpm-helper/tests/data/serde-1.0.196.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.31"
name = "serde"
version = "1.0.196"
authors = [
    "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
    "David Tolnay <dtolnay@gmail.com>",
]
build = "build.rs"
description = "A generic serialization/deserialization framework"
homepage = "https://serde.rs"
documentation = "https://docs.rs/serde"
readme = "crates-io.md"
keywords = [
    "serde",
    "serialization",
    "no_std",
]
categories = [
    "encoding",
    "no-std",
    "no-std::no-alloc",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/serde"

[package.metadata.docs.rs]
features = [
    "derive",
    "rc",
    "unstable",
]
rustdoc-args = [
    "--cfg",
    "doc_cfg",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[package.metadata.playground]
features = [
    "derive",
    "rc",
]

[lib]
doc-scrape-examples = false

[dependencies.serde_derive]
version = "1"
optional = true

[dev-dependencies.serde_derive]
version = "1"

[features]
alloc = []
default = ["std"]
derive = ["serde_derive"]
rc = []
std = []
unstable = []

[target."cfg(any())".dependencies.serde_derive]
version = "=1.0.196"
0707010014ADB9000081A400000000000000000000000169106BBC00000A76000000080000001100000000000000000000003100000000rust2rpm-helper/tests/data/syn-2.0.34.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.56"
name = "syn"
version = "2.0.34"
authors = ["David Tolnay <dtolnay@gmail.com>"]
include = [
    "/benches/**",
    "/Cargo.toml",
    "/LICENSE-APACHE",
    "/LICENSE-MIT",
    "/README.md",
    "/src/**",
    "/tests/**",
]
description = "Parser for Rust source code"
documentation = "https://docs.rs/syn"
readme = "README.md"
keywords = [
    "macros",
    "syn",
]
categories = [
    "development-tools::procedural-macro-helpers",
    "parser-implementations",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/syn"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "doc_cfg",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[package.metadata.playground]
features = [
    "full",
    "visit",
    "visit-mut",
    "fold",
    "extra-traits",
]

[lib]
doc-scrape-examples = false

[[bench]]
name = "rust"
harness = false
required-features = [
    "full",
    "parsing",
]

[[bench]]
name = "file"
required-features = [
    "full",
    "parsing",
]

[dependencies.proc-macro2]
version = "1.0.67"
default-features = false

[dependencies.quote]
version = "1.0.28"
optional = true
default-features = false

[dependencies.unicode-ident]
version = "1"

[dev-dependencies.anyhow]
version = "1"

[dev-dependencies.automod]
version = "1"

[dev-dependencies.flate2]
version = "1"

[dev-dependencies.insta]
version = "1"

[dev-dependencies.rayon]
version = "1"

[dev-dependencies.ref-cast]
version = "1"

[dev-dependencies.regex]
version = "1"

[dev-dependencies.reqwest]
version = "0.11"
features = ["blocking"]

[dev-dependencies.rustversion]
version = "1"

[dev-dependencies.syn-test-suite]
version = "0"

[dev-dependencies.tar]
version = "0.4.16"

[dev-dependencies.termcolor]
version = "1"

[dev-dependencies.walkdir]
version = "2.3.2"

[features]
clone-impls = []
default = [
    "derive",
    "parsing",
    "printing",
    "clone-impls",
    "proc-macro",
]
derive = []
extra-traits = []
fold = []
full = []
parsing = []
printing = ["quote"]
proc-macro = [
    "proc-macro2/proc-macro",
    "quote/proc-macro",
]
test = ["syn-test-suite/all-features"]
visit = []
visit-mut = []
0707010014AD92000081A400000000000000000000000169106BBC00000A76000000080000001100000000000000000000003900000000rust2rpm-helper/tests/data/syn-2.0.34.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.56"
name = "syn"
version = "2.0.34"
authors = ["David Tolnay <dtolnay@gmail.com>"]
include = [
    "/benches/**",
    "/Cargo.toml",
    "/LICENSE-APACHE",
    "/LICENSE-MIT",
    "/README.md",
    "/src/**",
    "/tests/**",
]
description = "Parser for Rust source code"
documentation = "https://docs.rs/syn"
readme = "README.md"
keywords = [
    "macros",
    "syn",
]
categories = [
    "development-tools::procedural-macro-helpers",
    "parser-implementations",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/syn"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "doc_cfg",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[package.metadata.playground]
features = [
    "full",
    "visit",
    "visit-mut",
    "fold",
    "extra-traits",
]

[lib]
doc-scrape-examples = false

[[bench]]
name = "rust"
harness = false
required-features = [
    "full",
    "parsing",
]

[[bench]]
name = "file"
required-features = [
    "full",
    "parsing",
]

[dependencies.proc-macro2]
version = "1.0.67"
default-features = false

[dependencies.quote]
version = "1.0.28"
optional = true
default-features = false

[dependencies.unicode-ident]
version = "1"

[dev-dependencies.anyhow]
version = "1"

[dev-dependencies.automod]
version = "1"

[dev-dependencies.flate2]
version = "1"

[dev-dependencies.insta]
version = "1"

[dev-dependencies.rayon]
version = "1"

[dev-dependencies.ref-cast]
version = "1"

[dev-dependencies.regex]
version = "1"

[dev-dependencies.reqwest]
version = "0.11"
features = ["blocking"]

[dev-dependencies.rustversion]
version = "1"

[dev-dependencies.syn-test-suite]
version = "0"

[dev-dependencies.tar]
version = "0.4.16"

[dev-dependencies.termcolor]
version = "1"

[dev-dependencies.walkdir]
version = "2.3.2"

[features]
clone-impls = []
default = [
    "derive",
    "parsing",
    "printing",
    "clone-impls",
    "proc-macro",
]
derive = []
extra-traits = []
fold = []
full = []
parsing = []
printing = ["quote"]
proc-macro = [
    "proc-macro2/proc-macro",
    "quote/proc-macro",
]
test = ["syn-test-suite/all-features"]
visit = []
visit-mut = []
0707010014ADB3000081A400000000000000000000000169106BBC00000E62000000080000001100000000000000000000003200000000rust2rpm-helper/tests/data/time-0.3.29.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.67.0"
name = "time"
version = "0.3.29"
authors = [
    "Jacob Pratt <open-source@jhpratt.dev>",
    "Time contributors",
]
include = [
    "src/**/*",
    "LICENSE-*",
    "README.md",
]
description = "Date and time library. Fully interoperable with the standard library. Mostly compatible with #![no_std]."
homepage = "https://time-rs.github.io"
readme = "README.md"
keywords = [
    "date",
    "time",
    "calendar",
    "duration",
]
categories = [
    "date-and-time",
    "no-std",
    "parser-implementations",
    "value-formatting",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/time-rs/time"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "__time_03_docs",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[lib]
bench = false

[[test]]
name = "tests"
path = "../tests/main.rs"

[[bench]]
name = "benchmarks"
path = "../benchmarks/main.rs"
harness = false

[dependencies.deranged]
version = "0.3.7"
default-features = false

[dependencies.itoa]
version = "1.0.1"
optional = true

[dependencies.quickcheck]
version = "1.0.3"
optional = true
default-features = false

[dependencies.rand]
version = "0.8.4"
optional = true
default-features = false

[dependencies.serde]
version = "1.0.184"
optional = true
default-features = false

[dependencies.time-core]
version = "=0.1.2"

[dependencies.time-macros]
version = "=0.2.15"
optional = true

[dev-dependencies.itertools]
version = "0.11.0"

[dev-dependencies.quickcheck_macros]
version = "1.0.0"

[dev-dependencies.rand]
version = "0.8.4"
default-features = false

[dev-dependencies.rstest]
version = "0.18.2"
default-features = false

[dev-dependencies.serde]
version = "1.0.184"
features = ["derive"]
default-features = false

[dev-dependencies.serde_json]
version = "1.0.68"

[dev-dependencies.serde_test]
version = "1.0.126"

[dev-dependencies.time-macros]
version = "=0.2.15"

[features]
alloc = ["serde?/alloc"]
default = ["std"]
formatting = [
    "dep:itoa",
    "std",
    "time-macros?/formatting",
]
large-dates = ["time-macros?/large-dates"]
local-offset = [
    "std",
    "dep:libc",
    "dep:num_threads",
]
macros = ["dep:time-macros"]
parsing = ["time-macros?/parsing"]
quickcheck = [
    "dep:quickcheck",
    "alloc",
    "deranged/quickcheck",
]
rand = [
    "dep:rand",
    "deranged/rand",
]
serde = [
    "dep:serde",
    "time-macros?/serde",
    "deranged/serde",
]
serde-human-readable = [
    "serde",
    "formatting",
    "parsing",
]
serde-well-known = [
    "serde",
    "formatting",
    "parsing",
]
std = [
    "alloc",
    "deranged/std",
]
wasm-bindgen = ["dep:js-sys"]

[target."cfg(__ui_tests)".dev-dependencies.trybuild]
version = "1.0.68"

[target."cfg(all(target_family = \"wasm\", not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dependencies.js-sys]
version = "0.3.58"
optional = true

[target."cfg(bench)".dev-dependencies.criterion]
version = "0.5.1"
default-features = false

[target."cfg(target_family = \"unix\")".dependencies.libc]
version = "0.2.98"
optional = true

[target."cfg(target_family = \"unix\")".dependencies.num_threads]
version = "0.1.2"
optional = true
0707010014ADB6000081A400000000000000000000000169106BBC00000D0E000000080000001100000000000000000000003A00000000rust2rpm-helper/tests/data/time-0.3.29.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.67.0"
name = "time"
version = "0.3.29"
authors = [
    "Jacob Pratt <open-source@jhpratt.dev>",
    "Time contributors",
]
include = [
    "src/**/*",
    "LICENSE-*",
    "README.md",
]
description = "Date and time library. Fully interoperable with the standard library. Mostly compatible with #![no_std]."
homepage = "https://time-rs.github.io"
readme = "README.md"
keywords = [
    "date",
    "time",
    "calendar",
    "duration",
]
categories = [
    "date-and-time",
    "no-std",
    "parser-implementations",
    "value-formatting",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/time-rs/time"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "__time_03_docs",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[lib]
bench = false

[[test]]
name = "tests"
path = "../tests/main.rs"

[[bench]]
name = "benchmarks"
path = "../benchmarks/main.rs"
harness = false

[dependencies.deranged]
version = "0.3.7"
default-features = false

[dependencies.itoa]
version = "1.0.1"
optional = true

[dependencies.quickcheck]
version = "1.0.3"
optional = true
default-features = false

[dependencies.rand]
version = "0.8.4"
optional = true
default-features = false

[dependencies.serde]
version = "1.0.184"
optional = true
default-features = false

[dependencies.time-core]
version = "=0.1.2"

[dependencies.time-macros]
version = "=0.2.15"
optional = true

[dev-dependencies.itertools]
version = "0.11.0"

[dev-dependencies.quickcheck_macros]
version = "1.0.0"

[dev-dependencies.rand]
version = "0.8.4"
default-features = false

[dev-dependencies.rstest]
version = "0.18.2"
default-features = false

[dev-dependencies.serde]
version = "1.0.184"
features = ["derive"]
default-features = false

[dev-dependencies.serde_json]
version = "1.0.68"

[dev-dependencies.serde_test]
version = "1.0.126"

[dev-dependencies.time-macros]
version = "=0.2.15"

[features]
alloc = ["serde?/alloc"]
default = ["std"]
formatting = [
    "dep:itoa",
    "std",
    "time-macros?/formatting",
]
large-dates = ["time-macros?/large-dates"]
local-offset = [
    "std",
    "dep:libc",
    "dep:num_threads",
]
macros = ["dep:time-macros"]
parsing = ["time-macros?/parsing"]
quickcheck = [
    "dep:quickcheck",
    "alloc",
    "deranged/quickcheck",
]
rand = [
    "dep:rand",
    "deranged/rand",
]
serde = [
    "dep:serde",
    "time-macros?/serde",
    "deranged/serde",
]
serde-human-readable = [
    "serde",
    "formatting",
    "parsing",
]
serde-well-known = [
    "serde",
    "formatting",
    "parsing",
]
std = [
    "alloc",
    "deranged/std",
]
wasm-bindgen = []

[target."cfg(target_family = \"unix\")".dependencies.libc]
version = "0.2.98"
optional = true

[target."cfg(target_family = \"unix\")".dependencies.num_threads]
version = "0.1.2"
optional = true
0707010014ADB5000081A400000000000000000000000169106BBC000011B8000000080000001100000000000000000000003300000000rust2rpm-helper/tests/data/tokio-1.32.0.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "tokio"
version = "1.32.0"
authors = ["Tokio Contributors <team@tokio.rs>"]
description = """
An event-driven, non-blocking I/O platform for writing asynchronous I/O
backed applications.
"""
homepage = "https://tokio.rs"
readme = "README.md"
keywords = [
    "io",
    "async",
    "non-blocking",
    "futures",
]
categories = [
    "asynchronous",
    "network-programming",
]
license = "MIT"
repository = "https://github.com/tokio-rs/tokio"

[package.metadata.docs.rs]
all-features = true
rustc-args = [
    "--cfg",
    "tokio_unstable",
]
rustdoc-args = [
    "--cfg",
    "docsrs",
    "--cfg",
    "tokio_unstable",
]

[package.metadata.playground]
features = [
    "full",
    "test-util",
]

[dependencies.bytes]
version = "1.0.0"
optional = true

[dependencies.mio]
version = "0.8.6"
optional = true
default-features = false

[dependencies.num_cpus]
version = "1.8.0"
optional = true

[dependencies.parking_lot]
version = "0.12.0"
optional = true

[dependencies.pin-project-lite]
version = "0.2.11"

[dependencies.tokio-macros]
version = "~2.1.0"
optional = true

[dev-dependencies.async-stream]
version = "0.3"

[dev-dependencies.futures]
version = "0.3.0"
features = ["async-await"]

[dev-dependencies.mockall]
version = "0.11.1"

[dev-dependencies.tokio-stream]
version = "0.1"

[dev-dependencies.tokio-test]
version = "0.4.0"

[features]
default = []
fs = []
full = [
    "fs",
    "io-util",
    "io-std",
    "macros",
    "net",
    "parking_lot",
    "process",
    "rt",
    "rt-multi-thread",
    "signal",
    "sync",
    "time",
]
io-std = []
io-util = ["bytes"]
macros = ["tokio-macros"]
net = [
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "socket2",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_Security",
    "windows-sys/Win32_Storage_FileSystem",
    "windows-sys/Win32_System_Pipes",
    "windows-sys/Win32_System_SystemServices",
]
process = [
    "bytes",
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "signal-hook-registry",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_System_Threading",
    "windows-sys/Win32_System_WindowsProgramming",
]
rt = []
rt-multi-thread = [
    "num_cpus",
    "rt",
]
signal = [
    "libc",
    "mio/os-poll",
    "mio/net",
    "mio/os-ext",
    "signal-hook-registry",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_System_Console",
]
stats = []
sync = []
test-util = [
    "rt",
    "sync",
    "time",
]
time = []

[target."cfg(all(target_family = \"wasm\", not(target_os = \"wasi\")))".dev-dependencies.wasm-bindgen-test]
version = "0.3.0"

[target."cfg(loom)".dev-dependencies.loom]
version = "0.7"
features = [
    "futures",
    "checkpoint",
]

[target."cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))".dev-dependencies.rand]
version = "0.8.0"

[target."cfg(not(target_family = \"wasm\"))".dependencies.socket2]
version = "0.5.3"
features = ["all"]
optional = true

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.socket2]
version = "0.5.3"

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.tempfile]
version = "3.1.0"

[target."cfg(target_os = \"freebsd\")".dev-dependencies.mio-aio]
version = "0.7.0"
features = ["tokio"]

[target."cfg(tokio_taskdump)".dependencies.backtrace]
version = "0.3.58"

[target."cfg(tokio_unstable)".dependencies.tracing]
version = "0.1.25"
features = ["std"]
optional = true
default-features = false

[target."cfg(unix)".dependencies.libc]
version = "0.2.145"
optional = true

[target."cfg(unix)".dependencies.signal-hook-registry]
version = "1.1.1"
optional = true

[target."cfg(unix)".dev-dependencies.libc]
version = "0.2.145"

[target."cfg(unix)".dev-dependencies.nix]
version = "0.26"
features = [
    "fs",
    "socket",
]
default-features = false

[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
optional = true

[target."cfg(windows)".dev-dependencies.windows-sys]
version = "0.48"
features = [
    "Win32_Foundation",
    "Win32_Security_Authorization",
]
0707010014AD90000081A400000000000000000000000169106BBC00000D1D000000080000001100000000000000000000003B00000000rust2rpm-helper/tests/data/tokio-1.32.0.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "tokio"
version = "1.32.0"
authors = ["Tokio Contributors <team@tokio.rs>"]
description = """
An event-driven, non-blocking I/O platform for writing asynchronous I/O
backed applications.
"""
homepage = "https://tokio.rs"
readme = "README.md"
keywords = [
    "io",
    "async",
    "non-blocking",
    "futures",
]
categories = [
    "asynchronous",
    "network-programming",
]
license = "MIT"
repository = "https://github.com/tokio-rs/tokio"

[package.metadata.docs.rs]
all-features = true
rustc-args = [
    "--cfg",
    "tokio_unstable",
]
rustdoc-args = [
    "--cfg",
    "docsrs",
    "--cfg",
    "tokio_unstable",
]

[package.metadata.playground]
features = [
    "full",
    "test-util",
]

[dependencies.bytes]
version = "1.0.0"
optional = true

[dependencies.mio]
version = "0.8.6"
optional = true
default-features = false

[dependencies.num_cpus]
version = "1.8.0"
optional = true

[dependencies.parking_lot]
version = "0.12.0"
optional = true

[dependencies.pin-project-lite]
version = "0.2.11"

[dependencies.tokio-macros]
version = "~2.1.0"
optional = true

[dev-dependencies.async-stream]
version = "0.3"

[dev-dependencies.futures]
version = "0.3.0"
features = ["async-await"]

[dev-dependencies.mockall]
version = "0.11.1"

[dev-dependencies.tokio-stream]
version = "0.1"

[dev-dependencies.tokio-test]
version = "0.4.0"

[features]
default = []
fs = []
full = [
    "fs",
    "io-util",
    "io-std",
    "macros",
    "net",
    "parking_lot",
    "process",
    "rt",
    "rt-multi-thread",
    "signal",
    "sync",
    "time",
]
io-std = []
io-util = ["bytes"]
macros = ["tokio-macros"]
net = [
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "socket2",
]
process = [
    "bytes",
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "signal-hook-registry",
]
rt = []
rt-multi-thread = [
    "num_cpus",
    "rt",
]
signal = [
    "libc",
    "mio/os-poll",
    "mio/net",
    "mio/os-ext",
    "signal-hook-registry",
]
stats = []
sync = []
test-util = [
    "rt",
    "sync",
    "time",
]
time = []

[target."cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))".dev-dependencies.rand]
version = "0.8.0"

[target."cfg(not(target_family = \"wasm\"))".dependencies.socket2]
version = "0.5.3"
features = ["all"]
optional = true

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.socket2]
version = "0.5.3"

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.tempfile]
version = "3.1.0"

[target."cfg(unix)".dependencies.libc]
version = "0.2.145"
optional = true

[target."cfg(unix)".dependencies.signal-hook-registry]
version = "1.1.1"
optional = true

[target."cfg(unix)".dev-dependencies.libc]
version = "0.2.145"

[target."cfg(unix)".dev-dependencies.nix]
version = "0.26"
features = [
    "fs",
    "socket",
]
default-features = false
0707010014ADAF000081A400000000000000000000000169106BBC00000582000000080000001100000000000000000000003200000000rust2rpm-helper/tests/data/which-4.4.2.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "which"
version = "4.4.2"
authors = ["Harry Fei <tiziyuanfang@gmail.com>"]
description = "A Rust equivalent of Unix command \"which\". Locate installed executable in cross platforms."
documentation = "https://docs.rs/which/"
readme = "README.md"
keywords = [
    "which",
    "which-rs",
    "unix",
    "command",
]
categories = [
    "os",
    "filesystem",
]
license = "MIT"
repository = "https://github.com/harryfei/which-rs.git"

[package.metadata.docs.rs]
all-features = true

[dependencies.either]
version = "1.6.1"

[dependencies.regex]
version = "1.5.5"
optional = true

[dependencies.rustix]
version = "0.38.10"
features = [
    "fs",
    "std",
]
default-features = false

[dev-dependencies.tempfile]
version = "3.3.0"

[target."cfg(any(windows, unix, target_os = \"redox\"))".dependencies.home]
version = "0.5.5"

[target."cfg(windows)".dependencies.once_cell]
version = "1"
0707010014ADAE000081A400000000000000000000000169106BBC00000544000000080000001100000000000000000000003A00000000rust2rpm-helper/tests/data/which-4.4.2.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "which"
version = "4.4.2"
authors = ["Harry Fei <tiziyuanfang@gmail.com>"]
description = "A Rust equivalent of Unix command \"which\". Locate installed executable in cross platforms."
documentation = "https://docs.rs/which/"
readme = "README.md"
keywords = [
    "which",
    "which-rs",
    "unix",
    "command",
]
categories = [
    "os",
    "filesystem",
]
license = "MIT"
repository = "https://github.com/harryfei/which-rs.git"

[package.metadata.docs.rs]
all-features = true

[dependencies.either]
version = "1.6.1"

[dependencies.regex]
version = "1.5.5"
optional = true

[dependencies.rustix]
version = "0.38.10"
features = [
    "fs",
    "std",
]
default-features = false

[dev-dependencies.tempfile]
version = "3.3.0"

[target."cfg(any(windows, unix, target_os = \"redox\"))".dependencies.home]
version = "0.5.5"
0707010014ADA7000081A400000000000000000000000169106BBC00000601000000080000001100000000000000000000003100000000rust2rpm-helper/tests/data/wild-2.2.0.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "wild"
version = "2.2.0"
authors = ["Kornel <kornel@geekhood.net>"]
include = [
    "/src/*.rs",
    "/Cargo.toml",
    "/LICENSE",
    "/README.md",
]
description = "Glob (wildcard) expanded command-line arguments on Windows"
homepage = "https://lib.rs/crates/wild"
documentation = "https://docs.rs/wild"
readme = "README.md"
keywords = [
    "wildcards",
    "glob",
    "windows",
    "shell",
    "CommandLineToArgvW",
]
categories = [
    "command-line-interface",
    "os::windows-apis",
]
license = "Apache-2.0 OR MIT"
repository = "https://gitlab.com/kornelski/wild"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[dev-dependencies.glob]
version = "0.3.1"

[features]
glob-quoted-on-windows = []

[target."cfg(windows)".dependencies.glob]
version = "0.3.1"

[badges.appveyor]
repository = "pornel/wild"

[badges.gitlab]
repository = "kornelski/wild"

[badges.maintenance]
status = "passively-maintained"
0707010014AD9B000081A400000000000000000000000169106BBC000005C4000000080000001100000000000000000000003900000000rust2rpm-helper/tests/data/wild-2.2.0.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "wild"
version = "2.2.0"
authors = ["Kornel <kornel@geekhood.net>"]
include = [
    "/src/*.rs",
    "/Cargo.toml",
    "/LICENSE",
    "/README.md",
]
description = "Glob (wildcard) expanded command-line arguments on Windows"
homepage = "https://lib.rs/crates/wild"
documentation = "https://docs.rs/wild"
readme = "README.md"
keywords = [
    "wildcards",
    "glob",
    "windows",
    "shell",
    "CommandLineToArgvW",
]
categories = [
    "command-line-interface",
    "os::windows-apis",
]
license = "Apache-2.0 OR MIT"
repository = "https://gitlab.com/kornelski/wild"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
    "--generate-link-to-definition",
]
targets = ["x86_64-unknown-linux-gnu"]

[dev-dependencies.glob]
version = "0.3.1"

[features]
glob-quoted-on-windows = []

[badges.appveyor]
repository = "pornel/wild"

[badges.gitlab]
repository = "kornelski/wild"

[badges.maintenance]
status = "passively-maintained"
0707010014AD97000081A400000000000000000000000169106BBC00001210000000080000001100000000000000000000003200000000rust2rpm-helper/tests/data/zbus-3.14.1.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.64"
name = "zbus"
version = "3.14.1"
authors = ["Zeeshan Ali Khan <zeeshanak@gnome.org>"]
description = "API for D-Bus communication"
readme = "README.md"
keywords = [
    "D-Bus",
    "DBus",
    "IPC",
]
categories = ["os::unix-apis"]
license = "MIT"
repository = "https://github.com/dbus2/zbus/"
resolver = "2"

[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]

[dependencies.async-broadcast]
version = "0.5.0"

[dependencies.async-executor]
version = "1.5.0"
optional = true

[dependencies.async-fs]
version = "1.6.0"
optional = true

[dependencies.async-io]
version = "1.12.0"
optional = true

[dependencies.async-lock]
version = "2.6.0"
optional = true

[dependencies.async-recursion]
version = "1.0.0"

[dependencies.async-task]
version = "4.3.0"
optional = true

[dependencies.async-trait]
version = "0.1.58"

[dependencies.blocking]
version = "1.0.2"
optional = true

[dependencies.byteorder]
version = "1.4.3"

[dependencies.derivative]
version = "2.2"

[dependencies.enumflags2]
version = "0.7.7"
features = ["serde"]

[dependencies.event-listener]
version = "2.5.3"

[dependencies.futures-core]
version = "0.3.25"

[dependencies.futures-sink]
version = "0.3.25"

[dependencies.futures-util]
version = "0.3.25"
features = [
    "sink",
    "std",
]
default-features = false

[dependencies.hex]
version = "0.4.3"

[dependencies.once_cell]
version = "1.4.0"

[dependencies.ordered-stream]
version = "0.2"

[dependencies.quick-xml]
version = "0.27.1"
features = [
    "serialize",
    "overlapped-lists",
]
optional = true

[dependencies.rand]
version = "0.8.5"

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde-xml-rs]
version = "0.4.1"
optional = true

[dependencies.serde_repr]
version = "0.1.9"

[dependencies.sha1]
version = "0.10.5"
features = ["std"]

[dependencies.static_assertions]
version = "1.1.0"

[dependencies.tokio]
version = "1.21.2"
features = [
    "rt",
    "net",
    "time",
    "fs",
    "io-util",
    "process",
    "sync",
    "tracing",
]
optional = true

[dependencies.tokio-vsock]
version = "0.3.3"
optional = true

[dependencies.tracing]
version = "0.1.37"

[dependencies.vsock]
version = "0.3.0"
optional = true

[dependencies.xdg-home]
version = "1.0.0"

[dependencies.zbus_macros]
version = "=3.14.1"

[dependencies.zbus_names]
version = "2.6"

[dependencies.zvariant]
version = "3.15.0"
features = ["enumflags2"]
default-features = false

[dev-dependencies.async-std]
version = "1.12.0"
features = ["attributes"]

[dev-dependencies.doc-comment]
version = "0.3.3"

[dev-dependencies.futures-util]
version = "0.3.25"

[dev-dependencies.ntest]
version = "0.9.0"

[dev-dependencies.tempfile]
version = "3.3.0"

[dev-dependencies.test-log]
version = "0.2.11"
features = ["trace"]
default-features = false

[dev-dependencies.tokio]
version = "1"
features = [
    "macros",
    "rt-multi-thread",
    "fs",
    "io-util",
    "net",
    "sync",
]

[dev-dependencies.tracing-subscriber]
version = "0.3.16"
features = [
    "env-filter",
    "fmt",
    "ansi",
]
default-features = false

[features]
async-io = [
    "dep:async-io",
    "async-executor",
    "async-task",
    "async-lock",
    "async-fs",
    "blocking",
    "futures-util/io",
]
chrono = ["zvariant/chrono"]
default = ["async-io"]
gvariant = ["zvariant/gvariant"]
time = ["zvariant/time"]
tokio = ["dep:tokio"]
tokio-vsock = [
    "dep:tokio-vsock",
    "tokio",
]
url = ["zvariant/url"]
uuid = ["zvariant/uuid"]
vsock = [
    "dep:vsock",
    "dep:async-io",
]
windows-gdbus = []
xml = ["serde-xml-rs"]

[target."cfg(target_os = \"macos\")".dependencies.async-process]
version = "1.7.0"

[target."cfg(unix)".dependencies.nix]
version = "0.26.0"
features = [
    "socket",
    "uio",
]
default-features = false

[target."cfg(windows)".dependencies.uds_windows]
version = "1.0.2"

[target."cfg(windows)".dependencies.winapi]
version = "0.3"
features = [
    "handleapi",
    "iphlpapi",
    "memoryapi",
    "processthreadsapi",
    "sddl",
    "securitybaseapi",
    "synchapi",
    "tcpmib",
    "winbase",
    "winerror",
    "winsock2",
]
0707010014ADAB000081A400000000000000000000000169106BBC00001071000000080000001100000000000000000000003A00000000rust2rpm-helper/tests/data/zbus-3.14.1.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.64"
name = "zbus"
version = "3.14.1"
authors = ["Zeeshan Ali Khan <zeeshanak@gnome.org>"]
description = "API for D-Bus communication"
readme = "README.md"
keywords = [
    "D-Bus",
    "DBus",
    "IPC",
]
categories = ["os::unix-apis"]
license = "MIT"
repository = "https://github.com/dbus2/zbus/"
resolver = "2"

[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]

[dependencies.async-broadcast]
version = "0.5.0"

[dependencies.async-executor]
version = "1.5.0"
optional = true

[dependencies.async-fs]
version = "1.6.0"
optional = true

[dependencies.async-io]
version = "1.12.0"
optional = true

[dependencies.async-lock]
version = "2.6.0"
optional = true

[dependencies.async-recursion]
version = "1.0.0"

[dependencies.async-task]
version = "4.3.0"
optional = true

[dependencies.async-trait]
version = "0.1.58"

[dependencies.blocking]
version = "1.0.2"
optional = true

[dependencies.byteorder]
version = "1.4.3"

[dependencies.derivative]
version = "2.2"

[dependencies.enumflags2]
version = "0.7.7"
features = ["serde"]

[dependencies.event-listener]
version = "2.5.3"

[dependencies.futures-core]
version = "0.3.25"

[dependencies.futures-sink]
version = "0.3.25"

[dependencies.futures-util]
version = "0.3.25"
features = [
    "sink",
    "std",
]
default-features = false

[dependencies.hex]
version = "0.4.3"

[dependencies.once_cell]
version = "1.4.0"

[dependencies.ordered-stream]
version = "0.2"

[dependencies.quick-xml]
version = "0.27.1"
features = [
    "serialize",
    "overlapped-lists",
]
optional = true

[dependencies.rand]
version = "0.8.5"

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde-xml-rs]
version = "0.4.1"
optional = true

[dependencies.serde_repr]
version = "0.1.9"

[dependencies.sha1]
version = "0.10.5"
features = ["std"]

[dependencies.static_assertions]
version = "1.1.0"

[dependencies.tokio]
version = "1.21.2"
features = [
    "rt",
    "net",
    "time",
    "fs",
    "io-util",
    "process",
    "sync",
    "tracing",
]
optional = true

[dependencies.tokio-vsock]
version = "0.3.3"
optional = true

[dependencies.tracing]
version = "0.1.37"

[dependencies.vsock]
version = "0.3.0"
optional = true

[dependencies.xdg-home]
version = "1.0.0"

[dependencies.zbus_macros]
version = "=3.14.1"

[dependencies.zbus_names]
version = "2.6"

[dependencies.zvariant]
version = "3.15.0"
features = ["enumflags2"]
default-features = false

[dev-dependencies.async-std]
version = "1.12.0"
features = ["attributes"]

[dev-dependencies.doc-comment]
version = "0.3.3"

[dev-dependencies.futures-util]
version = "0.3.25"

[dev-dependencies.ntest]
version = "0.9.0"

[dev-dependencies.tempfile]
version = "3.3.0"

[dev-dependencies.test-log]
version = "0.2.11"
features = ["trace"]
default-features = false

[dev-dependencies.tokio]
version = "1"
features = [
    "macros",
    "rt-multi-thread",
    "fs",
    "io-util",
    "net",
    "sync",
]

[dev-dependencies.tracing-subscriber]
version = "0.3.16"
features = [
    "env-filter",
    "fmt",
    "ansi",
]
default-features = false

[features]
async-io = [
    "dep:async-io",
    "async-executor",
    "async-task",
    "async-lock",
    "async-fs",
    "blocking",
    "futures-util/io",
]
chrono = ["zvariant/chrono"]
default = ["async-io"]
gvariant = ["zvariant/gvariant"]
time = ["zvariant/time"]
tokio = ["dep:tokio"]
tokio-vsock = [
    "dep:tokio-vsock",
    "tokio",
]
url = ["zvariant/url"]
uuid = ["zvariant/uuid"]
vsock = [
    "dep:vsock",
    "dep:async-io",
]
windows-gdbus = []
xml = ["serde-xml-rs"]

[target."cfg(unix)".dependencies.nix]
version = "0.26.0"
features = [
    "socket",
    "uio",
]
default-features = false
0707010014ADAD000081A400000000000000000000000169106BBC000006C1000000080000001100000000000000000000003500000000rust2rpm-helper/tests/data/zstd-sys-2.0.8.Cargo.toml# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.43"
name = "zstd-sys"
version = "2.0.8+zstd.1.5.5"
authors = ["Alexandre Bury <alexandre.bury@gmail.com>"]
build = "build.rs"
links = "zstd"
include = [
    "/LICENSE",
    "/*.*",
    "/src/",
    "/wasm-shim/**/*.h",
    "/zstd/LICENSE",
    "/zstd/COPYING",
    "/zstd/lib/**/*.c",
    "/zstd/lib/**/*.h",
    "/zstd/lib/**/*.S",
]
description = "Low-level bindings for the zstd compression library."
readme = "Readme.md"
keywords = [
    "zstd",
    "zstandard",
    "compression",
]
categories = [
    "api-bindings",
    "compression",
]
license = "MIT/Apache-2.0"
repository = "https://github.com/gyscos/zstd-rs"

[package.metadata.docs.rs]
features = ["experimental"]

[lib]
doctest = false

[dependencies.libc]
version = "0.2.45"

[build-dependencies.bindgen]
version = "0.64"
features = [
    "runtime",
    "which-rustfmt",
]
optional = true
default-features = false

[build-dependencies.cc]
version = "1.0.45"
features = ["parallel"]

[build-dependencies.pkg-config]
version = "0.3"

[features]
debug = []
default = [
    "legacy",
    "zdict_builder",
]
experimental = []
fat-lto = []
legacy = []
no_asm = []
non-cargo = []
pkg-config = []
std = []
thin = []
thin-lto = []
zdict_builder = []
zstdmt = []
0707010014AD9A000081A400000000000000000000000169106BBC000006B6000000080000001100000000000000000000003D00000000rust2rpm-helper/tests/data/zstd-sys-2.0.8.Cargo.toml.patched# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
rust-version = "1.43"
name = "zstd-sys"
version = "2.0.8"
authors = ["Alexandre Bury <alexandre.bury@gmail.com>"]
build = "build.rs"
links = "zstd"
include = [
    "/LICENSE",
    "/*.*",
    "/src/",
    "/wasm-shim/**/*.h",
    "/zstd/LICENSE",
    "/zstd/COPYING",
    "/zstd/lib/**/*.c",
    "/zstd/lib/**/*.h",
    "/zstd/lib/**/*.S",
]
description = "Low-level bindings for the zstd compression library."
readme = "Readme.md"
keywords = [
    "zstd",
    "zstandard",
    "compression",
]
categories = [
    "api-bindings",
    "compression",
]
license = "MIT/Apache-2.0"
repository = "https://github.com/gyscos/zstd-rs"

[package.metadata.docs.rs]
features = ["experimental"]

[lib]
doctest = false

[dependencies.libc]
version = "0.2.45"

[build-dependencies.bindgen]
version = "0.64"
features = [
    "runtime",
    "which-rustfmt",
]
optional = true
default-features = false

[build-dependencies.cc]
version = "1.0.45"
features = ["parallel"]

[build-dependencies.pkg-config]
version = "0.3"

[features]
debug = []
default = [
    "legacy",
    "zdict_builder",
]
experimental = []
fat-lto = []
legacy = []
no_asm = []
non-cargo = []
pkg-config = []
std = []
thin = []
thin-lto = []
zdict_builder = []
zstdmt = []
0707010014AD8E000081A400000000000000000000000169106BBC00000963000000080000001100000000000000000000001F00000000rust2rpm-helper/tests/tests.rsuse std::fs;
use std::path::PathBuf;

use pretty_assertions::assert_str_eq;

use rust2rpm_helper::normalize;
use rust2rpm_helper::strip;

const NORMALIZE_FILES: [&str; 6] = [
    "bzip2-sys-0.1.11",
    "curl-sys-0.4.66",
    "libgit2-sys-0.16.1",
    "zstd-sys-2.0.8",
    // noop test cases
    "serde-1.0.196",
    "syn-2.0.34",
];

const STRIP_FILES: [&str; 17] = [
    "anstream-0.5.0",
    "backtrace-0.3.69",
    "bytes-1.5.0",
    "chrono-0.4.31",
    "cpufeatures-0.2.9",
    "gst-plugin-gtk4-0.11.0",
    "indicatif-0.17.7",
    "native-tls-0.2.11",
    "nix-0.27.1",
    "rustix-0.36.8",
    "time-0.3.29",
    "tokio-1.32.0",
    "which-4.4.2",
    "wild-2.2.0",
    "zbus-3.14.1",
    // noop test cases
    "serde-1.0.196",
    "syn-2.0.34",
];

fn old_from_prefix(prefix: &str) -> PathBuf {
    let mut path = PathBuf::new();
    path.push(env!("CARGO_MANIFEST_DIR"));
    path.push("tests/data");
    path.push(format!("{prefix}.Cargo.toml"));
    path
}

fn new_from_prefix(prefix: &str) -> PathBuf {
    let mut path = PathBuf::new();
    path.push(env!("CARGO_MANIFEST_DIR"));
    path.push("tests/data");
    path.push(format!("{prefix}.Cargo.toml.patched"));
    path
}

#[test]
fn normalize_version() {
    for prefix in NORMALIZE_FILES {
        println!("Testing: {}", prefix);

        let original_path = old_from_prefix(prefix);
        let expected_path = new_from_prefix(prefix);

        let original_toml = fs::read_to_string(original_path).unwrap();
        let expected_toml = fs::read_to_string(expected_path).unwrap();

        let patched_toml = normalize::normalize_version(&original_toml).unwrap();

        assert_str_eq!(
            patched_toml,
            expected_toml,
            "Mismatch with expected string for {}",
            prefix
        );
    }
}

#[test]
fn strip_foreign() {
    for prefix in STRIP_FILES {
        println!("Testing: {}", prefix);

        let original_path = old_from_prefix(prefix);
        let expected_path = new_from_prefix(prefix);

        let original_toml = fs::read_to_string(original_path).unwrap();
        let expected_toml = fs::read_to_string(expected_path).unwrap();

        let patched_toml = strip::strip_foreign(&original_toml).unwrap();

        assert_str_eq!(
            patched_toml,
            expected_toml,
            "Mismatch with expected string for {}",
            prefix
        );
    }
}
07070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!
openSUSE Build Service is sponsored by