pax_global_header00006660000000000000000000000064146751476710014534gustar00rootroot0000000000000052 comment=aebadedec43a92a1ba0fe94980c84f37122aa5b3 maturin-1.7.4/000077500000000000000000000000001467514767100132245ustar00rootroot00000000000000maturin-1.7.4/.cirrus.yml000066400000000000000000000023641467514767100153410ustar00rootroot00000000000000env: RUST_BACKTRACE: 1 CARGO_INCREMENTAL: 0 CARGO_TERM_COLOR: always CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse build_and_test: &BUILD_AND_TEST # only run tasks on pull request or github merge queue branches only_if: $CIRRUS_BRANCH =~ 'gh-readonly-queue/.*' || $CIRRUS_PR != "" setup_script: - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable - rustup target add wasm32-wasi - python3 -m pip install --upgrade cffi virtualenv build_script: - cargo build test_script: - cargo test freebsd_task: name: Test (x86_64 FreeBSD) freebsd_instance: image_family: freebsd-14-0 env: PATH: $HOME/.cargo/bin:$PATH target_cache: folder: target fingerprint_script: - echo $CIRRUS_OS - cat Cargo.lock install_script: - pkg install -y bash git python - python3 -m ensurepip <<: *BUILD_AND_TEST linux_aarch64_task: name: Test (arm64 Linux) arm_container: image: python:3.11 cpu: 4 memory: 4G env: PATH: /root/.cargo/bin:$PATH target_cache: folder: target fingerprint_script: - echo $CIRRUS_OS - cat Cargo.lock install_script: - python3 -m pip install uniffi-bindgen==0.28.0 <<: *BUILD_AND_TEST maturin-1.7.4/.codespellrc000066400000000000000000000001551467514767100155250ustar00rootroot00000000000000[codespell] ignore-words-list = crate,socio-economic skip = ./.git,./target,./test-crates/venvs,./guide/book maturin-1.7.4/.config/000077500000000000000000000000001467514767100145475ustar00rootroot00000000000000maturin-1.7.4/.config/nextest.toml000066400000000000000000000003751467514767100171430ustar00rootroot00000000000000[profile.default] # Terminate slow tests after 30 minutes slow-timeout = { period = "60s", terminate-after = 30 } [[profile.default.overrides]] # See https://nexte.st/book/threads-required.html filter = 'test(/_uniffi_/)' threads-required = "num-cpus" maturin-1.7.4/.devcontainer/000077500000000000000000000000001467514767100157635ustar00rootroot00000000000000maturin-1.7.4/.devcontainer/devcontainer.json000066400000000000000000000007511467514767100213420ustar00rootroot00000000000000{ "name": "maturin", "image": "mcr.microsoft.com/devcontainers/rust:bullseye", "postCreateCommand": "bash .devcontainer/post_create.sh", "customizations": { "vscode": { "extensions": [ "ms-python.black-formatter", "rust-lang.rust-analyzer", "charliermarsh.ruff" ], "settings": { "editor.formatOnSave": true } } }, "features": { "ghcr.io/devcontainers/features/sshd:1": { "version": "latest" } } } maturin-1.7.4/.devcontainer/post_create.sh000077500000000000000000000005371467514767100206370ustar00rootroot00000000000000set -euxo pipefail sudo apt-get update sudo apt-get install -y python3-dev python3-pip python3-venv libclang-dev sudo python3 -m pip install cffi virtualenv pipx pipx ensurepath pipx install uniffi-bindgen pipx install cargo-deny rustup target add wasm32-wasi curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin maturin-1.7.4/.dockerignore000066400000000000000000000002651467514767100157030ustar00rootroot00000000000000**/.pytest_cache **/.tox **/__pycache__ **/target **/venv* .dockerignore .git .idea .travis.yml .venv Dockerfile* appveyor.yml ci sysconfig test-crates test-data test-dockerfile.sh maturin-1.7.4/.github/000077500000000000000000000000001467514767100145645ustar00rootroot00000000000000maturin-1.7.4/.github/FUNDING.yml000066400000000000000000000000211467514767100163720ustar00rootroot00000000000000github: messense maturin-1.7.4/.github/ISSUE_TEMPLATE/000077500000000000000000000000001467514767100167475ustar00rootroot00000000000000maturin-1.7.4/.github/ISSUE_TEMPLATE/bug_report.yml000066400000000000000000000041561467514767100216500ustar00rootroot00000000000000name: 🐛 Bug Report description: Create a bug report labels: [bug] body: - type: markdown attributes: value: | Thank you for taking the time to fill out this bug report! Please fill out the form below... - type: textarea id: description attributes: label: Bug Description description: Please provide a clear and concise description of what the bug is. placeholder: The bug is... validations: required: true - type: input id: maturin_version attributes: label: Your maturin version (`maturin --version`) placeholder: ex. 0.14.1 validations: required: true - type: input id: py_version attributes: label: Your Python version (`python -V`) placeholder: ex. Python 3.10.0 validations: required: true - type: input id: pip_version attributes: label: Your pip version (`pip -V`) placeholder: ex. pip 21.1.3 validations: required: true - type: dropdown id: bindings attributes: label: What bindings you're using options: - "pyo3" - "rust-cpython" - "cffi" - "uniffi" - "bin" validations: required: false - type: checkboxes id: cargo-build attributes: label: Does `cargo build` work? options: - label: Yes, it works required: false - type: checkboxes id: windows-unix-path attributes: label: If on windows, have you checked that you aren't accidentally using unix path (those with the forward slash `/`)? options: - label: 'Yes' required: false - type: textarea id: reproduce attributes: label: Steps to Reproduce description: Please list the exact steps required to reproduce your error with all command output and if possible with a repository. Please run maturin with `RUST_LOG=maturin=debug` being set, e.g. `RUST_LOG=maturin=debug maturin build` and share the output, either in a codeblock or as a [gist](https://gist.github.com/) placeholder: | 1. 2. 3. validations: required: true maturin-1.7.4/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000005041467514767100207360ustar00rootroot00000000000000blank_issues_enabled: true contact_links: - name: ❓ Question url: https://github.com/PyO3/maturin/discussions about: Ask and answer questions about maturin on Discussions - name: 🔧 Troubleshooting url: https://github.com/PyO3/maturin/discussions about: For troubleshooting help, see the Discussions maturin-1.7.4/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000007011467514767100224720ustar00rootroot00000000000000--- name: 💡 Feature request about: Suggest an idea for this project labels: [enhancement] --- maturin-1.7.4/.github/bors.toml000066400000000000000000000003641467514767100164310ustar00rootroot00000000000000delete_merged_branches = true required_approvals = 0 use_codeowners = false status = [ # GitHub Actions "conclusion", # Cirrus CI "Test (x86_64 FreeBSD)", "Test (arm64 macOS)", "Test (arm64 Linux)" ] timeout_sec = 21600 maturin-1.7.4/.github/dependabot.yml000066400000000000000000000012341467514767100174140ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "cargo" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "monthly" groups: crates-io: patterns: - "*" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "monthly" maturin-1.7.4/.github/workflows/000077500000000000000000000000001467514767100166215ustar00rootroot00000000000000maturin-1.7.4/.github/workflows/clear-cache.yml000066400000000000000000000005261467514767100214760ustar00rootroot00000000000000name: Clear Actions Cache on: workflow_dispatch: permissions: actions: write jobs: clear-cache: name: Clean Cache runs-on: ubuntu-latest env: GH_TOKEN: ${{ github.token }} steps: - name: Clear cache run: | gh cache delete --all --repo "$GITHUB_REPOSITORY" echo "cache cleared" maturin-1.7.4/.github/workflows/delete-comments.yml000066400000000000000000000025661467514767100224420ustar00rootroot00000000000000name: Delete Spam Comments on: issue_comment: types: [created] permissions: issues: write jobs: delete_comment: runs-on: ubuntu-latest steps: - name: Check for specific strings in comment id: check_comment uses: actions/github-script@v7 with: script: | const comment = context.payload.comment.body; const triggerStrings = ['mediafire.com', 'download']; return triggerStrings.some(triggerString => comment.includes(triggerString)); - name: Delete comment if it contains any of the specific strings if: steps.check_comment.outputs.result == 'true' uses: actions/github-script@v7 with: script: | const commentId = context.payload.comment.id; await github.issues.deleteComment({ owner: context.repo.owner, repo: context.repo.repo, comment_id: commentId }); - name: Block user if comment contains any of the specific strings if: steps.check_comment.outputs.result == 'true' uses: actions/github-script@v7 with: script: | const userId = context.payload.comment.user.id; await github.users.block({ owner: context.repo.owner, repo: context.repo.repo, user_id: userId }); maturin-1.7.4/.github/workflows/docker.yml000066400000000000000000000037741467514767100206260ustar00rootroot00000000000000name: Docker Publish on: push: branches: - main tags: [ 'v*' ] jobs: publish-docker: name: Publish Docker Images runs-on: ubuntu-latest environment: name: Docker Hub url: https://ghcr.io/pyo3/maturin steps: - uses: actions/checkout@v4 - uses: dorny/paths-filter@v3 id: changes with: filters: | changed: - 'Cargo.toml' - 'Cargo.lock' - 'src/**' - 'Dockerfile' - '.github/workflows/docker.yml' - '.dockerignore' - name: Setup QEMU if: ${{ steps.changes.outputs.changed == 'true' || startsWith(github.ref, 'refs/tags/') }} uses: dbhi/qus/action@main - uses: docker/setup-buildx-action@v3 if: ${{ steps.changes.outputs.changed == 'true' || startsWith(github.ref, 'refs/tags/') }} - uses: docker/metadata-action@v5 if: ${{ steps.changes.outputs.changed == 'true' || startsWith(github.ref, 'refs/tags/') }} id: meta with: images: ghcr.io/pyo3/maturin - name: Login to GitHub Container Registry if: ${{ steps.changes.outputs.changed == 'true' || startsWith(github.ref, 'refs/tags/') }} uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push if: ${{ steps.changes.outputs.changed == 'true' || startsWith(github.ref, 'refs/tags/') }} uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # https://github.com/docker/build-push-action/blob/master/docs/advanced/cache.md#registry-cache cache-from: type=registry,ref=ghcr.io/pyo3/maturin:buildcache cache-to: type=registry,ref=ghcr.io/pyo3/maturin:buildcache,mode=max maturin-1.7.4/.github/workflows/downstream.yml000066400000000000000000000020471467514767100215320ustar00rootroot00000000000000on: workflow_call: inputs: repository: required: true type: string manifest-dir: required: true type: string jobs: sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Sccache Setup uses: mozilla-actions/sccache-action@v0.0.5 with: version: "v0.5.3" - name: Build maturin env: RUST_BACKTRACE: "1" SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" run: cargo build - uses: actions/checkout@v4 with: repository: ${{ inputs.repository }} submodules: 'recursive' path: downstream - name: maturin sdist working-directory: downstream run: | ../target/debug/maturin sdist --manifest-path ${{ inputs.manifest-dir }}/Cargo.toml -o target/sdist - name: Build from sdist working-directory: downstream run: | ../target/debug/maturin build --manifest-path ${{ inputs.manifest-dir }}/Cargo.toml maturin-1.7.4/.github/workflows/lint.yml000066400000000000000000000020761467514767100203170ustar00rootroot00000000000000name: Lint on: pull_request: paths-ignore: - 'sysconfig/**' - '**.md' - '.cirrus.yml' - '.github/ISSUE_TEMPLATE/**' - '.github/dependabot.yml' merge_group: concurrency: group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true jobs: fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: cargo fmt run: cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: cargo clippy run: cargo clippy --tests --all-features -- -D warnings cargo-deny: name: Cargo deny runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: EmbarkStudios/cargo-deny-action@v2 with: arguments: --all-features maturin-1.7.4/.github/workflows/release.yml000066400000000000000000000241101467514767100207620ustar00rootroot00000000000000name: Release on: push: tags: ["v*"] workflow_dispatch: permissions: contents: read jobs: release-crates-io: name: Release crates.io runs-on: ubuntu-latest if: "startsWith(github.ref, 'refs/tags/')" environment: name: crates.io url: ${{ steps.set_url.outputs.env_url }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: cargo login run: cargo login ${{ secrets.CRATES_IO_TOKEN }} - name: cargo publish run: cargo publish - name: Set environment url id: set_url run: | VERSION=$(echo $GITHUB_REF | sed -e "s#refs/tags/v##g") echo "env_url=https://crates.io/crates/maturin/$VERSION" >> $GITHUB_OUTPUT build: name: Build ${{ matrix.target }} strategy: fail-fast: false matrix: target: - x86_64-unknown-linux-musl - x86_64-apple-darwin - x86_64-pc-windows-msvc - i686-pc-windows-msvc - aarch64-pc-windows-msvc include: - target: x86_64-unknown-linux-musl os: ubuntu-latest name: maturin-x86_64-unknown-linux-musl.tar.gz - target: x86_64-apple-darwin os: macos-latest name: maturin-x86_64-apple-darwin.tar.gz - target: x86_64-pc-windows-msvc os: windows-latest name: maturin-x86_64-pc-windows-msvc.zip - target: i686-pc-windows-msvc os: windows-latest name: maturin-i686-pc-windows-msvc.zip - target: aarch64-pc-windows-msvc os: windows-latest name: maturin-aarch64-pc-windows-msvc.zip runs-on: ${{ matrix.os }} steps: # Largely inspired by https://github.com/starship/starship/blob/35a0a20f5c4fea6a08e1b91ff631b089eef8fc50/.github/workflows/deploy.yml - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install musl tools if: matrix.os == 'ubuntu-latest' run: sudo apt-get install -y musl-tools # Install gnu-tar because BSD tar is buggy # https://github.com/actions/cache/issues/403 - name: Install GNU tar (macOS) if: matrix.os == 'macos-latest' run: | brew install gnu-tar echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH # Those two will also create target/${{ matrix.target }}/maturin - name: Build wheel (with sdist) if: matrix.target == 'x86_64-unknown-linux-musl' run: | cargo run -- build --release -b bin --sdist -o dist --target ${{ matrix.target }} --features password-storage --compatibility manylinux2010 musllinux_1_1 # ring doesn't support aarch64 windows yet - name: Build wheel (windows aarch64) if: matrix.target == 'aarch64-pc-windows-msvc' run: cargo run -- build --release -b bin -o dist --target ${{ matrix.target }} --no-default-features --features full,native-tls - name: Build wheel (without sdist) if: ${{ matrix.target != 'x86_64-unknown-linux-musl' && matrix.target != 'aarch64-pc-windows-msvc' }} run: cargo run -- build --release -b bin -o dist --target ${{ matrix.target }} --features password-storage - name: Build wheel (macOS universal2) if: matrix.target == 'x86_64-apple-darwin' env: DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer MACOSX_DEPLOYMENT_TARGET: "10.9" run: | # set SDKROOT for C dependencies like ring and bzip2 export SDKROOT=$(xcrun --sdk macosx --show-sdk-path) rustup target add aarch64-apple-darwin cargo run -- build --release -b bin -o dist --target universal2-apple-darwin --features password-storage - name: Archive binary (windows) if: matrix.os == 'windows-latest' run: | cd target/${{ matrix.target }}/release 7z a ../../../${{ matrix.name }} ${{ github.event.repository.name }}.exe cd - - name: Archive binary (linux and macOS) if: matrix.os != 'windows-latest' run: | cd target/${{ matrix.target }}/release tar czvf ../../../${{ matrix.name }} ${{ github.event.repository.name }} cd - - name: Archive binary (macOS aarch64) if: matrix.os == 'macos-latest' run: | cd target/aarch64-apple-darwin/release tar czvf ../../../maturin-aarch64-apple-darwin.tar.gz ${{ github.event.repository.name }} cd - - name: Build debian package if: ${{ matrix.os == 'ubuntu-latest' && startsWith(github.ref, 'refs/tags/') }} env: BINARY_NAME: ${{ github.event.repository.name }} TARGET: ${{ matrix.target }} VERSION: ${{ github.ref }} run: ci/build_deb.sh - name: Upload wheel artifacts uses: actions/upload-artifact@v4 with: name: wheels-${{ matrix.target }} path: dist - name: Upload binary artifacts uses: actions/upload-artifact@v4 with: name: binaries-${{ matrix.target }} path: | *.tar.gz *.zip *.deb build-musl: name: Build ${{ matrix.platform.target }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: platform: - target: "aarch64-unknown-linux-musl" image: "rust-musl-cross:aarch64-musl" compatibility: "manylinux2014 musllinux_1_1" - target: "armv7-unknown-linux-musleabihf" image: "rust-musl-cross:armv7-musleabihf" compatibility: "manylinux2014 musllinux_1_1" - target: "i686-unknown-linux-musl" image: "rust-musl-cross:i686-musl" compatibility: "manylinux2010 musllinux_1_1" - target: "arm-unknown-linux-musleabihf" image: "rust-musl-cross:arm-musleabihf" compatibility: "linux" - target: "powerpc64le-unknown-linux-musl" image: "rust-musl-cross:powerpc64le-musl" compatibility: "manylinux2014 musllinux_1_1" - target: "s390x-unknown-linux-gnu" image: "manylinux2014-cross:s390x" compatibility: "manylinux2014" container: image: docker://ghcr.io/rust-cross/${{ matrix.platform.image }} env: RUSTUP_HOME: /root/.rustup CARGO_HOME: /root/.cargo steps: - uses: actions/checkout@v4 # powerpc64le-unknown-linux-musl doesn't have official std library release - run: rustup target add --toolchain stable ${{ matrix.platform.target }} if: matrix.platform.target != 'powerpc64le-unknown-linux-musl' && matrix.platform.target != 's390x-unknown-linux-gnu' - uses: dtolnay/rust-toolchain@stable if: matrix.platform.target == 's390x-unknown-linux-gnu' with: targets: ${{ matrix.platform.target }} - name: Build wheel env: # Make psm compile, see https://github.com/rust-lang/stacker/issues/79 CFLAGS_s390x_unknown_linux_gnu: "-march=z10" run: | sudo python3 -m pip install -U --pre maturin maturin build --release -b bin -o dist \ --target ${{ matrix.platform.target }} \ --compatibility ${{ matrix.platform.compatibility }} \ --features password-storage - name: Archive binary run: tar czvf target/release/maturin-${{ matrix.platform.target }}.tar.gz -C target/${{ matrix.platform.target }}/release maturin - name: Upload wheel artifacts uses: actions/upload-artifact@v4 with: name: wheels-${{ matrix.platform.target }} path: dist - name: Upload binary artifacts uses: actions/upload-artifact@v4 with: name: binaries-${{ matrix.platform.target }} path: target/release/maturin-${{ matrix.platform.target }}.tar.gz release-pypi: permissions: # Used to sign the release's artifacts # and upload to PyPI using trusted publisher. id-token: write # Used to upload release artifacts. contents: write # Use to generate artifact attestation. attestations: write name: Publish to PyPI runs-on: ubuntu-latest environment: name: PyPI url: ${{ steps.set_url.outputs.env_url }} needs: [build, build-musl] steps: - uses: actions/download-artifact@v4 with: pattern: wheels-* merge-multiple: true - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: | ./*.tar.gz ./*.whl - uses: actions/setup-python@v5 if: "startsWith(github.ref, 'refs/tags/')" with: python-version: "3.10" - name: Publish if: "startsWith(github.ref, 'refs/tags/')" run: | pip install maturin maturin upload --skip-existing * - name: Set environment url id: set_url run: | VERSION=$(echo $GITHUB_REF | sed -e "s#refs/tags/v##g") echo "env_url=https://pypi.org/project/maturin/$VERSION" >> $GITHUB_OUTPUT release-github: permissions: # Used to sign the release's artifacts. id-token: write # Used to upload release artifacts. contents: write # Use to generate artifact attestation. attestations: write name: Publish to GitHub releases runs-on: ubuntu-latest needs: [build, build-musl] steps: - uses: actions/download-artifact@v4 with: pattern: binaries-* merge-multiple: true - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: | ./*.tar.gz ./*.zip ./*.deb - name: Release if: "startsWith(github.ref, 'refs/tags/')" uses: softprops/action-gh-release@v2 with: files: | *.tar.gz *.zip *.deb prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }} generate_release_notes: true maturin-1.7.4/.github/workflows/test.yml000066400000000000000000000520311467514767100203240ustar00rootroot00000000000000name: Test on: pull_request: paths-ignore: - "guide/**" - "sysconfig/**" - "**.md" - ".cirrus.yml" - ".github/ISSUE_TEMPLATE/**" - ".github/dependabot.yml" merge_group: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: generate-matrix: name: Generate Matrix runs-on: ubuntu-latest outputs: platform: ${{ steps.generate-matrix.outputs.platform }} fail-fast: ${{ steps.generate-matrix.outputs.fail-fast }} steps: - uses: actions/setup-node@v4 with: node-version: 16 - run: npm install js-yaml - name: Generate matrix id: generate-matrix uses: actions/github-script@v7 with: script: | const yaml = require('js-yaml') const OS = yaml.load(process.env.OS_MATRIX) const PYTHON_VERSIONS = yaml.load(process.env.PYTHON_VERSION) let platforms = [] OS.forEach(os => { PYTHON_VERSIONS.forEach(pythonVersion => { if (os == "macos-14") { if (pythonVersion.startsWith("pypy")) { // Skip PyPy on macOS M1 runner because they are built for x86_64 return } else if (parseInt(pythonVersion.slice(2)) < 11) { // macOS M1 runner only have Python 3.11+ return } } platforms.push({ "os": os, "python-version": pythonVersion }) }) }) if (context.eventName == 'workflow_dispatch' || context.eventName == 'merge_group') { // Run all of them on workflow dispatch or merge group core.setOutput('fail-fast', 'false') } else if (context.eventName == 'pull_request') { const { data: { labels: labels } } = await github.rest.pulls.get({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.payload.pull_request.number }) const labelNames = labels.map(label => label.name) if (labelNames.includes('CI-no-fail-fast')) { core.setOutput('fail-fast', 'false') } // Only run latest CPython and PyPy tests on pull requests const firstPyPy = PYTHON_VERSIONS.findIndex(version => version.startsWith('pypy')) const pythonVersions = [PYTHON_VERSIONS[firstPyPy - 1], PYTHON_VERSIONS[PYTHON_VERSIONS.length - 1]] // Only use macOS M1 runner on pull requests platforms = platforms.filter( platform => platform.os != 'macos-13' && pythonVersions.indexOf(platform["python-version"]) != -1 ) } core.setOutput('platform', platforms) env: OS_MATRIX: | - ubuntu-latest - macos-13 - macos-14 - windows-latest PYTHON_VERSION: | - '3.8' - '3.9' - '3.10' - '3.11' - '3.12' - 'pypy3.9' - 'pypy3.10' test: name: Test needs: [generate-matrix] strategy: fail-fast: ${{ needs.generate-matrix.outputs.fail-fast != 'false' }} matrix: platform: ${{ fromJson(needs.generate-matrix.outputs.platform) }} runs-on: ${{ matrix.platform.os }} env: RUST_BACKTRACE: "1" SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - name: Enable long paths if: startsWith(matrix.platform.os, 'windows') run: | reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f - name: Cleanup Disk if: ${{ !startsWith(matrix.platform.os, 'windows') }} run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc - name: Sccache Setup uses: mozilla-actions/sccache-action@v0.0.5 with: version: "v0.7.6" - uses: actions/checkout@v4 - uses: conda-incubator/setup-miniconda@v3 with: auto-activate-base: "false" activate-environment: "" miniconda-version: "latest" - uses: actions/setup-python@v5 with: python-version: ${{ matrix.platform.python-version }} architecture: "x64" - name: Set PYTHON_VERSION env var shell: bash run: | set -ex # remove -dev suffix python_version=$(echo ${{ matrix.platform.python-version }} | sed -e s/-dev//) echo "PYTHON_VERSION=$python_version" >> "${GITHUB_ENV}" - name: Install cffi if: ${{ !contains(matrix.platform.python-version, 'pypy') }} run: pip install cffi - name: Install python packages run: pip install virtualenv ziglang~=0.10.0 twine uniffi-bindgen==0.28.0 - uses: dtolnay/rust-toolchain@stable id: rustup with: targets: wasm32-wasi # Additional target - name: Install cargo-nextest uses: taiki-e/install-action@nextest - name: Install additional Rust target if: startsWith(matrix.platform.os, 'macos') run: rustup target add aarch64-apple-darwin x86_64-apple-darwin - name: Setup Xcode env if: startsWith(matrix.platform.os, 'macos') shell: bash run: | set -ex sudo xcode-select -s /Applications/Xcode.app bindir="$(xcode-select --print-path)/Toolchains/XcodeDefault.xctoolchain/usr/bin" echo "CC=${bindir}/clang" >> "${GITHUB_ENV}" echo "CXX=${bindir}/clang++" >> "${GITHUB_ENV}" echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> "${GITHUB_ENV}" # Caching # Install gnu-tar because BSD tar is buggy # https://github.com/actions/cache/issues/403 - name: Add GNU tar to PATH (macOS) if: startsWith(matrix.platform.os, 'macos') run: | echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH - name: Set MATURIN_TEST_PYTHON for PyPy shell: bash if: contains(matrix.platform.python-version, 'pypy') run: echo "MATURIN_TEST_PYTHON=pypy3" >> $GITHUB_ENV # To save disk space - name: Disable debuginfo on Windows if: startsWith(matrix.platform.os, 'windows') run: echo "RUSTFLAGS="-C debuginfo=0"" >> $GITHUB_ENV - name: cargo test run: cargo nextest run --features password-storage - name: test cross compiling with zig if: ${{ !contains(matrix.platform.python-version, '-dev') }} shell: bash run: | set -ex rustup target add aarch64-unknown-linux-gnu rustup target add aarch64-unknown-linux-musl rustup target add aarch64-apple-darwin # abi3 cargo run -- build -i $PYTHON_VERSION -m test-crates/pyo3-pure/Cargo.toml --target aarch64-unknown-linux-gnu --zig cargo run -- build -i $PYTHON_VERSION -m test-crates/pyo3-pure/Cargo.toml --target aarch64-unknown-linux-musl --zig if [[ "$PYTHON_VERSION" != "pypy"* ]]; then cargo run -- build -i $PYTHON_VERSION -m test-crates/pyo3-pure/Cargo.toml --target aarch64-apple-darwin --zig fi if [[ "$PYTHON_VERSION" == "3.1"* ]]; then # Check abi3 wheels with abi3audit on CPython only pip install abi3audit abi3audit test-crates/pyo3-pure/target/wheels/*.whl fi # Check wheels with twine twine check --strict test-crates/pyo3-pure/target/wheels/*.whl # non-abi3 cargo run -- build -i $PYTHON_VERSION -m test-crates/pyo3-mixed/Cargo.toml --target aarch64-unknown-linux-gnu --zig if [[ "$PYTHON_VERSION" != "pypy"* ]]; then cargo run -- build -i $PYTHON_VERSION -m test-crates/pyo3-mixed/Cargo.toml --target aarch64-apple-darwin --zig fi # Check wheels with twine twine check --strict test-crates/pyo3-mixed/target/wheels/*.whl - name: test compiling with PYO3_CONFIG_FILE shell: bash run: | set -ex rustup target add x86_64-unknown-linux-gnu export PYO3_CONFIG_FILE=$(pwd)/test-crates/pyo3-mixed/pyo3-config.txt cargo run -- build -m test-crates/pyo3-mixed/Cargo.toml --target x86_64-unknown-linux-gnu --zig - name: test maturin new shell: bash run: | set -ex cargo run new -b pyo3 test-crates/pyo3-new cargo run build -m test-crates/pyo3-new/Cargo.toml --target-dir test-crates/targets/ cargo run new --mixed -b pyo3 test-crates/pyo3-new-mixed cargo run build -m test-crates/pyo3-new-mixed/Cargo.toml --target-dir test-crates/targets/ test-windows-cross: name: Test windows cross needs: [generate-matrix] strategy: fail-fast: ${{ needs.generate-matrix.outputs.fail-fast != 'false' }} runs-on: ubuntu-latest env: RUST_BACKTRACE: "1" SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - uses: actions/checkout@v4 - name: Sccache Setup uses: mozilla-actions/sccache-action@v0.0.5 with: version: "v0.7.6" - uses: actions/setup-python@v5 with: python-version: 3.12 architecture: "x64" - name: Set PYTHON_VERSION env var shell: bash run: | set -ex # remove -dev suffix python_version=$(echo "3.12" | sed -e s/-dev//) echo "PYTHON_VERSION=$python_version" >> "${GITHUB_ENV}" - uses: dtolnay/rust-toolchain@stable id: rustup - name: test cross compiling windows wheel run: | set -ex sudo apt-get install -y mingw-w64 rustup component add llvm-tools-preview rustup target add x86_64-pc-windows-gnu rustup target add x86_64-pc-windows-msvc # abi3 cargo run -- build -m test-crates/pyo3-pure/Cargo.toml --target x86_64-pc-windows-gnu cargo run -- build -m test-crates/pyo3-pure/Cargo.toml --target x86_64-pc-windows-msvc # no-abi3 cargo run -- build -i "python${PYTHON_VERSION}" -m test-crates/pyo3-mixed/Cargo.toml --target x86_64-pc-windows-msvc test-emscripten: name: Test Emscripten if: github.event_name != 'pull_request' runs-on: ubuntu-latest env: PYODIDE_VERSION: "0.23.4" PYTHON_VERSION: "3.11.2" NODE_VERSION: 18 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 id: setup-python with: python-version: ${{ env.PYTHON_VERSION }} - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - uses: dtolnay/rust-toolchain@nightly with: components: rust-src targets: wasm32-unknown-emscripten - uses: Swatinem/rust-cache@v2 with: shared-key: maturin-build - run: pip install nox - name: Setup Pyodide run: nox -s setup-pyodide - uses: mymindstorm/setup-emsdk@v14 with: version: ${{ env.EMSCRIPTEN_VERSION }} actions-cache-folder: emsdk-cache - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Run tests run: nox -s test-emscripten test-alpine: name: Test Alpine Linux if: github.event_name != 'pull_request' runs-on: ubuntu-latest env: RUST_BACKTRACE: "1" CARGO_INCREMENTAL: "0" CARGO_TERM_COLOR: always container: alpine:latest steps: - name: Install build requirements run: | set -ex apk add cargo python3-dev libffi-dev py3-pip curl \ bash tar zstd git patchelf py3-cffi py3-virtualenv - uses: actions/checkout@v4 - name: Fix git permissions run: git config --global --add safe.directory $GITHUB_WORKSPACE - name: Cache cargo build uses: Swatinem/rust-cache@v2 with: shared-key: maturin-build - name: Install cargo-nextest uses: taiki-e/install-action@nextest - name: cargo test run: | # unset GITHUB_ACTIONS env var to disable zig related tests env -u GITHUB_ACTIONS cargo nextest run --features password-storage test-auditwheel: name: Test Auditwheel if: github.event_name != 'pull_request' runs-on: ubuntu-latest strategy: fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }} matrix: manylinux: ["manylinux_2_28"] container: quay.io/pypa/${{ matrix.manylinux }}_x86_64 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable id: rustup # Caching - name: Cache cargo build uses: Swatinem/rust-cache@v2 with: shared-key: maturin-build - name: Compliant Build run: tests/manylinux_compliant.sh ${{ matrix.manylinux }} - name: Incompliant Build if: matrix.manylinux == 'manylinux_2_28' run: tests/manylinux_incompliant.sh ${{ matrix.manylinux }} test-docker: name: Test Docker if: github.event_name != 'pull_request' runs-on: ubuntu-latest env: CARGO_INCREMENTAL: "0" CARGO_TERM_COLOR: always steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: . push: false tags: maturin load: true cache-from: type=registry,ref=ghcr.io/pyo3/maturin:buildcache cache-to: type=registry,ref=ghcr.io/pyo3/maturin:buildcache,mode=max - name: Test the Docker container run: ./test-dockerfile.sh test-cross-compile: name: Test Cross Compile if: github.event_name != 'pull_request' runs-on: ubuntu-latest container: ${{ matrix.platform.container }} strategy: fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }} matrix: platform: # CPython - target: aarch64-unknown-linux-gnu abi: cp38-cp38 python: python3.8 container: ghcr.io/rust-cross/manylinux2014-cross:aarch64 - target: armv7-unknown-linux-gnueabihf abi: cp39-cp39 python: python3.9 container: ghcr.io/rust-cross/manylinux2014-cross:armv7 - target: s390x-unknown-linux-gnu abi: cp310-cp310 python: python3.10 container: ghcr.io/rust-cross/manylinux2014-cross:s390x # PyPy - target: aarch64-unknown-linux-gnu abi: pp39-pypy39_pp73 python: pypy3.9 container: ghcr.io/rust-cross/manylinux2014-cross:aarch64 - target: aarch64-unknown-linux-gnu abi: pp310-pypy310_pp73 python: pypy3.10 container: ghcr.io/rust-cross/manylinux2014-cross:aarch64 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform.target }} - name: Build wheels run: | set -ex # Use bundled sysconfig cargo run --target x86_64-unknown-linux-gnu -- build -i ${{ matrix.platform.python }} --release --out dist --target ${{ matrix.platform.target }} -m test-crates/pyo3-mixed/Cargo.toml # Use PYO3_CROSS_LIB_DIR export PYO3_CROSS_LIB_DIR=/opt/python/${{ matrix.platform.abi }} cargo run --target x86_64-unknown-linux-gnu -- build -i python3.9 --release --out dist --target ${{ matrix.platform.target }} -m test-crates/pyo3-mixed/Cargo.toml unset PYO3_CROSS_LIB_DIR # Test abi3 cargo run --target x86_64-unknown-linux-gnu -- build -i ${{ matrix.platform.python }} --release --out dist --target ${{ matrix.platform.target }} -m test-crates/pyo3-pure/Cargo.toml # --find-interpreter cargo run --target x86_64-unknown-linux-gnu -- build --find-interpreter --release --out dist --target ${{ matrix.platform.target }} -m test-crates/pyo3-mixed/Cargo.toml test-bootstrap: name: Test Bootstrap runs-on: ${{ matrix.os }} env: SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" strategy: fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }} matrix: os: [ubuntu-latest, macos-14, windows-latest] steps: - uses: actions/checkout@v4 - uses: dorny/paths-filter@v3 id: changes with: filters: | changed: - 'maturin/**' - 'pyproject.toml' - 'setup.py' - 'MANIFEST.in' - 'Cargo.toml' - '.github/workflows/test.yml' - uses: dtolnay/rust-toolchain@stable if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} # Caching - name: Sccache Setup if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} uses: mozilla-actions/sccache-action@v0.0.5 with: version: "v0.7.6" - uses: actions/setup-python@v5 if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} with: python-version: "3.10" - name: Build and install shell: bash run: | set -ex cargo run sdist -o dist pip install -v dist/maturin-*.tar.gz if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} - run: maturin --version if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} - run: python3 -m maturin --version if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} - name: Upload wheel artifacts if: ${{ steps.changes.outputs.changed == 'true' || contains(github.event.pull_request.labels.*.name, 'release') }} uses: actions/upload-artifact@v4 with: name: wheels-${{ runner.os }} path: dist test-msrv: name: Test MSRV runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.74.0 # Caching - name: Cache cargo build uses: Swatinem/rust-cache@v2 - run: cargo build --no-default-features - name: cargo build run: cargo build --all test-downstream: name: Test downstream - ${{ matrix.downstream.repository }} if: ${{ contains(github.event.pull_request.labels.*.name, 'sdist') && github.event_name == 'pull_request' }} uses: ./.github/workflows/downstream.yml with: repository: ${{ matrix.downstream.repository }} manifest-dir: ${{ matrix.downstream.manifest-dir }} strategy: matrix: downstream: - repository: "pola-rs/polars" manifest-dir: "py-polars" - repository: "astral-sh/ruff" manifest-dir: "crates/ruff_cli" - repository: "crate-ci/typos" manifest-dir: "crates/typos-cli" - repository: "ast-grep/ast-grep" manifest-dir: "crates/pyo3" - repository: "oxigraph/oxigraph" manifest-dir: "python" check: name: Check ${{ matrix.platform.target }} if: github.event_name != 'pull_request' strategy: fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }} matrix: platform: - target: armv5te-unknown-linux-gnueabi apt-packages: gcc-arm-linux-gnueabi runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install packages run: | sudo apt-get update sudo apt-get install -y ${{ matrix.platform.apt-packages }} - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform.target }} - name: Cache cargo build uses: Swatinem/rust-cache@v2 - name: cargo check run: cargo check --target ${{ matrix.platform.target }} conclusion: needs: - test - test-emscripten - test-alpine - test-auditwheel - test-docker - test-cross-compile - test-bootstrap - test-msrv - test-downstream - check if: always() runs-on: ubuntu-latest steps: - name: Result run: | jq -C <<< "${needs}" # Check if all needs were successful or skipped. "$(jq -r 'all(.result as $result | (["success", "skipped"] | contains([$result])))' <<< "${needs}")" env: needs: ${{ toJson(needs) }} maturin-1.7.4/.github/workflows/update-auditwheel.yml000066400000000000000000000022461467514767100227630ustar00rootroot00000000000000name: Update auditwheel policies on: workflow_dispatch: schedule: # Run every week - cron: '0 0 * * 0' permissions: # added using https://github.com/step-security/secure-workflows contents: read jobs: update: permissions: contents: write # for peter-evans/create-pull-request to create branch pull-requests: write # for peter-evans/create-pull-request to create a PR name: Update auditwheel policies runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Fetch latest policy files run: | curl https://raw.githubusercontent.com/pypa/auditwheel/main/src/auditwheel/policy/manylinux-policy.json > src/auditwheel/manylinux-policy.json curl https://raw.githubusercontent.com/pypa/auditwheel/main/src/auditwheel/policy/musllinux-policy.json > src/auditwheel/musllinux-policy.json - name: Create Pull Request uses: peter-evans/create-pull-request@v6 with: delete-branch: true add-paths: | src/auditwheel/*.json title: 'Update manylinux/musllinux policies to the latest main' commit-message: 'Update manylinux/musllinux policies to the latest main' maturin-1.7.4/.gitignore000066400000000000000000000003021467514767100152070ustar00rootroot00000000000000target/ venv*/ .venv/ .pytest_cache/ .tox/ *.o *.so *.py[cdo] __pycache__/ *.egg-info/ *.egg dist/ build dist tags test-crates/wheels/ test-crates/targets/ test-crates/venvs/ node_modules .idea maturin-1.7.4/.pre-commit-config.yaml000066400000000000000000000035431467514767100175120ustar00rootroot00000000000000# run all hooks with: # pre-commit run --hook-stage manual --all ci: skip: # pre-commit.ci doesn't have Rust installed - cargo-fmt - cargo-deny repos: - repo: local hooks: - id: cargo-fmt # rustup component add rustfmt name: cargo fmt entry: cargo fmt --all -- language: system types: [rust] pass_filenames: false - id: cargo-deny # cargo install --locked cargo-deny name: cargo deny entry: cargo deny --all-features check -- language: system pass_filenames: false - id: cargo-check name: cargo check entry: cargo check --all-features --all-targets -- language: system pass_filenames: false types: [rust] stages: [manual] # because it's slow - id: cargo-clippy # rustup component add clippy name: cargo clippy entry: cargo clippy --tests --all-features -- -D warnings language: system pass_filenames: false types: [rust] stages: [manual] # because it's slow - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - id: check-yaml - id: check-toml - id: end-of-file-fixer exclude: | (?x)( (^sysconfig/)| (.*\.stdout) ) - id: trailing-whitespace exclude: | (?x)( (^sysconfig/)| (.*\.stdout) ) - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.6.7 hooks: - id: ruff-format - id: ruff - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.11.2 hooks: - id: mypy entry: mypy maturin/ pass_filenames: false - repo: https://github.com/codespell-project/codespell rev: v2.3.0 hooks: - id: codespell maturin-1.7.4/Cargo.lock000066400000000000000000002273651467514767100151500ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "adler2" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", "version_check", "zerocopy", ] [[package]] name = "aho-corasick" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anstream" version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", ] [[package]] name = "anyhow" version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "automod" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] name = "bstr" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", ] [[package]] name = "byteorder" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bytesize" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" [[package]] name = "bzip2" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ "bzip2-sys", "libc", ] [[package]] name = "bzip2-sys" version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" dependencies = [ "cc", "libc", "pkg-config", ] [[package]] name = "cab" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8636d870cf15918e416b7904f0db1cbd06de0ffe392986c3b16662552df00c" dependencies = [ "byteorder", "flate2", "lzxd", "time", ] [[package]] name = "camino" version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "cargo-config2" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d83ce0be8bd1479e5de6202def660e6c7e27e4e0599bffa4fed05bd380ec2ede" dependencies = [ "home", "serde", "serde_derive", "toml_edit 0.22.16", ] [[package]] name = "cargo-options" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3540247c0a37a76eb324acc238dc617786ea22c43b95da560c82a8f2714321f" dependencies = [ "anstyle", "clap", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo-xwin" version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "471f6fff351fc5ab837ce7223637f7c20048e4a846708e7e58fda64db9d3a8b9" dependencies = [ "anyhow", "cargo-config2", "cargo-options", "clap", "dirs", "fs-err", "indicatif", "native-tls", "paste", "path-slash", "rustls", "rustls-pemfile", "tracing-subscriber", "ureq", "which 5.0.0", "xwin", ] [[package]] name = "cargo-zigbuild" version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e700178b11124560cdbabc8808e938fe6d77abde036b77a4c03a191b02bac854" dependencies = [ "anyhow", "cargo-config2", "cargo-options", "cargo_metadata", "clap", "crc", "dirs", "fs-err", "path-slash", "rustc_version", "rustflags", "semver", "serde", "serde_json", "shlex", "target-lexicon", "which 6.0.3", ] [[package]] name = "cargo_metadata" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "cbindgen" version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" dependencies = [ "heck 0.4.1", "indexmap 1.9.3", "log", "proc-macro2", "quote", "serde", "serde_json", "syn 1.0.109", "tempfile", "toml 0.5.11", ] [[package]] name = "cc" version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" dependencies = [ "shlex", ] [[package]] name = "cfb" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b390793e912300f1aa713429f7fd0c391024e6c18b988962558bc4f96a349b1f" dependencies = [ "byteorder", "fnv", "uuid", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "charset" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" dependencies = [ "base64 0.22.1", "encoding_rs", ] [[package]] name = "chumsky" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9" dependencies = [ "hashbrown 0.14.5", "stacker", ] [[package]] name = "clap" version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", ] [[package]] name = "clap_builder" version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", "terminal_size", ] [[package]] name = "clap_complete" version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2020fa13af48afc65a9a87335bda648309ab3d154cd03c7ff95b378c7ed39c4" dependencies = [ "clap", ] [[package]] name = "clap_complete_command" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da8e198c052315686d36371e8a3c5778b7852fc75cc313e4e11eeb7a644a1b62" dependencies = [ "clap", "clap_complete", "clap_complete_nushell", ] [[package]] name = "clap_complete_nushell" version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3" dependencies = [ "clap", "clap_complete", ] [[package]] name = "clap_derive" version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "clap_lex" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "cli-table" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d" dependencies = [ "termcolor", "unicode-width", ] [[package]] name = "colorchoice" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "configparser" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" [[package]] name = "console" version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", "windows-sys 0.52.0", ] [[package]] name = "content_inspector" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38" dependencies = [ "memchr", ] [[package]] name = "core-foundation" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", ] [[package]] name = "core-foundation-sys" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc" version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] [[package]] name = "crc-catalog" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "typenum", ] [[package]] name = "data-encoding" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "deranged" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", ] [[package]] name = "derivative" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", "syn 1.0.109", ] [[package]] name = "dialoguer" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" dependencies = [ "console", "shell-words", "thiserror", "zeroize", ] [[package]] name = "diff" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", ] [[package]] name = "dirs" version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", "redox_users", "windows-sys 0.48.0", ] [[package]] name = "dissimilar" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" [[package]] name = "dunce" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] name = "expect-test" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e0be0a561335815e06dab7c62e50353134c796e7a6155402a64bcff66b6a5e0" dependencies = [ "dissimilar", "once_cell", ] [[package]] name = "fastrand" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fat-macho" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d4c93f393add03d72bc10dd3dea43a1610ecb29e0c0a6459c70b53b82931adf" dependencies = [ "goblin", ] [[package]] name = "filetime" version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", "redox_syscall 0.4.1", "windows-sys 0.52.0", ] [[package]] name = "flate2" version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ "foreign-types-shared", ] [[package]] name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] [[package]] name = "futures" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", "futures-executor", "futures-io", "futures-sink", "futures-task", "futures-util", ] [[package]] name = "futures-channel" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", ] [[package]] name = "futures-core" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", "futures-util", ] [[package]] name = "futures-io" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "futures-sink" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", "futures-io", "futures-macro", "futures-sink", "futures-task", "memchr", "pin-project-lite", "pin-utils", "slab", ] [[package]] name = "generic-array" version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", ] [[package]] name = "getrandom" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", "wasi", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", "log", "regex-automata 0.4.7", "regex-syntax 0.8.4", ] [[package]] name = "goblin" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", "scroll", ] [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", ] [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "home" version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "humantime" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "humantime-serde" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" dependencies = [ "humantime", "serde", ] [[package]] name = "idna" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", ] [[package]] name = "ignore" version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", "regex-automata 0.4.7", "same-file", "walkdir", "winapi-util", ] [[package]] name = "indexmap" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", ] [[package]] name = "indexmap" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", "serde", ] [[package]] name = "indicatif" version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", "number_prefix", "portable-atomic", "unicode-width", ] [[package]] name = "indoc" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "instant" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] [[package]] name = "is_terminal_polyfill" version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itertools" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "keyring" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "363387f0019d714aa60cc30ab4fe501a747f4c08fc58f069dd14be971bd495a0" dependencies = [ "lazy_static", "linux-keyutils", ] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lddtree" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "735dc8281e12cf7450b3a343c50bccdb15625f41b127d1bd7063949fe367847d" dependencies = [ "fs-err", "glob", "goblin", ] [[package]] name = "libc" version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libmimalloc-sys" version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6" dependencies = [ "cc", "libc", ] [[package]] name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.5.0", "libc", ] [[package]] name = "linux-keyutils" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" dependencies = [ "bitflags 2.5.0", "libc", ] [[package]] name = "linux-raw-sys" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", ] [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lzxd" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5de7336a183103429ad66d11d56d8bdc9c4a2916f6b85a8f11e5b127bde12001" [[package]] name = "mailparse" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3da03d5980411a724e8aaf7b61a7b5e386ec55a7fb49ee3d0ff79efc7e5e7c7e" dependencies = [ "charset", "data-encoding", "quoted_printable", ] [[package]] name = "matchers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ "regex-automata 0.1.10", ] [[package]] name = "maturin" version = "1.7.4" dependencies = [ "anyhow", "base64 0.21.7", "bytesize", "cargo-config2", "cargo-options", "cargo-xwin", "cargo-zigbuild", "cargo_metadata", "cbindgen", "cc", "clap", "clap_complete_command", "configparser", "console", "dialoguer", "dirs", "dunce", "expect-test", "fat-macho", "flate2", "fs-err", "glob", "goblin", "ignore", "indexmap 2.5.0", "indoc", "itertools", "keyring", "lddtree", "minijinja", "multipart", "native-tls", "normpath", "once_cell", "path-slash", "pep440_rs", "pep508_rs", "platform-info", "pretty_assertions", "pyproject-toml", "python-pkginfo", "regex", "rstest", "rustc_version", "rustls", "rustls-pemfile", "rustversion", "same-file", "schemars", "semver", "serde", "serde_json", "sha2", "tar", "target-lexicon", "tempfile", "textwrap", "thiserror", "time", "toml 0.8.15", "toml_edit 0.22.16", "tracing", "tracing-subscriber", "trycmd", "unicode-xid", "ureq", "url", "which 6.0.3", "wild", "zip", ] [[package]] name = "memchr" version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "mimalloc" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176" dependencies = [ "libmimalloc-sys", ] [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", ] [[package]] name = "minijinja" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55e877d961d4f96ce13615862322df7c0b6d169d40cab71a7ef3f9b9e594451e" dependencies = [ "serde", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ "adler2", ] [[package]] name = "msi" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "226b2404f03d2cf47375b9715c8adfae4e388bb2377cff908e8a40f31e421514" dependencies = [ "byteorder", "cfb", "encoding_rs", "uuid", ] [[package]] name = "multipart" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" dependencies = [ "log", "mime", "mime_guess", "rand", "tempfile", ] [[package]] name = "native-tls" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ "libc", "log", "openssl", "openssl-probe", "openssl-sys", "schannel", "security-framework", "security-framework-sys", "tempfile", ] [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "normalize-line-endings" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" [[package]] name = "normpath" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "nu-ansi-term" version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ "overload", "winapi", ] [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "number_prefix" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", "once_cell", "openssl-macros", "openssl-sys", ] [[package]] name = "openssl-macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "openssl-probe" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", "pkg-config", "vcpkg", ] [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "os_pipe" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", ] [[package]] name = "parking_lot_core" version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall 0.5.1", "smallvec", "windows-targets 0.52.5", ] [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "path-slash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" [[package]] name = "pep440_rs" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "466eada3179c2e069ca897b99006cbb33f816290eaeec62464eea907e22ae385" dependencies = [ "once_cell", "serde", "tracing", "unicode-width", "unscanny", ] [[package]] name = "pep508_rs" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f8877489a99ccc80012333123e434f84e645fe1ede3b30e9d3b815887a12979" dependencies = [ "derivative", "once_cell", "pep440_rs", "regex", "serde", "thiserror", "tracing", "unicode-width", "url", "urlencoding", ] [[package]] name = "percent-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "platform-info" version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5ff316b9c4642feda973c18f0decd6c8b0919d4722566f6e4337cce0dd88217" dependencies = [ "libc", "winapi", ] [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "powerfmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[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-macro-crate" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ "toml_edit 0.21.1", ] [[package]] name = "proc-macro2" version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] [[package]] name = "psm" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" dependencies = [ "cc", ] [[package]] name = "pyproject-toml" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef7061023bcb58a0fc4a4bbe9819c13b0dca7c2abc14da14f5ecc1532ab3a36a" dependencies = [ "indexmap 2.5.0", "pep440_rs", "pep508_rs", "serde", "toml 0.8.15", ] [[package]] name = "python-pkginfo" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3f3f0d552c7efdde2b6898bf21b49c4e76b3e6071ff196dfe52109804db896" dependencies = [ "flate2", "fs-err", "mailparse", "rfc2047-decoder", "tar", "thiserror", "zip", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "quoted_printable" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0" [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "rayon" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", ] [[package]] name = "rayon-core" version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] [[package]] name = "redox_syscall" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ "bitflags 2.5.0", ] [[package]] name = "redox_users" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", "thiserror", ] [[package]] name = "regex" version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", "regex-automata 0.4.7", "regex-syntax 0.8.4", ] [[package]] name = "regex-automata" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ "regex-syntax 0.6.29", ] [[package]] name = "regex-automata" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", "regex-syntax 0.8.4", ] [[package]] name = "regex-syntax" version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "relative-path" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "rfc2047-decoder" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e90a668c463c412c3118ae1883e18b53d812c349f5af7a06de3ba4bb0c17cc73" dependencies = [ "base64 0.21.7", "charset", "chumsky", "memchr", "quoted_printable", "thiserror", ] [[package]] name = "ring" version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", "getrandom", "libc", "spin", "untrusted", "windows-sys 0.52.0", ] [[package]] name = "rstest" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" dependencies = [ "futures", "futures-timer", "rstest_macros", "rustc_version", ] [[package]] name = "rstest_macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" dependencies = [ "cfg-if", "glob", "proc-macro-crate", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", "syn 2.0.76", "unicode-ident", ] [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustflags" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7fc92159fb50a431c5da366f7627751fe7263cf867f8a30f27fa6063ba02ac0" [[package]] name = "rustix" version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", "windows-sys 0.52.0", ] [[package]] name = "rustls" version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", "ring", "rustls-pki-types", "rustls-webpki", "subtle", "zeroize", ] [[package]] name = "rustls-pemfile" version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", "rustls-pki-types", "untrusted", ] [[package]] name = "rustversion" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ "winapi-util", ] [[package]] name = "schannel" version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "schemars" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "schemars_derive", "serde", "serde_json", ] [[package]] name = "schemars_derive" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", "syn 2.0.76", ] [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "security-framework" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", ] [[package]] name = "security-framework-sys" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", ] [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "serde_derive_internals" version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "serde_json" version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] [[package]] name = "sha2" version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", "digest", ] [[package]] name = "sharded-slab" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "shell-words" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "similar" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" [[package]] name = "slab" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smawk" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "snapbox" version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "027c936207f85d10d015e21faf5c676c7e08c453ed371adf55c0874c443ca77a" dependencies = [ "anstream", "anstyle", "content_inspector", "dunce", "filetime", "libc", "normalize-line-endings", "os_pipe", "similar", "snapbox-macros", "tempfile", "wait-timeout", "walkdir", "windows-sys 0.52.0", ] [[package]] name = "snapbox-macros" version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af" dependencies = [ "anstream", ] [[package]] name = "socks" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" dependencies = [ "byteorder", "libc", "winapi", ] [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "stacker" version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" dependencies = [ "cc", "cfg-if", "libc", "psm", "winapi", ] [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syn" version = "2.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "tar" version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" dependencies = [ "filetime", "libc", "xattr", ] [[package]] name = "target-lexicon" version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" dependencies = [ "cfg-if", "fastrand", "once_cell", "rustix", "windows-sys 0.52.0", ] [[package]] name = "termcolor" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ "rustix", "windows-sys 0.48.0", ] [[package]] name = "textwrap" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", "unicode-width", ] [[package]] name = "thiserror" version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "thread_local" version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", ] [[package]] name = "time" version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "num-conv", "powerfmt", "serde", "time-core", "time-macros", ] [[package]] name = "time-core" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", ] [[package]] name = "tinyvec" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml" version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ "serde", "serde_spanned", "toml_datetime", "toml_edit 0.22.16", ] [[package]] name = "toml_datetime" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] [[package]] name = "toml_edit" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap 2.5.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", "winnow 0.6.13", ] [[package]] name = "tracing" version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "pin-project-lite", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "tracing-core" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", ] [[package]] name = "tracing-log" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", "tracing-core", ] [[package]] name = "tracing-serde" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" dependencies = [ "serde", "tracing-core", ] [[package]] name = "tracing-subscriber" version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", "once_cell", "regex", "serde", "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", "tracing-serde", ] [[package]] name = "trycmd" version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e8673f1dc45acdff8e25a06cc62f8e529563e8acd84237ce83d5a28e2befa12" dependencies = [ "automod", "glob", "humantime", "humantime-serde", "rayon", "serde", "shlex", "snapbox", "toml_edit 0.22.16", ] [[package]] name = "twox-hash" version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", "rand", "static_assertions", ] [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-linebreak" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unscanny" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" [[package]] name = "untrusted" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" version = "2.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" dependencies = [ "base64 0.22.1", "flate2", "log", "native-tls", "once_cell", "rustls", "rustls-pki-types", "rustls-webpki", "serde", "serde_json", "socks", "url", "webpki-roots", ] [[package]] name = "url" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", ] [[package]] name = "urlencoding" version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" [[package]] name = "valuable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "versions" version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38a8931f8d167b6448076020e70b9de46dcf5ea1731212481a092d0071c4ac5b" dependencies = [ "itertools", "nom", ] [[package]] name = "wait-timeout" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" dependencies = [ "libc", ] [[package]] name = "walkdir" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", ] [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "webpki-roots" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] [[package]] name = "which" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" dependencies = [ "either", "home", "once_cell", "rustix", "windows-sys 0.48.0", ] [[package]] name = "which" version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", "rustix", "winsafe", ] [[package]] name = "wild" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1" dependencies = [ "glob", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets 0.48.5", ] [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets 0.52.5", ] [[package]] name = "windows-targets" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm 0.48.5", "windows_aarch64_msvc 0.48.5", "windows_i686_gnu 0.48.5", "windows_i686_msvc 0.48.5", "windows_x86_64_gnu 0.48.5", "windows_x86_64_gnullvm 0.48.5", "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ "windows_aarch64_gnullvm 0.52.5", "windows_aarch64_msvc 0.52.5", "windows_i686_gnu 0.52.5", "windows_i686_gnullvm", "windows_i686_msvc 0.52.5", "windows_x86_64_gnu 0.52.5", "windows_x86_64_gnullvm 0.52.5", "windows_x86_64_msvc 0.52.5", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" [[package]] name = "windows_i686_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] [[package]] name = "winnow" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] [[package]] name = "winsafe" version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "xattr" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys", "rustix", ] [[package]] name = "xwin" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c13f18103ecd54342d0f923b33fff9ed595e5813e5af85620f1a8e7622474acb" dependencies = [ "anyhow", "bytes", "cab", "camino", "clap", "cli-table", "crossbeam-channel", "flate2", "indicatif", "memchr", "mimalloc", "msi", "parking_lot", "rayon", "regex", "serde", "serde_json", "sha2", "tempfile", "toml 0.8.15", "tracing", "tracing-subscriber", "twox-hash", "ureq", "versions", "walkdir", "zip", ] [[package]] name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", "syn 2.0.76", ] [[package]] name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zip" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ "byteorder", "bzip2", "crc32fast", "crossbeam-utils", "flate2", "time", ] maturin-1.7.4/Cargo.toml000066400000000000000000000121271467514767100151570ustar00rootroot00000000000000[package] authors = ["konstin ", "messense "] name = "maturin" version = "1.7.4" description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages" exclude = [ "test-crates/**/*", "sysconfig/*", "test-data/*", "ci/*", "tests/*", "guide/*", ".github/*", ".devcontainer/*", "Dockerfile", ".dockerignore", "deny.toml", "noxfile.py", "test-dockerfile.sh", "Code-of-Conduct.md", ] homepage = "https://github.com/pyo3/maturin" readme = "README.md" repository = "https://github.com/pyo3/maturin" license = "MIT OR Apache-2.0" keywords = ["python", "cffi", "packaging", "pypi", "pyo3"] categories = [ "api-bindings", "development-tools::ffi", "command-line-utilities", ] edition = "2021" rust-version = "1.74" [[bin]] name = "maturin" [lib] name = "maturin" [dependencies] anyhow = "1.0.80" base64 = "0.21.0" glob = "0.3.0" cargo-config2 = "0.1.24" cargo_metadata = "0.18.0" cargo-options = "0.7.2" cbindgen = { version = "0.26.0", default-features = false } flate2 = "1.0.18" goblin = "0.8.0" platform-info = "2.0.2" regex = "1.7.0" serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" sha2 = "0.10.3" tar = "0.4.38" tempfile = "3.2.0" toml = "0.8.10" toml_edit = "0.22.6" zip = { version = "0.6.1", default-features = false, features = [ "bzip2", "deflate", "time", ] } thiserror = "1.0.37" fs-err = "2.11.0" fat-macho = { version = "0.4.8", default-features = false } once_cell = "1.7.2" rustc_version = "0.4.0" semver = "1.0.22" target-lexicon = "0.12.14" indexmap = "2.2.3" pyproject-toml = "0.11.0" python-pkginfo = "0.6.0" textwrap = "0.16.1" ignore = "0.4.20" itertools = "0.12.1" lddtree = "0.3.4" cc = "1.0.88" dunce = "1.0.2" normpath = "1.1.1" path-slash = "0.2.1" pep440_rs = { version = "0.6.0", features = ["serde", "tracing"] } pep508_rs = { version = "0.6.0", features = ["serde", "tracing"] } same-file = "1.0.6" time = "0.3.17" url = "2.5.0" unicode-xid = { version = "0.2.4", optional = true } # cli clap = { version = "4.0.0", features = [ "derive", "env", "wrap_help", "unstable-styles", ] } clap_complete_command = { version = "0.6.1", optional = true } # cross compile cargo-zigbuild = { version = "0.19.3", default-features = false, optional = true } cargo-xwin = { version = "0.16.5", default-features = false, optional = true } # log tracing = "0.1.36" tracing-subscriber = { version = "0.3.15", features = ["env-filter"] } # project scaffolding, maturin new/init/generate-ci dialoguer = { version = "0.11.0", default-features = false, optional = true } console = { version = "0.15.4", optional = true } minijinja = { version = "1.0.7", optional = true } # upload bytesize = { version = "1.0.1", optional = true } configparser = { version = "3.0.3", optional = true } dirs = { version = "5.0.0", optional = true } multipart = { version = "0.18.0", features = [ "client", ], default-features = false, optional = true } ureq = { version = "2.9.4", features = [ "gzip", "json", "socks-proxy", ], default-features = false, optional = true } native-tls = { version = "0.2.8", optional = true } rustls = { version = "0.22.4", optional = true } rustls-pemfile = { version = "2.1.0", optional = true } keyring = { version = "2.3.2", default-features = false, features = [ "linux-no-secret-service", ], optional = true } wild = { version = "2.1.0", optional = true } # JSON schema schemars = { version = "0.8.16", optional = true } pretty_assertions = { version = "1.3.0", optional = true } [dev-dependencies] expect-test = "1.4.1" rstest = "0.22.0" indoc = "2.0.3" pretty_assertions = "1.3.0" rustversion = "1.0.9" time = { version = "0.3.34", features = ["macros"] } trycmd = "0.15.0" which = "6.0.0" [features] default = ["full", "rustls"] full = ["cli-completion", "cross-compile", "scaffolding", "upload"] cli-completion = ["dep:clap_complete_command"] upload = [ "ureq", "multipart", "configparser", "bytesize", "dialoguer/password", "wild", "dep:dirs", ] schemars = ["dep:schemars", "dep:pretty_assertions"] # keyring doesn't support *BSD so it's not enabled in `full` by default password-storage = ["upload", "keyring"] rustls = [ "dep:rustls", "ureq?/tls", "cargo-xwin?/rustls-tls", "dep:rustls-pemfile", ] native-tls = [ "dep:native-tls", "ureq?/native-tls", "cargo-xwin?/native-tls", "dep:rustls-pemfile", ] # cross compile using zig or xwin cross-compile = ["zig", "xwin"] zig = ["cargo-zigbuild"] xwin = ["cargo-xwin"] # project scaffolding scaffolding = ["dialoguer", "console", "minijinja", "unicode-xid"] # Internal feature to speed up the tests significantly faster-tests = [] # Deprecated features, keep them now for compatibility human-panic = [] log = [] [profile.profiling] inherits = "release" debug = true # Without this, compressing the .gz archive becomes notably slow for debug builds [profile.dev.package.miniz_oxide] opt-level = 3 # Speedup cargo-xwin for debug builds [profile.dev.package.cab] opt-level = 3 [profile.dev.package.msi] opt-level = 3 maturin-1.7.4/Changelog.md000066400000000000000000002010531467514767100154360ustar00rootroot00000000000000# Changelog ## [1.7.4] * Fix musllinux rpath for non-cffi bindings in [#2233](https://github.com/PyO3/maturin/pull/2233) * Add GitHub Actions attestation support to generate-ci in [#2234](https://github.com/PyO3/maturin/pull/2234) ## [1.7.3] * Fix upload regression to pypi/testpypi in [#2229](https://github.com/PyO3/maturin/pull/2229) ## [1.7.2] * Fix cross compilation issues for armv7l, mips64 and ppc in [#2204](https://github.com/PyO3/maturin/pull/2204) * UniFFI: supports bindings generated from multiple crates in [#2208](https://github.com/PyO3/maturin/pull/2208) * Enable `--all-features` when building source distribution in [#2215](https://github.com/PyO3/maturin/pull/2215) * Fix rpath when module-name contains `.` in [#2219](https://github.com/PyO3/maturin/pull/2219) ## [1.7.1] * Forward `cargo package --list` warnings in [#2186](https://github.com/PyO3/maturin/pull/2186) * In source distributions, we move the readmes of path dependencies into the respective crate to avoid collision between different readmes in [#2184](https://github.com/PyO3/maturin/pull/2184) ## [1.7.0] - 2024-07-07 * Initial iOS support in [#2101](https://github.com/PyO3/maturin/pull/2102) * Remove old import hook in [#2105](https://github.com/PyO3/maturin/pull/2105), use [maturin-import-hook](https://github.com/PyO3/maturin-import-hook) instead * Bump MSRV to 1.74.0 in [#2108](https://github.com/PyO3/maturin/pull/2108) * Add support for overriding wheel tag with `_PYTHON_HOST_PLATFORM` in [#2122](https://github.com/PyO3/maturin/pull/2122) * Don't add files to an archive more than once [#2125](https://github.com/PyO3/maturin/issues/2125) * Only use base python executable when `MATURIN_PEP517_USE_BASE_PYTHON` is set in [#2134](https://github.com/PyO3/maturin/pull/2134) ## [1.6.0] - 2024-06-04 * Detect compiling from Linux gnu to Linux musl as cross compiling in [#2010](https://github.com/PyO3/maturin/pull/2010) * Add musllinux support to `generate-ci` in [#2011](https://github.com/PyO3/maturin/pull/2011) * Add uv support to `develop` command in [#2015](https://github.com/PyO3/maturin/pull/2015) * Add support for AIX target in [#2030](https://github.com/PyO3/maturin/pull/2030) * Remove rust-cpython support in [#2044](https://github.com/PyO3/maturin/pull/2044) * Add a global `-v` option in [#2080](https://github.com/PyO3/maturin/pull/2080) * Detect target based on interpreter for pep517 build-wheel in [#2088](https://github.com/PyO3/maturin/pull/2088) * Use base executable when possible in PEP 517 build in [#2094](https://github.com/PyO3/maturin/pull/2094) ## [1.5.1] - 2024-03-21 * Fix usage of `--compatibility` when run as a PEP517 backend in [#1992](https://github.com/PyO3/maturin/pull/1992) * Fix upload returning malformed summary error in [#2002](https://github.com/PyO3/maturin/pull/2002) ## [1.5.0] - 2024-03-05 * Bump metadata version from 2.1 to 2.3 in [#1965](https://github.com/PyO3/maturin/pull/1965). Source distributions created by maturin now have reliable metadata, meaning tool such as pip, uv and poetry could skip building them for version resolution. * Allow identical `VIRTUAL_ENV` and `CONDA_PREFIX` env vars in [#1879](https://github.com/PyO3/maturin/pull/1879) * Reject `-i python` when cross compiling in [#1891](https://github.com/PyO3/maturin/pull/1891) * Support uniffi-bindgen in cargo workspaces in [#1909](https://github.com/PyO3/maturin/pull/1909) * Add support for configuring `xwin` using env vars in [#1961](https://github.com/PyO3/maturin/pull/1961) * Add validation for crate/package name in new/init in [#1943](https://github.com/PyO3/maturin/pull/1943) * Add 32-bit RISC-V support in [#1969](https://github.com/PyO3/maturin/pull/1969) * Improve import hook changes in [#1958](https://github.com/PyO3/maturin/pull/1958) * Adjust cbindgen Overrides for CFFI in [#1957](https://github.com/PyO3/maturin/pull/1957) ## [1.4.0] - 2023-12-02 * Bump MSRV to 1.67.0 in [#1847](https://github.com/PyO3/maturin/pull/1847) * Add support for cross compiling with `cross` in [#1865](https://github.com/PyO3/maturin/pull/1865) ## [1.3.2] - 2023-11-14 * Add support for uniffi library mode in [#1729](https://github.com/PyO3/maturin/pull/1729) * Un-deprecate `MATURIN_PEP517_ARGS` env var in [#1820](https://github.com/PyO3/maturin/pull/1820) * Fix missing member in Cargo.toml for sdist of nested workspace layout in [#1828](https://github.com/PyO3/maturin/pull/1828) * Escape display name in email addresses of wheel metadata in [#1832](https://github.com/PyO3/maturin/pull/1832) * Fix rewriting workspace Cargo.toml in sdist in [#1841](https://github.com/PyO3/maturin/pull/1841) * Fix glob workspace members matching in sdist in [#1846](https://github.com/PyO3/maturin/pull/1846) ## [1.3.1] - 2023-10-24 * Use external `uniffi-bindgen` if no root package is configured in [#1797](https://github.com/PyO3/maturin/pull/1797) * Fix wheel filename for GraalPy in [#1802](https://github.com/PyO3/maturin/pull/1802) * Add unittest skeleton to mixed Python/Rust projects in [#1807](https://github.com/PyO3/maturin/pull/1807) * Preserve trailing whitespace in new project files in [#1808](https://github.com/PyO3/maturin/pull/1808) * Fix missing `workspace.members` in sdist in [#1811](https://github.com/PyO3/maturin/pull/1811) * Don't set `MACOSX_DEPLOYMENT_TARGET` for editable builds by default in [#1815](https://github.com/PyO3/maturin/pull/1815) ## [1.3.0] - 2023-10-02 * Refactor Cargo sdist generator to avoid rewriting local dependencies in [#1741](https://github.com/PyO3/maturin/pull/1741) * Added `--pip-path` argument to `develop` command in [#1753](https://github.com/PyO3/maturin/pull/1753) * Ignore sdist output files when building sdist in [#1756](https://github.com/PyO3/maturin/pull/1756) * Use `python.exe` by default in `build` command on Windows in [#1757](https://github.com/PyO3/maturin/pull/1757) * Don't require `uniffi-bindgen` to be installed for uniffi bindings in [#1762](https://github.com/PyO3/maturin/pull/1762) * Fix platform tag for graalpy in [#1773](https://github.com/PyO3/maturin/pull/1773) * Always set minor version to 0 when major version >= 11 for macOS in [#1778](https://github.com/PyO3/maturin/pull/1778) * Warning about incorrect maturin version pyproject.toml `[build-system] requires` in [#1793](https://github.com/PyO3/maturin/pull/1793) ## [1.2.3] - 2023-08-17 * Fix sdist build failure with workspace path dependencies by HerringtonDarkholme in [#1739](https://github.com/PyO3/maturin/pull/1739) ## [1.2.2] - 2023-08-14 * Fix non interactive mode check when username/password was supplied from cli in #[1737](https://github.com/PyO3/maturin/pull/1737) ## [1.2.1] - 2023-08-14 * Add non-interactive mode to `upload` command in [#1722](https://github.com/PyO3/maturin/pull/1722) * Fix `link-native-libraries` check for emscripten target in [#1724](https://github.com/PyO3/maturin/pull/1724) * Add support for `ALL_PROXY` to `upload` command in [#1727](https://github.com/PyO3/maturin/pull/1727) * Handle renamed Rust dependency in sdist in [#1728](https://github.com/PyO3/maturin/pull/1728) * Fix invalid TOML when rewriting workspace inherited dependencies in [#1733](https://github.com/PyO3/maturin/pull/1733) ## [1.2.0] - 2023-08-06 * Add basic support for implicit namespaces [#1645](https://github.com/PyO3/maturin/pull/1696) * Add Linux mips64 and mips architecture support in [#1712](https://github.com/PyO3/maturin/pull/1712) * Add `x86_64h-apple-darwin` target support in [#1717](https://github.com/PyO3/maturin/pull/1717) ## [1.1.0] - 2023-06-10 * Add basic support for GraalPy in [#1645](https://github.com/PyO3/maturin/pull/1645) * Refactor abi tag to use `EXT_SUFFIX` in [#1648](https://github.com/PyO3/maturin/pull/1648) * Add Linux loongarch64 architecture support in [#1653](https://github.com/PyO3/maturin/pull/1653) * Add `--skip-install` option to `maturin develop` in [#1654](https://github.com/PyO3/maturin/pull/1654) ## [1.0.1] - 2023-05-28 * Add more Python 3.12 sysconfigs in [#1629](https://github.com/PyO3/maturin/pull/1629) * Fix panicking when no cargo build targets are selected in [#1635](https://github.com/PyO3/maturin/pull/1635) ## [1.0.0] - 2023-05-23 * Add support for multiple `--config-settings` in PEP517 backend in [#1624](https://github.com/PyO3/maturin/pull/1624) * Remove deprecated `--universal2` cli option in [#1620](https://github.com/PyO3/maturin/pull/1620), use `--target universal2-apple-darwin` instead. ## [0.15.3] - 2023-05-20 * Fix cross compile Apple universal2 wheels on non-macOS platforms by MisLink in [#1613](https://github.com/PyO3/maturin/pull/1613) * Add PEP 517 `config_settings` support in [#1619](https://github.com/PyO3/maturin/pull/1619), deprecate `MATURIN_PEP517_ARGS` in favor of the new `build-args` config setting. ## [0.15.2] - 2023-05-16 * When determining the python module name, use pyproject.toml `project.name` over Cargo.toml `package.name` in [#1608](https://github.com/PyO3/maturin/pull/1608) * Fix rewriting `dev-dependencies` in sdist in [#1610](https://github.com/PyO3/maturin/pull/1610) ## [0.15.1] - 2023-05-07 * Fix finding interpreters from bundled sysconfigs in [#1598](https://github.com/PyO3/maturin/pull/1598) ## [0.15.0] - 2023-05-07 * **Breaking Change**: Build with `--no-default-features` by default when bootstrapping from sdist in [#1333](https://github.com/PyO3/maturin/pull/1333) * **Breaking Change**: Remove deprecated `sdist-include` option in `pyproject.toml` in [#1335](https://github.com/PyO3/maturin/pull/1335) * **Breaking Change**: Remove deprecated `python-source` option in `Cargo.toml` in [#1335](https://github.com/PyO3/maturin/pull/1335) * **Breaking Change**: Turn `patchelf` version warning into a hard error in [#1335](https://github.com/PyO3/maturin/pull/1335) * **Breaking Change**: [`uniffi_bindgen` CLI](https://mozilla.github.io/uniffi-rs/tutorial/Prerequisites.html#the-uniffi-bindgen-cli-tool) is required for building `uniffi` bindings wheels in [#1352](https://github.com/PyO3/maturin/pull/1352) * Add Cargo compile targets configuration for filtering multiple bin targets in [#1339](https://github.com/PyO3/maturin/pull/1339) * Respect `rustflags` settings in cargo configuration file in [#1405](https://github.com/PyO3/maturin/pull/1405) * Add support for uniffi 0.23 in [#1481](https://github.com/PyO3/maturin/pull/1481) * Add support for custom TLS certificate authority bundle in [#1483](https://github.com/PyO3/maturin/pull/1483) * Bump MSRV to 1.64.0 in [#1528](https://github.com/PyO3/maturin/pull/1528) * Add wildcards support to publish/upload commands on Windows in [#1534](https://github.com/PyO3/maturin/pull/1534) * Add support for configuring macOS deployment target version in `pyproject.toml` in [#1536](https://github.com/PyO3/maturin/pull/1536) * Rewrite platform specific dependencies in `Cargo.toml` by viccie30 in [#1572](https://github.com/PyO3/maturin/pull/1572) * Add trusted publisher support in [#1578](https://github.com/PyO3/maturin/pull/1578) * Add new `git` source distribution generator in [#1587](https://github.com/PyO3/maturin/pull/1587) ## [0.14.17] - 2023-04-06 * Fix wrong `EXT_SUFFIX` when cross compiling musllinux wheels for Python 3.11 in [#1560](https://github.com/PyO3/maturin/pull/1560) ## [0.14.16] - 2023-03-26 * Deprecate `package.metadata.maturin.name` in favor of `tool.maturin.module-name` in `pyproject.toml` in [#1531](https://github.com/PyO3/maturin/pull/1531) ## [0.14.15] - 2023-03-03 * Add sdist and sccache support to `generate-ci` command ## [0.14.14] - 2023-02-24 * Add support for Emscripten in `generate-ci` command in [#1484](https://github.com/PyO3/maturin/pull/1484) * Add support for linking with pyo3 in abi3 debug mode on Windows in [#1487](https://github.com/PyO3/maturin/pull/1487) * Use default `ext_suffix` for Emscripten target if not provided in `PYO3_CONFIG_FILE` in [#1491](https://github.com/PyO3/maturin/pull/1491) * Deprecate `package.metadata.maturin.data` in favor of `tool.maturin.data` in `pyproject.toml` in [#1492](https://github.com/PyO3/maturin/pull/1492) ## [0.14.13] - 2023-02-12 * `maturin develop` now looks for a virtualenv `.venv` in the current or any parent directory if no virtual environment is active. * Add a new `generate-ci` command to generate CI configuration in [#1456](https://github.com/PyO3/maturin/pull/1456) * Deprecate `--universal2` in favor of `universal2-apple-darwin` target in [#1457](https://github.com/PyO3/maturin/pull/1457) * Raise an error when `Cargo.toml` contains removed python package metadata in [#1471](https://github.com/PyO3/maturin/pull/1471) * Use `extension_name` instead of `module_name` for CFFI extensions in develop mode in [#1476](https://github.com/PyO3/maturin/pull/1476) ## [0.14.12] - 2023-01-31 * Keep `dev-dependencies` in sdist when there are no path dependencies in [#1441](https://github.com/PyO3/maturin/pull/1441) ## [0.14.11] - 2023-01-31 * Don't package dev-only path dependencies in sdist in [#1435](https://github.com/PyO3/maturin/pull/1435) ## [0.14.10] - 2023-01-13 * Use module name specified by `[package.metadata.maturin]` in [#1409](https://github.com/PyO3/maturin/pull/1409) ## [0.14.9] - 2023-01-10 * Don't pass `MACOSX_DEPLOYMENT_TARGET` when query default value from rustc in [#1395](https://github.com/PyO3/maturin/pull/1395) ## [0.14.8] - 2022-12-31 * Add support for packaging multiple pure Python packages in [#1378](https://github.com/PyO3/maturin/pull/1378) * Fallback to sysconfig interpreters for pyo3 bindings in [#1381](https://github.com/PyO3/maturin/pull/1381) ## [0.14.7] - 2022-12-20 * Add workspace lock file to sdist as a fallback in [#1362](https://github.com/PyO3/maturin/pull/1362) ## [0.14.6] - 2022-12-13 * Allow Rust crate to be placed outside of the directory containing `pyproject.toml` in [#1347](https://github.com/PyO3/maturin/pull/1347) * Disallow uniffi bin bindings in [#1353](https://github.com/PyO3/maturin/pull/1353) * Update bundled Python sysconfigs for Linux and macOS ## [0.14.5] - 2022-12-08 * Support `SOURCE_DATE_EPOCH` when building wheels in [#1334](https://github.com/PyO3/maturin/pull/1334) * Fix sdist when all Cargo workspace members are excluded in [#1343](https://github.com/PyO3/maturin/pull/1343) ## [0.14.4] - 2022-12-05 * Expanded architecture support for FreeBSD, NetBSD and OpenBSD in [#1318](https://github.com/PyO3/maturin/pull/1318) * Better error message when upload failed with status code 403 in [#1323](https://github.com/PyO3/maturin/pull/1323) ## [0.14.3] - 2022-12-01 * Bump MSRV to 1.62.0 in [#1297](https://github.com/PyO3/maturin/pull/1297) * Fix build error when required features of bin target isn't enabled in [#1299](https://github.com/PyO3/maturin/pull/1299) * Fix wrong platform tag when building in i386 docker container on x86_64 host in [#1301](https://github.com/PyO3/maturin/pull/1301) * Fix wrong platform tag when building in armv7 docker container on aarch64 host in [#1303](https://github.com/PyO3/maturin/pull/1303) * Add Solaris operating system support in [#1310](https://github.com/PyO3/maturin/pull/1310) * Add armv6 and armv7 target support for FreeBSD in [#1312](https://github.com/PyO3/maturin/pull/1312) * Add riscv64 and powerpc target support for FreeBSD in [#1313](https://github.com/PyO3/maturin/pull/1313) * Fix powerpc64 and powerpc64le Python wheel platform tag for FreeBSD in [#1313](https://github.com/PyO3/maturin/pull/1313) ## [0.14.2] - 2022-11-24 * Tighten src-layout detection logic in [#1281](https://github.com/PyO3/maturin/pull/1282) * Fix generating pep517 sdist for src-layout in [#1288](https://github.com/PyO3/maturin/pull/1288) * Deprecate `python-source` option in `Cargo.toml` in favor of the one in `pyproject.toml` in [#1291](https://github.com/PyO3/maturin/pull/1291) * Fix auditwheel with read-only libraries in [#1292](https://github.com/PyO3/maturin/pull/1292) ## [0.14.1] - 2022-11-20 * Downgrade `cargo_metadata` to 0.15.0 to fix `maturin build` on old Rust versions like 1.48.0 in [#1279](https://github.com/PyO3/maturin/pull/1279) ## [0.14.0] - 2022-11-19 * **Breaking Change**: Remove support for specifying python package metadata in `Cargo.toml` in [#1200](https://github.com/PyO3/maturin/pull/1200). Python package metadata should be specified in the `project` section of `pyproject.toml` instead as [PEP 621](https://peps.python.org/pep-0621/) specifies. * Initial support for shipping bin targets as wasm32-wasi binaries that are run through wasmtime in [#1107](https://github.com/PyO3/maturin/pull/1107). Note that wasmtime currently only support the five most popular platforms and that wasi binaries have restrictions when interacting with the host. Usage is by setting `--target wasm32-wasi`. * Add support for python first [`src` project layout](https://py-pkgs.org/04-package-structure.html#the-source-layout) in [#1185](https://github.com/PyO3/maturin/pull/1185) * Add `--src` option to generate src layout for mixed Python/Rust projects in [#1189](https://github.com/PyO3/maturin/pull/1189) * Add Python metadata support for `license-file` field of `Cargo.toml` in [#1195](https://github.com/PyO3/maturin/pull/1195) * Upgrade to clap 4.0 in [#1197](https://github.com/PyO3/maturin/pull/1197). This bumps MSRV to 1.61.0. * Remove `workspace.members` in `Cargo.toml` from sdist if there isn't any path dependency in #[1227](https://github.com/PyO3/maturin/pull/1227) * Fix auditwheel `libpython` check on Python 3.7 and older versions in [#1229](https://github.com/PyO3/maturin/pull/1229) * Use generic tags when `sys.implementation.name` != `platform.python_implementation()` in [#1232](https://github.com/PyO3/maturin/pull/1232). Fixes the compatibility tags for Pyston. * Set default macOS deployment target version if `MACOSX_DEPLOYMENT_TARGET` isn't specified in [#1251](https://github.com/PyO3/maturin/pull/1251) * Add support for 32-bit x86 FreeBSD target in [#1254](https://github.com/PyO3/maturin/pull/1254) * Add `[tool.maturin.include]` and `[tool.maturin.exclude]` and deprecate `[tool.maturin.sdist-include]` [#1255](https://github.com/PyO3/maturin/pull/1255) * Ignore sdist tar ball instead of error out in [#1259](https://github.com/PyO3/maturin/pull/1259) * Add support for [`uniffi`](https://github.com/mozilla/uniffi-rs) bindings in [#1275](https://github.com/PyO3/maturin/pull/1275) ## [0.13.7] - 2022-10-29 * Fix macOS `LC_ID_DYLIB` for abi3 wheels in [#1208](https://github.com/PyO3/maturin/pull/1208) * Pass `--locked` to Cargo when bootstrap from sdist in [#1212](https://github.com/PyO3/maturin/pull/1212) * Fix build for Python 3.11 on Windows in [#1222](https://github.com/PyO3/maturin/pull/1222) ## [0.13.6] - 2022-10-08 * Fix `maturin develop` in Windows conda virtual environment in [#1146](https://github.com/PyO3/maturin/pull/1146) * Fix build for crate using `pyo3` and `build.rs` without `cdylib` crate type in [#1150](https://github.com/PyO3/maturin/pull/1150) * Fix build on some 32-bit platform by downgrading `indicatif` in [#1163](https://github.com/PyO3/maturin/pull/1163) * Include `Cargo.lock` by default in source distribution in [#1170](https://github.com/PyO3/maturin/pull/1170) ## [0.13.5] - 2022-09-27 * Fix resolving crate name bug in [#1142](https://github.com/PyO3/maturin/pull/1142) ## [0.13.4] - 2022-09-27 * Fix `Cargo.toml` in new project template in [#1109](https://github.com/PyO3/maturin/pull/1109) * Fix `maturin develop` on Windows when using Python installed from msys2 in [#1112](https://github.com/PyO3/maturin/pull/1112) * Fix duplicated `Cargo.toml` of local dependencies in sdist in [#1114](https://github.com/PyO3/maturin/pull/1114) * Add support for Cargo workspace dependencies inheritance in [#1123](https://github.com/PyO3/maturin/pull/1123) * Add support for Cargo workspace metadata inheritance in [#1131](https://github.com/PyO3/maturin/pull/1131) * Use `goblin` instead of shelling out to `patchelf` to get rpath in [#1139](https://github.com/PyO3/maturin/pull/1139) ## [0.13.3] - 2022-09-15 * Allow user to override default Emscripten settings in [#1059](https://github.com/PyO3/maturin/pull/1059) * Enable `--crate-type cdylib` on Rust 1.64.0 in [#1060](https://github.com/PyO3/maturin/pull/1060) * Update MSRV to 1.59.0 in [#1071](https://github.com/PyO3/maturin/pull/1071) * Fix abi3 wheel build when no Python interpreters found in [#1072](https://github.com/PyO3/maturin/pull/1072) * Add `zig ar` support in [#1073](https://github.com/PyO3/maturin/pull/1073) * Fix sdist build for optional path dependencies in [#1084](https://github.com/PyO3/maturin/pull/1084) * auditwheel: find dylibs in Cargo target directory in [#1092](https://github.com/PyO3/maturin/pull/1092) * Add library search paths in Cargo target directory to rpath in editable mode on Linux in [#1094](https://github.com/PyO3/maturin/pull/1094) * Remove default manifest path for `maturin sdist` command in [#1097](https://github.com/PyO3/maturin/pull/1097) * Fix sdist when `pyproject.toml` isn't in the same dir of `Cargo.toml` in [#1099](https://github.com/PyO3/maturin/pull/1099) * Change readme and license paths in `pyproject.toml` to be relative to `pyproject.toml` in [#1100](https://github.com/PyO3/maturin/pull/1100). It's technically a **breaking change**, but previously it doesn't work properly. * Add python source files specified in pyproject.toml to sdist in [#1102](https://github.com/PyO3/maturin/pull/1102) * Change `sdist-include` paths to be relative to `pyproject.toml` in [#1103](https://github.com/PyO3/maturin/pull/1103) ## [0.13.2] - 2022-08-14 * Deprecate manylinux 2010 support in [#858](https://github.com/PyO3/maturin/pull/858). The [manylinux](https://github.com/pypa/manylinux) project already dropped its support and the rustc compiler will [drop glibc 2.12 support in 1.64.0](https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html). * Add Linux mips64el architecture support in [#1023](https://github.com/PyO3/maturin/pull/1023) * Add Linux mipsel architecture support in [#1024](https://github.com/PyO3/maturin/pull/1024) * Add Linux 32-bit powerpc architecture support in [#1026](https://github.com/PyO3/maturin/pull/1026) * Add Linux sparc64 architecture support in [#1027](https://github.com/PyO3/maturin/pull/1027) * Add PEP 440 local version identifier support in [#1037](https://github.com/PyO3/maturin/pull/1037) * Fix inconsistent `Cargo.toml` and `pyproject.toml` path handling in [#1043](https://github.com/PyO3/maturin/pull/1043) * Find python module next to `pyproject.toml` if `pyproject.toml` exists in [#1044](https://github.com/PyO3/maturin/pull/1044). It's technically a **breaking change**, but previously it doesn't work properly if the directory containing `pyproject.toml` isn't recognized as project root. * Add `python-source` option to `[tool.maturin]` section of pyproject.toml in [#1046](https://github.com/PyO3/maturin/pull/1046) * Deprecate support for specifying python metadata in `Cargo.toml` in [#1048](https://github.com/PyO3/maturin/pull/1048). Please migrate to [PEP 621](https://peps.python.org/pep-0621/) instead. * Change `python-source` to be relative to the file specifies it in [#1049](https://github.com/PyO3/maturin/pull/1049) * Change `data` to be relative to the file specifies it in [#1051](https://github.com/PyO3/maturin/pull/1051) * Don't reinstall dependencies in `maturin develop` in [#1052](https://github.com/PyO3/maturin/pull/1052) * Find `pyproject.toml` in parent directories of `Cargo.toml` in [#1054](https://github.com/PyO3/maturin/pull/1054) ## [0.13.1] - 2022-07-26 * Add 64-bit RISC-V support by felixonmars in [#1001](https://github.com/PyO3/maturin/pull/1001) * Add support for invoking with `python3 -m maturin` in [#1008](https://github.com/PyO3/maturin/pull/1008) * Fix detection of optional dependencies when declaring `features` in `pyproject.toml` in [#1014](https://github.com/PyO3/maturin/pull/1014) * Respect user specified Rust target in `maturin develop` in [#1016](https://github.com/PyO3/maturin/pull/1016) * Use `cargo rustc --crate-type cdylib` on Rust nightly/dev channel in [#1020](https://github.com/PyO3/maturin/pull/1020) ## [0.13.0] - 2022-07-09 * **Breaking Change**: Drop support for python 3.6, which is end of life in [#945](https://github.com/PyO3/maturin/pull/945) * **Breaking Change**: Don't build source distribution by default in `maturin build` command in [#955](https://github.com/PyO3/maturin/pull/955), `--no-sdist` option is replaced by `--sdist` * **Breaking Change**: maturin no longer search for python interpreters by default and only build for current interpreter in `PATH` in [#964](https://github.com/PyO3/maturin/pull/964) * **Breaking Change**: Removed `--cargo-extra-args` and `--rustc-extra-args` options in [#972](https://github.com/PyO3/maturin/pull/972). You can now pass all common `cargo build` arguments directly to `maturin build` * **Breaking Change**: `--repository-url` option in `upload` command no longer accepts plain repository name, full url required and `-r` short option moved to `--repository` in [#987](https://github.com/PyO3/maturin/pull/987) * Add support for building with multiple binary targets in [#948](https://github.com/PyO3/maturin/pull/948) * Add a `--target` option to `maturin list-python` command in [#957](https://github.com/PyO3/maturin/pull/957) * Add support for using bundled python sysconfigs for PyPy when abi3 feature is enabled in [#958](https://github.com/PyO3/maturin/pull/958) * Add support for cross compiling PyPy wheels when abi3 feature is enabled in [#963](https://github.com/PyO3/maturin/pull/963) * Add `--find-interpreter` option to `build` and `publish` commands to search for python interpreters in [#964](https://github.com/PyO3/maturin/pull/964) * Infer target triple from `ARCHFLAGS` for macOS to be compatible with `cibuildwheel` in [#967](https://github.com/PyO3/maturin/pull/967) * Expose commonly used Cargo CLI options in `maturin build` command in [#972](https://github.com/PyO3/maturin/pull/972) * Add support for `wasm32-unknown-emscripten` target in [#974](https://github.com/PyO3/maturin/pull/974) * Allow overriding platform release version using env var in [#975](https://github.com/PyO3/maturin/pull/975) * Fix `maturin develop` for arm64 Python on M1 Mac when default toolchain is x86_64 in [#980](https://github.com/PyO3/maturin/pull/980) * Add `--repository` option to `maturin upload` command in [#987](https://github.com/PyO3/maturin/pull/987) * Only lookup bundled Python sysconfig when interpreters aren't specified as file path in [#988](https://github.com/PyO3/maturin/pull/988) * Find CPython upper to 3.12 and PyPy upper to 3.10 in [#993](https://github.com/PyO3/maturin/pull/993) * Add short alias `maturin b` for `maturin build` and `maturin dev` for `maturin develop` subcommands in [#994](https://github.com/PyO3/maturin/pull/994) ## [0.12.20] - 2022-06-15 * Fix incompatibility with cibuildwheel for 32-bit Windows in [#951](https://github.com/PyO3/maturin/pull/951) * Don't require `pip` error messages to be utf-8 encoding in [#953](https://github.com/PyO3/maturin/pull/953) * Compare minimum python version requirement between `requires-python` and bindings crate in [#954](https://github.com/PyO3/maturin/pull/954) * Set `PYO3_PYTHON` env var for PyPy when abi3 is enabled in [#960](https://github.com/PyO3/maturin/pull/960) * Add sysconfigs for x64 Windows PyPy in [#962](https://github.com/PyO3/maturin/pull/962) * Add support for Linux armv6l in [#966](https://github.com/PyO3/maturin/pull/966) * Fix auditwheel bundled shared libs directory name in [#969](https://github.com/PyO3/maturin/pull/969) ## [0.12.19] - 2022-06-05 * Fix Windows Store install detection in [#949](https://github.com/PyO3/maturin/pull/949) * Filter Python interpreters by target pointer width on Windows in [#950](https://github.com/PyO3/maturin/pull/950) ## [0.12.18] - 2022-05-29 * Add support for building bin bindings wheels with multiple platform tags in [#928](https://github.com/PyO3/maturin/pull/928) * Skip auditwheel for non-compliant linux environment automatically in [#931](https://github.com/PyO3/maturin/pull/931) * Fix abi3 wheel build issue when no Python interpreters found on host in [#933](https://github.com/PyO3/maturin/pull/933) * Add Python 3.11 sysconfigs for Linux, macOS and Windows in [#934](https://github.com/PyO3/maturin/pull/934) * Add Python 3.11 sysconfig for arm64 Windows in [#936](https://github.com/PyO3/maturin/pull/936) * Add network proxy support to upload command in [#939](https://github.com/PyO3/maturin/pull/939) * Fix python interpreter detection on arm64 Windows in [#940](https://github.com/PyO3/maturin/pull/940) * Fallback to `py -X.Y` when `pythonX.Y` cannot be found on Windows in [#943](https://github.com/PyO3/maturin/pull/943) * Auto-detect Python Installs from Microsoft Store in [#944](https://github.com/PyO3/maturin/pull/944) * Add bindings detection to bin targets in [#938](https://github.com/PyO3/maturin/pull/938) ## [0.12.17] - 2022-05-18 * Don't consider compile to i686 on x86_64 Windows cross compiling in [#923](https://github.com/PyO3/maturin/pull/923) * Accept `-i x.y` and `-i python-x.y` in `maturin build` command in [#925](https://github.com/PyO3/maturin/pull/925) ## [0.12.16] - 2022-05-16 * Add Linux armv7l python sysconfig in [#901](https://github.com/PyO3/maturin/pull/901) * Add NetBSD python sysconfig in [#903](https://github.com/PyO3/maturin/pull/903) * Update 'replace_needed' to reduce total calls to 'patchelf' in [#905](https://github.com/PyO3/maturin/pull/905) * Add wheel data support in [#906](https://github.com/PyO3/maturin/pull/906) * Allow use python interpreters from bundled sysconfig when not cross compiling in [#907](https://github.com/PyO3/maturin/pull/907) * Use setuptools-rust for bootstrapping in [#909](https://github.com/PyO3/maturin/pull/909) * Allow setting the publish repository URL via `MATURIN_REPOSITORY_URL` in [#913](https://github.com/PyO3/maturin/pull/913) * Allow stubs-only mixed project layout in [#914](https://github.com/PyO3/maturin/pull/914) * Allow setting the publish user name via `MATURIN_USERNAME` in [#915](https://github.com/PyO3/maturin/pull/915) * Add Windows python sysconfig in [#917](https://github.com/PyO3/maturin/pull/917) * Add support for `generate-import-lib` feature of pyo3 in [#918](https://github.com/PyO3/maturin/pull/918) * Integrate [`cargo-xwin`](https://github.com/messense/cargo-xwin) for cross compiling to Windows MSVC targets in [#919](https://github.com/PyO3/maturin/pull/919) ## [0.12.15] - 2022-05-07 * Re-export `__all__` for pure Rust projects in [#886](https://github.com/PyO3/maturin/pull/886) * Stop setting `RUSTFLAGS` environment variable to an empty string in [#887](https://github.com/PyO3/maturin/pull/887) * Add hardcoded well-known sysconfigs for effortless cross compiling in [#896](https://github.com/PyO3/maturin/pull/896) * Add support for `PYO3_CONFIG_FILE` in [#899](https://github.com/PyO3/maturin/pull/899) ## [0.12.14] - 2022-04-25 * Fix PyPy pep517 build when abi3 feature is enabled in [#883](https://github.com/PyO3/maturin/pull/883) ## [0.12.13] - 2022-04-25 * Stop setting `PYO3_NO_PYTHON` environment variable for pyo3 0.16.4 and later in [#875](https://github.com/PyO3/maturin/pull/875) * Build Windows abi3 wheels for `pyo3` 0.16.4 and later versions with `generate-abi3-import-lib` feature enabled no longer require a Python interpreter in [#879](https://github.com/PyO3/maturin/pull/879) ## [0.12.12] - 2022-04-07 * Migrate docker image to GitHub container registry in [#845](https://github.com/PyO3/maturin/pull/845) * Change mixed rust/python template project layout for new projects in [#855](https://github.com/PyO3/maturin/pull/855) * Automatically include license files in `.dist-info/license_files` following PEP 639 in [#862](https://github.com/PyO3/maturin/pull/862) * Bring back multiple values support for `--interpreter` option in [#873](https://github.com/PyO3/maturin/pull/873) * Update the default edition to 2021 for new projects by sa- in [#874](https://github.com/PyO3/maturin/pull/874) * Drop `python3.6` from `ghcr.io/pyo3/maturin` docker image. ## [0.12.11] - 2022-03-15 * Package license files in `.dist-info/license_files` following PEP 639 in [#837](https://github.com/PyO3/maturin/pull/837) * Stop testing Python 3.6 on CI since it's already EOL in [#840](https://github.com/PyO3/maturin/pull/840) * Update workspace members for sdist local dependencies in [#844](https://github.com/PyO3/maturin/pull/844) * Migrate docker image to github container registry in [#845](https://github.com/PyO3/maturin/pull/845) * Remove `PYO3_NO_PYTHON` hack for Windows in [#848](https://github.com/PyO3/maturin/pull/848) * Remove Windows abi3 python lib link hack in [#851](https://github.com/PyO3/maturin/pull/851) * Add `-r` option as a short alias for `--release` in [#854](https://github.com/PyO3/maturin/pull/854) ## [0.12.10] - 2022-03-09 * Add support for `pyo3-ffi` by ijl in [#804](https://github.com/PyO3/maturin/pull/804) * Defaults to `musllinux_1_2` for musl target if it's not bin bindings in [#808](https://github.com/PyO3/maturin/pull/808) * Remove support for building only sdist via `maturin build -i` in [#813](https://github.com/PyO3/maturin/pull/813), use `maturin sdist` instead. * Add macOS target support for `--zig` in [#817](https://github.com/PyO3/maturin/pull/817) * Migrate Python dependency `toml` to `tomllib` / `tomli` by Contextualist in [#821](https://github.com/PyO3/maturin/pull/821) * Disable auditwheel for PEP 517 build wheel process in [#823](https://github.com/PyO3/maturin/pull/823) * Lookup existing cffi `header.h` in workspace target directory in [#833](https://github.com/PyO3/maturin/pull/833) * Fix license line ending in wheel metadata for Windows in [#836](https://github.com/PyO3/maturin/pull/836) ## [0.12.9] - 2022-02-09 * Don't require `pyproject.toml` when cargo manifest is not specified in [#806](https://github.com/PyO3/maturin/pull/806) ## [0.12.8] - 2022-02-08 * Add missing `--version` flag from clap 3.0 upgrade ## [0.12.7] - 2022-02-08 * Add support for using [`zig cc`](https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html) as linker for easier cross compiling and manylinux compliance in [#756](https://github.com/PyO3/maturin/pull/756) * Switch from reqwest to ureq to reduce dependencies in [#767](https://github.com/PyO3/maturin/pull/767) * Fix missing Python submodule in wheel in [#772](https://github.com/PyO3/maturin/pull/772) * Add support for specifying cargo manifest path in pyproject.toml in [#781](https://github.com/PyO3/maturin/pull/781) * Add support for passing arguments to pep517 command via `MATURIN_PEP517_ARGS` env var in [#786](https://github.com/PyO3/maturin/pull/786) * Fix auditwheel `No such file or directory` error when `LD_LIBRARY_PATH` contains non-existent paths in [#794](https://github.com/PyO3/maturin/pull/794) ## [0.12.6] - 2021-12-31 * Add support for repairing cross compiled linux wheels in [#754](https://github.com/PyO3/maturin/pull/754) * Add support for `manylinux_2_28` and `manylinux_2_31` in [#755](https://github.com/PyO3/maturin/pull/755) * Remove existing so file first in `maturin develop` command to avoid triggering SIGSEV in running process in [#760](https://github.com/PyO3/maturin/pull/760) ## [0.12.5] - 2021-12-20 * Fix docs for `new` and `init` commands in `maturin --help` in [#734](https://github.com/PyO3/maturin/pull/734) * Add support for x86_64 Haiku in [#735](https://github.com/PyO3/maturin/pull/735) * Fix undefined auditwheel policy panic in [#740](https://github.com/PyO3/maturin/pull/740) * Fix sdist upload for packages where the pkgname contains multiple underscores in [#741](https://github.com/PyO3/maturin/pull/741) * Implement auditwheel repair with patchelf in [#742](https://github.com/PyO3/maturin/pull/742) * Add `Cargo.lock` to sdist when `--locked` or `--frozen` specified in [#749](https://github.com/PyO3/maturin/pull/749) * Infer readme file if not specified in [#751](https://github.com/PyO3/maturin/pull/751) ## [0.12.4] - 2021-12-06 * Add a `maturin init` command as a companion to `maturin new` in [#719](https://github.com/PyO3/maturin/pull/719) * Don't package non-path-dep crates in sdist for workspaces in [#720](https://github.com/PyO3/maturin/pull/720) * Build release packages with `password-storage` feature in [#725](https://github.com/PyO3/maturin/pull/725) * Add support for x86_64 DargonFly BSD in [#727](https://github.com/PyO3/maturin/pull/727) * Add a Python import hook in [#729](https://github.com/PyO3/maturin/pull/729) * Allow pip warnings in `maturin develop` command in [#732](https://github.com/PyO3/maturin/pull/732) ## [0.12.3] - 2021-11-29 * Use platform tag from `sysconfig.platform` on non-portable Linux in [#709](https://github.com/PyO3/maturin/pull/709) * Consider current machine architecture when generating platform tags for abi3 wheels on linux in [#709](https://github.com/PyO3/maturin/pull/709) * Revert back to Rust 2018 edition in [#710](https://github.com/PyO3/maturin/pull/710) * Warn missing `cffi` package dependency in [#711](https://github.com/PyO3/maturin/pull/711) * Add support for Illumos in [#712](https://github.com/PyO3/maturin/pull/712) * Account for `MACOSX_DEPLOYMENT_TARGET` env var in wheel platform tag in [#716](https://github.com/PyO3/maturin/pull/716) ## [0.12.2] - 2021-11-26 * Add support for excluding files from wheels by `.gitignore` in [#695](https://github.com/PyO3/maturin/pull/695) * Fix `pip install maturin` on OpenBSD 6.8 in [#697](https://github.com/PyO3/maturin/pull/697) * Add support for x86, x86_64 and aarch64 on NetBSD in [#704](https://github.com/PyO3/maturin/pull/704) * Add a `maturin new` command for bootstrapping new projects in [#705](https://github.com/PyO3/maturin/pull/705) ## [0.12.1] - 2021-11-21 * Add support for cross compiling PyPy wheels in [#687](https://github.com/PyO3/maturin/pull/687) * Fix `sysconfig.get_platform` parsing for macOS in [#690](https://github.com/PyO3/maturin/pull/690) ## [0.12.0] - 2021-11-19 * Add support for PEP 660 editable installs in [#648](https://github.com/PyO3/maturin/pull/648) * Publish musllinux_1_1 wheels for maturin in [#651](https://github.com/PyO3/maturin/pull/651) * Refactor `develop` command to act identical to PEP 660 editable wheels in [#653](https://github.com/PyO3/maturin/pull/653) * Upgrade to Rust 2021 edition in [#655](https://github.com/PyO3/maturin/pull/655) * Add support for powerpc64 and powerpc64le on FreeBSD by pkubaj in [#656](https://github.com/PyO3/maturin/pull/656) * Fix false positive missing pyinit warning on arm64 macOS in [#673](https://github.com/PyO3/maturin/pull/673) * Build without rustls on arm64 Windows by nsait-linaro in [#674](https://github.com/PyO3/maturin/pull/674) * Publish Windows arm64 wheels to PyPI by nsait-linaro in [#675](https://github.com/PyO3/maturin/pull/675) * Add support for building on Windows mingw platforms in [#677](https://github.com/PyO3/maturin/pull/677) * Allow building for non-abi3 pypy wheels when the abi3 feature is enabled in [#678](https://github.com/PyO3/maturin/pull/678) * Add support for cross compiling to different operating systems in [#680](https://github.com/PyO3/maturin/pull/680) ## [0.11.5] - 2021-10-13 * Fixed module documentation missing bug of pyo3 bindings in [#639](https://github.com/PyO3/maturin/pull/639) * Fix musllinux auditwheel wrongly detects libc forbidden link in [#643](https://github.com/PyO3/maturin/pull/643) * Fix finding conda Python interpreters on Windows by RobertColton in [#644](https://github.com/PyO3/maturin/pull/644) * Fix Unicode metadata when uploading to PyPI in [#645](https://github.com/PyO3/maturin/pull/645) * Fix incorrectly folded long `Summary` metadata * Fix cross compilation for Python 3.10 in [#646](https://github.com/PyO3/maturin/pull/646) ## [0.11.4] - 2021-09-28 * Autodetect PyPy executables in [#617](https://github.com/PyO3/maturin/pull/617) * auditwheel: add `libz.so.1` to whitelisted libraries in [#625](https://github.com/PyO3/maturin/pull/625) * auditwheel: detect musl libc in [#629](https://github.com/PyO3/maturin/pull/629) * Fixed Python 3.10 and later versions detection on Windows in [#630](https://github.com/PyO3/maturin/pull/630) * Install entrypoint scripts in `maturin develop` command in [#633](https://github.com/PyO3/maturin/pull/633) and [#634](https://github.com/PyO3/maturin/pull/634) * Add support for installing optional dependencies in `maturin develop` command in [#635](https://github.com/PyO3/maturin/pull/635) * Fixed build error when `manylinux`/`compatibility` options is specified in `pyproject.toml` in [#637](https://github.com/PyO3/maturin/pull/637) ## [0.11.3] - 2021-08-25 * Add path option for Python source in [#584](https://github.com/PyO3/maturin/pull/584) * Add auditwheel support for musllinux in [#597](https://github.com/PyO3/maturin/pull/597) * `[tool.maturin]` options from `pyproject.toml` will be used automatically in [#605](https://github.com/PyO3/maturin/pull/605) * Skip unavailable Python interpreters from pyenv in [#609](https://github.com/PyO3/maturin/pull/609) ## [0.11.2] - 2021-07-20 * Use UTF-8 encoding when reading `pyproject.toml` by domdfcoding in [#588](https://github.com/PyO3/maturin/pull/588) * Use Cargo's `repository` field as `Source Code` in project URL in [#590](https://github.com/PyO3/maturin/pull/590) * Fold long header fields in Python metadata in [#594](https://github.com/PyO3/maturin/pull/594) * Fix `maturin develop` for PyPy on Unix in [#596](https://github.com/PyO3/maturin/pull/596) ## [0.11.1] - 2021-07-10 * Fix sdist error when VCS has uncommitted renamed files in [#585](https://github.com/PyO3/maturin/pull/585) * Add `maturin completions ` command to generate shell completions in [#586](https://github.com/PyO3/maturin/pull/586) ## [0.11.0] - 2021-07-04 * Add support for reading metadata from [PEP 621](https://www.python.org/dev/peps/pep-0621/) project table in `pyproject.toml` in [#555](https://github.com/PyO3/maturin/pull/555) * Users should migrate away from the old `[package.metadata.maturin]` table of `Cargo.toml` to this new `[project]` table of `pyproject.toml` * Add PEP 656 musllinux support in [#543](https://github.com/PyO3/maturin/pull/543) * `--manylinux` is now called `--compatibility` and supports musllinux * The pure rust install layout changed from just the shared library to a python module that reexports the shared library. This should have now observable consequences for users of the created wheel expect that `my_project.my_project` is now also importable (and equal to just `my_project`) * Add support for packaging type stubs in pure Rust project layout in [#567](https://github.com/PyO3/maturin/pull/567) * Support i386 on OpenBSD in [#568](https://github.com/PyO3/maturin/pull/568) * Support Aarch64 on OpenBSD in [#570](https://github.com/PyO3/maturin/pull/570) * Support Aarch64 on FreeBSD in [#571](https://github.com/PyO3/maturin/pull/571) * `Cargo.toml`'s `authors` field is now optional per Rust [RFC 3052](https://github.com/rust-lang/rfcs/blob/master/text/3052-optional-authors-field.md) in [#573](https://github.com/PyO3/maturin/pull/573) * Allow dotted keys in `Cargo.toml` by switch from `toml_edit` to `toml` crate in [#577](https://github.com/PyO3/maturin/pull/577) * Fix source distribution with local path dependencies on Windows in [#580](https://github.com/PyO3/maturin/pull/580) ## [0.10.6] - 2021-05-21 * Fix corrupted macOS binary release in [#547](https://github.com/PyO3/maturin/pull/547) * Fix build with the "upload" feature disabled by ravenexp in [#548](https://github.com/PyO3/maturin/pull/548) ## [0.10.5] - 2021-05-21 * Add `manylinux_2_27` support in [#521](https://github.com/PyO3/maturin/pull/521) * Add support for Windows arm64 target in [#524](https://github.com/PyO3/maturin/pull/524) * Always output PEP 600 platform tags in [#525](https://github.com/PyO3/maturin/pull/525) * Fix missing `PyInit_` warning with Rust submodule in [#528](https://github.com/PyO3/maturin/pull/528) * Better cross compiling support for PyO3 binding on Unix in [#454](https://github.com/PyO3/maturin/pull/454) * Fix s390x architecture support in [#530](https://github.com/PyO3/maturin/pull/530) * Fix auditwheel panic with s390x wheels in [#532](https://github.com/PyO3/maturin/pull/532) * Support uploading heterogeneous wheels by ravenexp in [#544](https://github.com/PyO3/maturin/pull/544) * Warn about `pyproject.toml` missing maturin version constraint in [#545](https://github.com/PyO3/maturin/pull/545) ## [0.10.4] - 2021-04-28 * Interpreter search now uses python 3.6 to 3.12 in [#495](https://github.com/PyO3/maturin/pull/495) * Consider requires-python when searching for interpreters in [#495](https://github.com/PyO3/maturin/pull/495) * Support Rust extension as a submodule in mixed Python/Rust projects in [#489](https://github.com/PyO3/maturin/pull/489) ## [0.10.3] - 2021-04-13 * The `upload` command is now implemented, it is mostly similar to `twine upload`. [#484](https://github.com/PyO3/maturin/pull/484) * Interpreter search now uses python 3.6 to 3.12 * Add basic support for OpenBSD in [#496](https://github.com/PyO3/maturin/pull/496) * Fix the PowerPC platform by messense in [#503](https://github.com/PyO3/maturin/pull/503) ## [0.10.2] - 2021-04-03 * Fix `--target` being silently ignored ## [0.10.1] - 2021-04-03 * Fix a regression in 0.10.0 that would incorrectly assume we're building for musl instead of gnu by messense in [#487](https://github.com/PyO3/maturin/pull/487) * Basic s390x support ## [0.10.0] - 2021-04-02 * Change manylinux default version based on target arch by messense in [#424](https://github.com/PyO3/maturin/pull/424) * Support local path dependencies in source distribution (i.e. you can now package a workspace into an sdist) * Set a more reasonable LC_ID_DYLIB entry on macOS by messense [#433](https://github.com/PyO3/maturin/pull/433) * Add `--skip-existing` option to publish by messense [#444](https://github.com/PyO3/maturin/pull/444) * maturn develop install dependencies automatically by messense [#443](https://github.com/PyO3/maturin/pull/443) * Load credential from pypirc using repository name instead of package name by messense [#445](https://github.com/PyO3/maturin/pull/445) * Add `manylinux_2_24` support in [#451](https://github.com/PyO3/maturin/pull/451) * Improve error message when auditwheel failed to find versioned offending symbols in [#452](https://github.com/PyO3/maturin/pull/452) * Add auditwheel test to CI in [#455](https://github.com/PyO3/maturin/pull/455) * Fix sdist transitive path dependencies. * auditwheel choose higher priority tag when possible in [#456](https://github.com/PyO3/maturin/pull/456), dropped `auditwheel` Cargo feature. * develop now writes an [INSTALLER](https://packaging.python.org/specifications/recording-installed-packages/#the-installer-file) file * develop removes an old .dist-info directory if it exists before installing the new one * Fix wheels for PyPy on windows containing extension modules with incorrect names. [#482](https://github.com/PyO3/maturin/pull/482) ## [0.9.4] - 2021-02-18 * Fix building a bin with musl ## [0.9.3] * CI failure ## [0.9.2] - 2021-02-17 * Escape version in wheel metadata by messense in [#420](https://github.com/PyO3/maturin/pull/420) * Set executable bit on shared library by messense in [#421](https://github.com/PyO3/maturin/pull/421) * Rename `classifier` to `classifiers` for pypi compatibility. The old `classifier` is still available and now also works with pypi * Fix building for musl by automatically setting `-C target-feature=-crt-static` ## [0.9.1] - 2021-01-13 * Error when the `abi3` feature is selected but no minimum version * Support building universal2 wheels (x86 and aarch64 in a single file) by messense in [#403](https://github.com/PyO3/maturin/pull/403) * Recognize `PYO3_CROSS_LIB_DIR` for cross compiling with abi3 targeting windows. * `package.metadata.maturin.classifier` is renamed to `classifiers` by kngwyu in [#416](https://github.com/PyO3/maturin/pull/416) * Added more instructions to building complex manylinux setups ## [0.9.0] - 2021-01-10 * Added support for building abi3 wheels with pyo3 0.13.1 * Python 3.9 is supported (it should have worked before, but it is now tested on ci) * There are 64-bit and aarch64 binary builds for linux and 64-bit builds for windows, mac and freebsd-12-1 * The auditwheel options have changed to `--manylinux=[off|2010|2014]` with manylinux2010 as default, and optionally `--skip-auditwheel`. * Removed Python 3.5 since it is unsupported * The default and minimum manylinux version is now manylinux2010 * restructured text (rst) readmes are now supported, by clbarnes in [#360](https://github.com/PyO3/maturin/pull/360) * Allow python 3 interpreter with debuginfo use maturin by inevity in [#370](https://github.com/PyO3/maturin/pull/370) * pypirc is checked for credentials by houqp in [#374](https://github.com/PyO3/maturin/pull/374) * Added support for PowerPC by mzpqnxow and programmerjake in [#366](https://github.com/PyO3/maturin/pull/366) * `project-url` is now a toml dictionary instead of a toml list to conform to the standard * No more retry loop when the password was wrong * When bootstrapping, also search for `cargo.exe` if `cargo` was not found ## [0.8.3] - 2020-08-17 ### Added * tox is now supported due to a bugfix in the latest version of tox * `[tool.maturin]` now supports `sdist-include = ["path/**/*"]` to include arbitrary files in source distributions ([#296](https://github.com/PyO3/maturin/pull/296)). * Add support for PyO3 `0.12`'s `PYO3_PYTHON` environment variable. [#331](https://github.com/PyO3/maturin/pull/331) ### Fixed * Fix incorrectly returning full path (not basename) from PEP 517 `build_sdist` hook. This fixes tox support from maturin's side * Packages installed with `maturin develop` are now visible to pip and can be uninstalled with pip ## [0.8.2] - 2020-06-29 ### Added * Python 3.8 was added to PATH in the docker image by oconnor663 in [#302](https://github.com/PyO3/maturin/pull/302) ## [0.8.1] - 2020-04-30 ### Added * cffi is installed if it's missing and python is running inside a virtualenv. ## [0.8.0] - 2020-04-03 ### Added * There is now a binary wheel for aarch64 * Warn if there are local dependencies ### Fixed * Omit author_email if `@` is not found in authors by evandrocoan in [#290](https://github.com/PyO3/maturin/pull/290) ## [0.7.9] - 2020-03-06 ### Fixed * This release includes binary wheels for mac os ## [0.7.8] - 2020-03-06 ### Added * Added support from arm, specifically arm7l, aarch64 by ijl in [#273](https://github.com/PyO3/maturin/pull/273) * Added support for manylinux2014 by ijl in [#273](https://github.com/PyO3/maturin/pull/273) ### Fixed * Remove python 2 from tags by ijl in [#254](https://github.com/PyO3/maturin/pull/254) * 32-bit wheels didn't work on linux. This has been fixed by dae in [#250](https://github.com/PyO3/maturin/pull/250) * The path of the RECORD file on windows used a backward slash instead of a forward slash ## [0.7.7] - 2019-11-12 ### Added * The setup.py installer for bootstrapping maturin now checks for cargo instead of failing with a complex error message. * Upload errors now show the filesize ### Changed * maturin's metadata now lists a requirement of python3.5 or later to install. ## [0.7.6] - 2019-09-28 ### Changed * Only `--features`, `--no-default-features` and `--all-features` in `--cargo-extra-args` are passed to `cargo metadata` when determining the bindings, fixing problems in the previous release with arguments supported by `cargo build` but by `cargo metadata`. ## [0.7.5] - 2019-09-24 ### Fixed * Fix clippy error to fix publishing from ci ## [0.7.4] - 2019-09-22 ### Fixed * Fix tests ## [0.7.3] - 2019-09-22 ### Fixed * Fix building when the bindings crate is behind a feature flag ## [0.7.3] - 2019-09-22 ## Removed * The manylinux docker container doesn't contain musl anymore. If you're targeting musl, there's no need to use manylinux. ## [0.7.2] - 2019-09-05 ### Added * Allow cross compilation with cffi and a python interpreter with the host target ### Fixed * Renamed a folder to maturin so PEP 517 backend works again. ## [0.7.1] - 2019-08-31 ### Added * `maturin build --interpreter`/`maturin publish --interpreter` builds only a source distribution. ## [0.7.0] - 2019-08-30 With this release, the name of this project changes from _pyo3-pack_ to _maturin_. ### Added * Mixed rust/python layout * Added PEP 517 support * Added a `maturin sdist` command as workaround for [pypa/pip#6041](https://github.com/pypa/pip/issues/6041) * Support settings all applicable fields from the python core metadata specification in Cargo.toml * Support for FreeBSD by kxepal [#173](https://github.com/PyO3/maturin/pull/173) ## [0.6.1] ### Fixed * Downgraded to structopt 0.2.16 to avoid the yanked 0.2.17 ## [0.6.0] ### Added * Basic pypy support by ijl [#105](https://github.com/PyO3/maturin/pull/105) ### Removed * Python 2 support * The custom progress bar was removed and cargo's output is shown instead ## [0.5.0] ### Added * Support for conda environments on windows by paddyhoran [#52](https://github.com/PyO3/maturin/pull/52) * maturin will generate a header for cffi crates using cbinding, which means you don't need a `build.rs` anymore. The option to provide your own header file using a `build.rs` still exists. * The [konstin2/maturin](https://cloud.docker.com/u/konstin2/repository/docker/konstin2/maturin) docker image makes it easy to build fully manylinux compliant wheels. See the readme for usage details. * Support for manylinux2010 by ijl [#70](https://github.com/PyO3/maturin/pull/70) * The `--manxlinux=[1|1-unchecked|2010|2010-unchecked|off]` option allows to build for manylinux1 and manylinux2010, both with audithweel (`1` or `2010`) and without (`1-unchecked` or `2010-unchecked`), but also for the native linux tag with `off`. ### Changed * The `--skip-auditwheel` flag has been deprecated in favor of `--manylinux=[1|1-unchecked|2010|2010-unchecked|off]`. * Switched to rustls. This means the upload feature can be used from the docker container and builds of maturin itself are manylinux compliant when compiled with the musl target. ## [0.4.2] - 2018-12-15 Fixup release because the appveyor failed to release artifacts for windows for 0.4.1. ## [0.4.1] - 2018-12-15 ### Added * You can now specify [trove classifiers](https://pypi.org/classifiers/) in your Cargo.toml with `package.metadata.maturin.classifier`. Implemented by ijl in [#48](https://github.com/PyO3/maturin/pull/48). Example: ```toml [package.metadata.maturin] classifier = ["Programming Language :: Python"] ``` ## [0.4.0] - 2018-11-20 ### Changed * publish defaults to release and strip, unless `--debug` or `--no-strip` are given. ### Added * New ci script based on hyperfine which also builds debian packages. ## [0.3.10] - 2018-11-16 ### Fixed * Fix rust-cpython detection and compilation ## [0.3.9] ### Changed * Update reqwest to 0.9.4 which has [seanmonstar/reqwest#374](https://github.com/seanmonstar/reqwest/issues/374) fixed ## [0.3.8] ### Fixed * Pin reqwest to 0.9.2 to work around [seanmonstar/reqwest#374](https://github.com/seanmonstar/reqwest/issues/374) ## [0.3.7] ### Fixed * Added cargo lock to project [#9](https://github.com/PyO3/maturin/issues/9) ## [0.3.6] With deflate and the strip options, the wheels get about 25x smaller: wheel | baseline | deflate | strip + deflate -|-|-|- get_fourtytwo-2.0.1-cp36-cp36m-manylinux1_x86_64.whl | 2,8M | 771K | 102K hello_world-0.1.0-py2.py3-none-manylinux1_x86_64.whl | 3,9M | 1,1M | 180K points-0.1.0-py2.py3-none-manylinux1_x86_64.whl | 2,8M | 752K | 85K ### Added * `--strip` by ijl [#7](https://github.com/PyO3/maturin/pull/7) ### Changed * Renamed `--bindings-crate` to `--bindings` * Use deflate compression for zips by ijl [#6](https://github.com/PyO3/maturin/pull/6) ### Fixed * `--target` is now actually used for the wheel compatibility tag ## [0.3.5] - 2018-09-20 ### Changed * Upgraded to reqwest 0.9 ### Fixed * "Broken Pipe" with musl builds (through the reqwest upgrade) ## [0.3.4] - 2018-09-18 ### Added * A `--target` option which behaves like cargo option of the same name ### Changed * Musl and auditwheel compliance: Using the new `musl` feature combined with the musl target, you can build completely static binaries. The `password-storage`, which enables keyring integration, is now disabled by default. The Pypi packages are now statically linked with musl so that they are audtiwheel compliant. * Replaced `--debug` with `--release`. All builds are now debug by default ## [0.3.3] - 2018-09-17 ### Added * Builds for i686 linux and mac * Builds for maturin as wheel ## Fixed * Usage with stable * Wrong tags in WHEEL file on non-linux platforms * Uploading on windows ## [0.3.1] - 2017-09-14 ### Fixed * Windows compilation ## [0.3.0] - 2017-09-14 ### Added * Packaging binaries * [Published on pypi](https://pypi.org/project/maturin/). You can now `pip install maturin` * A Dockerfile based on manylinux1 ### Fixed * Travis ci setup builds all types of wheels for linux and mac * `--no-default-features --features auditwheel` creates a manylinux compliant binary for maturin ### Changed * Replaced elfkit with goblin ## [0.2.0] - 2018-09-03 ### Added * Cffi support * A `develop` subcommand * A tox example ### Changed * Show a progress bar for cargo's compile progress ## 0.1.0 - 2018-08-22 * Initial Release [Unreleased]: https://github.com/pyo3/maturin/compare/v1.7.4...HEAD [1.7.4]: https://github.com/pyo3/maturin/compare/v1.7.3...v1.7.4 [1.7.3]: https://github.com/pyo3/maturin/compare/v1.7.2...v1.7.3 [1.7.2]: https://github.com/pyo3/maturin/compare/v1.7.1...v1.7.2 [1.7.1]: https://github.com/pyo3/maturin/compare/v1.7.0...v1.7.1 [1.7.0]: https://github.com/pyo3/maturin/compare/v1.6.0...v1.7.0 [1.6.0]: https://github.com/pyo3/maturin/compare/v1.5.1...v1.6.0 [1.5.1]: https://github.com/pyo3/maturin/compare/v1.5.0...v1.5.1 [1.5.0]: https://github.com/pyo3/maturin/compare/v1.4.0...v1.5.0 [1.4.0]: https://github.com/pyo3/maturin/compare/v1.3.2...v1.4.0 [1.3.2]: https://github.com/pyo3/maturin/compare/v1.3.1...v1.3.2 [1.3.1]: https://github.com/pyo3/maturin/compare/v1.3.0...v1.3.1 [1.3.0]: https://github.com/pyo3/maturin/compare/v1.2.3...v1.3.0 [1.2.3]: https://github.com/pyo3/maturin/compare/v1.2.2...v1.2.3 [1.2.2]: https://github.com/pyo3/maturin/compare/v1.2.1...v1.2.2 [1.2.1]: https://github.com/pyo3/maturin/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/pyo3/maturin/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/pyo3/maturin/compare/v1.0.1...v1.1.0 [1.0.1]: https://github.com/pyo3/maturin/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/pyo3/maturin/compare/v0.15.3...v1.0.0 [0.15.3]: https://github.com/pyo3/maturin/compare/v0.15.2...v0.15.3 [0.15.2]: https://github.com/pyo3/maturin/compare/v0.15.1...v0.15.2 [0.15.1]: https://github.com/pyo3/maturin/compare/v0.15.0...v0.15.1 [0.15.0]: https://github.com/pyo3/maturin/compare/v0.14.17...v0.15.0 [0.14.17]: https://github.com/pyo3/maturin/compare/v0.14.16...v0.14.17 [0.14.16]: https://github.com/pyo3/maturin/compare/v0.14.15...v0.14.16 [0.14.15]: https://github.com/pyo3/maturin/compare/v0.14.14...v0.14.15 [0.14.14]: https://github.com/pyo3/maturin/compare/v0.14.13...v0.14.14 [0.14.13]: https://github.com/pyo3/maturin/compare/v0.14.12...v0.14.13 [0.14.12]: https://github.com/pyo3/maturin/compare/v0.14.11...v0.14.12 [0.14.11]: https://github.com/pyo3/maturin/compare/v0.14.10...v0.14.11 [0.14.10]: https://github.com/pyo3/maturin/compare/v0.14.9...v0.14.10 [0.14.9]: https://github.com/pyo3/maturin/compare/v0.14.8...v0.14.9 [0.14.8]: https://github.com/pyo3/maturin/compare/v0.14.7...v0.14.8 [0.14.7]: https://github.com/pyo3/maturin/compare/v0.14.6...v0.14.7 [0.14.6]: https://github.com/pyo3/maturin/compare/v0.14.5...v0.14.6 [0.14.5]: https://github.com/pyo3/maturin/compare/v0.14.4...v0.14.5 [0.14.4]: https://github.com/pyo3/maturin/compare/v0.14.3...v0.14.4 [0.14.3]: https://github.com/pyo3/maturin/compare/v0.14.2...v0.14.3 [0.14.2]: https://github.com/pyo3/maturin/compare/v0.14.1...v0.14.2 [0.14.1]: https://github.com/pyo3/maturin/compare/v0.14.0...v0.14.1 [0.14.0]: https://github.com/pyo3/maturin/compare/v0.13.7...v0.14.0 [0.13.7]: https://github.com/pyo3/maturin/compare/v0.13.6...v0.13.7 [0.13.6]: https://github.com/pyo3/maturin/compare/v0.13.5...v0.13.6 [0.13.5]: https://github.com/pyo3/maturin/compare/v0.13.4...v0.13.5 [0.13.4]: https://github.com/pyo3/maturin/compare/v0.13.3...v0.13.4 [0.13.3]: https://github.com/pyo3/maturin/compare/v0.13.2...v0.13.3 [0.13.2]: https://github.com/pyo3/maturin/compare/v0.13.1...v0.13.2 [0.13.1]: https://github.com/pyo3/maturin/compare/v0.13.0...v0.13.1 [0.13.0]: https://github.com/pyo3/maturin/compare/v0.12.20...v0.13.0 [0.12.20]: https://github.com/pyo3/maturin/compare/v0.12.19...v0.12.20 [0.12.19]: https://github.com/pyo3/maturin/compare/v0.12.18...v0.12.19 [0.12.18]: https://github.com/pyo3/maturin/compare/v0.12.17...v0.12.18 [0.12.17]: https://github.com/pyo3/maturin/compare/v0.12.16...v0.12.17 [0.12.16]: https://github.com/pyo3/maturin/compare/v0.12.15...v0.12.16 [0.12.15]: https://github.com/pyo3/maturin/compare/v0.12.14...v0.12.15 [0.12.14]: https://github.com/pyo3/maturin/compare/v0.12.13...v0.12.14 [0.12.13]: https://github.com/pyo3/maturin/compare/v0.12.12...v0.12.13 [0.12.12]: https://github.com/pyo3/maturin/compare/v0.12.11...v0.12.12 [0.12.11]: https://github.com/pyo3/maturin/compare/v0.12.10...v0.12.11 [0.12.10]: https://github.com/pyo3/maturin/compare/v0.12.9...v0.12.10 [0.12.9]: https://github.com/pyo3/maturin/compare/v0.12.8...v0.12.9 [0.12.8]: https://github.com/pyo3/maturin/compare/v0.12.7...v0.12.8 [0.12.7]: https://github.com/pyo3/maturin/compare/v0.12.6...v0.12.7 [0.12.6]: https://github.com/pyo3/maturin/compare/v0.12.5...v0.12.6 [0.12.5]: https://github.com/pyo3/maturin/compare/v0.12.4...v0.12.5 [0.12.4]: https://github.com/pyo3/maturin/compare/v0.12.3...v0.12.4 [0.12.3]: https://github.com/pyo3/maturin/compare/v0.12.2...v0.12.3 [0.12.2]: https://github.com/pyo3/maturin/compare/v0.12.1...v0.12.2 [0.12.1]: https://github.com/pyo3/maturin/compare/v0.12.0...v0.12.1 [0.12.0]: https://github.com/pyo3/maturin/compare/v0.11.5...v0.12.0 [0.11.5]: https://github.com/pyo3/maturin/compare/v0.11.4...v0.11.5 [0.11.4]: https://github.com/pyo3/maturin/compare/v0.11.3...v0.11.4 [0.11.3]: https://github.com/pyo3/maturin/compare/v0.11.2...v0.11.3 [0.11.2]: https://github.com/pyo3/maturin/compare/v0.11.1...v0.11.2 [0.11.1]: https://github.com/pyo3/maturin/compare/v0.11.0...v0.11.1 [0.11.0]: https://github.com/pyo3/maturin/compare/v0.10.6...v0.11.0 [0.10.6]: https://github.com/pyo3/maturin/compare/v0.10.5...v0.10.6 [0.10.5]: https://github.com/pyo3/maturin/compare/v0.10.4...v0.10.5 [0.10.4]: https://github.com/pyo3/maturin/compare/v0.10.3...v0.10.4 [0.10.3]: https://github.com/pyo3/maturin/compare/v0.10.2...v0.10.3 [0.10.2]: https://github.com/pyo3/maturin/compare/v0.10.1...v0.10.2 [0.10.1]: https://github.com/pyo3/maturin/compare/v0.10.0...v0.10.1 [0.10.0]: https://github.com/pyo3/maturin/compare/v0.9.4...v0.10.0 [0.9.4]: https://github.com/pyo3/maturin/compare/v0.9.3...v0.9.4 [0.9.3]: https://github.com/pyo3/maturin/compare/v0.9.2...v0.9.3 [0.9.2]: https://github.com/pyo3/maturin/compare/v0.9.1...v0.9.2 [0.9.1]: https://github.com/pyo3/maturin/compare/v0.9.0...v0.9.1 [0.9.0]: https://github.com/pyo3/maturin/compare/v0.8.3...v0.9.0 [0.8.3]: https://github.com/pyo3/maturin/compare/v0.8.2...v0.8.3 [0.8.2]: https://github.com/pyo3/maturin/compare/v0.8.1...v0.8.2 [0.8.1]: https://github.com/pyo3/maturin/compare/v0.8.0...v0.8.1 [0.8.0]: https://github.com/pyo3/maturin/compare/v0.7.9...v0.8.0 [0.7.9]: https://github.com/pyo3/maturin/compare/v0.7.8...v0.7.9 [0.7.8]: https://github.com/pyo3/maturin/compare/v0.7.7...v0.7.8 [0.7.7]: https://github.com/pyo3/maturin/compare/v0.7.6...v0.7.7 [0.7.6]: https://github.com/pyo3/maturin/compare/v0.7.5...v0.7.6 [0.7.5]: https://github.com/pyo3/maturin/compare/v0.7.4...v0.7.5 [0.7.4]: https://github.com/pyo3/maturin/compare/v0.7.3...v0.7.4 [0.7.3]: https://github.com/pyo3/maturin/compare/v0.7.2...v0.7.3 [0.7.2]: https://github.com/pyo3/maturin/compare/v0.7.1...v0.7.2 [0.7.1]: https://github.com/pyo3/maturin/compare/v0.7.0...v0.7.1 [0.7.0]: https://github.com/pyo3/maturin/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/pyo3/maturin/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/pyo3/maturin/compare/v0.5.0...v0.6.0 [0.5.0]: https://github.com/pyo3/maturin/compare/v0.4.2...v0.5.0 [0.4.2]: https://github.com/pyo3/maturin/compare/v0.4.1...v0.4.2 [0.4.1]: https://github.com/pyo3/maturin/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/pyo3/maturin/compare/v0.3.10...v0.4.0 [0.3.10]: https://github.com/pyo3/maturin/compare/v0.3.9...v0.3.10 [0.3.9]: https://github.com/pyo3/maturin/compare/v0.3.8...v0.3.9 [0.3.8]: https://github.com/pyo3/maturin/compare/v0.3.7...v0.3.8 [0.3.7]: https://github.com/pyo3/maturin/compare/v0.3.6...v0.3.7 [0.3.6]: https://github.com/pyo3/maturin/compare/v0.3.5...v0.3.5 [0.3.5]: https://github.com/pyo3/maturin/compare/v0.3.4...v0.3.5 [0.3.4]: https://github.com/pyo3/maturin/compare/v0.3.3...v0.3.4 [0.3.3]: https://github.com/pyo3/maturin/compare/v0.3.1...v0.3.3 [0.3.1]: https://github.com/pyo3/maturin/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/pyo3/maturin/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/pyo3/maturin/compare/v0.1.0...v0.2.0 maturin-1.7.4/Code-of-Conduct.md000066400000000000000000000062331467514767100164230ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at konstin@mailbox.org. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org maturin-1.7.4/Dockerfile000066400000000000000000000045501467514767100152220ustar00rootroot00000000000000# x86_64 base FROM quay.io/pypa/manylinux2014_x86_64 as base-amd64 # x86_64 builder FROM --platform=$BUILDPLATFORM ghcr.io/rust-cross/rust-musl-cross:x86_64-musl as builder-amd64 # aarch64 base FROM quay.io/pypa/manylinux2014_aarch64 as base-arm64 # aarch64 cross compile builder FROM --platform=$BUILDPLATFORM ghcr.io/rust-cross/rust-musl-cross:aarch64-musl as builder-arm64 ARG TARGETARCH FROM builder-$TARGETARCH as builder ENV PATH /root/.cargo/bin:$PATH # Compile dependencies only for build caching ADD Cargo.toml /maturin/Cargo.toml ADD Cargo.lock /maturin/Cargo.lock RUN --mount=type=cache,target=/root/.cargo/git \ --mount=type=cache,target=/root/.cargo/registry \ --mount=type=cache,target=/maturin/target,sharing=locked \ mkdir /maturin/src && \ touch /maturin/src/lib.rs && \ echo 'fn main() { println!("Dummy") }' > /maturin/src/main.rs && \ cargo rustc --target $CARGO_BUILD_TARGET --bin maturin --manifest-path /maturin/Cargo.toml --release --features password-storage -- -C link-arg=-s ADD . /maturin/ # Manually update the timestamps as ADD keeps the local timestamps and cargo would then believe the cache is fresh RUN touch /maturin/src/lib.rs /maturin/src/main.rs RUN --mount=type=cache,target=/root/.cargo/git \ --mount=type=cache,target=/root/.cargo/registry \ --mount=type=cache,target=/maturin/target,sharing=locked \ cargo rustc --target $CARGO_BUILD_TARGET --bin maturin --manifest-path /maturin/Cargo.toml --release --features password-storage -- -C link-arg=-s \ && mv /maturin/target/$CARGO_BUILD_TARGET/release/maturin /usr/bin/maturin FROM base-$TARGETARCH ENV PATH /root/.cargo/bin:$PATH # Add all supported python versions ENV PATH /opt/python/cp38-cp38/bin:/opt/python/cp39-cp39/bin:/opt/python/cp310-cp310/bin:/opt/python/cp311-cp311/bin:/opt/python/cp312-cp312/bin:$PATH # Otherwise `cargo new` errors ENV USER root RUN curl --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \ && yum install -y libffi-devel openssh-clients \ && python3.8 -m pip install --no-cache-dir cffi \ && python3.9 -m pip install --no-cache-dir cffi \ && python3.10 -m pip install --no-cache-dir cffi \ && python3.11 -m pip install --no-cache-dir cffi \ && python3.12 -m pip install --no-cache-dir cffi \ && mkdir /io COPY --from=builder /usr/bin/maturin /usr/bin/maturin WORKDIR /io ENTRYPOINT ["/usr/bin/maturin"] maturin-1.7.4/MANIFEST.in000066400000000000000000000003651467514767100147660ustar00rootroot00000000000000include Cargo.toml Cargo.lock include README.md include license-apache license-mit recursive-include src *.rs *.py recursive-include src/auditwheel *.json recursive-include src/python_interpreter *.py *.json recursive-include src/templates *.j2 maturin-1.7.4/README.md000066400000000000000000000414061467514767100145100ustar00rootroot00000000000000# Maturin _formerly pyo3-pack_ [![Maturin User Guide](https://img.shields.io/badge/user-guide-brightgreen?logo=readthedocs&style=flat-square)](https://maturin.rs) [![Crates.io](https://img.shields.io/crates/v/maturin.svg?logo=rust&style=flat-square)](https://crates.io/crates/maturin) [![PyPI](https://img.shields.io/pypi/v/maturin.svg?logo=python&style=flat-square)](https://pypi.org/project/maturin) [![Actions Status](https://github.com/PyO3/maturin/actions/workflows/test.yml/badge.svg)](https://github.com/PyO3/maturin/actions) [![FreeBSD](https://img.shields.io/cirrus/github/PyO3/maturin/main?logo=CircleCI&style=flat-square)](https://cirrus-ci.com/github/PyO3/maturin) [![discord server](https://img.shields.io/discord/1209263839632424990?logo=discord)](https://discord.gg/33kcChzH7f) Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages with minimal configuration. It supports building wheels for python 3.8+ on windows, linux, mac and freebsd, can upload them to [pypi](https://pypi.org/) and has basic pypy and graalpy support. Check out the [User Guide](https://maturin.rs/)! ## Usage You can either download binaries from the [latest release](https://github.com/PyO3/maturin/releases/latest) or install it with [pipx](https://pypa.github.io/pipx/): ```shell pipx install maturin ``` > [!NOTE] > > `pip install maturin` should also work if you don't want to use pipx. There are four main commands: - `maturin new` creates a new cargo project with maturin configured. - `maturin publish` builds the crate into python packages and publishes them to pypi. - `maturin build` builds the wheels and stores them in a folder (`target/wheels` by default), but doesn't upload them. It's possible to upload those with [twine](https://github.com/pypa/twine) or `maturin upload`. - `maturin develop` builds the crate and installs it as a python module directly in the current virtualenv. Note that while `maturin develop` is faster, it doesn't support all the feature that running `pip install` after `maturin build` supports. `pyo3` bindings are automatically detected. For cffi or binaries, you need to pass `-b cffi` or `-b bin`. maturin doesn't need extra configuration files and doesn't clash with an existing setuptools-rust or milksnake configuration. You can even integrate it with testing tools such as [tox](https://tox.readthedocs.io/en/latest/). There are examples for the different bindings in the `test-crates` folder. The name of the package will be the name of the cargo project, i.e. the name field in the `[package]` section of `Cargo.toml`. The name of the module, which you are using when importing, will be the `name` value in the `[lib]` section (which defaults to the name of the package). For binaries, it's simply the name of the binary generated by cargo. When using `maturin build` and `maturin develop` commands, you can compile a performance-optimized program by adding the `-r` or `--release` flag. ## Python packaging basics Python packages come in two formats: A built form called wheel and source distributions (sdist), both of which are archives. A wheel can be compatible with any python version, interpreter (cpython and pypy, mainly), operating system and hardware architecture (for pure python wheels), can be limited to a specific platform and architecture (e.g. when using ctypes or cffi) or to a specific python interpreter and version on a specific architecture and operating system (e.g. with pyo3). When using `pip install` on a package, pip tries to find a matching wheel and install that. If it doesn't find one, it downloads the source distribution and builds a wheel for the current platform, which requires the right compilers to be installed. Installing a wheel is much faster than installing a source distribution as building wheels is generally slow. When you publish a package to be installable with `pip install`, you upload it to [pypi](https://pypi.org/), the official package repository. For testing, you can use [test pypi](https://test.pypi.org/) instead, which you can use with `pip install --index-url https://test.pypi.org/simple/`. Note that for publishing for linux, [you need to use the manylinux docker container](#manylinux-and-auditwheel), while for publishing from your repository you can use the [PyO3/maturin-action github action](https://github.com/PyO3/maturin-action). ## pyo3 For pyo3, maturin can only build packages for installed python versions. On linux and mac, all python versions in `PATH` are used. If you don't set your own interpreters with `-i`, a heuristic is used to search for python installations. On windows all versions from the python launcher (which is installed by default by the python.org installer) and all conda environments except base are used. You can check which versions are picked up with the `list-python` subcommand. pyo3 will set the used python interpreter in the environment variable `PYTHON_SYS_EXECUTABLE`, which can be used from custom build scripts. Maturin can build and upload wheels for pypy with pyo3, even though only pypy3.7-7.3 on linux is tested. ## Cffi Cffi wheels are compatible with all python versions including pypy. If `cffi` isn't installed and python is running inside a virtualenv, maturin will install it, otherwise you have to install it yourself (`pip install cffi`). maturin uses cbindgen to generate a header file, which can be customized by configuring cbindgen through a `cbindgen.toml` file inside your project root. Alternatively you can use a build script that writes a header file to `$PROJECT_ROOT/target/header.h`. Based on the header file maturin generates a module which exports an `ffi` and a `lib` object.
Example of a custom build script ```rust use cbindgen; use std::env; use std::path::Path; fn main() { let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); let bindings = cbindgen::Builder::new() .with_no_includes() .with_language(cbindgen::Language::C) .with_crate(crate_dir) .generate() .unwrap(); bindings.write_to_file(Path::new("target").join("header.h")); } ```
## uniffi uniffi bindings use [uniffi-rs](https://mozilla.github.io/uniffi-rs/) to generate Python `ctypes` bindings from an interface definition file. uniffi wheels are compatible with all python versions including pypy. ## Mixed rust/python projects To create a mixed rust/python project, create a folder with your module name (i.e. `lib.name` in Cargo.toml) next to your Cargo.toml and add your python sources there: ``` my-project ├── Cargo.toml ├── my_project │   ├── __init__.py │   └── bar.py ├── pyproject.toml ├── README.md └── src    └── lib.rs ``` You can specify a different python source directory in `pyproject.toml` by setting `tool.maturin.python-source`, for example **pyproject.toml** ```toml [tool.maturin] python-source = "python" module-name = "my_project._lib_name" ``` then the project structure would look like this: ``` my-project ├── Cargo.toml ├── python │ └── my_project │ ├── __init__.py │ └── bar.py ├── pyproject.toml ├── README.md └── src    └── lib.rs ``` > [!NOTE] > > This structure is recommended to avoid [a common `ImportError` pitfall](https://github.com/PyO3/maturin/issues/490) maturin will add the native extension as a module in your python folder. When using develop, maturin will copy the native library and for cffi also the glue code to your python folder. You should add those files to your gitignore. With cffi you can do `from .my_project import lib` and then use `lib.my_native_function`, with pyo3 you can directly `from .my_project import my_native_function`. Example layout with pyo3 after `maturin develop`: ``` my-project ├── Cargo.toml ├── my_project │   ├── __init__.py │   ├── bar.py │   └── _lib_name.cpython-36m-x86_64-linux-gnu.so ├── README.md └── src    └── lib.rs ``` When doing this also be sure to set the module name in your code to match the last part of `module-name` (don't include the package path): ```rust #[pymodule] #[pyo3(name="_lib_name")] fn my_lib_name(_py: Python<'_>, m: &PyModule) -> PyResult<()> { m.add_class::()?; Ok(()) } ``` ## Python metadata maturin supports [PEP 621](https://www.python.org/dev/peps/pep-0621/), you can specify python package metadata in `pyproject.toml`. maturin merges metadata from `Cargo.toml` and `pyproject.toml`, `pyproject.toml` takes precedence over `Cargo.toml`. To specify python dependencies, add a list `dependencies` in a `[project]` section in the `pyproject.toml`. This list is equivalent to `install_requires` in setuptools: ```toml [project] name = "my-project" dependencies = ["flask~=1.1.0", "toml==0.10.0"] ``` Pip allows adding so called console scripts, which are shell commands that execute some function in your program. You can add console scripts in a section `[project.scripts]`. The keys are the script names while the values are the path to the function in the format `some.module.path:class.function`, where the `class` part is optional. The function is called with no arguments. Example: ```toml [project.scripts] get_42 = "my_project:DummyClass.get_42" ``` You can also specify [trove classifiers](https://pypi.org/classifiers/) in your `pyproject.toml` under `project.classifiers`: ```toml [project] name = "my-project" classifiers = ["Programming Language :: Python"] ``` ## Source distribution maturin supports building through `pyproject.toml`. To use it, create a `pyproject.toml` next to your `Cargo.toml` with the following content: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" ``` If a `pyproject.toml` with a `[build-system]` entry is present, maturin can build a source distribution of your package when `--sdist` is specified. The source distribution will contain the same files as `cargo package`. To only build a source distribution, pass `--interpreter` without any values. You can then e.g. install your package with `pip install .`. With `pip install . -v` you can see the output of cargo and maturin. You can use the options `compatibility`, `skip-auditwheel`, `bindings`, `strip` and common Cargo build options such as `features` under `[tool.maturin]` the same way you would when running maturin directly. The `bindings` key is required for cffi and bin projects as those can't be automatically detected. Currently, all builds are in release mode (see [this thread](https://discuss.python.org/t/pep-517-debug-vs-release-builds/1924) for details). For a non-manylinux build with cffi bindings you could use the following: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] bindings = "cffi" compatibility = "linux" ``` `manylinux` option is also accepted as an alias of `compatibility` for backward compatibility with old version of maturin. To include arbitrary files in the sdist for use during compilation specify `include` as an array of `path` globs with `format` set to `sdist`: ```toml [tool.maturin] include = [{ path = "path/**/*", format = "sdist" }] ``` There's a `maturin sdist` command for only building a source distribution as workaround for [pypa/pip#6041](https://github.com/pypa/pip/issues/6041). ## Manylinux and auditwheel For portability reasons, native python modules on linux must only dynamically link a set of very few libraries which are installed basically everywhere, hence the name manylinux. The pypa offers special docker images and a tool called [auditwheel](https://github.com/pypa/auditwheel/) to ensure compliance with the [manylinux rules](https://peps.python.org/pep-0599/#the-manylinux2014-policy). If you want to publish widely usable wheels for linux pypi, **you need to use a manylinux docker image**. The Rust compiler since version 1.64 [requires at least glibc 2.17](https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html), so you need to use at least manylinux2014. For publishing, we recommend enforcing the same manylinux version as the image with the manylinux flag, e.g. use `--manylinux 2014` if you are building in `quay.io/pypa/manylinux2014_x86_64`. The [PyO3/maturin-action](https://github.com/PyO3/maturin-action) github action already takes care of this if you set e.g. `manylinux: 2014`. maturin contains a reimplementation of auditwheel automatically checks the generated library and gives the wheel the proper platform tag. If your system's glibc is too new or you link other shared libraries, it will assign the `linux` tag. You can also manually disable those checks and directly use native linux target with `--manylinux off`. For full manylinux compliance you need to compile in a CentOS docker container. The [pyo3/maturin](https://ghcr.io/pyo3/maturin) image is based on the manylinux2014 image, and passes arguments to the `maturin` binary. You can use it like this: ``` docker run --rm -v $(pwd):/io ghcr.io/pyo3/maturin build --release # or other maturin arguments ``` Note that this image is very basic and only contains python, maturin and stable rust. If you need additional tools, you can run commands inside the manylinux container. See [konstin/complex-manylinux-maturin-docker](https://github.com/konstin/complex-manylinux-maturin-docker) for a small educational example or [nanoporetech/fast-ctc-decode](https://github.com/nanoporetech/fast-ctc-decode/blob/b226ea0f2b2f4f474eff47349703d57d2ea4801b/.github/workflows/publish.yml) for a real world setup. maturin itself is manylinux compliant when compiled for the musl target. ## Examples - [ballista-python](https://github.com/apache/arrow-ballista-python) - A Python library that binds to Apache Arrow distributed query engine Ballista - [bleuscore](https://github.com/shenxiangzhuang/bleuscore) - A BLEU score calculation library, written in pure Rust - [chardetng-py](https://github.com/john-parton/chardetng-py) - Python binding for the chardetng character encoding detector. - [connector-x](https://github.com/sfu-db/connector-x/tree/main/connectorx-python) - ConnectorX enables you to load data from databases into Python in the fastest and most memory efficient way - [datafusion-python](https://github.com/apache/arrow-datafusion-python) - a Python library that binds to Apache Arrow in-memory query engine DataFusion - [deltalake-python](https://github.com/delta-io/delta-rs/tree/main/python) - Native Delta Lake Python binding based on delta-rs with Pandas integration - [opendal](https://github.com/apache/incubator-opendal/tree/main/bindings/python) - OpenDAL Python Binding to access data freely - [orjson](https://github.com/ijl/orjson) - A fast, correct JSON library for Python - [polars](https://github.com/pola-rs/polars/tree/master/py-polars) - Fast multi-threaded DataFrame library in Rust | Python | Node.js - [pydantic-core](https://github.com/pydantic/pydantic-core) - Core validation logic for pydantic written in Rust - [pyrus-cramjam](https://github.com/milesgranger/pyrus-cramjam) - Thin Python wrapper to de/compression algorithms in Rust - [pyxel](https://github.com/kitao/pyxel) - A retro game engine for Python - [roapi](https://github.com/roapi/roapi) - ROAPI automatically spins up read-only APIs for static datasets without requiring you to write a single line of code - [robyn](https://github.com/sansyrox/robyn) - A fast and extensible async python web server with a Rust runtime - [ruff](https://github.com/charliermarsh/ruff) - An extremely fast Python linter, written in Rust - [tantivy-py](https://github.com/quickwit-oss/tantivy-py) - Python bindings for Tantivy - [watchfiles](https://github.com/samuelcolvin/watchfiles) - Simple, modern and high performance file watching and code reload in python - [wonnx](https://github.com/webonnx/wonnx/tree/master/wonnx-py) - Wonnx is a GPU-accelerated ONNX inference run-time written 100% in Rust ## Contributing Everyone is welcomed to contribute to maturin! There are many ways to support the project, such as: - help maturin users with issues on GitHub and Gitter - improve documentation - write features and bugfixes - publish blogs and examples of how to use maturin Our [contributing notes](https://github.com/PyO3/maturin/blob/main/guide/src/contributing.md) have more resources if you wish to volunteer time for maturin and are searching where to start. If you don't have time to contribute yourself but still wish to support the project's future success, some of our maintainers have GitHub sponsorship pages: - [messense](https://github.com/sponsors/messense) ## License Licensed under either of: - Apache License, Version 2.0, ([LICENSE-APACHE](https://github.com/PyO3/maturin/blob/main/license-apache) or http://www.apache.org/licenses/LICENSE-2.0) - MIT license ([LICENSE-MIT](https://github.com/PyO3/maturin/blob/main/license-mit) or http://opensource.org/licenses/MIT) at your option. maturin-1.7.4/ci/000077500000000000000000000000001467514767100136175ustar00rootroot00000000000000maturin-1.7.4/ci/build_deb.sh000077500000000000000000000025261467514767100160740ustar00rootroot00000000000000#!/usr/bin/env bash # Based on https://github.com/sharkdp/hyperfine/blob/master/ci/before_deploy.bash set -ex case $TARGET in x86_64*) architecture=amd64 ;; i686*) architecture=i386 ;; *) echo "ERROR: unknown target" >&2 return 1 ;; esac version=${VERSION#refs/tags/v} if [[ $TARGET == *musl* ]]; then dpkgname=$BINARY_NAME-musl conflictname=$BINARY_NAME else dpkgname=$BINARY_NAME conflictname=$BINARY_NAME-musl fi tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp) # copy the main binary install -Dm755 "target/$TARGET/release/$BINARY_NAME" "$tempdir/usr/bin/$BINARY_NAME" strip "$tempdir/usr/bin/$BINARY_NAME" # readme and license install -Dm644 README.md "$tempdir/usr/share/doc/$BINARY_NAME/README.md" install -Dm644 license-mit "$tempdir/usr/share/doc/$BINARY_NAME/license-mit" install -Dm644 license-apache "$tempdir/usr/share/doc/$BINARY_NAME/license-apache" # Control file mkdir "$tempdir/DEBIAN" cat >"$tempdir/DEBIAN/control" < Architecture: $architecture Provides: $BINARY_NAME Conflicts: $conflictname Description: Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages EOF fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb" maturin-1.7.4/clippy.toml000066400000000000000000000012101467514767100154130ustar00rootroot00000000000000msrv = "1.74.0" disallowed-types = [ "std::fs::DirEntry", "std::fs::File", "std::fs::OpenOptions", "std::fs::ReadDir", ] disallowed-methods = [ "std::fs::canonicalize", "std::fs::copy", "std::fs::create_dir", "std::fs::create_dir_all", "std::fs::hard_link", "std::fs::metadata", "std::fs::read", "std::fs::read_dir", "std::fs::read_link", "std::fs::read_to_string", "std::fs::remove_dir", "std::fs::remove_dir_all", "std::fs::remove_file", "std::fs::rename", "std::fs::set_permissions", "std::fs::soft_link", "std::fs::symlink_metadata", "std::fs::write", ] maturin-1.7.4/deny.toml000066400000000000000000000267371467514767100150770ustar00rootroot00000000000000# This template contains all of the possible sections and their default values # Note that all fields that take a lint level have these possible values: # * deny - An error will be produced and the check will fail # * warn - A warning will be produced, but the check will not fail # * allow - No warning or error will be produced, though in some cases a note # will be # The values provided in this template are the default values that will be used # when any section or field is not specified in your own configuration # Root options # The graph table configures how the dependency graph is constructed and thus # which crates the checks are performed against [graph] # If 1 or more target triples (and optionally, target_features) are specified, # only the specified targets will be checked when running `cargo deny check`. # This means, if a particular package is only ever used as a target specific # dependency, such as, for example, the `nix` crate only being used via the # `target_family = "unix"` configuration, that only having windows targets in # this list would mean the nix crate, as well as any of its exclusive # dependencies not shared by any other crates, would be ignored, as the target # list here is effectively saying which targets you are building for. targets = [ # The triple can be any string, but only the target triples built in to # rustc (as of 1.40) can be checked against actual config expressions "x86_64-unknown-linux-musl", "x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu", "x86_64-pc-windows-msvc", "x86_64-apple-darwin", "aarch64-apple-darwin", # You can also specify which target_features you promise are enabled for a # particular target. target_features are currently not validated against # the actual valid features supported by the target architecture. #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, ] # When creating the dependency graph used as the source of truth when checks are # executed, this field can be used to prune crates from the graph, removing them # from the view of cargo-deny. This is an extremely heavy hammer, as if a crate # is pruned from the graph, all of its dependencies will also be pruned unless # they are connected to another crate in the graph that hasn't been pruned, # so it should be used with care. The identifiers are [Package ID Specifications] # (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html) #exclude = [] # If true, metadata will be collected with `--all-features`. Note that this can't # be toggled off if true, if you want to conditionally enable `--all-features` it # is recommended to pass `--all-features` on the cmd line instead all-features = true # If true, metadata will be collected with `--no-default-features`. The same # caveat with `all-features` applies no-default-features = false # If set, these feature will be enabled when collecting metadata. If `--features` # is specified on the cmd line they will take precedence over this option. #features = [] # The output table provides options for how/if diagnostics are outputted [output] # When outputting inclusion graphs in diagnostics that include features, this # option can be used to specify the depth at which feature edges will be added. # This option is included since the graphs can be quite large and the addition # of features from the crate(s) to all of the graph roots can be far too verbose. # This option can be overridden via `--feature-depth` on the cmd line feature-depth = 1 # This section is considered when running `cargo deny check advisories` # More documentation for the advisories section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html [advisories] # The path where the advisory databases are cloned/fetched into #db-path = "$CARGO_HOME/advisory-dbs" # The url(s) of the advisory databases to use #db-urls = ["https://github.com/rustsec/advisory-db"] # A list of advisory IDs to ignore. Note that ignored advisories will still # output a note when they are encountered. ignore = [ # multipart unmaintained "RUSTSEC-2023-0050", #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, ] # If this is true, then cargo deny will use the git executable to fetch advisory database. # If this is false, then it uses a built-in git library. # Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support. # See Git Authentication for more information about setting up git authentication. #git-fetch-with-cli = true # This section is considered when running `cargo deny check licenses` # More documentation for the licenses section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html [licenses] # List of explicitly allowed licenses # See https://spdx.org/licenses/ for list of possible licenses # [possible values: any SPDX 3.11 short identifier (+ optional exception)]. allow = [ "MIT", "Apache-2.0", "Apache-2.0 WITH LLVM-exception", "ISC", "0BSD", "BSD-3-Clause", "CC0-1.0", ] # The confidence threshold for detecting a license from license text. # The higher the value, the more closely the license text must be to the # canonical license text of a valid SPDX license file. # [possible values: any between 0.0 and 1.0]. confidence-threshold = 0.8 # Allow 1 or more licenses on a per-crate basis, so that particular licenses # aren't accepted for every possible crate as with the normal allow list exceptions = [ # Each entry is the crate and version constraint, and its specific allow # list #{ allow = ["Zlib"], crate = "adler32" }, { allow = ["ISC", "MIT", "OpenSSL"], name = "ring" }, { allow = ["MPL-2.0"], name = "webpki-roots" }, { allow = ["MPL-2.0"], name = "cbindgen" }, { allow = ["MPL-2.0"], name = "option-ext" }, { allow = ["Unicode-DFS-2016"], name = "unicode-ident" }, { allow = ["MIT", "LGPL-3.0"], name = "configparser" }, ] # Some crates don't have (easily) machine readable licensing information, # adding a clarification entry for it allows you to manually specify the # licensing information #[[licenses.clarify]] # The package spec the clarification applies to #crate = "ring" # The SPDX expression for the license requirements of the crate #expression = "MIT AND ISC AND OpenSSL" # One or more files in the crate's source used as the "source of truth" for # the license expression. If the contents match, the clarification will be used # when running the license check, otherwise the clarification will be ignored # and the crate will be checked normally, which may produce warnings or errors # depending on the rest of your configuration #license-files = [ # Each entry is a crate relative path, and the (opaque) hash of its contents #{ path = "LICENSE", hash = 0xbd0eed23 } #] [[licenses.clarify]] name = "ring" expression = "MIT AND ISC AND OpenSSL" license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] [licenses.private] # If true, ignores workspace crates that aren't published, or are only # published to private registries. # To see how to mark a crate as unpublished (to the official registry), # visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. ignore = false # One or more private registries that you might publish crates to, if a crate # is only published to private registries, and ignore is true, the crate will # not have its license(s) checked registries = [ #"https://sekretz.com/registry ] # This section is considered when running `cargo deny check bans`. # More documentation about the 'bans' section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html [bans] # Lint level for when multiple versions of the same crate are detected multiple-versions = "warn" # Lint level for when a crate version requirement is `*` wildcards = "allow" # The graph highlighting used when creating dotgraphs for crates # with multiple versions # * lowest-version - The path to the lowest versioned duplicate is highlighted # * simplest-path - The path to the version with the fewest edges is highlighted # * all - Both lowest-version and simplest-path are used highlight = "all" # The default lint level for `default` features for crates that are members of # the workspace that is being checked. This can be overridden by allowing/denying # `default` on a crate-by-crate basis if desired. workspace-default-features = "allow" # The default lint level for `default` features for external crates that are not # members of the workspace. This can be overridden by allowing/denying `default` # on a crate-by-crate basis if desired. external-default-features = "allow" # List of crates that are allowed. Use with care! allow = [ #"ansi_term@0.11.0", #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" }, ] # List of crates to deny deny = [ #"ansi_term@0.11.0", #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" }, # Wrapper crates can optionally be specified to allow the crate when it # is a direct dependency of the otherwise banned crate #{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] }, ] # List of features to allow/deny # Each entry the name of a crate and a version range. If version is # not specified, all versions will be matched. #[[bans.features]] #crate = "reqwest" # Features to not allow #deny = ["json"] # Features to allow #allow = [ # "rustls", # "__rustls", # "__tls", # "hyper-rustls", # "rustls", # "rustls-pemfile", # "rustls-tls-webpki-roots", # "tokio-rustls", # "webpki-roots", #] # If true, the allowed features must exactly match the enabled feature set. If # this is set there is no point setting `deny` #exact = true # Certain crates/versions that will be skipped when doing duplicate detection. skip = [ #"ansi_term@0.11.0", #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" }, ] # Similarly to `skip` allows you to skip certain crates during duplicate # detection. Unlike skip, it also includes the entire tree of transitive # dependencies starting at the specified crate, up to a certain depth, which is # by default infinite. skip-tree = [ #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies #{ crate = "ansi_term@0.11.0", depth = 20 }, ] # This section is considered when running `cargo deny check sources`. # More documentation about the 'sources' section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html [sources] # Lint level for what to happen when a crate from a crate registry that is not # in the allow list is encountered unknown-registry = "warn" # Lint level for what to happen when a crate from a git repository that is not # in the allow list is encountered unknown-git = "warn" # List of URLs for allowed crate registries. Defaults to the crates.io index # if not specified. If it is specified but empty, no registries are allowed. allow-registry = ["https://github.com/rust-lang/crates.io-index"] # List of URLs for allowed Git repositories allow-git = [] [sources.allow-org] # github.com organizations to allow git sources for github = [] # gitlab.com organizations to allow git sources for gitlab = [] # bitbucket.org organizations to allow git sources for bitbucket = [] maturin-1.7.4/guide/000077500000000000000000000000001467514767100143215ustar00rootroot00000000000000maturin-1.7.4/guide/.gitignore000066400000000000000000000000051467514767100163040ustar00rootroot00000000000000book maturin-1.7.4/guide/book.toml000066400000000000000000000005021467514767100161450ustar00rootroot00000000000000[book] author = ["PyO3 Project and Contributors"] language = "en" multilingual = false src = "src" title = "Maturin User Guide" [output.html] additional-css = ["tweak.css"] git-repository-url = "https://github.com/PyO3/maturin/tree/main/guide" edit-url-template = "https://github.com/PyO3/maturin/edit/main/guide/{path}" maturin-1.7.4/guide/src/000077500000000000000000000000001467514767100151105ustar00rootroot00000000000000maturin-1.7.4/guide/src/SUMMARY.md000066400000000000000000000011401467514767100165630ustar00rootroot00000000000000# Summary [Introduction](index.md) --- - [Installation](./installation.md) - [Tutorial](./tutorial.md) - [Project Layout](./project_layout.md) - [Bindings](./bindings.md) - [Python Metadata](./metadata.md) - [Configuration](./config.md) - [Environment Variables](./environment-variables.md) - [Local Development](./local_development.md) - [Import Hook](./import_hook.md) - [Distribution](./distribution.md) - [Sphinx Integration](./sphinx.md) --- - [Migration Guide](./migration.md) - [Changelog](./changelog.md) --- - [Contributing](./contributing.md) - [Platform Support](./platform_support.md) maturin-1.7.4/guide/src/assets/000077500000000000000000000000001467514767100164125ustar00rootroot00000000000000maturin-1.7.4/guide/src/assets/sponsors/000077500000000000000000000000001467514767100203005ustar00rootroot00000000000000maturin-1.7.4/guide/src/assets/sponsors/astral.png000066400000000000000000000017721467514767100223030ustar00rootroot00000000000000PNG  IHDR":9IDATx?q&3DN8FB`8ZCSC]$ZЖCdA"j^۽ֽWm y3=<KvoL"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,{F7W6ΟYpv卻Kh=u{y{G3rs1g/[<=#yDX&>;5z'v?+o= ƚ,EUMGoNndtX}rzv wadX7?=8p󓷖o`dX_=pl}mk8,_6ΟY<87YY1jaa}{QKω~uG-=?.]]\qy{.=t?&,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"!,"1[4=z{_uukև~ONܜl$EBX$EBX$EBX$Ebj݋W~_o;fF{XW a a a a a a a a a a a a aw7~Б}ՋڵG>cHHHHHHHHHHHHHHHHHKFEBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EBX$EJO EIENDB`maturin-1.7.4/guide/src/assets/sponsors/bytewax.png000066400000000000000000000173521467514767100225010ustar00rootroot00000000000000PNG  IHDRXIDATxy\TfpCZXS 05na,P "!BPP5(Fj4ƀ"`;F+̙ 3sx~·sϹy)` A0P @(` A0P @(` A0P @(` A0P @(` AJxi6Z;7[;ouxL ((#>)!dLk K420PpbuH?>.k/0s !j4LG$fZׁC"LzuIȴ{R$i-U`W_3ܰ`HupX{@ YM!JoCvf7p|οi5i۽N=T|ھfSg3G~eetMQytAIitj|>("DG ?7~E R!K8/fFUu$PEӯA*I5^O׭ѯYϰ[Cۏ GϖnbF7$Qzh #63 Ɂ-fڥ{v_Z  sEbyBS^c:Zl9彀G nPB:׶UQ圢VI~s&E"qH(BT,XH򟦣 SJ8E2犲P _0__kWlkxx>KU] 1N0msQ[tIwA `q8o wtf?3=a}رZM*xin?B1A*I"P ۭ!Wֿʌ*b*b *j#@*n`|LtrZ;W?0if?"+aFPF8S3-6eFUQ,HI*qB(|Qj#2!`yto2[+b?`'Δ/5UZm wILv2yoeOUFˍFnkoa.pF,j{s!3|bt?ۗ BH k6S`[5df9 vV!5eKb60xl n}h3|ON"zKg/?_u ECxЯʷ$n$gQ e+b1Yt?^tXoטQ&oܫ24j/7_A MqRhGj&>7#b8>\^c 2w_. "Փ/_֣k^[$.G4cvҢlJf;gQ㗨#ۻ6XWYt/8XkX !8K;x;;5T*p*Jyb*a-X߽|eRxH%+O <6Jh)N!O=lխDbgN}LJ0Uz(HL$?&6JGZAx^zD*ek}fh\`E!T.XϘ80%A,_԰5.a5Rd_6` g/ £}u}O?rhͺGrqY-@w0 ۏ7ܰ ?=#\24E`?_$Zk٭Rq=4{ raHggKVH6$_o~٣u7f"ONzQ=sTRU(E\Azu'3ȦTjÆ4KzY0waZh |غܪo;4 ޓ&gؙ!Vq6dYRg!{=+rw MZ}b>#0 oǗiS ~[h>A/mb=Iqxql$\b"ھ\7$zLxQl9y})X&sHa,ȷ*RHy>{%N7_\cD+c{z%bdVnTl`vϚER^"Ի(@}&Z86J}b1_{r uvRBY S>3 z\`<"7Y<[tH߬M<=zQ8sU7< C fk }e \f?>z(G77i7xKꑙ3Vq߉;CI 5; ^5P|,{wX[:fnH:<ӏɐ3ܤoZ@Ś(.ޡm]d# l"U"/M]ZX3<n!;=MP̱3C6 *+ aH/Q.mmj|wvRťu#}( 5^t(o ;+,R^%ukcpe's\% 5-xo;GW:5zLc8w@Av/:kv~ms!Tqn lIè| l`ZusX!bn ]Tz\[c-nAg 9ܞa zF}gH%\4́a? r?_ )%n3ߏ]%ۦTQ~vj6F uMZ>}4Mp3|Ě9E;0OD zSBUtS `Ο)!ek{d}xexzʹBNۺL2=jws O{f f*jeIΦv=g;Uܥ5Hfى( 0QI13ZCf\< 5QIJyKۼY/ڥ_Us`}A#)[uTyQNO M 9Zd2F_{xwy!{'G}SBVZh?ABBZ%a :d*>I,f3lFC!ֿ7a&gFh{Gn5zL '?$xcyX\yt  Umb~+sN?YC{) eRZm^y+?V6\j6=!`EGPW+oQͲcl,A\I.1]e֑|^{i[ټ=Fk@V~3& Xjn?2ǃq=O+ү`Fsl8`xUs`-PYvh O#iΊ0\!?;K.Pn?ޭ!˯@w b j<%A̻ڥ_a5Ķ*c9 =ZLTB?v$ -_bcGc3成/MӋu>jcYӷO!~=Zm$r?6L7[P8Mz>[hNIdR}졳>xҶ sb ~Ȳ7>0U7<'֐3=.^]]WI٪KѢb"/7"ryr]QL\PvrFV]'e`=6ȡm0:lR{$*&8^`>1XEv~3>~'J;eo"/ʹ5,CJU1Ӽ}0Ne~ߨ[ar Pf@p06 c'?6  Mby冼{ tjn PrT!ݯJBKn .:  5Z.yz3K0GE+cG{D=Yk) )_wXR8Chv']V80O<%nE`%HgVnjEGA.Ab#[́YW8Y# Jd̓ܝE6090oI/6nm5頭zƈll4Kuvz|.CR t+l{|'wkHڳma΅㷶uEi/ؚurmVs֖z7(Z;[aho_4ܰ؁n:|XXq{Q;͖D+_py&T·6,5ٔu4ܰ RYNϷ$y: 9[i" lbUX0T,k^ֹ*ilսk =ZL^{OuI.Y!m9Dla2ߪl"p%y@M=Ixm^{l_ Gj]_}+g)%ϕzvCn ޑcah.ɟ-rdwiΚNۏ߽atl;:|2`wV_aJo5eM{Ẃi]m@˜ny^2ҹ+ 0K`}M.~⢉uyZ:5&dNTDo?G/Xא*?'LQKMf*ɭN=';tYr*#r{T o:TlSE6W{-_2"OCKwb7Y߳+ y/ ?lD5 =AmrgJAXjδz0EX0(vNKB{ZDރO}b>I:7YpV#{=`FoH)_+B`i*|"G&UD@3֗uɉP|S reNS|pڼ~_%x6&rpU]D۹S'bW[,bFUÅ[HLzհ0a:3PyoiL$6߸X,hiE"vKyuT4K~E',7ld?d*&`P@jCGR̨i"P˷˥='ܬg\n}*I*鳄yn*H#00ypGOBr &S%k{-ѯxRr 2N0>?~.57κ8D/~GmoXzvF= `^@!)*_rz f' >n,h";W^ NXK׊͟w (X&UHyPwaI 珞3!+lX(q?pyJm%=2uA(f2%A>sd0n ٿq+fdj?^`|ۀ8؁fg fdUwzƧ$煇 iYbwAA:弰חن\3f *OoZoЯAA{٥o@J!ʎVӯ=Ve8^[jp=A kLG-Ȫ$Q6\',74c6: 0t!E+bߌg4@KMO7 Q .r&3T1+3_?,~1yX~2 Qr<>I"3H5^l|~E 7E d٢#Lɟ?#8q eͷ{_ۏy$AV ߜh:XhH*nohL+߳106J4m[Ͻ[@ߪ 6V/5kaO߉=ZP Z$3Au ^$1﹈x:l6-0 A0P @(` A0P @(` A0P @(` A0P @(` A0Pyj cIENDB`maturin-1.7.4/guide/src/assets/sponsors/frontend-masters.png000066400000000000000000000244711467514767100243110ustar00rootroot00000000000000PNG  IHDR":9)IDATxxǧloihRQTER# "*( U~AD!-wg>Ɇ$;3IOl+Iշ(Bk;% xA/AX Ka ,^% xA/AX Ka ,^% xA/AX Ka ,^5u eZBottl&MJp<$(bPb*VEL.k&,i4KEfdS42~zBv{qr8Ċ6)]=-(˚f0_dtť/nQ\"A:AչGYR"{{LXdYwxuܴK%< bٲO7uG((pcɺIRU>OSiF4wa9rO`zJom 9ZճUlSi²\;w"[cT{زViJHEWVCSS[?5'aw% [pAaϑƵh4EXoj/Nop/4~iUW+^;sqJ 2;ilx"-ּu!ل߾[գKSh2a:J6m$hdD/0|*7UeZRg BE"1JJ%42=s(eoy va2ih8~ەnQ1ZѮwmTvDM ,{ZfQ.mA#L\"d[qPqӐϨ8$&`Ӫ^]=R o ixbҙCJɴ iXl8.D6]"MC(,|F:Da͖b7L[vcͼmOFE S)"uxkս]^E9Uߥ:&${V?C:Sym΍E+NӍC|0Tܚ`5O lv#(S+tPwO!~U^U"s$9|5"8rLܡ\X"{ڜOrUa-(&o>p̨aCq5.7WjlcYHrzydol/Pզ-}j_JXŒ#eYVYRV_}Ӫ6m__2$yT>4ܜMj Z$٦HBP 4h=읊@[Bqdpx0S&UھrQUu(ݴe pZ8:wBP @\Gn$qLaiw0Jt?ߺ5eƍ^͋xh[k \4.Vթ7j"1xU APUUJXAQ`,1Lp6BļZ.N̙cn0*tMT| DPKkK00C1 h4F^X7'LqG!,_L A#z7􎳴<3|N-shS3B^ǯ= ϣ 9V n'ԫ F?ԗsxbY[Wx]{5iw쁗G F! Z*UQa*+X7ϔD?!,ӹ Gѣ'_8Ksf"Z6}`A6Ń=]_Ca82~t0ZY.m$y5_π68b$,i4e}Y=.ܟ[/҄rڣZȱӰ?6j\@/K[04>k7afoa͸JcX߶ȼ{ vN@]>aS45wݩBQjt') 2x|x,qGbo*~{́/\Qx \s_}eߗiw*A;v}IkB,,/aUKo,߾FMcX+xfZ^`Bc+?H+\ۍ Y;E9糹l~ь#n);p$vvW2AʽVPP0dzXgԏgr퟊@D}`eYٳ0L$֗=+^"+CQ( E(24 YR;Zߕ&aKP{ֵwxT$zupqNxBRn5sUULt~ >rTŻL&̓ƣ'8 FPz/z @U7ۺʴe_v|Qh#UD>~$< \UX<R0An޸-wEM@ U B#gl2?! UMpH̶g bUЄ^%`.գ]a+7?_ k,I7D ER(HQиhOH<{_daC`e]:CL1W):.t:\ﺕEh PߊU<:4hJE;SrL@0)D kh Lysg}]y'+lB;Hh\' Y;vr0 bxr:'hGA5xfH_{r  ɀ ܮ):x/, 'Eಜ _љ \r zð A+uP$EaW*E.vҤ8!,{V5 x4Qa2,{0"dSp~l+/!U7AgtPJOUR(RX g1dK;e/@ G + H'[])8PL{`ڧܸ'#@[.YL yn^*ܭ?Yu@JR2 ֱ;`ICƌCŞxՑDP;١7B&"^VMQh@dSkx"I\r?~,f`GKwNj E1QdV bLAŐ|CGk(V]ZV XA$Īt n "mowtz rDV BQE+}яIF+~LCfFq_-g@ʢ=(!m *O6}+4i "{:D_ 88rW~eIĒ7BfgZ 5->NDc5^caJbt߀bXq^_{fjKMyV{CpI;%/ sWY#GU5KΆ5*)s!&qP$Vc?= \CY`+a?!-"_'xOaaQc$Q Q;~F$<(zAq_J觙qp.4}x3sϪlR *l˞ IHI,6{P\~ U[9 'h خIZ5( D=+6X$jTfLhvYx΋l-C|=gnٌ ACXSBԽA Vaϸ> I,9g411kif*+4C L"U,gG,G툫:ѧ pY~Jyx )/zXo_cFΞqt@,=gU0 7 mq\?;Uӛ"YT*y{ZF6{ލٲm;G"`3>oYK [je <:jEǠ3ΓSiXB)t);cC= {B\WTXwݸ&QF[Tf^PɆX(l\и^|B͗@[pW^ OgK q>~n%7!i 9RMc*fKj9$-$Qe DXD8ȗ#VU f ,#Bg/!˶D)'OhWT$3IZzPoHBxE(yUY6_ 2yv؂錋QyQ(%Ցw\-#P\pꑎ %ZEEdXO99i3o '|6ȒF.Py3&>(\`Uέyӌ~ΑSBdَ Hi>*eS+Q_m fqܠ* 41K"[OM`;W8x*e+ v mNy23ʞ:UF \`3I iZ ̜k G:"!5r^ٛqlAelB:k ?#Z4TN73akby;fBq\ ~4b<}]Vuzӊ\g8r2ksYF{Y2EwnwaOǔ Qtc7L9$IѻJ>Rq9RUwƁoΥbGL$h{RUZݹ Pq?JJ6M/ơBA sn>!wҍLQ߇-s ;NS]I6?0PaarYu5&O]u [iXyݍ==KA^*ewxzQW9$d89fp_<ʀu"@!g(*gbdW"cqE 0'•4}g|xj ZiٳMc]]Fat͚$&W3:O(2ǕOװi&?cTD޺r(C!>lÞo^-*ŗk7n'ئáp"Mn@ wLy/ twe( ؄cCl72ʿ4w+ u)ۼ_h4X*XuQus=w/xKxjFSSC9H"zA`iav505d#LwRuO i :\3& 1pNI08q]J?Xb@Jݙ)E.{5y焭|'U`IAJ֮'\zcgʢ!E/o^= o2-cNoy8wO'4_jxI;0x$l0t`t i x)pq:Hc? Uup&nQL;95O5H&f7>U|")&\XY}+wa->g#.ْU뵋v :[gEt8\N6طncl>ᅲeu H&U\GGLxm`$ixt_:8p&M"!-AvU+)ܼIhn}nYv-67rcp?UU-u\;7V=Iux+&> [zRf B[X+wk==@$?`1#jΌc0[I)F!d m|oV}s$8b:አ#^r緞=ma# %-t?EXYIo`&=ϥ~6IwggI_~m͐_MC3]ɚ0" @aAyL^:dbg7p q?Ra駳۾JY9'!@Z/8='pC|ҍ\On1ut(}=*;74#Aܚ8ץo$u{NZ'A'hDGR ew8˴_48j W!}4y?wwGKVQ8r nMI'H PMH؆?t{FkTJ$~ ȝ>KUƒ[te ?7Ruc(:7I{;Wfvp7O4=? S0J7lqSr=_}_~ЙNș\XTh[YqC:+SY A_dR\xuQ,k4!3 BL HYTA.`)˥v2tLi8$ϿwVœY Kw ,i0cBș0ӣH*z=;ծ&v5IŮ^'aaLbWQ񘙂[}-`09 t]OHXf(& _jȜI/((lˮG4*-1rwNj 6!bBwX^3YicYXX4x"]HgzCJm߭rjݢS[ t$b. mh8n8XXn팧FZSbS RC2Q- ҥ;29ʹ{q((28bW3,Q\"o-Mh|.>r.\l X7p3,} #aM&ͮ{x䇊O4@3"@ե{Ji%/yMumG8 i\:0 ljp鏜^n-;nrQ`,9YDeJQKo{1^n{0Y\Gm:bF`IZÁ(*{#* ~A_Q$$t#0:xʔй3٤7B$}h󕳜Tb ǭ: $耊!S-y ΄eϸu@ L+~90lسr'`M~b}775=n4e;+[λGUU!6V[K๙! z䫿*.G,79/ {9ҖCg 5OBZm/o0]8oXB4%(EveII.[m[afˍ.}}fkw*fӿ8srm~SX!G(7쾄F~kq,,^OqH}nԞNdUm_~- AgIY?!9كeF/KL ^6nI{7sDa8jX׼+ O8uPՑMG0*U5M_0CN'M }a0ª;l(Y>4W4A1Qssyr"(c>\?tu pB ˝}۟ 'N]4{۵StjlH'UXuq|6{v*"NCfLV|ðGzK[(q bR?L-kFݫS&?OS K_=5+<% xA/AX Ka ,^% xA/AX Ka ,^% xA/AX K//n8IENDB`maturin-1.7.4/guide/src/assets/sponsors/pydantic.png000066400000000000000000000121241467514767100226210ustar00rootroot00000000000000PNG  IHDR":9IDATxyTSH [bU Z-˳ժU[jZWKi<-*ں"о>Ees=Aߑ{̝sowf2f 8lp@0MX$H b@" E@" D,X$H b@" E@" <0GGG7Wgg''G{Phkcmii),63{Ύ{J\~N]]K?) \zix/qYR*st–O#pBE7]^;`XBmeKbxX`;rK="׿PM|~’_sw85_cڏS#f]퍛Fg,335V_q\FkKL~܌|Ġ@1@D*{kʺz܁<&f,@5H9bX071 _Vqgz3ѥyV5ЄfOYiaiUpGusV)Jbjk4Mͷm}tb䆹ERLEX !ΐDB ܡ bhKn4l X!tI ġ eb#bhH0aZ/~oɓ&B-5GL_@oï/q 㝑~~S|Y0hb\&"0ı-x)zP+W@":ְan)3:qDPkWAbI~@8NZ$* B*cnnn!c `oOBkWHUzM^BziL@ *`?cT@k;!nӓ~bhJVhg'~Yh= Us_Gzjƚ5 $o\ϡ\XT n窿B7[Ph[UD>h4Gmk552сd}@xȈp*=PkH*EOtvLA9X\.7 F'ғ~"yK *5;꺨!\a b5Uڂo+ EsMwす?(SO98 @[rWW''Gba,?p\ D5gy ox~ i-&*==ńcM5o (b wwk[D@'bJyiVq8C h77 V߰=o1֪ ` "R؛||&?PO#tEϦؘ|}OښVO7X"=+o &[ճdAIJt~䭣x s[9k H$:y5XX"=Q['2-ɬUzCk@,=CDsU?ƪ)OD,3ЊEc'dxyN@`yY'1veቀ^X[Mܷ n-\0oχ ;:mtY[[N>]YBdCo*S@z~ ; [7J†c:L7X:Z1-bU "Cxֻm8[< bݻwsHغeVL7HJ& y4 D,.@+u[o,E5U=-h"VSs3@+25R >FhnKFVRWW D;uu,>ZZ*Wޮy|WxDUS[ ֐.k'PvQU 8рbU^֐.*+'P˗+ŕJ--ܩknnk Km _ۂ%-+nK`T\,Dܖ L1X׮W&jbt¢ X7׹<* L&R+/PPLM^A!(lk+-PLJJ$TW%3{ 0S)@]jb'FX ś1i(((HwB`P&X9gsv\.9wz?RթiGC`?@yhS+P*XjStG۷> +FNɹ}UKLVW\$&} +hbW\-#*mބYtǮ={#̎]{!S¢ RJdE%;\5ykAK*-+(('5yRY>y߰S ٤4M'w _ꚃSwK@D>ߩl)\I-a.=#KPnڼ EllBT1tMDz(% Qt_ՅEVYOAx͛!7}7%RC()Oh~{JJtQΪn ?˯ȎM]=Hm_b $C΅1 ;etTL7n._ݏ[BtwVAp6uf˶ G[̢޻pj:#e޻iἿ.lآ¢k?yPh4ѱo@ܴO+++! Ң7!GXc /_׸|>wry A,qs^bQXϟ*QU]3{|\'K_Y/c[[6sƀ+WgJkk+wkV ["\vTCc/3gfߟ3b1t4}@1 X~{(Ufz:/:%g!$.JO|~0ڼO|OjupP h:ۧE\?:.a7nB@g^vv1O?9sga XT*U쒷_ҿO |bXMD/޸9T:paX= ~ }eeeE~S07*UG]ah۳`8Kk=>JF";}/T"޾sσcyLKOCCW^-pH<== o'HWW?7o5{. ;aX_#lNɥc Q$8$r`rC(#?mhl"@ 4;D"{sqГR?ڪ3 ztSҟwd5~kYIQ^׮13h%pp[w cՕ{>?t>3|;0 먋c7|q蘥G~iܡB'1 8.0c ~J%RǨk׼`/ȶ&^k*V1pƆFPO|p =iwf"g;Jh3g-;Xz s[86w,FڪHIK`pN鈥OhH.((:cG&&V/BpNԬffFHeOffξ{>OtXFFMVE~Ayψg>/V/\.wOq_oI cUccSYyDZ&ʮWUey:H?8a׸=<hw_Tw[Zl? bA" E@" D,X$H b@" E@" D,X$H @A}D)IENDB`maturin-1.7.4/guide/src/assets/sponsors/rerun.png000066400000000000000000000106121467514767100221410ustar00rootroot00000000000000PNG  IHDR":9QIDATxiPSWpEQ*V( q)Vj[GqU+jIE(TD 2L-Ulu*KcE-"JȾ@wwaX=@NQOνssev `" X `" X `" X `" X `" X `" X `" X `" X `" X `" X `" X]'̟?нfܹsINN~ #`bZnlFd2GGGC &zꂂvy{{[YY0%<O&yxx1p 8;;9rTӟ^z@RNUrr# Y`",XP(БΆ ȑ#\TUU?ͦrq`{FV=|m5|ׯ_|t++M6Twx8=<=tPsyiE ZXlggG`~5S#ٳg>| Y,0RϩSZZ*X,m5D(FZSV__߷o_jL&sڵo޼AGCJHH f),K :88 ݸqc˖-iiiL"Jǎn8nŋTsqq_qR|2 93gu555aaaǎCWٱcGff%K.Ǐ9RAaS;vl8^x5wnݺ]zUGUVi4޽{b߀N<<==q 5uPZѣb>S `ʔ)Cp8<[__jEȘ>}zsN]WW'J{I[{7o.--E'NlqjllLOO~s`ccr.]$pN?cD~+??퉉굙3`yyyA!<{ԩS\]]ۇV%IxxRT- kԨQQQQӦMCڵklmmB5ɓ'mۦP(:kKaӧOXX_>jhhHLLGWc0+Vؽ{7zvԣG|||.]D=ww~0"]}h1LooJA'Б֣G??JtW5 {iiij,bkkQ[[N<;;wnVVڋ/p 80)) ] etx<^^^ {̙3q_x]MTVp8* 'U,*7nJo\uzacǎDW^vlőזɨV\\\nd2׭[wߡg޿֭7oޤѣG2e R97c7ڵkƍ۸q#m<==ݻHUaauƏO}߽{~iذabL%?#fŋ-B @WcX|>?88=z-;whg L,Xj݀|7" ]xQ(￴?q֬Y&777 3`-Z(22= sYjC H$sAQ틈$XGdSNE\Aӌ68qd}6z@СCRL&sժUvj1#G ˗/wfr[l{.m'JǏhSVVrڛgn7]bɓiS윘_!Rj8 eGִZ={vU]]nf}||ѣׯ_߲e˃tSeRT>{"D$vgh1"**jƌ6555QTz욙`9::z{{go999zY`1 6T@ vf,(X\.7&&Ѡ8$$$..A2O,ಲ2CL@]rE(>|1+k55* X,P(|u ݿԩGo vΣ 8 a88b X |||pVY1DA0 {ZYYYBܹs*H>3vӈXzЫQx<^TTԄ mG4 }PP֭[ч=SgW)));99>|͛T544ÇT1իW?yD$woZիW[7lѬu3[[4~Y7fUUU赐oݺၳ-<Ν;j_|EϚFMo>}zu󳳳э_~l2VAWh4юmV`阞Eނ*jΝw#Rlv@@RD|2],K?yozرǏ}9m b# B$?~S5j,\>)))-G)H+TWWGDD۷], :@ TRRi&w;::FGGk4tDggg=lٲW^` -v… iB,:ƍ>}-SSS'MbŊ\u֑#G @prss· 0=o޼69}tW^d&[GT3#Q[ ڗ&''7wGjudd=Xm۶ ޸qc̘1]۵M8;;9rUF#\\\vIZgRh}OgϞ͟?_ YxqX!͍;jAAA)))fֺgĉo:8 cҥ9998eYrrrA=! Jrǎ8GZSSTݾ}>Negg{ ./rf E[4hPRRfټUV=qpph] Vll,sJJᅬӽiӦK(BL@o:99:tv966v'닊JMMg*i^R)z*)U0 ] 0+WRW M}dt `ڵݻiN81x`͛7)EB`; cѢE/_z(C 9u: 5558+X[[o߾*ʕ+ a؄T*]n9sǏixq0bbbpsfwuRtr9"-T\\y `m۶ ݻw\\U^BBB~h5K@HOO>}ޝ{}8F* HsG%^%?~*zHѣ...8u^xNÓ'OЋ6Jعs+iڸ\n-RYYq6l6;$$]ԩSC ۬Y222ղt'0Y0WD@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@ D@,@'GIENDB`maturin-1.7.4/guide/src/assets/sponsors/sentry.png000066400000000000000000000533121467514767100223360ustar00rootroot00000000000000PNG  IHDR":9VIDATx|^u'z VwU,jITYqw,8/d_:K^g?o.%[DU${HI$Μ6xl9gϙ3V?sPp]'?f'o^ 0IsApLs_%H8ԸYwSH0t 7C2e./@3,d :ݔCˠ HQݒc"ZM`ι=/U4.DVtTD.d ^Ii4J *0rdпNiSѥ89 pDM *P:+l(:eejqK@Q2U椗TfR6+DWN_E?{yY1^VB"H!j,DVdM5z.tWsT`ə}Ӻ8,$P3juqU BPUr"j6aOK1x@Q,()q|xZ4];2"R` n҅JaVr嶩/Z3P#SIȱbwI 5/ڈ@txTc@CE,!V' ϬܤF(Ś_(fh,V]=FJbnt yݙeoaU*N^.TQ|AXWvGpZiE"srlqFਯBnLDKrTTA<)ȱP6coY:-5&@sÀ%n%)S R*M )DYsXS:<ܵ~hӾ\V }1DD\B9EF=^JjC0-*!+VwV%9P3J,`cjaA:Fy7*J69tj A1rZ2rTRP3Th8ej,tIAQ80Q5%{y@?fέRY5fUr❐㞡!Xq7LlNQvgGEJlQ \S`)W:ezULPwC"ӋG;Y R@nVYfVP@Cx_WT2Vn Ѣp"VTio"҈;Sp") @D3$9v%tKh$SfL(DTߌyFAC[kNv2*IL\YK5Kǂ>r<-e%V_Lj(#rr䊀[; i4c\AE05˰*5(HOv\f>Ȧ]cKTA(G*d'[cv񼐛y{óޱlB}d&(0< AgC{bAA l\%QΣGCʐL U5&(#m" JW2YVVY0 Dt0 Fk@*SLXA'[|`Y:6 <<ЌRy8[`? LB(*phF̨*GXQk'ruXL#!W0\#J4 W \cvLA3yY&)跂R2>&p2guP+jb ;d!d$`&Ax s`OdP0gww% e4FQCA扳ƕJmld$GʝЁY9HGzĪ?sITh"3YPlC#"#Pٹĥt.\sq̀Ygޡa-0$D܌1oذ+'ZX;DX|beMз2kM4泵2ve-|R1:fo 8v FuK=@faVeQL ( 405M6,tq"|+Q+Ratׇ=*&]8FQCdQo{R|Ԍ Ґ5T(:-_\+ӣ8@ahviR9M#Dhg!Fmw{AD[AU$.%dq;Z,%'[ .3K"X*­H?*uU(G Ƭe @oKRXDl%:F_&Oߒ FaYB3"JMԄed'L7䳼lEJob\ZZ`>lLDtK'YBa 1[bTXԘX*u\QTLTBTYUG6*H ULK|FR8I} ߂f@OP9Ec-NbKebk gqyꤏ@$$URU!)مۊ+wEt@b+ܸɣ筘1yVБ,zn>xp1F&7%9C;. jhwF%>bCi(BEsBjy&H hHsKYlQƬ9rڎ is)Qf촙<Y `K/oݾzzGRqgVϞ)? !:3[3oWTX`vA) 8 e%8CזG?ÃqZNA4MbB6[FhgzR8R&O/U͛ 9}-^epN>B)D2 6wc@%RoypױK.3R]Tcn):{ SV%:FJp1FSxwiU bExr]#&^)/^D~x, СuC~/>8ml? [_ȤDKvRs0c£/q"Ύ> Jqb]:tp"̦ D;z`OXR sTcGg3J|~0Y;ɡhZ{LʵO\nBSZHT,3Q[(&قL&J`IuE5vBJCF [zkj)n9h H!,XotȪ5Cb\_ 3rpN7r AR z]1?Xv,}lnW6-(e4D(T.Ҥ9-%Z0,yMqP=+綇7L!OW?{o)=61`A/C%~1E3G+4FX6jE /S @ BD]8|{4(tds~Y7fCީHc /Yf[gr \cu;jK#* F+Poe ɫ $/ȱ:Uq-1Nӆ[ƔY Uٞ??|ЁOmN|pQyH{q㽜GSȻ):{qB[Jc^$؏Uɇ+ds4 [_ݯ>yMx}\k)s',Y7_ Hl${:@»A}gQ3 jPlkp!ہIғ闥$ \!-?PM<+y:w>g/~h`E6z̈^!sºl :JDӊpnJ񢹯P7VD風n-6uc\`>Ќ?-7/gєٍexI1gƽwId?W>uw! uҶSg\B1RcZ !)ٓ\*w0wv*;(ҫq@6>ܮz3WbYէ_O[yϢìShJ鲱;%d&1[sRx 8ZVRFYi^%V.63TĒ nLHl2Ies* u![϶xIa'>zY"#8>( -0=#S IJhxGD_o菄\F(B]Ք1`D_t-*.I by*:H0Wxڕh]>cʙ:Ȥ?I CBqjHβdJ#2cCzg>j*ҟYW' l琫 AlzYBn[tY3??`PrH?}K.|W?Nd:@5_5mZAc;Y#[A=jpЙ-*p/DTĿs *zظ# h.%.)CfY2 LmڟǗ bD!32,KiĄH"gFhs'/ٻT;#2О\UZK@"Y>K%1y9Z ^&̬Vgۮ&Y%CGhj; Мec&V1,#"D~"no $6$8A!p{]y (Y]>tnl9K;Y eQS/`cu!5@il2)<&Iv*+OlAZnv-Qڒ;M[8EW]\a_ssh֜jC .o8U5< Z9Sɳa0O#CRC̖w6+<.co^'`! 8f6^SC#SU4&t+HA$C\ؘIdYÖ(Z}Chƽi/~xEkP'P{2 "A>I/y d)Aw>49DH F x WL`Ƈ- 92xvZ){c_&# ( Ȇi >M ez"8%9&2- MAAv 'gGq?Xw+f$aio{\lݭq)= ׍OM?W41qִh"p|Il5>aW}#F Wͯ|w *# ']ny"QEe}NF~@L<ڟObWqNKvyݡzn> H 8tb38>a799x$#]?Δ\!od뫻NT4gKuMI3ޣL7)ȟleь|*X ID [, (z_iJe$>\_`ޓ^?hHj+?|H[gɴ cy5QT+[C~P&sƆv*?/ oHN[Z}A5@#{e4"bK dKh؋:_XccEZtUޒxO~ep.xpwʮDuc&?uedL&r'+PoopkW;Z0˲ٰWI>Cw=Eb0Iр8/kR g8`©\fr{Y )DlV|wV=,{Թ8YuQX G!֪PpCĪfMXa*c4 ?CJzOd+?\^Ua Qc4?ip,9bO>{RV(U,^-0cwt$}P8JUSQ@*&)LX1:u̚˸AA'ʼnejkm};7L3~(-i_rܣN^8sVltd󫓇N8adu;wC۔8h57}Lb乁 =FJTo+ Lu`>xOHk*™>m)5Ї@ʻ]z8Yr6ZಬJWHucoxzKwwq_NJC\;OUЪN[vk)Ъ YqH/2d-c*d!4*;ӑ|:.f+Se V0rצ0PpxJٴ{ܬYj4d!vo/8J `s$lli 35)!8FUk9irc, s=MGLڷt4K◔B)YDv܄Q[o] ziXc0?Evl\\ݯj߶C$ҭ0vĀ=tn {-+PQ 1a%t9;5S'z*=\:zGƅ-;75ݲf΀P]Sywm>wI2ǚNP*0ifÖw]5-Zi8.Rhyb6B>VMa N q(ܤ2D5Vk݋g-rtKe[ nvmOJkg/C8NaVϏk8h!kEȎ.Ѵ4hl޿"`*!clyY~Wi#[bwio- zo_ /\9͟n&5.rY= yΣQ^\Lt&"!<$ADHg##[T$ۚҐ` 2~C+N>{y[@j(K-m WJO 2aط_މ@EJ?xfK%O6`w7lQpb8-nAO HА ŲzkJ}eAĠp>p;DRuuժ?ԱWZۣD٣M'Ϟh^vnZ4ٳ@㉺N71As;kޣdZ12H")K lBan1 6tzJoL[nϝj1j ̳7M1~lc}ةs&9q`|:ᱡQ:nȵkڙX7irvʝfU飪)էq SjS -v?ƈ>xs_mudyjSӢϟm9yFÛ5i :v@0 Qʶ}e$ 7@1vݎ1r9\T9Z&Ǚcʆ*38MtBF ބ_"-^1/ D-~S s[ӯf܄Qol;g5wg_qBv$Ou_jn;4-AZdi^iQ'l%ǫ31gƛ:)7oܗ|?3u{7~mغI'䁨w.:-N@t\ܻm,M1FWI<|.zhoK4a"%ں矪Ųu3U üZ:}#y&w~O[^ucޒPj/vK?d@#.wvܘ|F)c^fKbe"mʖsO8 ځ{wAC4@k Ob'nɶP,]tʼn<Űͪ2QbKHUUGEC ;M;sֻ~nm]7$slź#F:x\.8cv` >ᒝ7c+ԅP98͉uOHaT'R<9CMsӣrx--/8}Ӿ꺑(gXᆝӉ8M.|Z;HPvꕎ翿!QZuM?w?lA[35ձB KZ27g`5n?W.__~߉DM{qU<5w޷0j(T;}ޤXQ5jov[{2kr܉ \膑gO\8u,;@hVd{05͎ c] ]Ⱦq> 2#,?7T6ٓl(TܳW?k>uzѻ͝XJNqЏ}㹳'.$c[qPik=_X2 `?E?*D]2@Ռe"LeV> *]7z0g?|#z g/._;_;>eY6wWy9)Dw7躹xU~uuW,@?}ŒE i>zM>m`&[tSz -z $GBzU= ?$ӡ}9տܖoeW{ :[Wz iGc=ÿ%p=#M:E7b\p@9bI y#}WyeErݢ?vX&OoX|Mz Euĸ &L(vԸ7ou̯OZWݳ8VNenwo9i3qZW:Hn}uw-C)"*u‘@CX<$ -?)D^C/jp<Սx圃{]pY1xwh)\lGx]ͰdBӈGOs>aו:9hm6u\cާ;XycNM6M_kf/FJx.F;rVV [V?}[;w%B\uȒ_jo\V,m|b)v̚9)=Fo9eY}9oN=pʠ ydyFDa{z68w²'fy͘8wecG W=pouVpˠ<}[A$o~j5zYmiM6g9+pd7_>r԰>XKgsf>e}KM>7cD߽ޱa0rs[L&ѦYym;b%9)ks51pӣX1g3☿,Geiz^8W ?ݖUesMK;55+-ڹy F:{eLCi!/i:ZN9%Y]ڱ:/7y~͜%Kt>_-&YVb602:1*g{ƷLHz{! ,|O\j?dUuybEʟ|kWScwpI_{vKtЗ mg6h˦##G&;ժc L !/X\´.6+Ƙpsl\:ct&ѳos՝O8``i'nxqׯuo]~{t8|Eq%kwX!cGrQ+"NeѮR֫e6<+ X~3?Ԅ!Y&K*qjzjEC9W}:ixK[6ZvѝJ]vVA3meC 6!Olֳmmba\K=w ^zN"Pۿߍ7Ԍdte ;sK9o14MY,8~{'v_={ +\,(/R*bGfoyT:W_-d2qO9yϾi{oL2y5\i@w_x'p܉2t)'^ɦa뇾7SVZl*rga]̻PcI˱P,]wVˮ|FьUUٿ 37Ao8൶r=Knjh9wtAƛ7o5 f7;;o26gbbǹS-^Y ohydžcl9Y泧nT#Uz\8N6S5mRۮSXLCt0~{{W/_wd_Ui>}BkK5#.ᅭmbׇWUU]ֱW{3y uutzע%־_RWnNF"T5b-7T je4Zu#göK1ue@KKFE91r) n=(>qXo(m`LsC3N6kޮ1Uqg͟OY6T6_߈k?P^}fc,\1s~#,vہ-an &dGޫs?}f+لڭt<{WD;9r#CxVUgỢͿy,_S`1ڧ'.DkY2x@Zګ ]]x7VBeLz04 2\cEw/=WVbS{"qolof\%C3xc(|BNد} S{n|iޝ*4ĉ mC7>wr}yzyG+gOvņ4M%s~9Q8| W$p\$:Co<) Qx!Qjv9)Ic?7󍧐5@T%޽.\~ǩsMEIeۛQĪDfR"-SoD Sg7bti8'AkO+;~>vգ1zÈΦ.4ne6Ct'd%A#j#ɵ?K'#fHKz\DV?p+0È)c-`l8^+yu{L|}::s"ҍ=J^5  *_S2DY&/5%?r?NuS ө>vs`;cY{;2N}m[7I9yF IrSѬ3(Ŕ9۩֐㍽)*I ]rucPKw}O.'ϰOBiLc@pk)ﱿ{Ν0kded%!&=Ɣ736x tAϲ$Άk 1]058x@`PJRK*6NdcLzn~e׆RsPݎN[ &6T 3n߶ jLuYX?{]7ԪW\O̫L61bÙdhTMP҈SFO#2FEi?Q1j(w&I[4I26sdQjtieLN/+ hϜL)V NfL3V?$O["VV4 v57[*jA DCG ~;w:} Vyuj@ѩ &l_K ppHW8{hj+l>)P̳ I_1yFC- -v|ԕ.ԩ)ȹ 4;.FW;_tLuD :zZ埼ofLjˈ]A$D'*TQ꼣5QZ$dä8EgCљ_N`z 4"MNN[8yԺo ZnJbU̍:-;ZFH⇡iNRG|\ar'#綻z_H}ϗJ\s"터ksӋ?zc[EdGFxP-C r[)Sy#WJ14v;p$L +שh%b/(T-[~_޲bF^]SeN/r *]ɾ^7̇+ +[?Re{۵SGu'>w%D:xh[:Yfn o`tn}tG8o!>PxH*[il|N5zGYNS#E,¦u IP}Lb'^qVWqq?ÀPx1**o\H Mu1}.hz4s:k@[Z ܣŊ c(xWϦfb@\GaX_3t"@g3bSr C8K7xǑ31DL!@I&=c]7qT.4PEnaM=#FN!kTSQ;m8P%*Ȩ*7Z%·(fPj(ǧlnOR{[ wݑdjp)X3У˰LyFCiPRZ |~йXh5 99'9VcTbT,]pNZNb:OCL/hxc*B4I WbZrAش` N'dO?QHHyWƩf1 6졷%VKSPxd3,<Tfc=!^#OBB$65N=]JGPYȐG~E3X+ZTʷ9v"Q7 +W΂(*WCP:2`C^g#)Yn[.K,-w#D@Ki Z"&@Jr (CTH4eC=|[ 4X2Pd[q)c4@ Ύ6 (=̝yԐ@,/&Ob?gM_,;dE8j6H2 ҔBdQXx/A:36c=tRV- R蠠sb'~PQT(PE C̚H |))Vj-X2A"2$kѠ4rQPE#:ʎ˘TA\hBI%%\96DE2N)u!2d g1*'§x>zH 93K@+bU%G[tN"}"z[VjR*A H@TULց^ QdzY^#FA-#@FV}PxV)%O;Y6K1o)  &KЉ#WȜ̈bba#s&tƣ_B10AkdMsm4zBb,@l)nY L 5' +i(S T*?N b"FR(nu&E}@Y8<@ĨmЉrr[SK\0 (91h$KؿyjQ,\(}yHAzű B!%TY-G[BG55ˏ_X;r  CKmuAO0Ñ@G lYHq-4+ZBYY"DoLbOLVy)>2@Zh3H$g mG$1%1X%Rj8#ZWט/uB`?4q(9λ@9 8P 0"2sxQK` wÁkY PTQ si+SE!$ȈG՘ ! ZzE"qsd78ެ+Nl!RhiQ fC3b tWMs|\1KW1y\pM(K @2X6*4ͫrjٺNda1PÁxUrJJYnDR%:pSG#r4Wbs]mL4l-( CQrѿiJ@|h-f!cۇ{[cTGf qzVj{}2]Bm)PY%i.* ڣQez=0$6_sNd "aHt)/PIM̝Lq{ŭHHa/5XABqr!2[<7H>xM8(8e@GLdPB;i9PR[咋KaZӡtKxQW]c=0Op%^\ŔRBaIrjYޞILE(3h2 SB$rkN),G]$)LJ*\[(/P޵"vktl׊6m1*l$^yiě}|Uj̔:RS4u&KmT"գ t)]H iϓS{lԂt *AQ#^.Nn() aF6VI 5i yV`a'^+!LV)I[qG@Yn9b a ]|\ܜq3+E QEEHl`XθТ "YfzD|+dh`N %4^fUt4vD ~qBd6TOHLʆՓ˷!+2wZGgB"Fpb q,1G薤P$n D:=9`  4]((KyE:CoLڴZ +IB7#kl2 e,Ji*g42Ҙ0xڡ"` %J,א꣄ue0T xOuʥsVz]R#TDy {!e3õ:B9@*1䢳{d49%@i[EA\DsfoIAv.(K|$ zi-BVXEI>IENDB`maturin-1.7.4/guide/src/assets/sponsors/tsy-capital.png000066400000000000000000000161141467514767100232430ustar00rootroot00000000000000PNG  IHDRXIDATx VU9 G@AeASQ +s눚f ޼eeYכiڠdId* i$ ґY}}o{xߵw{{5C3<OUr]KO({6'q44ue 0P=Lu]4C0.yFﴴ4̫M0/H^hY+׶yFk*-" +N0/H]򝖖Fy m$.NKKȿ(m$.NKKbeyI(`^6 %N=^lMv,-͓zYa`uer0L\WEK]Fyy$-F %.KM# zV0/OI-8RʀoF-iтyi#YMf WjI@+yi#YgEQ &  udhp`~ eEh`^]Oq,dZj*)pZ<,X q]!.6-%ڝe+dFb^IhE2J1E0/OIML`EIAV UR]Sbf 7 \W( yqpiJeyKg;T]R -xW;.+7)¶/Fy7cQ~R~PzR5ᆴ puG wN\tԠg>PSzXШuPs걊\аbXXr5@w gI==Xz eRl:Z$H=A̫Cy: *5 EBF+M +|ϻJ eJe] `Y=Ӕ]^ b9?%PFO'I0з@b|Np᜜;mV68V(6 08Cyv=eD}z:] MA`eهj:qpm0}5*τiZUGE2F ?+D,y8 5e6s!o[v2@Y8Q,! l^@بB)k 2-_3AO^@,sFyV0Zܓ ECJ mO]4Wvmt.]V/ C $W*k;+JҭB HIt0OX_[L.LR/ ZK"'(QC+lEPHc`^ylRsBGT(F܎͌m.ouîj&+u J ^@m#>X4򤧅әtO-"僊e_r&R'4@UHS[˯ek?^0PETl\P\T$0zQRFU-X` : HrzS^H2Yw,WnH넢fe4vz8ViBy'k6 }an~YtD۟p RG ļ0R,$t ٷ} Qo) t(EՍ&8iU5S\WHKqSBף1M;h;=_a|]] V5AA<-5CseiYa ;S|hyZ W%T)-1..GTtEYN߽(l!wD) `/0dx/ sKzə{4k yɁmYǐ19<ѝfxIA}\W6R H 4MF+u%=4s eS_/ Fz Fyo~uE72v5^@HQY@[ϔذǓ 04YZU@O_J6ynΦCgî4ޗdf2ZqZ*.xK?RHv)~?j@S<mɭǓ'/ O^@<x< xx$I Ǔ'/ O$ l,?(cYz tn=ua Ρ.HgUC-?xwhX% #5K![e' kpX@.Y+NpSk0dLƵ=]ھuvaCAc\g=,j#Ze ,PgAHu (/dw=] I1Bhmq{Q\G]O+ϟ1Vs<8x`q=` ` ,M x`h%E 8ru`[uDAG aWq{ iKz^㎡r͠'$:d"G J38*e™Vl* k8Z֤ާXe/eF?fק唜&/x<]bupGo3Ο9ΤM˱CwLSe'˦ Ì. C0>]wgtWsG΅pX~@a^[gDxrN@A }\D^_e;Zʵ5v(=32ͅp,ogzӕӌ0Jh #m>B?Z }C&;Gy\y)˥~0l K4GS=rIqmÿto|G?X=J ~@Abh Jψ:Ru9g?\8ZDyfQĔ`:v0;`/wGO=Z,`89Cg<[f\TI0m2}Ly/ڜe0cWVgiZr>9kh7q9kTchǢ Rc; < 'Ul'1QmfH<8WnZ0BuN".֧MsLɺ5kY,Q [TjOOO+ w2_Y΃:,! ?:MZQAQ*.)"}_ޗb:R ~Kmfn,0ּ]=s2?)4'^F}n?U.Iiu,h_0ڠs~(zeΏnΛB+Vudp!cs6W3&(>:Q'K{PxJh2;bn:(r GV8&{,cb²ݔg$9 O;s'~N翧pt]/,*̇ eQ]gQI&nB5.1׆Spso I}2Fv6P }9|-һnfO6MeEp`>AzE󑑲H:@)ΚШk4Dc.s走ʺ[spggޘpL! s@:YOܣ|0G~ik;8ّ}_"ҕ1ž8Tv=Q >bGf6;k ՜VQ0Kqv+FH,.g粎1 \<Wc1;7|"5 ^ߌak!qm5<#a(2Z=!vpT)qC((gEMgrZ6!m g)ֲ }%9JO} /jjf^"swlԼ]iᬜLIj5 )6IP\|?n{uOvrQ-f-ƉC7 *$qjdZ r^+jaEӃ {$>%ZavۓU`+STtgxOdGJyGqB& oʹH]FIQԾ~o-/-JNcޯ/n/#M\ k.egsѺP>}۽EvP*Uo&`[m'yF xp/ O^@<x< xx$I k8,ʹuٝk(-z: 旝%%yu(*~.aT;* ˨XÍ+X4lGoE계&R3(w_-*!>@>5-?U}^tiTwe>G+˻ccba*j-ee" ݘA0;hUi:fx"Y{H YRC{x&>Ҙ掎sM܊ }_/g,v2uk5{̍"mO 8N1^XuOb'6Jooу&iRᗜP@3QWi"iv EІ{WLy<)u ᅤ?f0D* q|/CO2hGWf]ƨqdko4S[Kd㽧rE\Ѷm2:ud.ߨڔcQ -t ڳm|7NV8d6d}O\Zw+᱙Qf /CHЋ8xvZ2?VB;ɴo-y]9=daFh&A =L6dB˶Gi6Bvp0=Ia.Q({9Tch?6 9|#7J©T~ t}Px9ߣ]5ʺ yq66"I()!64xƴ71}O+ )'"iV,MzaG.ʰc,sgdV>{i|0E>[K7r~%)[k ܖ݉^)y!{32mnۖs99=ܺ^]l4lf\F[eǜ^ut7vF?A8O؜a<7oSkp^j9 AcY:yض+*kzqlsj#[NP[F `MzC}|@A)\շ-}%Ccѫd*1yso*0qQU',#H&5jhRA\wad%ӽOOƧbr."#r 4ps1Mqۜ#3.s*LʾgaGEː$| +ccNĻpb 1ȧZyD0v2u/$\s^!m 7PA&]-;/WT)o 0p}Sc /TrFޛ~&wc~Y96yʛ5 }ËJ-)G uUjL1kkqAʻ?`l **Note**: Read more about abi3 support in [pyo3's > documentation](https://pyo3.rs/latest/building_and_distribution.html#py_limited_apiabi3). ### Cross Compiling pyo3 bindings has decent cross compilation support. For manylinux support the [manylinux-cross](https://github.com/rust-cross/manylinux-cross) docker images can be used. > **Note**: Read more about cross compiling in [pyo3's > documentation](https://pyo3.rs/latest/building_and_distribution.html#cross-compiling). ## `cffi` Cffi wheels are compatible with all python versions including pypy. If `cffi` isn't installed and python is running inside a virtualenv, maturin will install it, otherwise you have to install it yourself (`pip install cffi`). Maturin uses cbindgen to generate a header file for [supported Rust types](https://github.com/eqrion/cbindgen/blob/master/docs.md#supported-types). The header file can be customized by configuring cbindgen through a `cbindgen.toml` file inside your project root. Aternatively you can use a build script that writes a header file to `$PROJECT_ROOT/target/header.h`, like so: ```rust use cbindgen; use std::env; use std::path::Path; fn main() { let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); let bindings = cbindgen::Builder::new() .with_no_includes() .with_language(cbindgen::Language::C) .with_crate(crate_dir) .generate() .unwrap(); bindings.write_to_file(Path::new("target").join("header.h")); } ``` Maturin uses the cbindgen-generated header to create a module that exposes `ffi` and `lib` objects as attributes. See the [cffi docs](https://cffi.readthedocs.io/en/latest/using.html) for more information on using these `ffi`/`lib` objects to call the Rust code from Python. > **Note**: Maturin _does not_ automatically detect `cffi` bindings. You _must_ > specify them via either command line with `-b cffi` or in `pyproject.toml`. ## `bin` Maturin also supports distributing binary applications written in Rust as Python packages using the `bin` bindings. Binaries are packaged into the wheel as "scripts" and are available on the user's `PATH` (e.g. in the `bin` directory of a virtual environment) once installed. > **Note**: Maturin _does not_ automatically detect `bin` bindings. You _must_ > specify them via either command line with `-b bin` or in `pyproject.toml`. ### Both binary and library? Shipping both a binary and library would double the size of your wheel. Consider instead exposing a CLI function in the library and using a Python entrypoint: ```rust #[pyfunction] fn print_cli_args(py: Python) -> PyResult<()> { // This one includes python and the name of the wrapper script itself, e.g. // `["/home/ferris/.venv/bin/python", "/home/ferris/.venv/bin/print_cli_args", "a", "b", "c"]` println!("{:?}", env::args().collect::>()); // This one includes only the name of the wrapper script itself, e.g. // `["/home/ferris/.venv/bin/print_cli_args", "a", "b", "c"])` println!( "{:?}", py.import_bound("sys")? .getattr("argv")? .extract::>()? ); Ok(()) } #[pymodule] fn my_module(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(print_cli_args))?; Ok(()) } ``` In pyproject.toml: ```toml [project.scripts] print_cli_args = "my_module:print_cli_args" ``` ## `uniffi` uniffi bindings use [uniffi-rs](https://mozilla.github.io/uniffi-rs/) to generate Python `ctypes` bindings from an interface definition file. uniffi wheels are compatible with all python versions including pypy. maturin-1.7.4/guide/src/changelog.md000066400000000000000000000000401467514767100173530ustar00rootroot00000000000000{{#include ../../Changelog.md}} maturin-1.7.4/guide/src/config.md000066400000000000000000000050431467514767100167010ustar00rootroot00000000000000# Configuration ## Configuration format You can configure maturin in `tool.maturin` section of [`pyproject.toml`](https://peps.python.org/pep-0518/#tool-table). ## Configuration keys ### Cargo options ```toml [tool.maturin] # Build artifacts with the specified Cargo profile profile = "release" # List of features to activate features = ["foo", "bar"] # Activate all available features all-features = false # Do not activate the `default` feature no-default-features = false # Cargo manifest path manifest-path = "Cargo.toml" # Require Cargo.lock and cache are up to date frozen = false # Require Cargo.lock is up to date locked = false # Override a configuration value (unstable) config = [] # Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details unstable-flags = [] # Extra arguments that will be passed to rustc as `cargo rustc [...] -- [...] [arg1] [arg2]` rustc-args = [] ``` These are `cargo` build options, refer Cargo documentation [here](https://doc.rust-lang.org/cargo/commands/cargo-rustc.html). ### maturin options ```toml [tool.maturin] # Include additional files include = [] # Exclude files exclude = [] # Bindings type bindings = "pyo3" # Control the platform tag on linux compatibility = "manylinux2014" # auditwheel mode, possible values are repair, check and skip auditwheel = "repair" # Don't check for manylinux compliance, deprecated in favor of auditwheel = "audit" skip-auditwheel = false # Python source directory python-source = "src" # Python packages to include python-packages = ["foo", "bar"] # Strip the library for minimum file size strip = true # Source distribution generator, # supports cargo (default) and git. sdist-generator = "cargo" ``` The `[tool.maturin.include]` and `[tool.maturin.exclude]` configuration are inspired by [Poetry](https://python-poetry.org/docs/pyproject/#include-and-exclude). To specify files or globs directly: ```toml include = ["path/**/*", "some/other/file"] ``` To specify a specific target format (`sdist` or `wheel`): ```toml include = [ { path = "path/**/*", format = "sdist" }, { path = "all", format = ["sdist", "wheel"] }, { path = "for/wheel/**/*", format = "wheel" } ] ``` The default behavior is apply these configurations to both `sdist` and `wheel` targets. #### target specific maturin options Currently only macOS deployment target SDK version can be configured for `x86_64-apple-darwin` and `aarch64-apple-darwin` targets, other targets have no options yet. ```toml [tool.maturin.target.] # macOS deployment target SDK version macos-deployment-target = "11.0" ``` maturin-1.7.4/guide/src/contributing.md000066400000000000000000000111011467514767100201330ustar00rootroot00000000000000# Contributing Contributions are welcome, and they are greatly appreciated! You can contribute in many ways: ## Types of Contributions ### Report Bugs Report bugs at [https://github.com/PyO3/maturin/issues](https://github.com/PyO3/maturin/issues). ### Fix Bugs Look through the GitHub issues for bugs. Anything tagged with `bug` and `help wanted` is open to whoever wants to implement it. ### Implement Features Look through the GitHub issues for features. ### Write Documentation Maturin could always use more documentation, whether as part of the official guide, in docstrings or even on the web in blog posts, articles and such. ### Submit Feedback The best way to send feedback is to start a new discussion at [https://github.com/PyO3/maturin/discussions](https://github.com/PyO3/maturin/discussions). ## Get Started! Ready to contribute? Here's how to setup maturin for local development. 1. Fork the maturin repository on GitHub. 2. Clone your fork locally: ```bash $ git clone git@github.com:your_name_here/maturin.git ``` 3. [Install a stable Rust toolchain](https://www.rust-lang.org/tools/install) and of course [Python 3.6 or later is also required](https://realpython.com/installing-python/). 4. Create a branch for local development: ```bash $ cd maturin $ git checkout -b branch-name ``` Now you can make your changes locally. 5. When you're done making changes, ensure the tests pass by running ```bash $ cargo test ``` Note that in order to run tests you need to install `virtualenv` and `cffi` (`pip3 install cffi virtualenv`). 6. make sure your changes are well formatted and pass the linting checks by installing [pre-commit](https://pre-commit.com/) and running ```bash $ pre-commit run --hook-stage manual --all ``` running `pre-commit install` will enable running the checks automatically before every commit (except for the slow checks: `cargo check` and `cargo clippy` which are only run manually). You can also look at `.pre-commit-config.yaml` and run the individual checks yourself if you prefer. 7. Commit your changes and push your branch to GitHub: ```bash $ git add . $ git commit $ git push origin branch-name ``` 8. Submit a pull request through the [GitHub website](https://github.com/PyO3/maturin/pulls). We provide a pre-configured [dev container](https://containers.dev/) that could be used in [Github Codespaces](https://github.com/features/codespaces), [VSCode](https://code.visualstudio.com/), [JetBrains](https://www.jetbrains.com/remote-development/gateway/), [JuptyerLab](https://jupyterlab.readthedocs.io/en/stable/). [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/pyo3/maturin?quickstart=1&machine=standardLinux32gb) ## Pull Request Guidelines Before you submit a pull request, check that it meets these guidelines: 1. The pull request should include tests if it adds or changes functionalities. 2. Add a [changelog](https://github.com/PyO3/maturin/blob/main/Changelog.md) entry. 3. When command line interface changes, run `python3 test-crates/update_readme.py` to update related documentation. ## Guide To build the guide for local viewing, install [mdBook](https://rust-lang.github.io/mdBook/guide/installation.html) and run `mdbook watch guide` from the repository root. The output can then be found at `guide/book/index.html`. ## Code The main part is the maturin library, which is completely documented and should be well integrable. The accompanying `main.rs` takes care username and password for the pypi upload and otherwise calls into the library. The `sysconfig` folder contains the output of `python -m sysconfig` for different python versions and platform, which is helpful during development. You need to install `cffi` and `virtualenv` (`pip install cffi virtualenv`) to run the tests. You can set the `MATURIN_TEST_PYTHON` environment variable to run the tests against a specific Python version, for example `MATURIN_TEST_PYTHON=python3.11 cargo test` will run the tests against Python 3.11. There are some optional hacks that can speed up the tests (over 80s to 17s on my machine). 1. By running `cargo build --release --manifest-path test-crates/cargo-mock/Cargo.toml` you can activate a cargo cache avoiding to rebuild the pyo3 test crates with every python version. 2. Delete `target/test-cache` to clear the cache (e.g. after changing a test crate) or remove `test-crates/cargo-mock/target/release/cargo` to deactivate it. 3. By running the tests with the `faster-tests` feature, binaries are stripped and wheels are only stored and not compressed. maturin-1.7.4/guide/src/distribution.md000066400000000000000000000301361467514767100201540ustar00rootroot00000000000000# Distribution ## Source Distribution Maturin supports building through `pyproject.toml`. To use it, create a `pyproject.toml` next to your `Cargo.toml` with the following content: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" ``` If a `pyproject.toml` with a `[build-system]` entry is present, maturin can build a source distribution of your package when `--sdist` is specified. The source distribution will contain the same files as `cargo package`. To only build a source distribution, use the `maturin sdist` command. You can then e.g. install your package with `pip install .`. With `pip install . -v` you can see the output of cargo and maturin. You can use the options `compatibility`, `skip-auditwheel`, `bindings`, `strip` and common Cargo build options such as `features` under `[tool.maturin]` the same way you would when running maturin directly. The `bindings` key is required for cffi and bin projects as those can't be automatically detected. Currently, all builds are in release mode (see [this thread](https://discuss.python.org/t/pep-517-debug-vs-release-builds/1924) for details). For a non-manylinux build with cffi bindings you could use the following: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] bindings = "cffi" compatibility = "linux" ``` `manylinux` option is also accepted as an alias of `compatibility` for backward compatibility with old version of maturin. To include arbitrary files in the sdist for use during compilation specify `include` as an array of `path` globs with `format` set to `sdist`: ```toml [tool.maturin] include = [{ path = "path/**/*", format = "sdist" }] ``` ## Build Wheels For portability reasons, native python modules on linux must only dynamically link a set of very few libraries which are installed basically everywhere, hence the name manylinux. The pypa offers special docker images and a tool called [auditwheel](https://github.com/pypa/auditwheel/) to ensure compliance with the [manylinux rules](https://peps.python.org/pep-0599/#the-manylinux2014-policy)). If you want to publish widely usable wheels for linux pypi, **you need to use a manylinux docker image** or [build with zig](#use-zig). The Rust compiler since version 1.64 [requires at least glibc 2.17](https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html), so you need to use at least manylinux2014. For publishing, we recommend enforcing the same manylinux version as the image with the manylinux flag, e.g. use `--manylinux 2014` if you are building in `quay.io/pypa/manylinux2014_x86_64`. The [PyO3/maturin-action](https://github.com/PyO3/maturin-action) github action already takes care of this if you set e.g. `manylinux: 2014`. maturin contains a reimplementation of auditwheel automatically checks the generated library and gives the wheel the proper platform tag. - If your system's glibc is too new, it will assign the `linux` tag. - If you link other shared libraries, maturin will try to bundle them within the wheel, note that this requires [patchelf](https://github.com/NixOS/patchelf), it can be installed along with maturin from PyPI: `pip install maturin[patchelf]`. You can also manually disable those checks and directly use native linux target with `--manylinux off`. For full manylinux compliance you need to compile in a CentOS docker container. The [pyo3/maturin](https://ghcr.io/pyo3/maturin) image is based on the manylinux2014 image, and passes arguments to the `maturin` binary. You can use it like this: ``` docker run --rm -v $(pwd):/io ghcr.io/pyo3/maturin build --release # or other maturin arguments ``` Note that this image is very basic and only contains python, maturin and stable Rust. If you need additional tools, you can run commands inside the manylinux container. See [konstin/complex-manylinux-maturin-docker](https://github.com/konstin/complex-manylinux-maturin-docker) for a small educational example or [nanoporetech/fast-ctc-decode](https://github.com/nanoporetech/fast-ctc-decode/blob/b226ea0f2b2f4f474eff47349703d57d2ea4801b/.github/workflows/publish.yml) for a real world setup. ``` Usage: maturin build [OPTIONS] [ARGS]... Arguments: [ARGS]... Rustc flags Options: --strip Strip the library for minimum file size --sdist Build a source distribution --compatibility [...] Control the platform tag on linux. Options are `manylinux` tags (for example `manylinux2014`/`manylinux_2_24`) or `musllinux` tags (for example `musllinux_1_2`) and `linux` for the native linux tag. Note that `manylinux1` and `manylinux2010` is unsupported by the rust compiler. Wheels with the native `linux` tag will be rejected by pypi, unless they are separately validated by `auditwheel`. The default is the lowest compatible `manylinux` tag, or plain `linux` if nothing matched This option is ignored on all non-linux platforms -i, --interpreter [...] The python versions to build wheels for, given as the executables of interpreters such as `python3.9` or `/usr/bin/python3.8` -f, --find-interpreter Find interpreters from the host machine -b, --bindings Which kind of bindings to use [possible values: pyo3, pyo3-ffi, cffi, uniffi, bin] -o, --out The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target directory --auditwheel Audit wheel for manylinux compliance Possible values: - repair: Audit and repair wheel for manylinux compliance - check: Check wheel for manylinux compliance, but do not repair - skip: Don't check for manylinux compliance --zig For manylinux targets, use zig to ensure compliance for the chosen manylinux version Default to manylinux2014/manylinux_2_17 if you do not specify an `--compatibility` Make sure you installed zig with `pip install maturin[zig]` -q, --quiet Do not print cargo log messages --ignore-rust-version Ignore `rust-version` specification in packages -v, --verbose... Use verbose output (-vv very verbose/build.rs output) --color Coloring: auto, always, never --config Override a configuration value (unstable) -Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details --future-incompat-report Outputs a future incompatibility report at the end of the build (unstable) -h, --help Print help (see a summary with '-h') Compilation Options: -r, --release Build artifacts in release mode, with optimizations -j, --jobs Number of parallel jobs, defaults to # of CPUs --profile Build artifacts with the specified Cargo profile --target Build for the target triple [env: CARGO_BUILD_TARGET=] --target-dir Directory for all generated artifacts --timings= Timing output formats (unstable) (comma separated): html, json Feature Selection: -F, --features Space or comma separated list of features to activate --all-features Activate all available features --no-default-features Do not activate the `default` feature Manifest Options: -m, --manifest-path Path to Cargo.toml --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network ``` ### Cross Compiling Maturin has decent cross compilation support for `pyo3` and `bin` bindings, other kind of bindings may work but aren't tested regularly. #### Cross-compile to Linux/macOS ##### Use Docker For manylinux support the [manylinux-cross](https://github.com/rust-cross/manylinux-cross) docker images can be used. And [maturin-action](https://github.com/PyO3/maturin-action) makes it easy to do cross compilation on GitHub Actions. ##### Use Zig Since v0.12.7 maturin added support for linking with [`zig cc`](https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html), compile for Linux works and is regularly tested on CI, other platforms may also work but aren't tested regularly. You can install zig following the [official documentation](https://ziglang.org/download), or install it from PyPI via `pip install ziglang`. Then pass `--zig` to maturin `build` or `publish` commands to use it, for example ```bash maturin build --release --target aarch64-unknown-linux-gnu --zig ``` #### Cross-compile to Windows Pyo3 0.16.5 added an experimental feature `generate-import-lib` enables the user to cross compile extension modules for Windows targets without setting the `PYO3_CROSS_LIB_DIR` environment variable or providing any Windows Python library files. ```toml [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module", "generate-import-lib"] } ``` It uses an external [`python3-dll-a`](https://docs.rs/python3-dll-a/latest/python3_dll_a/) crate to generate import libraries for the Python DLL for MinGW-w64 and MSVC compile targets. Note: MSVC targets require LLVM binutils or MSVC build tools to be available on the host system. More specifically, `python3-dll-a` requires `llvm-dlltool` or `lib.exe` executable to be present in `PATH` when targeting `*-pc-windows-msvc`. maturin integrates [`cargo-xwin`](https://github.com/messense/cargo-xwin) to enable MSVC targets cross compilation support, it will download and unpack the Microsoft CRT headers and import libraries, and Windows SDK headers and import libraries needed for compiling and linking automatically. **By using this to cross compiling to Windows MSVC targets you are consented to accept the license at [https://go.microsoft.com/fwlink/?LinkId=2086102](https://go.microsoft.com/fwlink/?LinkId=2086102)**. (Building on Windows natively does not apply.) ## GitHub Actions If your project uses GitHub Actions, you can use the `maturin generate-ci` command to generate a GitHub Actions workflow file. ```bash mkdir -p .github/workflows maturin generate-ci github > .github/workflows/CI.yml ``` There are some options to customize the generated workflow file: ``` Generate CI configuration Usage: maturin generate-ci [OPTIONS] Arguments: CI provider Possible values: - github: GitHub Options: -m, --manifest-path Path to Cargo.toml -o, --output Output path [default: -] --platform ... Platform support [default: linux windows macos] Possible values: - all: All - linux: Linux - windows: Windows - macos: macOS - macosarm64: macOS(Arm64) - emscripten: Emscripten --pytest Enable pytest --zig Use zig to do cross compilation -h, --help Print help information (use `-h` for a summary) ``` ### Using PyPI's trusted publishing By default, the workflow provided by `generate-ci` will publish the release artifacts to PyPI using API token authentication. However, maturin also supports [trusted publishing (OpenID Connect)](https://docs.pypi.org/trusted-publishers/). To enable it, modify the `release` action in the generated GitHub workflow file: - remove `MATURIN_PYPI_TOKEN` from the `env` section to make maturin use trusted publishing - add `id-token: write` to the action's `permissions` (see [Configuring OpenID Connect in PyPI](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-pypi) from GitHub's documentation). - if `Environment name: release` was set in PyPI, add `environment: release` Make sure to follow the steps listed in [PyPI's documentation](https://docs.pypi.org/trusted-publishers/adding-a-publisher/) to set up your GitHub repository as a trusted publisher in the PyPI project settings before attempting to run the workflow. maturin-1.7.4/guide/src/environment-variables.md000066400000000000000000000046361467514767100217550ustar00rootroot00000000000000# Environment Variables Maturin reads a number of environment variables which you can use to configure the build process. Here is a list of all environment variables that are read by maturin: ## Cargo environment variables See [environment variables Cargo reads](https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-reads) ## Python environment variables * `VIRTUAL_ENV`: Path to a Python virtual environment * `CONDA_PREFIX`: Path to a conda environment * `MATURIN_PYTHON_SYSCONFIGDATA_DIR`: Path to a directory containing a `sysconfigdata*.py` file * `_PYTHON_SYSCONFIGDATA_NAME`: Name of a `sysconfigdata*.py` file * `MATURIN_PYPI_TOKEN`: PyPI token for uploading wheels * `MATURIN_PASSWORD`: PyPI password for uploading wheels * `MATURIN_PEP517_USE_BASE_PYTHON`: Use base Python executable instead of venv Python executable in PEP 517 build to avoid unnecessary rebuilds, should not be set when the sdist build requires packages installed in venv. ## `pyo3` environment variables * `PYO3_CROSS_PYTHON_VERSION`: Python version to use for cross compilation * `PYO3_CROSS_LIB_DIR`: This variable can be set to the directory containing the target's libpython DSO and the associated `_sysconfigdata*.py` file for Unix-like targets, or the Python DLL import libraries for the Windows target.This variable can be set to the directory containing the target's libpython DSO and the associated _sysconfigdata*.py file for Unix-like targets, or the Python DLL import libraries for the Windows target. * `PYO3_CONFIG_FILE`: Path to a [pyo3 config file](https://pyo3.rs/latest/building_and_distribution.html#advanced-config-files) ## Networking environment variables * `HTTP_PROXY` / `HTTPS_PROXY`: Proxy to use for HTTP/HTTPS requests * `REQUESTS_CA_BUNDLE` / `CURL_CA_BUNDLE`: Path to a CA bundle to use for HTTPS requests ## Other environment variables * `MACOSX_DEPLOYMENT_TARGET`: The minimum macOS version to target * `SOURCE_DATE_EPOCH`: The time to use for the timestamp in the wheel metadata * `MATURIN_EMSCRIPTEN_VERSION`: The version of emscripten to use for emscripten builds * `MATURIN_NO_MISSING_BUILD_BACKEND_WARNING`: Suppress missing build backend warning * `TARGET_SYSROOT`: The sysroot to use for auditwheel wheel when cross compiling * `ARCHFLAGS`: Flags to control the architecture of the build on macOS, for example you can use `ARCHFLAGS="-arch x86_64 -arch arm64"` to build universal2 wheels maturin-1.7.4/guide/src/import_hook.md000066400000000000000000000161421467514767100177700ustar00rootroot00000000000000# Import Hook [maturin_import_hook](https://pypi.org/project/maturin-import-hook/) is a package that provides a python import hook to automatically rebuild maturin projects when they are imported. This reduces friction when developing mixed python/rust codebases because changes made to rust components take effect automatically like changes to python components do. For `import` statements to trigger rebuilds, the hook must to be active (by calling `install()` or installing site-wide) and the maturin project being imported must be installed in editable mode (eg with `maturin develop` or `pip install -e`). Rebuilds are only triggered if the source code has changed, so the overhead is small if everything is up-to-date. The hook also adds support for importing stand-alone `.rs` files by creating and building temporary maturin projects for them. ## Installation Run the following commands to install the package and optionally configure the hook to activate automatically when starting the interpreter. ```shell pip install maturin_import_hook python -m maturin_import_hook site install ``` In order to use `site install`, you must have write access to `site-packages`. It is recommended to use a [virtual environment](https://docs.python.org/3/library/venv.html) instead of installing into the system interpreter. Alternatively, instead of using `site install`, put calls to `maturin_import_hook.install()` into any script where you want to use the import hook. ## Usage If the hook is installed site-wide, no code changes are required! just import a maturin project like normal and it will rebuild when necessary. If the hook is not installed site-wide, call `install()` like so: ```python # install the import hook with default settings. # can be skipped if installed site-wide (see above). # must be called before importing any maturin project. import maturin_import_hook maturin_import_hook.install() # when a maturin package that is installed in editable mode is imported, # that package will be automatically recompiled if necessary. import my_rust_package # when a .rs file is imported a project will be created for it in the # maturin build cache and the resulting library will be loaded. # # assuming subpackage/my_rust_script.rs defines a pyo3 module: import subpackage.my_rust_script ``` The maturin project importer and the rust file importer can be used separately ```python from maturin_import_hook import rust_file_importer rust_file_importer.install() from maturin_import_hook import project_importer project_importer.install() ``` The import hook can be configured to control its behaviour ```python import maturin_import_hook from maturin_import_hook.settings import MaturinSettings maturin_import_hook.install( enable_project_importer=True, enable_rs_file_importer=True, settings=MaturinSettings( release=True, strip=True, # ... ), show_warnings=True, # ... ) ``` The import hook is intended for use in development environments and not for production environments, so any calls to `install()` should ideally be removed before reaching production. This is another reason why installing site-wide is convenient. ## Features The import hook is fairly robust and supports the following: * Supports all the binding types and project layouts supported by maturin. * Supports importing multiple maturin projects in the same script. * Supports importing stand-alone `.rs` files that use `PyO3` bindings. * Supports `importlib.reload()` (currently not supported on Windows). * Detects source code changes of local path dependencies, not just the top-level project. * Can be used by multiple environments at once including with different interpreter versions. Each environment has a separate build cache. * Handles multiple scripts attempting to import/build packages simultaneously. Each build cache is protected with an exclusive lock. (One case where this is useful is tests using [`pytest-xdist`](https://pypi.org/project/pytest-xdist/)). * Extensible (see [Advanced Usage](#advanced-usage) below) ## CLI The package provides a CLI interface for getting information such as the location and size of the build cache and managing the installation into [`sitecustomize.py`](https://docs.python.org/3/library/site.html). For details, run: ```shell python -m maturin_import_hook --help ``` * `site (info | install | uninstall)` * Manage import hook installation in [`sitecustomize.py`](https://docs.python.org/3/library/site.html) of the active environment. * `cache (info | clear)` * Manage the build cache of the active environment. * `version` * Show version info of the import hook and associated tools. Useful for providing information to bug reports. ## Environment Variables The import hook can be disabled by setting `MATURIN_IMPORT_HOOK_ENABLED=0`. This can be used to disable the import hook in production if you want to leave calls to `install()` in place. Build files will be stored in an appropriate place for the current system but can be overridden by setting `MATURIN_BUILD_DIR`. These files can be deleted without causing any issues (unless a build is in progress). The precedence for storing build files is: * `MATURIN_BUILD_DIR` * (Each environment will store its cache in a subdirectory of the given path). * `/maturin_build_cache` * `/maturin_build_cache` * e.g. `~/.cache/maturin_build_cache` on POSIX. See the location being used with the CLI: `python -m maturin_import_hook cache info` ## Logging By default, the `maturin_import_hook` logger does not propagate to the root logger. This is so that `INFO` level messages are shown without having to configure logging (`INFO` level is normally not visible). The import hook also has extensive `DEBUG` level logging that generally would be more noise than useful. So by not propagating, `DEBUG` messages from the import hook are not shown even if the root logger has `DEBUG` level visible. If you prefer, `maturin_import_hook.reset_logger()` can be called to undo the default configuration and propagate the messages as normal. When debugging issues with the import hook, you should first call `reset_logger()` then configure the root logger to show `DEBUG` messages. You can also run with the environment variable `RUST_LOG=maturin=debug` to get more information from maturin. ```python import logging logging.basicConfig(format='%(name)s [%(levelname)s] %(message)s', level=logging.DEBUG) import maturin_import_hook maturin_import_hook.reset_logger() maturin_import_hook.install() ``` ## Advanced Usage The import hook classes can be subclassed to further customize to specific use cases. For example settings can be configured per-project or loaded from configuration files. ```python import sys from pathlib import Path from maturin_import_hook.settings import MaturinSettings from maturin_import_hook.project_importer import MaturinProjectImporter class CustomImporter(MaturinProjectImporter): def get_settings(self, module_path: str, source_path: Path) -> MaturinSettings: return MaturinSettings( release=True, strip=True, # ... ) sys.meta_path.insert(0, CustomImporter()) ``` maturin-1.7.4/guide/src/index.md000066400000000000000000000037321467514767100165460ustar00rootroot00000000000000# Maturin User Guide Welcome to the maturin user guide! It contains examples and documentation to explain all of maturin's use cases in detail. Please choose from the chapters on the left to jump to individual topics, or continue below to start with maturin's README. ## Sponsors Development of maturin is made possible by the following sponsors: And many more who kindly sponsor @messense on [GitHub Sponsors](https://github.com/sponsors/messense#sponsors). {{#include ../../README.md}} maturin-1.7.4/guide/src/installation.md000066400000000000000000000042641467514767100201410ustar00rootroot00000000000000# Installation ## Install from package managers [![Packaging status](https://repology.org/badge/vertical-allrepos/maturin.svg?columns=4)](https://repology.org/project/maturin/versions) ### PyPI maturin is published as Python binary wheel to PyPI, you can install it using [pipx](https://pypa.github.io/pipx/): ```bash pipx install maturin ``` There are some extra dependencies for certain scenarios: * `zig`: use zig as linker for easier cross compiling and manylinux compliance. * `patchelf`: repair wheels that links other shared libraries. For example, to install patchelf dependencies: `pipx install maturin[patchelf]`. > **Note** > > `pip install maturin` should also work if you don't want to use pipx. ### Homebrew On macOS [maturin is in Homebrew](https://formulae.brew.sh/formula/maturin#default) and you can install maturin from Homebrew: ```bash brew install maturin ``` ### conda Installing from the `conda-forge` channel can be achieved by adding `conda-forge` to your conda channels with: ``` conda config --add channels conda-forge conda config --set channel_priority strict ``` Once the `conda-forge` channel has been enabled, `maturin` can be installed with: ``` conda install maturin ``` ### Alpine Linux On Alpine Linux, [maturin is in community repository](https://pkgs.alpinelinux.org/packages?name=maturin&branch=edge&repo=community) and can be installed with `apk` after [enabling the community repository](https://wiki.alpinelinux.org/wiki/Enable_Community_Repository): ```bash apk add maturin ``` ## Download from GitHub Releases You can download precompiled maturin binaries from the latest [GitHub Releases](https://github.com/PyO3/maturin/releases/latest). You can also use [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) to install maturin from GitHub Releases: ```bash # Run `cargo install cargo-binstall` first if you don't have cargo-binstall installed. cargo binstall maturin ``` ## Build from source ### crates.io You can install maturin from [crates.io](https://crates.io/crates/maturin) using cargo: ```bash cargo install --locked maturin ``` ### Git repository ```bash cargo install --locked --git https://github.com/PyO3/maturin.git maturin ``` maturin-1.7.4/guide/src/local_development.md000066400000000000000000000071411467514767100211310ustar00rootroot00000000000000# Local Development ## `maturin develop` command For local development, the `maturin develop` command can be used to quickly build a package in debug mode by default and install it to virtualenv. ``` Usage: maturin develop [OPTIONS] [ARGS]... Arguments: [ARGS]... Rustc flags Options: -b, --bindings Which kind of bindings to use [possible values: pyo3, pyo3-ffi, cffi, uniffi, bin] --strip Strip the library for minimum file size -E, --extras Install extra requires aka. optional dependencies Use as `--extras=extra1,extra2` --skip-install Skip installation, only build the extension module inplace Only works with mixed Rust/Python project layout --pip-path Use a specific pip installation instead of the default one. This can be used to supply the path to a pip executable when the current virtualenv does not provide one. -q, --quiet Do not print cargo log messages --ignore-rust-version Ignore `rust-version` specification in packages -v, --verbose... Use verbose output (-vv very verbose/build.rs output) --color Coloring: auto, always, never --config Override a configuration value (unstable) -Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details --future-incompat-report Outputs a future incompatibility report at the end of the build (unstable) --uv Use `uv` to install packages instead of `pip` -h, --help Print help (see a summary with '-h') Compilation Options: -r, --release Pass --release to cargo -j, --jobs Number of parallel jobs, defaults to # of CPUs --profile Build artifacts with the specified Cargo profile --target Build for the target triple [env: CARGO_BUILD_TARGET=] --target-dir Directory for all generated artifacts --timings= Timing output formats (unstable) (comma separated): html, json Feature Selection: -F, --features Space or comma separated list of features to activate --all-features Activate all available features --no-default-features Do not activate the `default` feature Manifest Options: -m, --manifest-path Path to Cargo.toml --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network ``` ## PEP 660 Editable Installs Maturin supports [PEP 660](https://www.python.org/dev/peps/pep-0660/) editable installs since v0.12.0. You need to add `maturin` to `build-system` section of `pyproject.toml` to use it: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" ``` Editable installs can be used with mixed Rust/Python projects so you don't have to recompile and reinstall when only Python source code changes. They can also be used with mixed and pure projects together with the [import hook](./import_hook.md) so that recompilation/re-installation occurs automatically when Python or Rust source code changes. To install a package in editable mode with pip: ```bash cd my-project pip install -e . ``` or ```bash cd my-project maturin develop ``` Then Python source code changes will take effect immediately because the interpreter looks for the modules directly in the project source tree. maturin-1.7.4/guide/src/metadata.md000066400000000000000000000052551467514767100172210ustar00rootroot00000000000000# Python Project Metadata maturin supports [PEP 621](https://www.python.org/dev/peps/pep-0621/), you can specify python package metadata in `pyproject.toml`. maturin merges metadata from `Cargo.toml` and `pyproject.toml`, `pyproject.toml` takes precedence over `Cargo.toml`. Here is a `pyproject.toml` example from PEP 621 for reference purpose: ```toml [project] name = "spam" version = "2020.0.0" description = "Lovely Spam! Wonderful Spam!" readme = "README.rst" requires-python = ">=3.8" license = {file = "LICENSE.txt"} keywords = ["egg", "bacon", "sausage", "tomatoes", "Lobster Thermidor"] authors = [ {email = "hi@pradyunsg.me"}, {name = "Tzu-Ping Chung"} ] maintainers = [ {name = "Brett Cannon", email = "brett@python.org"} ] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python" ] dependencies = [ "httpx", "gidgethub[httpx]>4.0.0", "django>2.1; os_name != 'nt'", "django>2.0; os_name == 'nt'" ] [project.optional-dependencies] test = [ "pytest < 5.0.0", "pytest-cov[all]" ] [project.urls] homepage = "example.com" documentation = "readthedocs.org" repository = "github.com" changelog = "github.com/me/spam/blob/master/CHANGELOG.md" [project.scripts] spam-cli = "spam:main_cli" [project.gui-scripts] spam-gui = "spam:main_gui" [project.entry-points."spam.magical"] tomatoes = "spam:main_tomatoes" ``` ## Add Python dependencies To specify python dependencies, add a list `dependencies` in a `[project]` section in the `pyproject.toml`. This list is equivalent to `install_requires` in setuptools: ```toml [project] name = "my-project" dependencies = ["flask~=1.1.0", "toml==0.10.0"] ``` ## Add console scripts Pip allows adding so called console scripts, which are shell commands that execute some function in you program. You can add console scripts in a section `[project.scripts]`. The keys are the script names while the values are the path to the function in the format `some.module.path:class.function`, where the `class` part is optional. The function is called with no arguments. Example: ```toml [project.scripts] get_42 = "my_project:DummyClass.get_42" ``` ## Add trove classifiers You can also specify [trove classifiers](https://pypi.org/classifiers/) under `project.classifiers`: ```toml [project] name = "my-project" classifiers = ["Programming Language :: Python"] ``` ## Add SPDX license expressions A practical string value for the license key has been purposefully left out by PEP 621 to allow for a future PEP to specify support for [SPDX](https://spdx.org/licenses/) expressions. To use SPDX license expressions, you can specify it in `Cargo.toml` instead: ```toml [package] name = "my-project" license = "MIT OR Apache-2.0" ``` maturin-1.7.4/guide/src/migration.md000066400000000000000000000072121467514767100174250ustar00rootroot00000000000000# Migrating from older maturin versions This guide can help you upgrade code through breaking changes from one maturin version to the next. For a detailed list of all changes, see the [CHANGELOG](changelog.md). ## From 0.14.* to 0.15 ### Build with `--no-default-features` by default when bootstrapping from sdist When bootstrapping maturin from sdist, maturin 0.15 will build with `--no-default-features` by default, which means that for distro packaging, you might want to set the environment variable `MATURIN_SETUP_ARGS="--features full,rustls"` to enable full features. ### Remove `[tool.maturin.sdist-include]` Use `[tool.maturin.include]` option instead. ### Remove `[package.metadata.maturin]` from `Cargo.toml` Package metadata is now specified in `[tool.maturin]` section of `pyproject.toml` instead of `Cargo.toml`. Note that the replacement for `package.metadata.maturin.name` is `tool.maturin.module-name`. ### Require `uniffi-bindgen` CLI to building `uniffi` bindings maturin 0.15 requires `uniffi-bindgen` CLI to build `uniffi` bindings, you can install it with `pip install uniffi-bindgen`. ## From 0.13.* to 0.14 ### Remove support for specifying python package metadata in `Cargo.toml` maturin 0.14 removed support for specifying python package metadata in `Cargo.toml`, Python package metadata should be specified in the `project` section of `pyproject.toml` instead as [PEP 621](https://peps.python.org/pep-0621/) specifies. ### Deprecate `[tool.maturin.sdist-include]` maturin 0.14 added `[tool.maturin.include]` and `[tool.maturin.exclude]` to replace `[tool.maturin.sdist-include]` which was sdist only, the new options can be configured to apply to sdist and/or wheel. ### macOS deployment target version defaults what `rustc` supports If you don't set the `MACOSX_DEPLOYMENT_TARGET` environment variable, maturin 0.14 will use the default target version acquired from `rustc`, this may cause build issue for projects that depend on C/C++ code, usually you can fix it by setting a correct `MACOSX_DEPLOYMENT_TARGET`, for example ```bash export MACOSX_DEPLOYMENT_TARGET=10.9 ``` ### Deprecate `python-source` option in `Cargo.toml` maturin 0.14 deprecated the `python-source` option in `Cargo.toml`, use `[tool.maturin.python-source]` option in `pyproject.toml` instead. ## From 0.12.* to 0.13 ### Drop support for Python 3.6 maturin 0.13 has dropped support for Python 3.6, to support Python 3.6 you can use the old 0.12 versions. ### Removed `--cargo-extra-args` and `--rustc-extra-args` maturin 0.13 added most of the `cargo rustc` options so you can just use them directly, for example `--cargo-extra-args="--no-default-features"` becomes `--no-default-features`. To pass extra arguments to rustc, add them after `--`, for example use `maturin build -- -Clink-arg=-s` instead of `--rustc-extra-args="-Clink-arg=-s"`. ### Source distributions are not built by default maturin 0.13 replaced `--no-sdist` with the new `--sdist` option in `maturin build` command, source distributions are now only built when `--sdist` is specified. ### Only build wheels for current Python interpreter in `PATH` by default maturin 0.13 no longer searches for Python interpreters by default and only build wheels for the current Python interpreter (i.e. `python3`) in `PATH`. To enable the old behavior, use the new `--find-interpreter` option. ### `--repository-url` only accepts full URL now Previously `--repository-url` option in `maturin upload` and `maturin publish` commands accepts both repository name and URL. maturin 0.13 changed `--repository-url` to only accept full URL and added a new `--repository` for the repository name. This new behavior matches `twine upload`. maturin-1.7.4/guide/src/platform_support.md000066400000000000000000000040041467514767100210500ustar00rootroot00000000000000# Platform Support Being built on cargo and rustc, maturin is limited by [rust's platform support](https://doc.rust-lang.org/nightly/rustc/platform-support.html). ## Automated tests On GitHub actions, windows, macOS and linux are tested, all on 64-bit x86. FreeBSD is also tested though Cirrus CI, but might get removed at some point. Since CI is very time intensive to maintain, I'd like to stick to GitHub action and these three platforms. ## Releases The following targets are built into wheels and downloadable binaries: * Windows: 32-bit and 64-bit x86 as well as arm64 * Linux: x86, x86_64, armv7, aarch64 and ppc64le (musl), as well as s390x (gnu) * macOS: x86_64 and aarch64 ## Other Operating Systems It should be possible to build maturin and for maturin to build wheels on other platforms supported by rust. To add a new os, add it in target.rs and, if it doesn't behave like the other unixes, in `PythonInterpreter::get_tag`. Please also submit the output of `python -m sysconfig` as a file in the `sysconfig` folder. It's ok to edit setup.py to deactivate default features so `pip install` works, but new platforms should not require complex workaround in `compile.rs`. ## Architectures All architectures included in manylinux (aarch64, armv7l, ppc64le, ppc64, i686, x86_64, s390x) are supported. I'm not sure whether it makes sense to allow architectures that aren't even supported by [manylinux](https://github.com/pypa/manylinux). ## Python Support CPython 3.8 to 3.10 are supported and tested on CI, though the entire 3.x series should work. This will be changed as new python versions are released and others have their end of life. PyPy 3.6 and later also works, as does GraalPy 23.0 and later. ## Manylinux/Musllinux `manylinux2014` and its newer versions as well as `musllinux_1_1` and its newer versions are supported. Since Rust and the manylinux project drop support for old manylinux/musllinux versions sometimes, after maturin 1.0 manylinux version bumps will be minor versions rather than major versions. maturin-1.7.4/guide/src/project_layout.md000066400000000000000000000144071467514767100205030ustar00rootroot00000000000000# Project Layout Maturin expects a particular project layout depending on the contents of the package. ## Pure Rust project For a pure Rust project, the structure is as expected and what you get from `cargo new`: ``` my-rust-project/ ├── Cargo.toml ├── pyproject.toml # required for maturin configuration └── src ├── lib.rs # default for library crates └── main.rs # default for binary crates ``` Maturin will add a necessary `__init__.py` to the package when building the wheel. For convenience, this file includes the following: ```python from .my_project import * __doc__ = my_project.__doc__ if hasattr(my_project, "__all__"): __all__ = my_project.__all__ ``` such that the module functions may be called directly with: ```python import my_project my_project.foo() ``` rather than: ```python from my_project import my_project ``` > **Note**: there is currently no way to tell maturin to include extra data (e.g. `package_data` in setuptools) for a pure Rust project. Instead, consider using the layout described below for the mixed Rust/Python project. ## Mixed Rust/Python project To create a mixed Rust/Python project, add a directory with your package name (i.e. matching `lib.name` in your `Cargo.toml`) to contain the Python source: ``` my-rust-and-python-project ├── Cargo.toml ├── my_project # <<< add this directory and put Python code in here │ ├── __init__.py │ └── bar.py ├── pyproject.toml ├── README.md └── src └── lib.rs ``` Note that in a mixed Rust/Python project, maturin _does not_ modify the existing `__init__.py` in the root package, so now to import the rust module in Python you must use: ```python from my_project import my_project ``` You can modify `__init__.py` yourself (see above) if you would like to import Rust functions from a higher-level namespace. You can specify a different python source directory in `pyproject.toml` by setting `tool.maturin.python-source`, for example **pyproject.toml** ```toml [tool.maturin] python-source = "python" ``` then the project structure would look like this: ``` my-rust-and-python-project ├── Cargo.toml ├── python │ └── my_project │ ├── __init__.py │ └── bar.py ├── pyproject.toml ├── README.md └── src    └── lib.rs ``` > **Note** > > This structure is recommended to avoid [a common `ImportError` pitfall](https://github.com/PyO3/maturin/issues/490) ### Alternate Python source directory (src layout) Having a directory with `package_name` in the root of the project can occasionally cause confusion as Python allows importing local packages and modules. A popular way to avoid this is with the `src`-layout, where the Python package is nested within a `src` directory. Unfortunately this interferes with the structure of a typical Rust project. Fortunately, Python is not particular about the name of the parent source directory. maturin will detect the following src layout automatically: ``` my-rust-and-python-project ├── src # put python code in src folder │ └── my_project │ ├── __init__.py │ └── bar.py ├── pyproject.toml ├── README.md └── rust # put rust code in rust folder |── Cargo.toml └── src └── lib.rs ``` #### Import Rust as a submodule of your project If the Python module created by Rust has the same name as the Python package in a mixed Rust/Python project, IDEs might get confused. You might also want to discourage end users from using the Rust functions directly by giving it a different name, say '\_my_project'. This can be done by adding `module-name = .` to the `[tool.maturin]` in your `pyproject.toml`. For example: ```toml [tool.maturin] module-name = "my_project._my_project" ``` You can then import your Rust module inside your Python source as follows: ```python from my_project import _my_project ``` IDEs can then recognize the `_my_project` module as separate from your main Python source module. This allows for code completion of the types inside your Rust Python module for certain IDEs. ## Adding Python type information To distribute typing information, you need to add: * an empty marker file called `py.typed` in the root of the Python package * inline types in Python files and/or `.pyi` "stub" files In a pure Rust project, add type stubs in a `.pyi` file in the project root. Maturin will automatically include this file along with the required `py.typed` file for you. ``` my-rust-project/ ├── Cargo.toml ├── my_project.pyi # <<< add type stubs for Rust functions in the my_project module here ├── pyproject.toml └── src └── lib.rs ``` In a mixed Rust/Python project, additional files in the Python source dir (but not in `.gitignore`) will be automatically included in the build outputs (source distribution and/or wheel). Type information can be therefore added to the root Python package directory as you might do in a pure Python package. This requires you to add the `py.typed` marker file yourself. ``` my-project ├── Cargo.toml ├── python │ └── my_project │ ├── __init__.py │ ├── py.typed # <<< add this empty file │ ├── my_project.pyi # <<< add type stubs for Rust functions in the my_project module here │ ├── bar.pyi # <<< add type stubs for bar.py here OR type bar.py inline │ └── bar.py ├── pyproject.toml ├── README.md └── src └── lib.rs ``` ## Data You can add wheel data by creating a `.data` folder or setting its location as `data` in pyproject.toml under `[tool.maturin]` or in Cargo.toml under `[project.metadata.maturin]`. The data folder may have the following subfolder: * `data`: The contents of this folder will simply be unpacked into the virtualenv * `scripts`: Treated similar to entry points, files in there are installed as standalone executable * `headers`: For `.h` C header files * `purelib`: This also exists, but seems to be barely used * `platlib`: This also exists, but seems to be barely used If you add a symlink in the data directory, we'll include the actual file so you have more flexibility. maturin-1.7.4/guide/src/sphinx.md000066400000000000000000000062061467514767100167470ustar00rootroot00000000000000# Sphinx Documentation Integration Sphinx is a popular documentation generator in Python community. It's commonly used together with services like [Read The Docs](https://readthedocs.org/) which automates documentation building, versioning, and hosting for you. Usually in a pure Python project setting up Sphinx is easy, just follow the [quick start](https://www.sphinx-doc.org/en/master/usage/quickstart.html) of Sphinx documentation is enough. But it can get complicated when Rust based Python extension modules are involved. With maturin, first you need to make sure you have added a `pyproject.toml` and properly configured it to build source distributions, for example a minimal configuration below: ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" ``` With this `pip install .` should work when invoked in the project directory. ## Read The Docs Integration To build documentation on [Read The Docs](https://readthedocs.org/), you need to tell it to install the Rust compiler and Python interpreter in its build environment, you can do it by adding a `.readthedocs.yaml` in your project root: ```yaml # https://docs.readthedocs.io/en/stable/config-file/v2.html#supported-settings version: 2 sphinx: builder: html build: os: "ubuntu-20.04" tools: python: "3.9" rust: "1.55" python: install: - method: pip path: . ``` If you're using a mixed Rust/Python project layout, make sure you didn't add the Python project path to `sys.path` in `conf.py` of Sphinx. Read The Docs doesn't install your project in editable mode, adding it to `sys.path` will make your project fail to import which breaks documentation generation. If you need to install a specific version of Sphinx or adding Sphinx themes/extensions, you can change the `python.install` section a bit to add an extra installation step, for example: ```yaml python: install: - requirements: docs/requirements.txt - method: pip path: . ``` In `docs/requirements.txt` you can add some Python package requirements you needs build the documentation. ## Netlify Integration [Netlify](https://www.netlify.com/) is another popular automated site hosting service that can be used with Sphinx and other documentation tools. Netlify configuration can be specified in a `.netlify.toml` file. Assuming your Sphinx documentation files are placed in `docs/` directory, a minimal configurationfor maturin based project can be: ```toml [build] base = "docs" publish = "_build/html" command = "maturin develop -m ../Cargo.toml && make html" ``` You also need to add a `rust-toolchain` file at `docs/rust-toolchain` which netlify will use to install the specified Rust toolchain that maturin needs to compile your project. For Sphinx which is written in Python to run you need to add a `runtime.txt` at `docs/runtime.txt`, its content should be a Python interpreter version for example `3.8`. Then a `requirements.txt` file at `docs/requirements.txt` is needed to install Sphinx and its dependencies, you can generate one by: ```bash python3 -m venv venv source venv/bin/activate python3 -m pip install sphinx python3 -m pip freeze > docs/requirements.txt ``` maturin-1.7.4/guide/src/tutorial.md000066400000000000000000000225161467514767100173030ustar00rootroot00000000000000# Tutorial In this tutorial we will wrap a version of [the guessing game from The Rust Book](https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html) to run in Python using pyo3. ## Create a new Rust project First, create a new Rust library project using `cargo new --lib --edition 2021 guessing-game`. This will create a directory with the following structure. ```ignore guessing-game/ ├── Cargo.toml └── src └── lib.rs ``` Edit `Cargo.toml` to configure the project and module name, and add the dependencies (`rand` and `pyo3`). Configure `pyo3` with additional features to make an extension module compatible with multiple Python versions using the stable ABI (`abi3`). ```toml [package] name = "guessing-game" version = "0.1.0" edition = "2021" [lib] name = "guessing_game" # "cdylib" is necessary to produce a shared library for Python to import from. crate-type = ["cdylib"] [dependencies] rand = "0.8.4" [dependencies.pyo3] version = "0.21.1" # "abi3-py38" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.8 features = ["abi3-py38"] ``` Add a `pyproject.toml` to configure [PEP 518](https://peps.python.org/pep-0518/) build system requirements and enable the `extension-module` feature of pyo3. ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] # "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so) features = ["pyo3/extension-module"] ``` ### Use `maturin new` New projects can also be quickly created using the `maturin new` command: ```bash maturin new --help Create a new cargo project Usage: maturin new [OPTIONS] Arguments: Project path Options: --name Set the resulting package name, defaults to the directory name --mixed Use mixed Rust/Python project layout --src Use Python first src layout for mixed Rust/Python project -b, --bindings Which kind of bindings to use [possible values: pyo3, cffi, uniffi, bin] -h, --help Print help information ``` The above process can be achieved by running `maturin new -b pyo3 guessing_game` then edit `Cargo.toml` to add `abi3-py38` feature. ## Install and configure maturin (in a virtual environment) Create a virtual environment and install maturin. Note maturin has minimal dependencies! ```shell ferris@rustbox [~/src/rust/guessing-game] % python3 -m venv .venv ferris@rustbox [~/src/rust/guessing-game] % source .venv/bin/activate (.venv) ferris@rustbox [~/src/rust/guessing-game] % pip install -U pip maturin (.venv) ferris@rustbox [~/src/rust/guessing-game] % pip freeze maturin==1.3.0 tomli==2.0.1 ``` maturin is configured in `pyproject.toml` as introduced by [PEP 518](https://www.python.org/dev/peps/pep-0518/). This file lives in the root of your project tree: ```ignore guessing-game/ ├── Cargo.toml ├── pyproject.toml # <<< add this file └── src └── lib.rs ``` Configuration in this file is quite simple for most projects. You just need to indicate maturin as a requirement (and restrict the version) and as the build-backend (Python supports a number of build-backends since [PEP 517](https://www.python.org/dev/peps/pep-0517/)). ```toml [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" ``` Various other tools may also be configured in `pyproject.toml` and the Python community seems to be consolidating declarative configuration in this file. ## Program the guessing game in Rust When you create a `lib` project with `cargo new` it creates a file `src/lib.rs` with some default code. Edit that file and replace the default code with the code below. As mentioned, we will implement a slightly modified version of [the guessing game from The Rust Book](https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html). Instead of implementing as a `bin` crate, we're using a `lib` and will expose the main logic as a Python function. ```rust,no_run use pyo3::prelude::*; use rand::Rng; use std::cmp::Ordering; use std::io; #[pyfunction] fn guess_the_number() { println!("Guess the number!"); let secret_number = rand::thread_rng().gen_range(1..101); loop { println!("Please input your guess."); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect("Failed to read line"); let guess: u32 = match guess.trim().parse() { Ok(num) => num, Err(_) => continue, }; println!("You guessed: {}", guess); match guess.cmp(&secret_number) { Ordering::Less => println!("Too small!"), Ordering::Greater => println!("Too big!"), Ordering::Equal => { println!("You win!"); break; } } } } /// A Python module implemented in Rust. The name of this function must match /// the `lib.name` setting in the `Cargo.toml`, else Python will not be able to /// import the module. #[pymodule] fn guessing_game(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(guess_the_number, m)?)?; Ok(()) } ``` Thanks to pyo3, there's very little difference between this and the example in The Rust Book. All we had to do was: 1. Include the pyo3 prelude 2. Add `#[pyfunction]` to our function 3. Add the `#[pymodule]` block to expose the function as part of a Python module Refer to the [pyo3 User Guide](https://pyo3.rs/) for more information on using pyo3. It can do a lot more! ## Build and install the module with `maturin develop` Note that _this is just a Rust project_ at this point, and with few exceptions you can build it as you'd expect using `cargo build`. maturin helps with this, however, adding some platform-specific build configuration and ultimately packaging the binary results as a wheel (a `.whl` file, which is an archive of compiled components suitable for installation with `pip`, the Python package manager). So let's use maturin to build and install in our current environment. You can also compile a performance-optimized program by adding the `-r` or `--release` flag for speed testing. ```shell (.venv) ferris@rustbox [~/src/rust/guessing-game] % maturin develop 🔗 Found pyo3 bindings with abi3 support for Python ≥ 3.8 🐍 Not using a specific python interpreter (With abi3, an interpreter is only required on windows) Compiling pyo3-build-config v0.18.0 Compiling libc v0.2.119 Compiling once_cell v1.10.0 Compiling cfg-if v1.0.0 Compiling proc-macro2 v1.0.36 Compiling unicode-xid v0.2.2 Compiling syn v1.0.86 Compiling parking_lot_core v0.8.5 Compiling smallvec v1.8.0 Compiling scopeguard v1.1.0 Compiling unindent v0.1.8 Compiling ppv-lite86 v0.2.16 Compiling instant v0.1.12 Compiling lock_api v0.4.6 Compiling indoc v1.0.4 Compiling getrandom v0.2.5 Compiling rand_core v0.6.3 Compiling parking_lot v0.11.2 Compiling rand_chacha v0.3.1 Compiling rand v0.8.5 Compiling quote v1.0.15 Compiling pyo3-ffi v0.18.0 Compiling pyo3 v0.18.0 Compiling pyo3-macros-backend v0.18.0 Compiling pyo3-macros v0.18.0 Compiling guessing-game v0.1.0 (/Users/ferris/src/rust/guessing-game) Finished dev [unoptimized + debuginfo] target(s) in 13.31s ``` Your `guessing_game` module should now be available in your current virtual environment. Go ahead and play a few games! ```shell (.venv) ferris@rustbox [~/src/rust/guessing-game] % python Python 3.9.6 (default, Aug 25 2021, 16:04:27) [Clang 12.0.5 (clang-1205.0.22.9)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import guessing_game >>> guessing_game.guess_the_number() Guess the number! Please input your guess. 42 You guessed: 42 Too small! Please input your guess. 80 You guessed: 80 Too big! Please input your guess. 50 You guessed: 50 Too small! Please input your guess. 60 You guessed: 60 Too big! Please input your guess. 55 You guessed: 55 You win! ``` ## Create a wheel for distribution `maturin develop` actually skips the wheel generation part and installs directly in the current environment. `maturin build` on the other hand will produce a wheel you can distribute. Note the wheel contains "tags" in its filename that correspond to supported Python versions, platforms, and/or architectures, so yours might look a little different. If you want to distribute broadly, you may need to build on multiple platforms and use a [`manylinux`](https://github.com/pypa/manylinux) Docker container to build wheels compatible with a wide range of Linux distros. ```shell (.venv) ferris@rustbox [~/src/rust/guessing-game] % maturin build 🔗 Found pyo3 bindings with abi3 support for Python ≥ 3.8 🐍 Not using a specific python interpreter (With abi3, an interpreter is only required on windows) Finished dev [unoptimized + debuginfo] target(s) in 7.32s 📦 Built wheel for abi3 Python ≥ 3.8 to /Users/ferris/src/rust/guessing-game/target/wheels/guessing_game-0.1.0-cp37-abi3-macosx_10_7_x86_64.whl ``` maturin can even publish wheels directly to [PyPI](https://pypi.org) with `maturin publish`! ## Summary Congratulations! You successfully created a Python module implemented entirely in Rust thanks to pyo3 and maturin. This demonstrates how easy it is to get started with maturin, but keep reading to learn more about all the additional features. maturin-1.7.4/guide/tweak.css000066400000000000000000000003751467514767100161530ustar00rootroot00000000000000.sponsors { display: flex; justify-content: left; flex-wrap: wrap; align-items: center; margin: 1rem 0; } .sponsors > div { text-align: center; width: 25%; padding-bottom: 20px; } .sponsors span { display: block; } maturin-1.7.4/license-apache000066400000000000000000000251371467514767100160200ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. maturin-1.7.4/license-mit000066400000000000000000000020331467514767100153560ustar00rootroot00000000000000Copyright (c) 2018 konstin 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. maturin-1.7.4/maturin.schema.json000066400000000000000000000236671467514767100170530ustar00rootroot00000000000000{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ToolMaturin", "description": "The `[tool.maturin]` section of a pyproject.toml", "type": "object", "properties": { "all-features": { "description": "Activate all available features", "type": [ "boolean", "null" ] }, "auditwheel": { "description": "Audit wheel mode", "anyOf": [ { "$ref": "#/definitions/AuditWheelMode" }, { "type": "null" } ] }, "bindings": { "description": "Bindings type", "type": [ "string", "null" ] }, "compatibility": { "description": "Platform compatibility", "anyOf": [ { "$ref": "#/definitions/PlatformTag" }, { "type": "null" } ] }, "config": { "description": "Override a configuration value (unstable)", "type": [ "array", "null" ], "items": { "type": "string" } }, "data": { "description": "Path to the wheel directory, defaults to `.data`", "type": [ "string", "null" ] }, "exclude": { "description": "Exclude files matching the given glob pattern(s)", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/GlobPattern" } }, "features": { "description": "Space or comma separated list of features to activate", "type": [ "array", "null" ], "items": { "type": "string" } }, "frozen": { "description": "Require Cargo.lock and cache are up to date", "type": [ "boolean", "null" ] }, "include": { "description": "Include files matching the given glob pattern(s)", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/GlobPattern" } }, "locked": { "description": "Require Cargo.lock is up to date", "type": [ "boolean", "null" ] }, "manifest-path": { "description": "Path to Cargo.toml", "type": [ "string", "null" ] }, "module-name": { "description": "Module name, accepts setuptools style import name like `foo.bar`", "type": [ "string", "null" ] }, "no-default-features": { "description": "Do not activate the `default` feature", "type": [ "boolean", "null" ] }, "profile": { "description": "Build artifacts with the specified Cargo profile", "type": [ "string", "null" ] }, "python-packages": { "description": "Python packages to include", "type": [ "array", "null" ], "items": { "type": "string" } }, "python-source": { "description": "The directory with python module, contains `/__init__.py`", "type": [ "string", "null" ] }, "rustc-args": { "description": "Additional rustc arguments", "type": [ "array", "null" ], "items": { "type": "string" } }, "sdist-generator": { "description": "Source distribution generator", "default": "cargo", "allOf": [ { "$ref": "#/definitions/SdistGenerator" } ] }, "skip-auditwheel": { "description": "Skip audit wheel", "default": false, "type": "boolean" }, "strip": { "description": "Strip the final binary", "default": false, "type": "boolean" }, "target": { "description": "Target configuration", "default": {}, "type": "object", "additionalProperties": { "$ref": "#/definitions/TargetConfig" } }, "targets": { "description": "Cargo compile targets", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/CargoTarget" } }, "unstable-flags": { "description": "Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details", "type": [ "array", "null" ], "items": { "type": "string" } } }, "definitions": { "AuditWheelMode": { "description": "Auditwheel mode", "oneOf": [ { "description": "Audit and repair wheel for manylinux compliance", "type": "string", "enum": [ "repair" ] }, { "description": "Check wheel for manylinux compliance, but do not repair", "type": "string", "enum": [ "check" ] }, { "description": "Don't check for manylinux compliance", "type": "string", "enum": [ "skip" ] } ] }, "CargoTarget": { "description": "Cargo compile target", "type": "object", "required": [ "name" ], "properties": { "kind": { "description": "Kind of target (\"bin\", \"lib\")", "type": [ "string", "null" ] }, "name": { "description": "Name as given in the `Cargo.toml` or generated from the file name", "type": "string" } } }, "Format": { "description": "The target format for the include or exclude [GlobPattern].\n\nSee [Formats].", "oneOf": [ { "description": "Source distribution", "type": "string", "enum": [ "sdist" ] }, { "description": "Wheel", "type": "string", "enum": [ "wheel" ] } ] }, "Formats": { "description": "A single [Format] or multiple [Format] values for a [GlobPattern].", "anyOf": [ { "description": "A single [Format] value", "allOf": [ { "$ref": "#/definitions/Format" } ] }, { "description": "Multiple [Format] values", "type": "array", "items": { "$ref": "#/definitions/Format" } } ] }, "GlobPattern": { "description": "A glob pattern for the include and exclude configuration.\n\nSee [PyProjectToml::include] and [PyProject::exclude].\n\nBased on .", "anyOf": [ { "description": "A glob", "type": "string" }, { "description": "A glob `path` with a `format` key to specify one or more [Format] values", "type": "object", "required": [ "format", "path" ], "properties": { "format": { "description": "One or more [Format] values", "allOf": [ { "$ref": "#/definitions/Formats" } ] }, "path": { "description": "A glob", "type": "string" } } } ] }, "PlatformTag": { "description": "Decides how to handle manylinux and musllinux compliance", "oneOf": [ { "description": "Use the manylinux_x_y tag", "type": "object", "required": [ "Manylinux" ], "properties": { "Manylinux": { "type": "object", "required": [ "x", "y" ], "properties": { "x": { "description": "GLIBC version major", "type": "integer", "format": "uint16", "minimum": 0.0 }, "y": { "description": "GLIBC version minor", "type": "integer", "format": "uint16", "minimum": 0.0 } } } }, "additionalProperties": false }, { "description": "Use the musllinux_x_y tag", "type": "object", "required": [ "Musllinux" ], "properties": { "Musllinux": { "type": "object", "required": [ "x", "y" ], "properties": { "x": { "description": "musl libc version major", "type": "integer", "format": "uint16", "minimum": 0.0 }, "y": { "description": "musl libc version minor", "type": "integer", "format": "uint16", "minimum": 0.0 } } } }, "additionalProperties": false }, { "description": "Use the native linux tag", "type": "string", "enum": [ "Linux" ] } ] }, "SdistGenerator": { "description": "Source distribution generator", "oneOf": [ { "description": "Use `cargo package --list`", "type": "string", "enum": [ "cargo" ] }, { "description": "Use `git ls-files`", "type": "string", "enum": [ "git" ] } ] }, "TargetConfig": { "description": "Target configuration", "type": "object", "properties": { "macos-deployment-target": { "description": "macOS deployment target version", "type": [ "string", "null" ] } } } } } maturin-1.7.4/maturin/000077500000000000000000000000001467514767100147035ustar00rootroot00000000000000maturin-1.7.4/maturin/__init__.py000066400000000000000000000160231467514767100170160ustar00rootroot00000000000000#!/usr/bin/env python3 """ maturin's implementation of the PEP 517 interface. Calls maturin through subprocess Currently, the "return value" of the rust implementation is the last line of stdout On windows, apparently pip's subprocess handling sets stdout to some windows encoding (e.g. cp1252 on my machine), even though the terminal supports utf8. Writing directly to the binary stdout buffer avoids encoding errors due to maturin's emojis. """ from __future__ import annotations import os import platform import shlex import shutil import struct import subprocess import sys from subprocess import SubprocessError from typing import Any, Dict, Mapping, List, Optional try: import tomllib except ModuleNotFoundError: import tomli as tomllib # type: ignore def get_config() -> Dict[str, str]: with open("pyproject.toml", "rb") as fp: pyproject_toml = tomllib.load(fp) return pyproject_toml.get("tool", {}).get("maturin", {}) def get_maturin_pep517_args(config_settings: Optional[Mapping[str, Any]] = None) -> List[str]: build_args = config_settings.get("build-args") if config_settings else None if build_args is None: env_args = os.getenv("MATURIN_PEP517_ARGS", "") args = shlex.split(env_args) elif isinstance(build_args, str): args = shlex.split(build_args) else: args = build_args return args def _get_sys_executable() -> str: executable = sys.executable if os.getenv("MATURIN_PEP517_USE_BASE_PYTHON") in {"1", "true"}: # Use the base interpreter path when running inside a venv to avoid recompilation # when switching between venvs base_executable = getattr(sys, "_base_executable") if base_executable and os.path.exists(base_executable): executable = os.path.realpath(base_executable) return executable def _additional_pep517_args() -> List[str]: # Support building for 32-bit Python on x64 Windows if platform.system().lower() == "windows" and platform.machine().lower() == "amd64": pointer_width = struct.calcsize("P") * 8 if pointer_width == 32: return ["--target", "i686-pc-windows-msvc"] return [] # noinspection PyUnusedLocal def _build_wheel( wheel_directory: str, config_settings: Optional[Mapping[str, Any]] = None, metadata_directory: Optional[str] = None, editable: bool = False, ) -> str: # PEP 517 specifies that only `sys.executable` points to the correct # python interpreter base_command = [ "maturin", "pep517", "build-wheel", "-i", _get_sys_executable(), ] options = _additional_pep517_args() if editable: options.append("--editable") pep517_args = get_maturin_pep517_args(config_settings) if pep517_args: options.extend(pep517_args) if "--compatibility" not in options and "--manylinux" not in options: # default to off if not otherwise specified options = ["--compatibility", "off", *options] command = [*base_command, *options] print("Running `{}`".format(" ".join(command))) sys.stdout.flush() result = subprocess.run(command, stdout=subprocess.PIPE) sys.stdout.buffer.write(result.stdout) sys.stdout.flush() if result.returncode != 0: sys.stderr.write(f"Error: command {command} returned non-zero exit status {result.returncode}\n") sys.exit(1) output = result.stdout.decode(errors="replace") wheel_path = output.strip().splitlines()[-1] filename = os.path.basename(wheel_path) shutil.copy2(wheel_path, os.path.join(wheel_directory, filename)) return filename # noinspection PyUnusedLocal def build_wheel( wheel_directory: str, config_settings: Optional[Mapping[str, Any]] = None, metadata_directory: Optional[str] = None, ) -> str: return _build_wheel(wheel_directory, config_settings, metadata_directory) # noinspection PyUnusedLocal def build_sdist(sdist_directory: str, config_settings: Optional[Mapping[str, Any]] = None) -> str: command = ["maturin", "pep517", "write-sdist", "--sdist-directory", sdist_directory] print("Running `{}`".format(" ".join(command))) sys.stdout.flush() result = subprocess.run(command, stdout=subprocess.PIPE) sys.stdout.buffer.write(result.stdout) sys.stdout.flush() if result.returncode != 0: sys.stderr.write(f"Error: command {command} returned non-zero exit status {result.returncode}\n") sys.exit(1) output = result.stdout.decode(errors="replace") return output.strip().splitlines()[-1] # noinspection PyUnusedLocal def get_requires_for_build_wheel(config_settings: Optional[Mapping[str, Any]] = None) -> List[str]: if get_config().get("bindings") == "cffi": return ["cffi"] else: return [] # noinspection PyUnusedLocal def build_editable( wheel_directory: str, config_settings: Optional[Mapping[str, Any]] = None, metadata_directory: Optional[str] = None, ) -> str: return _build_wheel(wheel_directory, config_settings, metadata_directory, editable=True) # Requirements to build an editable are the same as for a wheel get_requires_for_build_editable = get_requires_for_build_wheel # noinspection PyUnusedLocal def get_requires_for_build_sdist(config_settings: Optional[Mapping[str, Any]] = None) -> List[str]: return [] # noinspection PyUnusedLocal def prepare_metadata_for_build_wheel( metadata_directory: str, config_settings: Optional[Mapping[str, Any]] = None ) -> str: print("Checking for Rust toolchain....") is_cargo_installed = False try: output = subprocess.check_output(["cargo", "--version"]).decode("utf-8", "ignore") if "cargo" in output: is_cargo_installed = True except (FileNotFoundError, SubprocessError): pass if not is_cargo_installed: sys.stderr.write( "\nCargo, the Rust package manager, is not installed or is not on PATH.\n" "This package requires Rust and Cargo to compile extensions. Install it through\n" "the system's package manager or via https://rustup.rs/\n\n" ) sys.exit(1) command = [ "maturin", "pep517", "write-dist-info", "--metadata-directory", metadata_directory, # PEP 517 specifies that only `sys.executable` points to the correct # python interpreter "--interpreter", _get_sys_executable(), ] command.extend(_additional_pep517_args()) pep517_args = get_maturin_pep517_args(config_settings) if pep517_args: command.extend(pep517_args) print("Running `{}`".format(" ".join(command))) try: _output = subprocess.check_output(command) except subprocess.CalledProcessError as e: sys.stderr.write(f"Error running maturin: {e}\n") sys.exit(1) sys.stdout.buffer.write(_output) sys.stdout.flush() output = _output.decode(errors="replace") return output.strip().splitlines()[-1] # Metadata for editable are the same as for a wheel prepare_metadata_for_build_editable = prepare_metadata_for_build_wheel maturin-1.7.4/maturin/__main__.py000066400000000000000000000021711467514767100167760ustar00rootroot00000000000000from __future__ import annotations import os import sys from pathlib import Path import sysconfig from typing import Optional def get_maturin_path() -> Optional[Path]: SCRIPT_NAME = "maturin" def script_dir(scheme: str) -> str: return sysconfig.get_path("scripts", scheme) def script_exists(dir: str) -> bool: for _, _, files in os.walk(dir): for f in files: name, *_ = os.path.splitext(f) if name == SCRIPT_NAME: return True return False paths = list( filter( script_exists, filter(os.path.exists, map(script_dir, sysconfig.get_scheme_names())), ) ) if paths: return Path(paths[0]) / SCRIPT_NAME return None if __name__ == "__main__": maturin = get_maturin_path() if maturin is None: print("Unable to find `maturin` script") exit(1) if sys.platform == "win32": import subprocess code = subprocess.call([str(maturin)] + sys.argv[1:]) sys.exit(code) else: os.execv(maturin, [str(maturin)] + sys.argv[1:]) maturin-1.7.4/netlify.toml000066400000000000000000000003101467514767100155650ustar00rootroot00000000000000[build] publish = "guide/book/" command = "curl -L https://github.com/rust-lang/mdBook/releases/download/v0.4.26/mdbook-v0.4.26-x86_64-unknown-linux-musl.tar.gz | tar xvz && ./mdbook build guide" maturin-1.7.4/noxfile.py000066400000000000000000000041231467514767100152420ustar00rootroot00000000000000import os import json import sys from pathlib import Path import nox PYODIDE_VERSION = os.getenv("PYODIDE_VERSION", "0.23.4") GITHUB_ACTIONS = os.getenv("GITHUB_ACTIONS") GITHUB_ENV = os.getenv("GITHUB_ENV") def append_to_github_env(name: str, value: str): if not GITHUB_ACTIONS or not GITHUB_ENV: return with open(GITHUB_ENV, "w+") as f: f.write(f"{name}={value}\n") @nox.session(name="setup-pyodide", python=False) def setup_pyodide(session: nox.Session): tests_dir = Path("./tests").resolve() with session.chdir(tests_dir): session.run( "npm", "i", "--no-save", f"pyodide@{PYODIDE_VERSION}", "prettier", external=True, ) with session.chdir(tests_dir / "node_modules" / "pyodide"): session.run( "node", "../prettier/bin/prettier.cjs", "-w", "pyodide.asm.js", external=True, ) with open("repodata.json") as f: emscripten_version = json.load(f)["info"]["platform"].split("_", 1)[1].replace("_", ".") append_to_github_env("EMSCRIPTEN_VERSION", emscripten_version) @nox.session(name="test-emscripten", python=False) def test_emscripten(session: nox.Session): tests_dir = Path("./tests").resolve() test_crates = [ "test-crates/pyo3-pure", "test-crates/pyo3-mixed", ] for crate in test_crates: crate = Path(crate).resolve() ver = sys.version_info session.run("cargo", "build", external=True) session.run( tests_dir.parent / "target" / "debug" / "maturin", "build", "-m", str(crate / "Cargo.toml"), "--target", "wasm32-unknown-emscripten", "-i", f"python{ver.major}.{ver.minor}", env={"RUSTUP_TOOLCHAIN": "nightly"}, external=True, ) with session.chdir(tests_dir): session.run("node", "emscripten_runner.js", str(crate), external=True) maturin-1.7.4/pyproject.toml000066400000000000000000000030351467514767100161410ustar00rootroot00000000000000# Workaround to bootstrap maturin on non-manylinux platforms [build-system] requires = ["setuptools", "wheel>=0.36.2", "tomli>=1.1.0 ; python_version<'3.11'", "setuptools-rust>=1.4.0"] build-backend = "setuptools.build_meta" [project] name = "maturin" description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages" authors = [{ name = "konstin", email = "konstin@mailbox.org" }] readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.7" license = {text = "MIT OR Apache-2.0"} classifiers = [ "Topic :: Software Development :: Build Tools", "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] dependencies = ["tomli>=1.1.0 ; python_version<'3.11'"] dynamic = [ "version" ] [project.optional-dependencies] zig = [ "ziglang>=0.10.0,<0.13.0", ] patchelf = [ "patchelf", ] [project.urls] "Source Code" = "https://github.com/PyO3/maturin" Issues = "https://github.com/PyO3/maturin/issues" Documentation = "https://maturin.rs" Changelog = "https://maturin.rs/changelog.html" [tool.setuptools] packages = ["maturin"] [tool.maturin] bindings = "bin" [tool.black] target_version = ['py37'] extend-exclude = ''' # Ignore cargo-generate templates ^/src/templates ''' [tool.ruff] line-length = 120 target-version = "py37" [tool.mypy] disallow_untyped_defs = true disallow_incomplete_defs = true warn_no_return = true ignore_missing_imports = true maturin-1.7.4/setup.py000066400000000000000000000036571467514767100147510ustar00rootroot00000000000000# maturin is self bootstrapping, however on platforms like FreeBSD that aren't # manylinux/musllinux, pip will try installing maturin from the source distribution. # That source distribution obviously can't depend on maturin, so we're using # the always available setuptools. # # Note that this is really only a workaround for bootstrapping and not suited # for general purpose packaging, i.e. only building a wheel (as in # `python setup.py bdist_wheel`) and installing (as in # `pip install `) are supported. For creating a source distribution # for maturin itself use `maturin sdist`. import os import shlex try: import tomllib except ModuleNotFoundError: import tomli as tomllib from setuptools import setup from setuptools_rust import RustBin # Force the wheel to be platform specific # https://stackoverflow.com/a/45150383/3549270 # There's also the much more concise solution in # https://stackoverflow.com/a/53463910/3549270, # but that would require python-dev try: # noinspection PyPackageRequirements,PyUnresolvedReferences from wheel.bdist_wheel import bdist_wheel as _bdist_wheel # noinspection PyPep8Naming,PyAttributeOutsideInit class bdist_wheel(_bdist_wheel): def finalize_options(self): _bdist_wheel.finalize_options(self) self.root_is_pure = False except ImportError: bdist_wheel = None with open("Cargo.toml", "rb") as fp: version = tomllib.load(fp)["package"]["version"] # Use `--no-default-features` by default for a minimal build to support PEP 517. # `MATURIN_SETUP_ARGS` env var can be used to pass customized arguments to cargo. cargo_args = ["--no-default-features"] if os.getenv("MATURIN_SETUP_ARGS"): cargo_args = shlex.split(os.getenv("MATURIN_SETUP_ARGS", "")) setup( version=version, cmdclass={"bdist_wheel": bdist_wheel}, rust_extensions=[RustBin("maturin", args=cargo_args, cargo_manifest_args=["--locked"])], zip_safe=False, ) maturin-1.7.4/src/000077500000000000000000000000001467514767100140135ustar00rootroot00000000000000maturin-1.7.4/src/auditwheel/000077500000000000000000000000001467514767100161465ustar00rootroot00000000000000maturin-1.7.4/src/auditwheel/audit.rs000066400000000000000000000475741467514767100176430ustar00rootroot00000000000000use super::musllinux::{find_musl_libc, get_musl_version}; use super::policy::{Policy, MANYLINUX_POLICIES, MUSLLINUX_POLICIES}; use crate::auditwheel::{find_external_libs, PlatformTag}; use crate::compile::BuildArtifact; use crate::target::Target; use anyhow::{bail, Context, Result}; use fs_err::File; use goblin::elf::{sym::STT_FUNC, Elf}; use lddtree::Library; use once_cell::sync::Lazy; use regex::Regex; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; use std::io::Read; use std::path::{Path, PathBuf}; use std::{fmt, io}; use thiserror::Error; static IS_LIBPYTHON: Lazy = Lazy::new(|| Regex::new(r"^libpython3\.\d+m?u?\.so\.\d+\.\d+$").unwrap()); /// Error raised during auditing an elf file for manylinux/musllinux compatibility #[derive(Error, Debug)] #[error("Ensuring manylinux/musllinux compliance failed")] pub enum AuditWheelError { /// The wheel couldn't be read #[error("Failed to read the wheel")] IoError(#[source] io::Error), /// Reexports goblin parsing errors #[error("Goblin failed to parse the elf file")] GoblinError(#[source] goblin::error::Error), /// The elf file isn't manylinux/musllinux compatible. Contains the list of offending /// libraries. #[error( "Your library links libpython ({0}), which libraries must not do. Have you forgotten to activate the extension-module feature?", )] LinksLibPythonError(String), /// The elf file isn't manylinux/musllinux compatible. Contains the list of offending /// libraries. #[error( "Your library is not {0} compliant because it links the following forbidden libraries: {1:?}", )] LinksForbiddenLibrariesError(Policy, Vec), /// The elf file isn't manylinux/musllinux compatible. Contains the list of offending /// libraries. #[error( "Your library is not {0} compliant because of the presence of too-recent versioned symbols: {1:?}. Consider building in a manylinux docker container", )] VersionedSymbolTooNewError(Policy, Vec), /// The elf file isn't manylinux/musllinux compatible. Contains the list of offending /// libraries with blacked-list symbols. #[error("Your library is not {0} compliant because it depends on black-listed symbols: {1:?}")] BlackListedSymbolsError(Policy, Vec), /// The elf file isn't manylinux/musllinux compatible. Contains unsupported architecture #[error("Your library is not {0} compliant because it has unsupported architecture: {1}")] UnsupportedArchitecture(Policy, String), /// This platform tag isn't defined by auditwheel yet #[error("{0} compatibility policy is not defined by auditwheel yet, pass `--auditwheel=skip` to proceed anyway")] UndefinedPolicy(String), /// Failed to analyze external shared library dependencies of the wheel #[error("Failed to analyze external shared library dependencies of the wheel")] DependencyAnalysisError(#[source] lddtree::Error), } /// Auditwheel mode #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, clap::ValueEnum)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[serde(rename_all = "lowercase")] pub enum AuditWheelMode { /// Audit and repair wheel for manylinux compliance #[default] Repair, /// Check wheel for manylinux compliance, but do not repair Check, /// Don't check for manylinux compliance Skip, } impl fmt::Display for AuditWheelMode { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { AuditWheelMode::Repair => write!(f, "repair"), AuditWheelMode::Check => write!(f, "check"), AuditWheelMode::Skip => write!(f, "skip"), } } } #[derive(Clone, Debug)] pub struct VersionedLibrary { /// library name pub name: String, /// versions needed versions: HashSet, } /// Find required dynamic linked libraries with version information pub fn find_versioned_libraries(elf: &Elf) -> Vec { let mut symbols = Vec::new(); if let Some(verneed) = &elf.verneed { for need_file in verneed.iter() { if let Some(name) = elf.dynstrtab.get_at(need_file.vn_file) { // Skip dynamic linker/loader if name.starts_with("ld-linux") || name == "ld64.so.2" || name == "ld64.so.1" { continue; } let mut versions = HashSet::new(); for need_ver in need_file.iter() { if let Some(aux_name) = elf.dynstrtab.get_at(need_ver.vna_name) { versions.insert(aux_name.to_string()); } } symbols.push(VersionedLibrary { name: name.to_string(), versions, }); } } } symbols } /// Find incompliant symbols from symbol versions #[allow(clippy::result_large_err)] fn find_incompliant_symbols( elf: &Elf, symbol_versions: &[String], ) -> Result, AuditWheelError> { let mut symbols = Vec::new(); let strtab = &elf.strtab; for sym in &elf.syms { if sym.st_type() == STT_FUNC { let name = strtab.get_at(sym.st_name).unwrap_or("BAD NAME"); for symbol_version in symbol_versions { if name.ends_with(&format!("@{symbol_version}")) { symbols.push(name.to_string()); } } } } Ok(symbols) } #[allow(clippy::result_large_err)] fn policy_is_satisfied( policy: &Policy, elf: &Elf, arch: &str, deps: &[String], versioned_libraries: &[VersionedLibrary], allow_linking_libpython: bool, ) -> Result<(), AuditWheelError> { let arch_versions = &policy.symbol_versions.get(arch).ok_or_else(|| { AuditWheelError::UnsupportedArchitecture(policy.clone(), arch.to_string()) })?; let mut offending_libs = HashSet::new(); let mut offending_versioned_syms = HashSet::new(); let mut offending_blacklist_syms = HashMap::new(); let undef_symbols: HashSet = elf .dynsyms .iter() .filter_map(|sym| { if sym.st_shndx == goblin::elf::section_header::SHN_UNDEF as usize { elf.dynstrtab.get_at(sym.st_name).map(ToString::to_string) } else { None } }) .collect(); for dep in deps { // Skip dynamic linker/loader if dep.starts_with("ld-linux") || dep == "ld64.so.2" || dep == "ld64.so.1" { continue; } if !policy.lib_whitelist.contains(dep) { if allow_linking_libpython && IS_LIBPYTHON.is_match(dep) { continue; } offending_libs.insert(dep.clone()); } if let Some(sym_list) = policy.blacklist.get(dep) { let mut intersection: Vec<_> = sym_list.intersection(&undef_symbols).cloned().collect(); if !intersection.is_empty() { intersection.sort(); offending_blacklist_syms.insert(dep, intersection); } } } for library in versioned_libraries { if !policy.lib_whitelist.contains(&library.name) { offending_libs.insert(library.name.clone()); continue; } let mut versions: HashMap> = HashMap::new(); for v in &library.versions { let (name, version) = v.split_once('_').unwrap(); versions .entry(name.to_string()) .or_default() .insert(version.to_string()); } for (name, versions_needed) in versions.iter() { let versions_allowed = &arch_versions[name]; if !versions_needed.is_subset(versions_allowed) { let offending_versions: Vec<&str> = versions_needed .difference(versions_allowed) .map(|v| v.as_ref()) .collect(); let offending_symbol_versions: Vec = offending_versions .iter() .map(|v| format!("{name}_{v}")) .collect(); let offending_symbols = find_incompliant_symbols(elf, &offending_symbol_versions)?; let offender = if offending_symbols.is_empty() { format!( "{} offending versions: {}", library.name, offending_symbol_versions.join(", ") ) } else { format!( "{} offending symbols: {}", library.name, offending_symbols.join(", ") ) }; offending_versioned_syms.insert(offender); } } } // Check for black-listed symbols if !offending_blacklist_syms.is_empty() { let offenders = offending_blacklist_syms .into_iter() .map(|(lib, syms)| format!("{}: {}", lib, syms.join(", "))) .collect(); return Err(AuditWheelError::BlackListedSymbolsError( policy.clone(), offenders, )); } // Check for too-recent versioned symbols if !offending_versioned_syms.is_empty() { return Err(AuditWheelError::VersionedSymbolTooNewError( policy.clone(), offending_versioned_syms.into_iter().collect(), )); } // Check for libpython and forbidden libraries let offenders: Vec = offending_libs.into_iter().collect(); match offenders.as_slice() { [] => Ok(()), [lib] if IS_LIBPYTHON.is_match(lib) => { Err(AuditWheelError::LinksLibPythonError(lib.clone())) } offenders => Err(AuditWheelError::LinksForbiddenLibrariesError( policy.clone(), offenders.to_vec(), )), } } fn get_default_platform_policies() -> Vec { if let Ok(Some(musl_libc)) = find_musl_libc() { if let Ok(Some((major, minor))) = get_musl_version(musl_libc) { return MUSLLINUX_POLICIES .iter() .filter(|policy| { policy.name == "linux" || policy.name == format!("musllinux_{major}_{minor}") }) .cloned() .collect(); } } MANYLINUX_POLICIES.clone() } /// An reimplementation of auditwheel, which checks elf files for /// manylinux/musllinux compliance. /// /// If `platform_tag`, is None, it returns the the highest matching manylinux/musllinux policy /// and whether we need to repair with patchelf,, or `linux` if nothing else matches. /// It will error for bogus cases, e.g. if libpython is linked. /// /// If a specific manylinux/musllinux version is given, compliance is checked and a warning printed if /// a higher version would be possible. /// /// Does nothing for `platform_tag` set to `Off`/`Linux` or non-linux platforms. #[allow(clippy::result_large_err)] pub fn auditwheel_rs( artifact: &BuildArtifact, target: &Target, platform_tag: Option, allow_linking_libpython: bool, ) -> Result<(Policy, bool), AuditWheelError> { if !target.is_linux() || platform_tag == Some(PlatformTag::Linux) { return Ok((Policy::default(), false)); } let path = &artifact.path; let arch = target.target_arch().to_string(); let mut file = File::open(path).map_err(AuditWheelError::IoError)?; let mut buffer = Vec::new(); file.read_to_end(&mut buffer) .map_err(AuditWheelError::IoError)?; let elf = Elf::parse(&buffer).map_err(AuditWheelError::GoblinError)?; // This returns essentially the same as ldd let deps: Vec = elf.libraries.iter().map(ToString::to_string).collect(); let versioned_libraries = find_versioned_libraries(&elf); // Find the highest possible policy, if any let platform_policies = match platform_tag { Some(PlatformTag::Manylinux { .. }) => MANYLINUX_POLICIES.clone(), Some(PlatformTag::Musllinux { x, y }) => MUSLLINUX_POLICIES .clone() .into_iter() .filter(|policy| policy.name == "linux" || policy.name == format!("musllinux_{x}_{y}")) .map(|mut policy| { policy.fixup_musl_libc_so_name(target.target_arch()); policy }) .collect(), None => { let mut policies = get_default_platform_policies(); for policy in &mut policies { policy.fixup_musl_libc_so_name(target.target_arch()); } policies } Some(PlatformTag::Linux) => unreachable!(), }; let mut highest_policy = None; let mut should_repair = false; for policy in platform_policies.iter() { let result = policy_is_satisfied( policy, &elf, &arch, &deps, &versioned_libraries, allow_linking_libpython, ); match result { Ok(_) => { highest_policy = Some(policy.clone()); should_repair = false; break; } Err(AuditWheelError::LinksForbiddenLibrariesError(..)) => { highest_policy = Some(policy.clone()); should_repair = true; break; } Err(AuditWheelError::VersionedSymbolTooNewError(..)) | Err(AuditWheelError::BlackListedSymbolsError(..)) // UnsupportedArchitecture happens when trying 2010 with aarch64 | Err(AuditWheelError::UnsupportedArchitecture(..)) => continue, // If there was an error parsing the symbols or libpython was linked, // we error no matter what the requested policy was Err(err) => return Err(err), } } let policy = if let Some(platform_tag) = platform_tag { let tag = platform_tag.to_string(); let mut policy = Policy::from_name(&tag).ok_or(AuditWheelError::UndefinedPolicy(tag))?; policy.fixup_musl_libc_so_name(target.target_arch()); if let Some(highest_policy) = highest_policy { // Don't recommend manylinux1 because rust doesn't support it anymore if policy.priority < highest_policy.priority && highest_policy.name != "manylinux_2_5" { eprintln!( "📦 Wheel is eligible for a higher priority tag. \ You requested {policy} but this wheel is eligible for {highest_policy}", ); } } match policy_is_satisfied( &policy, &elf, &arch, &deps, &versioned_libraries, allow_linking_libpython, ) { Ok(_) => { should_repair = false; Ok(policy) } Err(AuditWheelError::LinksForbiddenLibrariesError(..)) => { should_repair = true; Ok(policy) } Err(err) => Err(err), } } else if let Some(policy) = highest_policy { Ok(policy) } else { eprintln!( "⚠️ Warning: No compatible platform tag found, using the linux tag instead. \ You won't be able to upload those wheels to PyPI." ); // Fallback to linux Ok(Policy::default()) }?; Ok((policy, should_repair)) } /// Get sysroot path from target C compiler /// /// Currently only gcc is supported, clang doesn't have a `--print-sysroot` option pub fn get_sysroot_path(target: &Target) -> Result { use std::process::{Command, Stdio}; if let Some(sysroot) = std::env::var_os("TARGET_SYSROOT") { return Ok(PathBuf::from(sysroot)); } let host_triple = target.host_triple(); let target_triple = target.target_triple(); if host_triple != target_triple { let mut build = cc::Build::new(); build // Suppress cargo metadata for example env vars printing .cargo_metadata(false) // opt_level, host and target are required .opt_level(0) .host(host_triple) .target(target_triple); let compiler = build .try_get_compiler() .with_context(|| format!("Failed to get compiler for {target_triple}"))?; // Only GNU like compilers support `--print-sysroot` if !compiler.is_like_gnu() { return Ok(PathBuf::from("/")); } let path = compiler.path(); let out = Command::new(path) .arg("--print-sysroot") .stdout(Stdio::piped()) .stderr(Stdio::null()) .output() .with_context(|| format!("Failed to run `{} --print-sysroot`", path.display()))?; if out.status.success() { let sysroot = String::from_utf8(out.stdout) .context("Failed to read the sysroot path")? .trim() .to_owned(); if sysroot.is_empty() { return Ok(PathBuf::from("/")); } else { return Ok(PathBuf::from(sysroot)); } } else { bail!( "Failed to get the sysroot path: {}", String::from_utf8(out.stderr)? ); } } Ok(PathBuf::from("/")) } /// For the given compilation result, return the manylinux platform and the external libs /// we need to add to repair it pub fn get_policy_and_libs( artifact: &BuildArtifact, platform_tag: Option, target: &Target, allow_linking_libpython: bool, ) -> Result<(Policy, Vec)> { let (policy, should_repair) = auditwheel_rs(artifact, target, platform_tag, allow_linking_libpython).with_context( || { if let Some(platform_tag) = platform_tag { format!("Error ensuring {platform_tag} compliance") } else { "Error checking for manylinux/musllinux compliance".to_string() } }, )?; let external_libs = if should_repair { let sysroot = get_sysroot_path(target).unwrap_or_else(|_| PathBuf::from("/")); let ld_paths = artifact.linked_paths.iter().map(PathBuf::from).collect(); let external_libs = find_external_libs(&artifact.path, &policy, sysroot, ld_paths) .with_context(|| { if let Some(platform_tag) = platform_tag { format!("Error repairing wheel for {platform_tag} compliance") } else { "Error repairing wheel for manylinux/musllinux compliance".to_string() } })?; if allow_linking_libpython { external_libs .into_iter() .filter(|lib| !IS_LIBPYTHON.is_match(&lib.name)) .collect() } else { external_libs } } else { Vec::new() }; Ok((policy, external_libs)) } pub fn relpath(to: &Path, from: &Path) -> PathBuf { let mut suffix_pos = 0; for (f, t) in from.components().zip(to.components()) { if f == t { suffix_pos += 1; } else { break; } } let mut result = PathBuf::new(); from.components() .skip(suffix_pos) .map(|_| result.push("..")) .last(); to.components() .skip(suffix_pos) .map(|x| result.push(x.as_os_str())) .last(); result } #[cfg(test)] mod test { use crate::auditwheel::audit::relpath; use pretty_assertions::assert_eq; use std::path::Path; #[test] fn test_relpath() { let cases = [ ("", "", ""), ("/", "/usr", ".."), ("/", "/usr/lib", "../.."), ]; for (from, to, expected) in cases { let from = Path::new(from); let to = Path::new(to); let result = relpath(from, to); assert_eq!(result, Path::new(expected)); } } } maturin-1.7.4/src/auditwheel/manylinux-policy.json000066400000000000000000002571121467514767100223720ustar00rootroot00000000000000[ { "name": "linux", "aliases": [], "priority": 0, "symbol_versions": {}, "lib_whitelist": [], "blacklist": {} }, { "name": "manylinux_2_5", "aliases": ["manylinux1"], "priority": 100, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8"], "ZLIB": [] }, "x86_64": { "CXXABI": ["1.3", "1.3.1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8"], "ZLIB": [] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_12", "aliases": ["manylinux2010"], "priority": 90, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_17", "aliases": ["manylinux2014"], "priority": 80, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0"], "GLIBC": ["2.0", "2.17", "2.18"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "ppc64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.0", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_24", "aliases": [], "priority": 70, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_27", "aliases": [], "priority": 65, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_28", "aliases": [], "priority": 64, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_31", "aliases": [], "priority": 61, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_34", "aliases": [], "priority": 58, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "IEEE128_3.4.29", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_35", "aliases": [], "priority": 57, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "IEEE128_3.4.29", "IEEE128_3.4.30", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "bi_windup", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_36", "aliases": [], "priority": 56, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "IEEE128_3.4.29", "IEEE128_3.4.30", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "crc32_combine_gen", "crc32_combine_gen64", "crc32_combine_op", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "deflate_copyright", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "z_errmsg", "z_vstring", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_37", "aliases": [], "priority": 55, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "IEEE128_3.4.29", "IEEE128_3.4.30", "IEEE128_3.4.31", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "deflate_copyright", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "z_errmsg", "z_vstring", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_38", "aliases": [], "priority": 54, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0", "13.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32", "IEEE128_3.4.29", "IEEE128_3.4.30", "IEEE128_3.4.31", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "deflate_copyright", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "z_errmsg", "z_vstring", "zcalloc", "zcfree"] } }, { "name": "manylinux_2_39", "aliases": [], "priority": 53, "symbol_versions": { "i686": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0", "14.0.0"], "GLIBC": ["2.0", "2.1", "2.1.1", "2.1.2", "2.1.3", "2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "x86_64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "FLOAT128", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "4.8.0", "7.0.0", "12.0.0", "13.0.0", "14.0.0"], "GLIBC": ["2.2.5", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "aarch64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.5.0", "4.7.0", "7.0.0", "11.0", "13.0.0", "14.0", "14.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "ppc64le": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "IEEE128_1.3.13", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0", "14.0.0"], "GLIBC": ["2.0", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32", "IEEE128_3.4.29", "IEEE128_3.4.30", "IEEE128_3.4.31", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "s390x": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "LDBL_1.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.1.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0", "14.0.0"], "GLIBC": ["2.2", "2.2.1", "2.2.2", "2.2.3", "2.2.4", "2.2.6", "2.3", "2.3.2", "2.3.3", "2.3.4", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.19", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32", "LDBL_3.4", "LDBL_3.4.10", "LDBL_3.4.21", "LDBL_3.4.29", "LDBL_3.4.31", "LDBL_3.4.7"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "armv7l": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "ARM_1.3.3", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.3.4", "3.4", "3.4.2", "3.5", "4.0.0", "4.2.0", "4.3.0", "4.7.0", "7.0.0", "14.0.0"], "GLIBC": ["2.0", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14", "2.15", "2.16", "2.17", "2.18", "2.22", "2.23", "2.24", "2.25", "2.26", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] }, "riscv64": { "CXXABI": ["1.3", "1.3.1", "1.3.2", "1.3.3", "1.3.4", "1.3.5", "1.3.6", "1.3.7", "1.3.8", "1.3.9", "1.3.10", "1.3.11", "1.3.12", "1.3.13", "1.3.14", "1.3.15", "TM_1"], "GCC": ["3.0", "3.3", "3.3.1", "3.4", "3.4.2", "3.4.4", "4.0.0", "4.2.0", "4.3.0", "4.4.0", "4.5.0", "4.7.0", "7.0.0", "14.0.0"], "GLIBC": ["2.0", "2.27", "2.28", "2.29", "2.30", "2.31", "2.32", "2.33", "2.34", "2.35", "2.36", "2.37", "2.38", "2.39", "ABI_DT_RELR"], "GLIBCXX": ["3.4", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6", "3.4.7", "3.4.8", "3.4.9", "3.4.10", "3.4.11", "3.4.12", "3.4.13", "3.4.14", "3.4.15", "3.4.16", "3.4.17", "3.4.18", "3.4.19", "3.4.20", "3.4.21", "3.4.22", "3.4.23", "3.4.24", "3.4.25", "3.4.26", "3.4.27", "3.4.28", "3.4.29", "3.4.30", "3.4.31", "3.4.32"], "ZLIB": ["1.2.0", "1.2.0.2", "1.2.0.8", "1.2.2", "1.2.2.3", "1.2.2.4", "1.2.3.3", "1.2.3.4", "1.2.3.5", "1.2.5.1", "1.2.5.2", "1.2.7.1", "1.2.9", "1.2.12"] } }, "lib_whitelist": ["libgcc_s.so.1", "libstdc++.so.6", "libm.so.6", "libdl.so.2", "librt.so.1", "libc.so.6", "libnsl.so.1", "libutil.so.1", "libpthread.so.0", "libX11.so.6", "libXext.so.6", "libXrender.so.1", "libICE.so.6", "libSM.so.6", "libGL.so.1", "libgobject-2.0.so.0", "libgthread-2.0.so.0", "libglib-2.0.so.0", "libresolv.so.2", "libexpat.so.1", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "adler32_default", "crc32_le_vgfm_16", "crc32_vpmsum", "crc32_z_default", "deflate_copyright", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "z_errmsg", "z_vstring", "zcalloc", "zcfree"] } } ] maturin-1.7.4/src/auditwheel/mod.rs000066400000000000000000000003101467514767100172650ustar00rootroot00000000000000mod audit; mod musllinux; pub mod patchelf; mod platform_tag; mod policy; mod repair; pub use audit::*; pub use platform_tag::PlatformTag; pub use policy::Policy; pub use repair::find_external_libs; maturin-1.7.4/src/auditwheel/musllinux-policy.json000066400000000000000000000035061467514767100224020ustar00rootroot00000000000000[ {"name": "linux", "aliases": [], "priority": 0, "symbol_versions": {}, "lib_whitelist": [], "blacklist": {} }, {"name": "musllinux_1_1", "aliases": [], "priority": 100, "symbol_versions": { "i686": { }, "x86_64": { }, "aarch64": { }, "ppc64le": { }, "s390x": { }, "armv7l": { } }, "lib_whitelist": ["libc.so", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "bi_windup", "crc32_vpmsum", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] }}, {"name": "musllinux_1_2", "aliases": [], "priority": 90, "symbol_versions": { "i686": { }, "x86_64": { }, "aarch64": { }, "ppc64le": { }, "s390x": { }, "armv7l": { } }, "lib_whitelist": ["libc.so", "libz.so.1"], "blacklist": { "libz.so.1": ["_dist_code", "_length_code", "_tr_align", "_tr_flush_block", "_tr_init", "_tr_stored_block", "_tr_tally", "bi_windup", "crc32_vpmsum", "crc_fold_512to32", "crc_fold_copy", "crc_fold_init", "deflate_copyright", "deflate_medium", "fill_window", "flush_pending", "gzflags", "inflate_copyright", "inflate_fast", "inflate_table", "longest_match", "slide_hash_sse", "static_ltree", "uncompress2", "x86_check_features", "x86_cpu_has_pclmul", "x86_cpu_has_sse2", "x86_cpu_has_sse42", "z_errmsg", "zcalloc", "zcfree"] }} ] maturin-1.7.4/src/auditwheel/musllinux.rs000066400000000000000000000025551467514767100205630ustar00rootroot00000000000000use anyhow::{Context, Result}; use fs_err as fs; use goblin::elf::Elf; use regex::Regex; use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; /// Find musl libc path from executable's ELF header pub fn find_musl_libc() -> Result> { let buffer = fs::read("/bin/ls")?; let elf = Elf::parse(&buffer)?; Ok(elf.interpreter.map(PathBuf::from)) } /// Read the musl version from libc library's output /// /// The libc library should output something like this to stderr:: /// /// musl libc (x86_64) /// Version 1.2.2 /// Dynamic Program Loader pub fn get_musl_version(ld_path: impl AsRef) -> Result> { let ld_path = ld_path.as_ref(); let output = Command::new(ld_path) .stdout(Stdio::null()) .stderr(Stdio::piped()) .output()?; let stderr = std::str::from_utf8(&output.stderr)?; let expr = Regex::new(r"Version (\d+)\.(\d+)")?; if let Some(capture) = expr.captures(stderr) { let context = "Expected a digit"; let major = capture .get(1) .unwrap() .as_str() .parse::() .context(context)?; let minor = capture .get(2) .unwrap() .as_str() .parse::() .context(context)?; return Ok(Some((major, minor))); } Ok(None) } maturin-1.7.4/src/auditwheel/patchelf.rs000066400000000000000000000073011467514767100203030ustar00rootroot00000000000000use anyhow::{bail, Context, Result}; use std::ffi::OsStr; use std::path::Path; use std::process::Command; static MISSING_PATCHELF_ERROR: &str = "Failed to execute 'patchelf', did you install it? Hint: Try `pip install maturin[patchelf]` (or just `pip install patchelf`)"; /// Verify patchelf version pub fn verify_patchelf() -> Result<()> { let output = Command::new("patchelf") .arg("--version") .output() .context(MISSING_PATCHELF_ERROR)?; let version = String::from_utf8(output.stdout) .context("Failed to parse patchelf version")? .trim() .to_string(); let version = version.strip_prefix("patchelf").unwrap_or(&version).trim(); let semver = version .parse::() .context("Failed to parse patchelf version")?; if semver < semver::Version::new(0, 14, 0) { bail!( "patchelf {} found. auditwheel repair requires patchelf >= 0.14.", version ); } Ok(()) } /// Replace a declared dependency on a dynamic library with another one (`DT_NEEDED`) pub fn replace_needed, N: AsRef>( file: impl AsRef, old_new_pairs: &[(O, N)], ) -> Result<()> { let mut cmd = Command::new("patchelf"); for (old, new) in old_new_pairs { cmd.arg("--replace-needed").arg(old).arg(new); } cmd.arg(file.as_ref()); let output = cmd.output().context(MISSING_PATCHELF_ERROR)?; if !output.status.success() { bail!( "patchelf --replace-needed failed: {}", String::from_utf8_lossy(&output.stderr) ); } Ok(()) } /// Change `SONAME` of a dynamic library pub fn set_soname>(file: impl AsRef, soname: &S) -> Result<()> { let mut cmd = Command::new("patchelf"); cmd.arg("--set-soname").arg(soname).arg(file.as_ref()); let output = cmd.output().context(MISSING_PATCHELF_ERROR)?; if !output.status.success() { bail!( "patchelf --set-soname failed: {}", String::from_utf8_lossy(&output.stderr) ); } Ok(()) } /// Remove a `RPATH` from executables and libraries pub fn remove_rpath(file: impl AsRef) -> Result<()> { let mut cmd = Command::new("patchelf"); cmd.arg("--remove-rpath").arg(file.as_ref()); let output = cmd.output().context(MISSING_PATCHELF_ERROR)?; if !output.status.success() { bail!( "patchelf --remove-rpath failed: {}", String::from_utf8_lossy(&output.stderr) ); } Ok(()) } /// Change the `RPATH` of executables and libraries pub fn set_rpath>(file: impl AsRef, rpath: &S) -> Result<()> { remove_rpath(&file)?; let mut cmd = Command::new("patchelf"); cmd.arg("--force-rpath") .arg("--set-rpath") .arg(rpath) .arg(file.as_ref()); let output = cmd.output().context(MISSING_PATCHELF_ERROR)?; if !output.status.success() { bail!( "patchelf --set-rpath failed: {}", String::from_utf8_lossy(&output.stderr) ); } Ok(()) } /// Get the `RPATH` of executables and libraries pub fn get_rpath(file: impl AsRef) -> Result> { let file = file.as_ref(); let contents = fs_err::read(file)?; match goblin::Object::parse(&contents) { Ok(goblin::Object::Elf(elf)) => { let rpaths = if !elf.runpaths.is_empty() { elf.runpaths } else { elf.rpaths }; Ok(rpaths.iter().map(|r| r.to_string()).collect()) } Ok(_) => bail!("'{}' is not an ELF file", file.display()), Err(e) => bail!("Failed to parse ELF file at '{}': {}", file.display(), e), } } maturin-1.7.4/src/auditwheel/platform_tag.rs000066400000000000000000000110721467514767100211740ustar00rootroot00000000000000use crate::auditwheel::Policy; use serde::{Deserialize, Deserializer, Serialize}; use std::fmt; use std::str::FromStr; /// Decides how to handle manylinux and musllinux compliance #[derive(Serialize, Debug, Clone, Eq, PartialEq, Copy, Ord, PartialOrd)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum PlatformTag { /// Use the manylinux_x_y tag Manylinux { /// GLIBC version major x: u16, /// GLIBC version minor y: u16, }, /// Use the musllinux_x_y tag Musllinux { /// musl libc version major x: u16, /// musl libc version minor y: u16, }, /// Use the native linux tag Linux, } impl PlatformTag { /// `manylinux1` aka `manylinux_2_5` pub fn manylinux1() -> Self { Self::Manylinux { x: 2, y: 5 } } /// `manylinux2010` aka `manylinux_2_12` pub fn manylinux2010() -> Self { Self::Manylinux { x: 2, y: 12 } } /// `manylinux2014` aka `manylinux_2_17` pub fn manylinux2014() -> Self { Self::Manylinux { x: 2, y: 17 } } /// manylinux aliases pub fn aliases(&self) -> Vec { match self { PlatformTag::Manylinux { .. } => { if let Some(policy) = Policy::from_name(&self.to_string()) { policy.aliases } else { Vec::new() } } PlatformTag::Musllinux { .. } => Vec::new(), PlatformTag::Linux => Vec::new(), } } /// Is this a portable linux platform tag /// /// Only manylinux and musllinux are portable pub fn is_portable(&self) -> bool { !matches!(self, PlatformTag::Linux) } /// Is this a manylinux platform tag pub fn is_manylinux(&self) -> bool { matches!(self, PlatformTag::Manylinux { .. }) } /// Is this a musllinux platform tag pub fn is_musllinux(&self) -> bool { matches!(self, PlatformTag::Musllinux { .. }) } /// Is it supported by Rust compiler and manylinux project pub fn is_supported(&self) -> bool { match self { PlatformTag::Manylinux { x, y } => (*x, *y) >= (2, 17), PlatformTag::Musllinux { .. } => true, PlatformTag::Linux => true, } } } impl fmt::Display for PlatformTag { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { PlatformTag::Manylinux { x, y } => write!(f, "manylinux_{x}_{y}"), PlatformTag::Musllinux { x, y } => write!(f, "musllinux_{x}_{y}"), PlatformTag::Linux => write!(f, "linux"), } } } impl FromStr for PlatformTag { type Err = &'static str; fn from_str(value: &str) -> anyhow::Result { let value = value.to_ascii_lowercase(); match value.as_str() { "off" | "linux" => Ok(PlatformTag::Linux), "1" | "manylinux1" => Ok(PlatformTag::manylinux1()), "2010" | "manylinux2010" => Ok(PlatformTag::manylinux2010()), "2014" | "manylinux2014" => Ok(PlatformTag::manylinux2014()), _ => { if let Some(value) = value.strip_prefix("musllinux_") { let mut parts = value.split('_'); let x = parts .next() .and_then(|x| x.parse::().ok()) .ok_or("invalid musllinux option")?; let y = parts .next() .and_then(|y| y.parse::().ok()) .ok_or("invalid musllinux option")?; Ok(PlatformTag::Musllinux { x, y }) } else { let value = value.strip_prefix("manylinux_").unwrap_or(&value); let mut parts = value.split('_'); let x = parts .next() .and_then(|x| x.parse::().ok()) .ok_or("invalid manylinux option")?; let y = parts .next() .and_then(|y| y.parse::().ok()) .ok_or("invalid manylinux option")?; Ok(PlatformTag::Manylinux { x, y }) } } } } } impl<'de> Deserialize<'de> for PlatformTag { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { let s = String::deserialize(deserializer)?; FromStr::from_str(&s).map_err(serde::de::Error::custom) } } maturin-1.7.4/src/auditwheel/policy.rs000066400000000000000000000124211467514767100200130ustar00rootroot00000000000000use crate::auditwheel::PlatformTag; use crate::target::Arch; use once_cell::sync::Lazy; use serde::Deserialize; use std::cmp::{Ordering, PartialOrd}; use std::collections::{HashMap, HashSet}; use std::fmt; use std::fmt::{Display, Formatter}; /// The policies (allowed symbols) for the different manylinux tags, sorted from highest /// priority to lowest pub static MANYLINUX_POLICIES: Lazy> = Lazy::new(|| { // https://github.com/pypa/auditwheel/blob/master/auditwheel/policy/manylinux-policy.json let mut policies: Vec = serde_json::from_slice(include_bytes!("manylinux-policy.json")) .expect("invalid manylinux policy.json file"); policies.sort_by_key(|policy| -policy.priority); policies }); /// The policies (allowed symbols) for the different musllinux tags, sorted from highest /// priority to lowest pub static MUSLLINUX_POLICIES: Lazy> = Lazy::new(|| { // https://github.com/pypa/auditwheel/blob/master/auditwheel/policy/musllinux-policy.json let mut policies: Vec = serde_json::from_slice(include_bytes!("musllinux-policy.json")) .expect("invalid musllinux policy.json file"); policies.sort_by_key(|policy| -policy.priority); policies }); /// Manylinux policy #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] pub struct Policy { /// platform tag name pub name: String, /// platform tag aliases pub aliases: Vec, /// policy priority. Tags supporting more platforms have higher priority pub priority: i64, /// platform architecture to symbol versions map #[serde(rename = "symbol_versions")] pub symbol_versions: HashMap>>, /// whitelisted libraries #[serde(rename = "lib_whitelist")] pub lib_whitelist: HashSet, /// blacklisted symbols of whitelisted libraries pub blacklist: HashMap>, } impl Default for Policy { fn default() -> Self { // defaults to linux Policy::from_name("linux").unwrap() } } impl Display for Policy { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { if self.aliases.is_empty() { f.write_str(&self.name) } else { f.write_fmt(format_args!( "{} (aka {})", &self.name, self.aliases.join(",") )) } } } impl PartialOrd for Policy { fn partial_cmp(&self, other: &Self) -> Option { self.priority.partial_cmp(&other.priority) } } impl Policy { /// Get platform tag from this policy pub fn platform_tag(&self) -> PlatformTag { self.name.parse().expect("unknown platform tag") } /// Get policy by it's platform tag name pub fn from_name(name: &str) -> Option { let policies = if name.starts_with("musllinux") { &MUSLLINUX_POLICIES } else { &MANYLINUX_POLICIES }; policies .iter() .find(|p| p.name == name || p.aliases.iter().any(|alias| alias == name)) .cloned() } pub(crate) fn fixup_musl_libc_so_name(&mut self, target_arch: Arch) { // Fixup musl libc lib_whitelist if self.name.starts_with("musllinux") && self.lib_whitelist.remove("libc.so") { let new_soname = match target_arch { Arch::Aarch64 => "libc.musl-aarch64.so.1", Arch::Armv6L => "libc.musl-armhf.so.1", Arch::Armv7L => "libc.musl-armv7.so.1", Arch::Powerpc64Le => "libc.musl-ppc64le.so.1", Arch::Powerpc64 => "", // musllinux doesn't support ppc64 Arch::X86 => "libc.musl-x86.so.1", Arch::X86_64 => "libc.musl-x86_64.so.1", Arch::S390X => "libc.musl-s390x.so.1", _ => "", }; if !new_soname.is_empty() { self.lib_whitelist.insert(new_soname.to_string()); } } } } #[cfg(test)] mod test { use super::{Arch, Policy, MANYLINUX_POLICIES, MUSLLINUX_POLICIES}; use pretty_assertions::assert_eq; #[test] fn test_load_policy() { let linux = Policy::from_name("linux").unwrap(); assert!(linux.symbol_versions.is_empty()); assert!(linux.lib_whitelist.is_empty()); let manylinux2010 = Policy::from_name("manylinux2010").unwrap(); assert!(manylinux2010.lib_whitelist.contains("libc.so.6")); let symbol_version = &manylinux2010.symbol_versions["x86_64"]; assert_eq!(symbol_version["CXXABI"].len(), 4); let cxxabi = &symbol_version["CXXABI"]; for version in &["1.3", "1.3.1", "1.3.2", "1.3.3"] { assert!(cxxabi.contains(*version)); } } #[test] fn test_policy_manylinux_tag() { for policy in MANYLINUX_POLICIES.iter() { let _tag = policy.platform_tag(); } } #[test] fn test_policy_musllinux_tag() { for policy in MUSLLINUX_POLICIES.iter() { let _tag = policy.platform_tag(); } } #[test] fn test_policy_musllinux_fixup_libc_so_name() { let mut policy = Policy::from_name("musllinux_1_1").unwrap(); policy.fixup_musl_libc_so_name(Arch::Aarch64); assert!(policy.lib_whitelist.contains("libc.musl-aarch64.so.1")); } } maturin-1.7.4/src/auditwheel/repair.rs000066400000000000000000000022211467514767100177730ustar00rootroot00000000000000use super::audit::AuditWheelError; use crate::auditwheel::Policy; use anyhow::Result; use lddtree::DependencyAnalyzer; use std::path::{Path, PathBuf}; /// Find external shared library dependencies #[allow(clippy::result_large_err)] pub fn find_external_libs( artifact: impl AsRef, policy: &Policy, sysroot: PathBuf, ld_paths: Vec, ) -> Result, AuditWheelError> { let dep_analyzer = DependencyAnalyzer::new(sysroot).library_paths(ld_paths); let deps = dep_analyzer .analyze(artifact) .map_err(AuditWheelError::DependencyAnalysisError)?; let mut ext_libs = Vec::new(); for (_, lib) in deps.libraries { let name = &lib.name; // Skip dynamic linker/loader and white-listed libs if name.starts_with("ld-linux") || name == "ld64.so.2" || name == "ld64.so.1" // musl libc, eg: libc.musl-aarch64.so.1 || name.starts_with("ld-musl") || name.starts_with("libc.") || policy.lib_whitelist.contains(name) { continue; } ext_libs.push(lib); } Ok(ext_libs) } maturin-1.7.4/src/build_context.rs000066400000000000000000001427341467514767100172370ustar00rootroot00000000000000use crate::auditwheel::{get_policy_and_libs, patchelf, relpath, AuditWheelMode}; use crate::auditwheel::{PlatformTag, Policy}; use crate::build_options::CargoOptions; use crate::compile::{warn_missing_py_init, CompileTarget}; use crate::module_writer::{ add_data, write_bin, write_bindings_module, write_cffi_module, write_python_part, write_uniffi_module, write_wasm_launcher, WheelWriter, }; use crate::project_layout::ProjectLayout; use crate::python_interpreter::InterpreterKind; use crate::source_distribution::source_distribution; use crate::target::{Arch, Os}; use crate::{ compile, pyproject_toml::Format, BuildArtifact, Metadata23, ModuleWriter, PyProjectToml, PythonInterpreter, Target, }; use anyhow::{anyhow, bail, Context, Result}; use cargo_metadata::Metadata; use fs_err as fs; use ignore::overrides::{Override, OverrideBuilder}; use indexmap::IndexMap; use lddtree::Library; use normpath::PathExt; use pep508_rs::Requirement; use platform_info::*; use sha2::{Digest, Sha256}; use std::collections::{HashMap, HashSet}; use std::env; use std::fmt::{Display, Formatter}; use std::io; use std::path::{Path, PathBuf}; use std::str::FromStr; use tracing::instrument; /// The way the rust code is used in the wheel #[derive(Clone, Debug, PartialEq, Eq)] pub enum BridgeModel { /// A rust binary to be shipped a python package /// The String is the name of the bindings /// providing crate, e.g. pyo3, the number is the minimum minor python version Bin(Option<(String, usize)>), /// A native module with pyo3 or rust-cpython bindings. The String is the name of the bindings /// providing crate, e.g. pyo3, the number is the minimum minor python version Bindings(String, usize), /// `Bindings`, but specifically for pyo3 with feature flags that allow building a single wheel /// for all cpython versions (pypy & graalpy still need multiple versions). /// The numbers are the minimum major and minor version BindingsAbi3(u8, u8), /// A native module with c bindings, i.e. `#[no_mangle] extern "C" ` Cffi, /// A native module generated from uniffi UniFfi, } impl BridgeModel { /// Returns the name of the bindings crate pub fn unwrap_bindings(&self) -> &str { match self { BridgeModel::Bindings(value, _) => value, _ => panic!("Expected Bindings"), } } /// Test whether this is using a specific bindings crate pub fn is_bindings(&self, name: &str) -> bool { match self { BridgeModel::Bin(Some((value, _))) => value == name, BridgeModel::Bindings(value, _) => value == name, _ => false, } } /// Test whether this is bin bindings pub fn is_bin(&self) -> bool { matches!(self, BridgeModel::Bin(_)) } } impl Display for BridgeModel { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { BridgeModel::Bin(Some((name, _))) => write!(f, "{name} bin"), BridgeModel::Bin(None) => write!(f, "bin"), BridgeModel::Bindings(name, _) => write!(f, "{name}"), BridgeModel::BindingsAbi3(..) => write!(f, "pyo3"), BridgeModel::Cffi => write!(f, "cffi"), BridgeModel::UniFfi => write!(f, "uniffi"), } } } /// Insert wasm launcher scripts as entrypoints and the wasmtime dependency fn bin_wasi_helper( artifacts_and_files: &[(&BuildArtifact, String)], mut metadata23: Metadata23, ) -> Result { eprintln!("⚠️ Warning: wasi support is experimental"); // escaped can contain [\w\d.], but i don't know how we'd handle dots correctly here if metadata23.get_distribution_escaped().contains('.') { bail!( "Can't build wasm wheel if there is a dot in the name ('{}')", metadata23.get_distribution_escaped() ) } if !metadata23.entry_points.is_empty() { bail!("You can't define entrypoints yourself for a binary project"); } let mut console_scripts = IndexMap::new(); for (_, bin_name) in artifacts_and_files { let base_name = bin_name .strip_suffix(".wasm") .context("No .wasm suffix in wasi binary")?; console_scripts.insert( base_name.to_string(), format!( "{}.{}:main", metadata23.get_distribution_escaped(), base_name.replace('-', "_") ), ); } metadata23 .entry_points .insert("console_scripts".to_string(), console_scripts); // Add our wasmtime default version if the user didn't provide one if !metadata23 .requires_dist .iter() .any(|requirement| requirement.name.as_ref() == "wasmtime") { // Having the wasmtime version hardcoded is not ideal, it's easy enough to overwrite metadata23 .requires_dist .push(Requirement::from_str("wasmtime>=11.0.0,<12.0.0").unwrap()); } Ok(metadata23) } /// Contains all the metadata required to build the crate #[derive(Clone)] pub struct BuildContext { /// The platform, i.e. os and pointer width pub target: Target, /// List of Cargo targets to compile pub compile_targets: Vec, /// Whether this project is pure rust or rust mixed with python pub project_layout: ProjectLayout, /// The path to pyproject.toml. Required for the source distribution pub pyproject_toml_path: PathBuf, /// Parsed pyproject.toml if any pub pyproject_toml: Option, /// Python Package Metadata 2.3 pub metadata23: Metadata23, /// The name of the crate pub crate_name: String, /// The name of the module can be distinct from the package name, mostly /// because package names normally contain minuses while module names /// have underscores. The package name is part of metadata23 pub module_name: String, /// The path to the Cargo.toml. Required for the cargo invocations pub manifest_path: PathBuf, /// Directory for all generated artifacts pub target_dir: PathBuf, /// The directory to store the built wheels in. Defaults to a new "wheels" /// directory in the project's target directory pub out: PathBuf, /// Build artifacts in release mode, with optimizations pub release: bool, /// Strip the library for minimum file size pub strip: bool, /// Checking the linked libraries for manylinux/musllinux compliance pub auditwheel: AuditWheelMode, /// When compiling for manylinux, use zig as linker to ensure glibc version compliance #[cfg(feature = "zig")] pub zig: bool, /// Whether to use the the manylinux/musllinux or use the native linux tag (off) pub platform_tag: Vec, /// The available python interpreter pub interpreter: Vec, /// Cargo.toml as resolved by [cargo_metadata] pub cargo_metadata: Metadata, /// Whether to use universal2 or use the native macOS tag (off) pub universal2: bool, /// Build editable wheels pub editable: bool, /// Cargo build options pub cargo_options: CargoOptions, } /// The wheel file location and its Python version tag (e.g. `py3`). /// /// For bindings the version tag contains the Python interpreter version /// they bind against (e.g. `cp37`). pub type BuiltWheelMetadata = (PathBuf, String); impl BuildContext { /// Checks which kind of bindings we have (pyo3/rust-cypthon or cffi or bin) and calls the /// correct builder. #[instrument(skip_all)] pub fn build_wheels(&self) -> Result> { use itertools::Itertools; fs::create_dir_all(&self.out) .context("Failed to create the target directory for the wheels")?; let wheels = match self.bridge() { BridgeModel::Bin(None) => self.build_bin_wheel(None)?, BridgeModel::Bin(Some(..)) => self.build_bin_wheels(&self.interpreter)?, BridgeModel::Bindings(..) => self.build_binding_wheels(&self.interpreter)?, BridgeModel::BindingsAbi3(major, minor) => { let abi3_interps: Vec<_> = self .interpreter .iter() .filter(|interp| interp.has_stable_api()) .cloned() .collect(); let non_abi3_interps: Vec<_> = self .interpreter .iter() .filter(|interp| !interp.has_stable_api()) .cloned() .collect(); let mut built_wheels = Vec::new(); if !abi3_interps.is_empty() { built_wheels.extend(self.build_binding_wheel_abi3( &abi3_interps, *major, *minor, )?); } if !non_abi3_interps.is_empty() { let interp_names: HashSet<_> = non_abi3_interps .iter() .map(|interp| match interp.interpreter_kind { InterpreterKind::CPython | InterpreterKind::GraalPy => { interp.implementation_name.to_string() } InterpreterKind::PyPy => "PyPy".to_string(), }) .collect(); eprintln!( "⚠️ Warning: {} does not yet support abi3 so the build artifacts will be version-specific.", interp_names.iter().join(", ") ); built_wheels.extend(self.build_binding_wheels(&non_abi3_interps)?); } built_wheels } BridgeModel::Cffi => self.build_cffi_wheel()?, BridgeModel::UniFfi => self.build_uniffi_wheel()?, }; Ok(wheels) } /// Bridge model pub fn bridge(&self) -> &BridgeModel { // FIXME: currently we only allow multiple bin targets so bridges are all the same &self.compile_targets[0].bridge_model } /// Builds a source distribution and returns the same metadata as [BuildContext::build_wheels] pub fn build_source_distribution(&self) -> Result> { fs::create_dir_all(&self.out) .context("Failed to create the target directory for the source distribution")?; match self.pyproject_toml.as_ref() { Some(pyproject) => { let sdist_path = source_distribution(self, pyproject, self.excludes(Format::Sdist)?) .context("Failed to build source distribution")?; Ok(Some((sdist_path, "source".to_string()))) } None => Ok(None), } } fn auditwheel( &self, artifact: &BuildArtifact, platform_tag: &[PlatformTag], python_interpreter: Option<&PythonInterpreter>, ) -> Result<(Policy, Vec)> { if matches!(self.auditwheel, AuditWheelMode::Skip) { return Ok((Policy::default(), Vec::new())); } if let Some(python_interpreter) = python_interpreter { if platform_tag.is_empty() && self.target.is_linux() && !python_interpreter.support_portable_wheels() { eprintln!( "🐍 Skipping auditwheel because {python_interpreter} does not support manylinux/musllinux wheels" ); return Ok((Policy::default(), Vec::new())); } } let mut musllinux: Vec<_> = platform_tag .iter() .filter(|tag| tag.is_musllinux()) .copied() .collect(); musllinux.sort(); let mut others: Vec<_> = platform_tag .iter() .filter(|tag| !tag.is_musllinux()) .copied() .collect(); others.sort(); // only bin bindings allow linking to libpython, extension modules must not let allow_linking_libpython = self.bridge().is_bin(); if self.bridge().is_bin() && !musllinux.is_empty() { return get_policy_and_libs( artifact, Some(musllinux[0]), &self.target, allow_linking_libpython, ); } let tag = others.first().or_else(|| musllinux.first()).copied(); get_policy_and_libs(artifact, tag, &self.target, allow_linking_libpython) } /// Add library search paths in Cargo target directory rpath when building in editable mode fn add_rpath(&self, artifacts: &[&BuildArtifact]) -> Result<()> { if self.editable && self.target.is_linux() && !artifacts.is_empty() { for artifact in artifacts { if artifact.linked_paths.is_empty() { continue; } let old_rpaths = patchelf::get_rpath(&artifact.path)?; let mut new_rpaths = old_rpaths.clone(); for path in &artifact.linked_paths { if !old_rpaths.contains(path) { new_rpaths.push(path.to_string()); } } let new_rpath = new_rpaths.join(":"); if let Err(err) = patchelf::set_rpath(&artifact.path, &new_rpath) { eprintln!( "⚠️ Warning: Failed to set rpath for {}: {}", artifact.path.display(), err ); } } } Ok(()) } fn add_external_libs( &self, writer: &mut WheelWriter, artifacts: &[&BuildArtifact], ext_libs: &[Vec], ) -> Result<()> { if self.editable { return self.add_rpath(artifacts); } if ext_libs.iter().all(|libs| libs.is_empty()) { return Ok(()); } if matches!(self.auditwheel, AuditWheelMode::Check) { eprintln!("🖨️ Your library is not manylinux/musllinux compliant because it requires copying the following libraries:"); for lib in ext_libs.iter().flatten() { if let Some(path) = lib.realpath.as_ref() { eprintln!(" {} => {}", lib.name, path.display()) } else { eprintln!(" {} => not found", lib.name) }; } bail!("Can not repair the wheel because `--auditwheel=check` is specified, re-run with `--auditwheel=repair` to copy the libraries."); } patchelf::verify_patchelf()?; // Put external libs to ${module_name}.libs directory // See https://github.com/pypa/auditwheel/issues/89 let mut libs_dir = self .project_layout .python_module .as_ref() .and_then(|py| py.file_name().map(|s| s.to_os_string())) .unwrap_or_else(|| self.module_name.clone().into()); libs_dir.push(".libs"); let libs_dir = PathBuf::from(libs_dir); writer.add_directory(&libs_dir)?; let temp_dir = tempfile::tempdir()?; let mut soname_map = HashMap::new(); let mut libs_copied = HashSet::new(); for lib in ext_libs.iter().flatten() { let lib_path = lib.realpath.clone().with_context(|| { format!( "Cannot repair wheel, because required library {} could not be located.", lib.path.display() ) })?; // Generate a new soname with a short hash let short_hash = &hash_file(&lib_path)?[..8]; let (file_stem, file_ext) = lib.name.split_once('.').unwrap(); let new_soname = if !file_stem.ends_with(&format!("-{short_hash}")) { format!("{file_stem}-{short_hash}.{file_ext}") } else { format!("{file_stem}.{file_ext}") }; // Copy the original lib to a tmpdir and modify some of its properties // for example soname and rpath let dest_path = temp_dir.path().join(&new_soname); fs::copy(&lib_path, &dest_path)?; libs_copied.insert(lib_path); // fs::copy copies permissions as well, and the original // file may have been read-only let mut perms = fs::metadata(&dest_path)?.permissions(); #[allow(clippy::permissions_set_readonly_false)] perms.set_readonly(false); fs::set_permissions(&dest_path, perms)?; patchelf::set_soname(&dest_path, &new_soname)?; if !lib.rpath.is_empty() || !lib.runpath.is_empty() { patchelf::set_rpath(&dest_path, &libs_dir)?; } soname_map.insert( lib.name.clone(), (new_soname.clone(), dest_path.clone(), lib.needed.clone()), ); } for (artifact, artifact_ext_libs) in artifacts.iter().zip(ext_libs) { let artifact_deps: HashSet<_> = artifact_ext_libs.iter().map(|lib| &lib.name).collect(); let replacements = soname_map .iter() .filter_map(|(k, v)| { if artifact_deps.contains(k) { Some((k, v.0.clone())) } else { None } }) .collect::>(); if !replacements.is_empty() { patchelf::replace_needed(&artifact.path, &replacements[..])?; } } // we grafted in a bunch of libraries and modified their sonames, but // they may have internal dependencies (DT_NEEDED) on one another, so // we need to update those records so each now knows about the new // name of the other. for (new_soname, path, needed) in soname_map.values() { let mut replacements = Vec::new(); for n in needed { if soname_map.contains_key(n) { replacements.push((n, soname_map[n].0.clone())); } } if !replacements.is_empty() { patchelf::replace_needed(path, &replacements[..])?; } writer.add_file_with_permissions(libs_dir.join(new_soname), path, 0o755)?; } eprintln!( "🖨 Copied external shared libraries to package {} directory:", libs_dir.display() ); for lib_path in libs_copied { eprintln!(" {}", lib_path.display()); } let artifact_dir = match self.bridge() { // cffi bindings that contains '.' in the module name will be split into directories BridgeModel::Cffi => self.module_name.split(".").collect::(), // For other bindings artifact .so file usually resides at ${module_name}/${module_name}.so _ => PathBuf::from(&self.module_name), }; for artifact in artifacts { let mut new_rpaths = patchelf::get_rpath(&artifact.path)?; // TODO: clean existing rpath entries if it's not pointed to a location within the wheel // See https://github.com/pypa/auditwheel/blob/353c24250d66951d5ac7e60b97471a6da76c123f/src/auditwheel/repair.py#L160 let new_rpath = Path::new("$ORIGIN").join(relpath(&libs_dir, &artifact_dir)); new_rpaths.push(new_rpath.to_str().unwrap().to_string()); let new_rpath = new_rpaths.join(":"); patchelf::set_rpath(&artifact.path, &new_rpath)?; } Ok(()) } fn add_pth(&self, writer: &mut WheelWriter) -> Result<()> { if self.editable { writer.add_pth(&self.project_layout, &self.metadata23)?; } Ok(()) } fn excludes(&self, format: Format) -> Result { let project_dir = match self.pyproject_toml_path.normalize() { Ok(pyproject_toml_path) => pyproject_toml_path.into_path_buf(), Err(_) => self.manifest_path.normalize()?.into_path_buf(), }; let mut excludes = OverrideBuilder::new(project_dir.parent().unwrap()); if let Some(pyproject) = self.pyproject_toml.as_ref() { if let Some(glob_patterns) = &pyproject.exclude() { for glob in glob_patterns .iter() .filter_map(|glob_pattern| glob_pattern.targets(format)) { excludes.add(glob)?; } } } // Ignore sdist output files so that we don't include them in the sdist if matches!(format, Format::Sdist) { let glob_pattern = format!( "{}{}{}-*.tar.gz", self.out.display(), std::path::MAIN_SEPARATOR, &self.metadata23.get_distribution_escaped(), ); excludes.add(&glob_pattern)?; } Ok(excludes.build()?) } /// Returns the platform part of the tag for the wheel name pub fn get_platform_tag(&self, platform_tags: &[PlatformTag]) -> Result { if let Ok(host_platform) = env::var("_PYTHON_HOST_PLATFORM") { return Ok(host_platform.replace(['.', '-'], "_")); } let target = &self.target; let tag = match (&target.target_os(), &target.target_arch()) { // Windows (Os::Windows, Arch::X86) => "win32".to_string(), (Os::Windows, Arch::X86_64) => "win_amd64".to_string(), (Os::Windows, Arch::Aarch64) => "win_arm64".to_string(), // Linux (Os::Linux, _) => { let arch = target.get_platform_arch()?; let mut platform_tags = platform_tags.to_vec(); platform_tags.sort(); let mut tags = vec![]; for platform_tag in platform_tags { tags.push(format!("{platform_tag}_{arch}")); for alias in platform_tag.aliases() { tags.push(format!("{alias}_{arch}")); } } tags.join(".") } // macOS (Os::Macos, Arch::X86_64) | (Os::Macos, Arch::Aarch64) => { let ((x86_64_major, x86_64_minor), (arm64_major, arm64_minor)) = macosx_deployment_target(env::var("MACOSX_DEPLOYMENT_TARGET").ok().as_deref(), self.universal2)?; let x86_64_tag = if let Some(deployment_target) = self.pyproject_toml.as_ref().and_then(|x| x.target_config("x86_64-apple-darwin")).and_then(|config| config.macos_deployment_target.as_ref()) { deployment_target.replace('.', "_") } else { format!("{x86_64_major}_{x86_64_minor}") }; let arm64_tag = if let Some(deployment_target) = self.pyproject_toml.as_ref().and_then(|x| x.target_config("aarch64-apple-darwin")).and_then(|config| config.macos_deployment_target.as_ref()) { deployment_target.replace('.', "_") } else { format!("{arm64_major}_{arm64_minor}") }; if self.universal2 { format!( "macosx_{x86_64_tag}_x86_64.macosx_{arm64_tag}_arm64.macosx_{x86_64_tag}_universal2" ) } else if target.target_arch() == Arch::Aarch64 { format!("macosx_{arm64_tag}_arm64") } else { format!("macosx_{x86_64_tag}_x86_64") } } // FreeBSD (Os::FreeBsd, _) // NetBSD | (Os::NetBsd, _) // OpenBSD | (Os::OpenBsd, _) => { let release = target.get_platform_release()?; format!( "{}_{}_{}", target.target_os().to_string().to_ascii_lowercase(), release, target.target_arch().machine(), ) } // DragonFly (Os::Dragonfly, Arch::X86_64) // Haiku | (Os::Haiku, Arch::X86_64) => { let release = target.get_platform_release()?; format!( "{}_{}_{}", target.target_os().to_string().to_ascii_lowercase(), release.to_ascii_lowercase(), "x86_64" ) } // Emscripten (Os::Emscripten, Arch::Wasm32) => { let release = emscripten_version()?.replace(['.', '-'], "_"); format!("emscripten_{release}_wasm32") } (Os::Wasi, Arch::Wasm32) => { "any".to_string() } // osname_release_machine fallback for any POSIX system (_, _) => { let info = PlatformInfo::new() .map_err(|e| anyhow!("Failed to fetch platform information: {e}"))?; let mut release = info.release().to_string_lossy().replace(['.', '-'], "_"); let mut machine = info.machine().to_string_lossy().replace([' ', '/'], "_"); let mut os = target.target_os().to_string().to_ascii_lowercase(); // See https://github.com/python/cpython/blob/46c8d915715aa2bd4d697482aa051fe974d440e1/Lib/sysconfig.py#L722-L730 if os.starts_with("sunos") { // Solaris / Illumos if let Some((major, other)) = release.split_once('_') { let major_ver: u64 = major.parse().context("illumos major version is not a number")?; if major_ver >= 5 { // SunOS 5 == Solaris 2 os = "solaris".to_string(); release = format!("{}_{}", major_ver - 3, other); machine = format!("{machine}_64bit"); } } } format!( "{os}_{release}_{machine}" ) } }; Ok(tag) } /// Returns the tags for the WHEEL file for cffi wheels pub fn get_py3_tags(&self, platform_tags: &[PlatformTag]) -> Result> { let tags = vec![format!( "py3-none-{}", self.get_platform_tag(platform_tags)? )]; Ok(tags) } /// Returns the tags for the platform without python version pub fn get_universal_tags( &self, platform_tags: &[PlatformTag], ) -> Result<(String, Vec)> { let tag = format!( "py3-none-{platform}", platform = self.get_platform_tag(platform_tags)? ); let tags = self.get_py3_tags(platform_tags)?; Ok((tag, tags)) } fn write_binding_wheel_abi3( &self, artifact: BuildArtifact, platform_tags: &[PlatformTag], ext_libs: Vec, major: u8, min_minor: u8, ) -> Result { let platform = self.get_platform_tag(platform_tags)?; let tag = format!("cp{major}{min_minor}-abi3-{platform}"); let mut writer = WheelWriter::new( &tag, &self.out, &self.metadata23, &[tag.clone()], self.excludes(Format::Wheel)?, )?; self.add_external_libs(&mut writer, &[&artifact], &[ext_libs])?; write_bindings_module( &mut writer, &self.project_layout, &artifact.path, self.interpreter.first(), true, &self.target, self.editable, self.pyproject_toml.as_ref(), ) .context("Failed to add the files to the wheel")?; self.add_pth(&mut writer)?; add_data(&mut writer, self.project_layout.data.as_deref())?; let wheel_path = writer.finish()?; Ok((wheel_path, format!("cp{major}{min_minor}"))) } /// For abi3 we only need to build a single wheel and we don't even need a python interpreter /// for it pub fn build_binding_wheel_abi3( &self, interpreters: &[PythonInterpreter], major: u8, min_minor: u8, ) -> Result> { let mut wheels = Vec::new(); // On windows, we have picked an interpreter to set the location of python.lib, // otherwise it's none let python_interpreter = interpreters.first(); let artifact = self.compile_cdylib( python_interpreter, Some(&self.project_layout.extension_name), )?; let (policy, external_libs) = self.auditwheel(&artifact, &self.platform_tag, python_interpreter)?; let platform_tags = if self.platform_tag.is_empty() { vec![policy.platform_tag()] } else { self.platform_tag.clone() }; let (wheel_path, tag) = self.write_binding_wheel_abi3( artifact, &platform_tags, external_libs, major, min_minor, )?; eprintln!( "📦 Built wheel for abi3 Python ≥ {}.{} to {}", major, min_minor, wheel_path.display() ); wheels.push((wheel_path, tag)); Ok(wheels) } fn write_binding_wheel( &self, python_interpreter: &PythonInterpreter, artifact: BuildArtifact, platform_tags: &[PlatformTag], ext_libs: Vec, ) -> Result { let tag = python_interpreter.get_tag(self, platform_tags)?; let mut writer = WheelWriter::new( &tag, &self.out, &self.metadata23, &[tag.clone()], self.excludes(Format::Wheel)?, )?; self.add_external_libs(&mut writer, &[&artifact], &[ext_libs])?; write_bindings_module( &mut writer, &self.project_layout, &artifact.path, Some(python_interpreter), false, &self.target, self.editable, self.pyproject_toml.as_ref(), ) .context("Failed to add the files to the wheel")?; self.add_pth(&mut writer)?; add_data(&mut writer, self.project_layout.data.as_deref())?; let wheel_path = writer.finish()?; Ok(( wheel_path, format!("cp{}{}", python_interpreter.major, python_interpreter.minor), )) } /// Builds wheels for a Cargo project for all given python versions. /// Return type is the same as [BuildContext::build_wheels()] /// /// Defaults to 3.{5, 6, 7, 8, 9} if no python versions are given /// and silently ignores all non-existent python versions. /// /// Runs [auditwheel_rs()] if not deactivated pub fn build_binding_wheels( &self, interpreters: &[PythonInterpreter], ) -> Result> { let mut wheels = Vec::new(); for python_interpreter in interpreters { let artifact = self.compile_cdylib( Some(python_interpreter), Some(&self.project_layout.extension_name), )?; let (policy, external_libs) = self.auditwheel(&artifact, &self.platform_tag, Some(python_interpreter))?; let platform_tags = if self.platform_tag.is_empty() { vec![policy.platform_tag()] } else { self.platform_tag.clone() }; let (wheel_path, tag) = self.write_binding_wheel( python_interpreter, artifact, &platform_tags, external_libs, )?; eprintln!( "📦 Built wheel for {} {}.{}{} to {}", python_interpreter.interpreter_kind, python_interpreter.major, python_interpreter.minor, python_interpreter.abiflags, wheel_path.display() ); wheels.push((wheel_path, tag)); } Ok(wheels) } /// Runs cargo build, extracts the cdylib from the output and returns the path to it /// /// The module name is used to warn about missing a `PyInit_` function for /// bindings modules. pub fn compile_cdylib( &self, python_interpreter: Option<&PythonInterpreter>, extension_name: Option<&str>, ) -> Result { let artifacts = compile(self, python_interpreter, &self.compile_targets) .context("Failed to build a native library through cargo")?; let error_msg = "Cargo didn't build a cdylib. Did you miss crate-type = [\"cdylib\"] \ in the lib section of your Cargo.toml?"; let artifacts = artifacts.first().context(error_msg)?; let mut artifact = artifacts .get("cdylib") .cloned() .ok_or_else(|| anyhow!(error_msg,))?; if let Some(extension_name) = extension_name { // globin has an issue parsing MIPS64 ELF, see https://github.com/m4b/goblin/issues/274 // But don't fail the build just because we can't emit a warning let _ = warn_missing_py_init(&artifact.path, extension_name); } if self.editable || matches!(self.auditwheel, AuditWheelMode::Skip) { return Ok(artifact); } // auditwheel repair will edit the file, so we need to copy it to avoid errors in reruns let artifact_path = &artifact.path; let maturin_build = artifact_path.parent().unwrap().join("maturin"); fs::create_dir_all(&maturin_build)?; let new_artifact_path = maturin_build.join(artifact_path.file_name().unwrap()); fs::copy(artifact_path, &new_artifact_path)?; artifact.path = new_artifact_path; Ok(artifact) } fn write_cffi_wheel( &self, artifact: BuildArtifact, platform_tags: &[PlatformTag], ext_libs: Vec, ) -> Result { let (tag, tags) = self.get_universal_tags(platform_tags)?; let mut writer = WheelWriter::new( &tag, &self.out, &self.metadata23, &tags, self.excludes(Format::Wheel)?, )?; self.add_external_libs(&mut writer, &[&artifact], &[ext_libs])?; write_cffi_module( &mut writer, &self.project_layout, self.manifest_path.parent().unwrap(), &self.target_dir, &self.module_name, &artifact.path, &self.interpreter[0].executable, self.editable, self.pyproject_toml.as_ref(), )?; self.add_pth(&mut writer)?; add_data(&mut writer, self.project_layout.data.as_deref())?; let wheel_path = writer.finish()?; Ok((wheel_path, "py3".to_string())) } /// Builds a wheel with cffi bindings pub fn build_cffi_wheel(&self) -> Result> { let mut wheels = Vec::new(); let artifact = self.compile_cdylib(None, None)?; let (policy, external_libs) = self.auditwheel(&artifact, &self.platform_tag, None)?; let platform_tags = if self.platform_tag.is_empty() { vec![policy.platform_tag()] } else { self.platform_tag.clone() }; let (wheel_path, tag) = self.write_cffi_wheel(artifact, &platform_tags, external_libs)?; // Warn if cffi isn't specified in the requirements if !self .metadata23 .requires_dist .iter() .any(|requirement| requirement.name.as_ref() == "cffi") { eprintln!( "⚠️ Warning: missing cffi package dependency, please add it to pyproject.toml. \ e.g: `dependencies = [\"cffi\"]`. This will become an error." ); } eprintln!("📦 Built wheel to {}", wheel_path.display()); wheels.push((wheel_path, tag)); Ok(wheels) } fn write_uniffi_wheel( &self, artifact: BuildArtifact, platform_tags: &[PlatformTag], ext_libs: Vec, ) -> Result { let (tag, tags) = self.get_universal_tags(platform_tags)?; let mut writer = WheelWriter::new( &tag, &self.out, &self.metadata23, &tags, self.excludes(Format::Wheel)?, )?; self.add_external_libs(&mut writer, &[&artifact], &[ext_libs])?; write_uniffi_module( &mut writer, &self.project_layout, self.manifest_path.parent().unwrap(), &self.target_dir, &self.module_name, &artifact.path, self.target.target_os(), self.editable, self.pyproject_toml.as_ref(), )?; self.add_pth(&mut writer)?; add_data(&mut writer, self.project_layout.data.as_deref())?; let wheel_path = writer.finish()?; Ok((wheel_path, "py3".to_string())) } /// Builds a wheel with uniffi bindings pub fn build_uniffi_wheel(&self) -> Result> { let mut wheels = Vec::new(); let artifact = self.compile_cdylib(None, None)?; let (policy, external_libs) = self.auditwheel(&artifact, &self.platform_tag, None)?; let platform_tags = if self.platform_tag.is_empty() { vec![policy.platform_tag()] } else { self.platform_tag.clone() }; let (wheel_path, tag) = self.write_uniffi_wheel(artifact, &platform_tags, external_libs)?; eprintln!("📦 Built wheel to {}", wheel_path.display()); wheels.push((wheel_path, tag)); Ok(wheels) } fn write_bin_wheel( &self, python_interpreter: Option<&PythonInterpreter>, artifacts: &[BuildArtifact], platform_tags: &[PlatformTag], ext_libs: &[Vec], ) -> Result { let (tag, tags) = match (self.bridge(), python_interpreter) { (BridgeModel::Bin(None), _) => self.get_universal_tags(platform_tags)?, (BridgeModel::Bin(Some(..)), Some(python_interpreter)) => { let tag = python_interpreter.get_tag(self, platform_tags)?; (tag.clone(), vec![tag]) } _ => unreachable!(), }; if !self.metadata23.scripts.is_empty() { bail!("Defining scripts and working with a binary doesn't mix well"); } let mut artifacts_and_files = Vec::new(); for artifact in artifacts { // I wouldn't know of any case where this would be the wrong (and neither do // I know a better alternative) let bin_name = artifact .path .file_name() .context("Couldn't get the filename from the binary produced by cargo")? .to_str() .context("binary produced by cargo has non-utf8 filename")? .to_string(); // From https://packaging.python.org/en/latest/specifications/entry-points/ // > The name may contain any characters except =, but it cannot start or end with any // > whitespace character, or start with [. For new entry points, it is recommended to // > use only letters, numbers, underscores, dots and dashes (regex [\w.-]+). // All of these rules are already enforced by cargo: // https://github.com/rust-lang/cargo/blob/58a961314437258065e23cb6316dfc121d96fb71/src/cargo/util/restricted_names.rs#L39-L84 // i.e. we don't need to do any bin name validation here anymore artifacts_and_files.push((artifact, bin_name)) } let metadata23 = if self.target.is_wasi() { bin_wasi_helper(&artifacts_and_files, self.metadata23.clone())? } else { self.metadata23.clone() }; let mut writer = WheelWriter::new( &tag, &self.out, &metadata23, &tags, self.excludes(Format::Wheel)?, )?; if self.project_layout.python_module.is_some() && self.target.is_wasi() { // TODO: Can we have python code and the wasm launchers coexisting // without clashes? bail!("Sorry, adding python code to a wasm binary is currently not supported") } if !self.editable { write_python_part( &mut writer, &self.project_layout, self.pyproject_toml.as_ref(), ) .context("Failed to add the python module to the package")?; } let mut artifacts_ref = Vec::with_capacity(artifacts.len()); for (artifact, bin_name) in &artifacts_and_files { artifacts_ref.push(*artifact); write_bin(&mut writer, &artifact.path, &self.metadata23, bin_name)?; if self.target.is_wasi() { write_wasm_launcher(&mut writer, &self.metadata23, bin_name)?; } } self.add_external_libs(&mut writer, &artifacts_ref, ext_libs)?; self.add_pth(&mut writer)?; add_data(&mut writer, self.project_layout.data.as_deref())?; let wheel_path = writer.finish()?; Ok((wheel_path, "py3".to_string())) } /// Builds a wheel that contains a binary /// /// Runs [auditwheel_rs()] if not deactivated pub fn build_bin_wheel( &self, python_interpreter: Option<&PythonInterpreter>, ) -> Result> { let mut wheels = Vec::new(); let artifacts = compile(self, python_interpreter, &self.compile_targets) .context("Failed to build a native library through cargo")?; if artifacts.is_empty() { bail!("Cargo didn't build a binary") } let mut policies = Vec::with_capacity(artifacts.len()); let mut ext_libs = Vec::new(); let mut artifact_paths = Vec::with_capacity(artifacts.len()); for artifact in artifacts { let artifact = artifact .get("bin") .cloned() .ok_or_else(|| anyhow!("Cargo didn't build a binary"))?; let (policy, external_libs) = self.auditwheel(&artifact, &self.platform_tag, None)?; policies.push(policy); ext_libs.push(external_libs); artifact_paths.push(artifact); } let policy = policies.iter().min_by_key(|p| p.priority).unwrap(); let platform_tags = if self.platform_tag.is_empty() { vec![policy.platform_tag()] } else { self.platform_tag.clone() }; let (wheel_path, tag) = self.write_bin_wheel( python_interpreter, &artifact_paths, &platform_tags, &ext_libs, )?; eprintln!("📦 Built wheel to {}", wheel_path.display()); wheels.push((wheel_path, tag)); Ok(wheels) } /// Builds a wheel that contains a binary /// /// Runs [auditwheel_rs()] if not deactivated pub fn build_bin_wheels( &self, interpreters: &[PythonInterpreter], ) -> Result> { let mut wheels = Vec::new(); for python_interpreter in interpreters { wheels.extend(self.build_bin_wheel(Some(python_interpreter))?); } Ok(wheels) } } /// Calculate the sha256 of a file pub fn hash_file(path: impl AsRef) -> Result { let mut file = fs::File::open(path.as_ref())?; let mut hasher = Sha256::new(); io::copy(&mut file, &mut hasher)?; let hex = format!("{:x}", hasher.finalize()); Ok(hex) } /// Get the default macOS deployment target version fn macosx_deployment_target( deploy_target: Option<&str>, universal2: bool, ) -> Result<((u16, u16), (u16, u16))> { let x86_64_default_rustc = rustc_macosx_target_version("x86_64-apple-darwin"); let x86_64_default = if universal2 && x86_64_default_rustc.1 < 9 { (10, 9) } else { x86_64_default_rustc }; let arm64_default = rustc_macosx_target_version("aarch64-apple-darwin"); let mut x86_64_ver = x86_64_default; let mut arm64_ver = arm64_default; if let Some(deploy_target) = deploy_target { let err_ctx = "MACOSX_DEPLOYMENT_TARGET is invalid"; let mut parts = deploy_target.split('.'); let major = parts.next().context(err_ctx)?; let major: u16 = major.parse().context(err_ctx)?; let minor = parts.next().context(err_ctx)?; let minor: u16 = minor.parse().context(err_ctx)?; if (major, minor) > x86_64_default { x86_64_ver = (major, minor); } if (major, minor) > arm64_default { arm64_ver = (major, minor); } } Ok(( python_macosx_target_version(x86_64_ver), python_macosx_target_version(arm64_ver), )) } #[inline] fn python_macosx_target_version(version: (u16, u16)) -> (u16, u16) { let (major, minor) = version; if major >= 11 { // pip only supports (major, 0) for macOS 11+ (major, 0) } else { (major, minor) } } pub(crate) fn rustc_macosx_target_version(target: &str) -> (u16, u16) { use std::process::{Command, Stdio}; use target_lexicon::OperatingSystem; // On rustc 1.71.0+ we can use `rustc --print deployment-target` if let Ok(output) = Command::new("rustc") .stderr(Stdio::piped()) .stdout(Stdio::piped()) .env_remove("MACOSX_DEPLOYMENT_TARGET") .args(["--target", target]) .args(["--print", "deployment-target"]) .output() { if output.status.success() { let target_version = std::str::from_utf8(&output.stdout) .unwrap() .split('=') .last() .and_then(|v| v.trim().split_once('.')); if let Some((major, minor)) = target_version { let major: u16 = major.parse().unwrap(); let minor: u16 = minor.parse().unwrap(); return (major, minor); } } } let fallback_version = if target == "aarch64-apple-darwin" { (11, 0) } else { (10, 7) }; let rustc_target_version = || -> Result<(u16, u16)> { let cmd = Command::new("rustc") .arg("-Z") .arg("unstable-options") .arg("--print") .arg("target-spec-json") .arg("--target") .arg(target) .env("RUSTC_BOOTSTRAP", "1") .env_remove("MACOSX_DEPLOYMENT_TARGET") .output() .context("Failed to run rustc to get the target spec")?; let stdout = String::from_utf8(cmd.stdout).context("rustc output is not valid utf-8")?; let spec: serde_json::Value = serde_json::from_str(&stdout).context("rustc output is not valid json")?; let llvm_target = spec .as_object() .context("rustc output is not a json object")? .get("llvm-target") .context("rustc output does not contain llvm-target")? .as_str() .context("llvm-target is not a string")?; let triple = llvm_target.parse::(); let (major, minor) = match triple.map(|t| t.operating_system) { Ok(OperatingSystem::MacOSX { major, minor, .. }) => (major, minor), _ => fallback_version, }; Ok((major, minor)) }; rustc_target_version().unwrap_or(fallback_version) } /// Emscripten version fn emscripten_version() -> Result { let os_version = env::var("MATURIN_EMSCRIPTEN_VERSION"); let release = match os_version { Ok(os_ver) => os_ver, Err(_) => emcc_version()?, }; Ok(release) } fn emcc_version() -> Result { use regex::bytes::Regex; use std::process::Command; let emcc = Command::new("emcc") .arg("--version") .output() .context("Failed to run emcc to get the version")?; let pattern = Regex::new(r"^emcc .+? (\d+\.\d+\.\d+).*").unwrap(); let caps = pattern .captures(&emcc.stdout) .context("Failed to parse emcc version")?; let version = caps.get(1).context("Failed to parse emcc version")?; Ok(String::from_utf8(version.as_bytes().to_vec())?) } #[cfg(test)] mod test { use super::macosx_deployment_target; use pretty_assertions::assert_eq; #[test] fn test_macosx_deployment_target() { let rustc_ver = rustc_version::version().unwrap(); let rustc_ver = (rustc_ver.major, rustc_ver.minor); let x86_64_minor = if rustc_ver >= (1, 74) { 12 } else { 7 }; let universal2_minor = if rustc_ver >= (1, 74) { 12 } else { 9 }; assert_eq!( macosx_deployment_target(None, false).unwrap(), ((10, x86_64_minor), (11, 0)) ); assert_eq!( macosx_deployment_target(None, true).unwrap(), ((10, universal2_minor), (11, 0)) ); assert_eq!( macosx_deployment_target(Some("10.6"), false).unwrap(), ((10, x86_64_minor), (11, 0)) ); assert_eq!( macosx_deployment_target(Some("10.6"), true).unwrap(), ((10, universal2_minor), (11, 0)) ); assert_eq!( macosx_deployment_target(Some("10.9"), false).unwrap(), ((10, universal2_minor), (11, 0)) ); assert_eq!( macosx_deployment_target(Some("11.0.0"), false).unwrap(), ((11, 0), (11, 0)) ); assert_eq!( macosx_deployment_target(Some("11.1"), false).unwrap(), ((11, 0), (11, 0)) ); } } maturin-1.7.4/src/build_options.rs000066400000000000000000001653251467514767100172470ustar00rootroot00000000000000use crate::auditwheel::{AuditWheelMode, PlatformTag}; use crate::build_context::BridgeModel; use crate::compile::{CompileTarget, LIB_CRATE_TYPES}; use crate::cross_compile::{find_sysconfigdata, parse_sysconfigdata}; use crate::project_layout::ProjectResolver; use crate::pyproject_toml::ToolMaturin; use crate::python_interpreter::{InterpreterConfig, InterpreterKind, MINIMUM_PYTHON_MINOR}; use crate::{BuildContext, PythonInterpreter, Target}; use anyhow::{bail, format_err, Context, Result}; use cargo_metadata::{Metadata, Node}; use cargo_options::heading; use pep440_rs::VersionSpecifiers; use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; use std::env; use std::ops::{Deref, DerefMut}; use std::path::PathBuf; use tracing::{debug, instrument}; // This is used for BridgeModel::Bindings("pyo3-ffi") and BridgeModel::Bindings("pyo3"). // These should be treated almost identically but must be correctly identified // as one or the other in logs. pyo3-ffi is ordered first because it is newer // and more restrictive. const PYO3_BINDING_CRATES: [&str; 2] = ["pyo3-ffi", "pyo3"]; fn pyo3_minimum_python_minor_version(major_version: u64, minor_version: u64) -> Option { if (major_version, minor_version) >= (0, 16) { Some(7) } else { None } } fn pyo3_ffi_minimum_python_minor_version(major_version: u64, minor_version: u64) -> Option { if (major_version, minor_version) >= (0, 16) { pyo3_minimum_python_minor_version(major_version, minor_version) } else { None } } /// Cargo options for the build process #[derive(Debug, Default, Serialize, Deserialize, clap::Parser, Clone, Eq, PartialEq)] #[serde(default, rename_all = "kebab-case")] pub struct CargoOptions { /// Do not print cargo log messages #[arg(short = 'q', long)] pub quiet: bool, /// Number of parallel jobs, defaults to # of CPUs #[arg(short = 'j', long, value_name = "N", help_heading = heading::COMPILATION_OPTIONS)] pub jobs: Option, /// Build artifacts with the specified Cargo profile #[arg(long, value_name = "PROFILE-NAME", help_heading = heading::COMPILATION_OPTIONS)] pub profile: Option, /// Space or comma separated list of features to activate #[arg( short = 'F', long, action = clap::ArgAction::Append, help_heading = heading::FEATURE_SELECTION, )] pub features: Vec, /// Activate all available features #[arg(long, help_heading = heading::FEATURE_SELECTION)] pub all_features: bool, /// Do not activate the `default` feature #[arg(long, help_heading = heading::FEATURE_SELECTION)] pub no_default_features: bool, /// Build for the target triple #[arg( long, value_name = "TRIPLE", env = "CARGO_BUILD_TARGET", help_heading = heading::COMPILATION_OPTIONS, )] pub target: Option, /// Directory for all generated artifacts #[arg(long, value_name = "DIRECTORY", help_heading = heading::COMPILATION_OPTIONS)] pub target_dir: Option, /// Path to Cargo.toml #[arg(short = 'm', long, value_name = "PATH", help_heading = heading::MANIFEST_OPTIONS)] pub manifest_path: Option, /// Ignore `rust-version` specification in packages #[arg(long)] pub ignore_rust_version: bool, /// Use verbose output (-vv very verbose/build.rs output) // Note that this duplicates the global option, but clap seems to be fine with that. #[arg(short = 'v', long, action = clap::ArgAction::Count)] pub verbose: u8, /// Coloring: auto, always, never #[arg(long, value_name = "WHEN")] pub color: Option, /// Require Cargo.lock and cache are up to date #[arg(long, help_heading = heading::MANIFEST_OPTIONS)] pub frozen: bool, /// Require Cargo.lock is up to date #[arg(long, help_heading = heading::MANIFEST_OPTIONS)] pub locked: bool, /// Run without accessing the network #[arg(long, help_heading = heading::MANIFEST_OPTIONS)] pub offline: bool, /// Override a configuration value (unstable) #[arg(long, value_name = "KEY=VALUE", action = clap::ArgAction::Append)] pub config: Vec, /// Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details #[arg(short = 'Z', value_name = "FLAG", action = clap::ArgAction::Append)] pub unstable_flags: Vec, /// Timing output formats (unstable) (comma separated): html, json #[arg( long, value_name = "FMTS", value_delimiter = ',', require_equals = true, help_heading = heading::COMPILATION_OPTIONS, )] pub timings: Option>, /// Outputs a future incompatibility report at the end of the build (unstable) #[arg(long)] pub future_incompat_report: bool, /// Rustc flags #[arg(num_args = 0.., trailing_var_arg = true)] pub args: Vec, } /// High level API for building wheels from a crate which is also used for the CLI #[derive(Debug, Default, Serialize, Deserialize, clap::Parser, Clone, Eq, PartialEq)] #[serde(default)] pub struct BuildOptions { /// Control the platform tag on linux. /// /// Options are `manylinux` tags (for example `manylinux2014`/`manylinux_2_24`) /// or `musllinux` tags (for example `musllinux_1_2`) /// and `linux` for the native linux tag. /// /// Note that `manylinux1` and `manylinux2010` is unsupported by the rust compiler. /// Wheels with the native `linux` tag will be rejected by pypi, /// unless they are separately validated by `auditwheel`. /// /// The default is the lowest compatible `manylinux` tag, or plain `linux` if nothing matched /// /// This option is ignored on all non-linux platforms #[arg( id = "compatibility", long = "compatibility", alias = "manylinux", num_args = 0.., action = clap::ArgAction::Append )] pub platform_tag: Vec, /// The python versions to build wheels for, given as the executables of /// interpreters such as `python3.9` or `/usr/bin/python3.8`. #[arg(short, long, num_args = 0.., action = clap::ArgAction::Append)] pub interpreter: Vec, /// Find interpreters from the host machine #[arg(short = 'f', long, conflicts_with = "interpreter")] pub find_interpreter: bool, /// Which kind of bindings to use. #[arg(short, long, value_parser = ["pyo3", "pyo3-ffi", "cffi", "uniffi", "bin"])] pub bindings: Option, /// The directory to store the built wheels in. Defaults to a new "wheels" /// directory in the project's target directory #[arg(short, long)] pub out: Option, /// Audit wheel for manylinux compliance #[arg(long, conflicts_with = "skip_auditwheel")] pub auditwheel: Option, /// Don't check for manylinux compliance #[arg(long, hide = true)] pub skip_auditwheel: bool, /// For manylinux targets, use zig to ensure compliance for the chosen manylinux version /// /// Default to manylinux2014/manylinux_2_17 if you do not specify an `--compatibility` /// /// Make sure you installed zig with `pip install maturin[zig]` #[cfg(feature = "zig")] #[arg(long)] pub zig: bool, /// Cargo build options #[command(flatten)] pub cargo: CargoOptions, } impl Deref for BuildOptions { type Target = CargoOptions; fn deref(&self) -> &Self::Target { &self.cargo } } impl DerefMut for BuildOptions { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.cargo } } impl BuildOptions { /// Finds the appropriate amount for python versions for each [BridgeModel]. fn find_interpreters( &self, bridge: &BridgeModel, interpreter: &[PathBuf], target: &Target, requires_python: Option<&VersionSpecifiers>, generate_import_lib: bool, ) -> Result> { match bridge { BridgeModel::Bindings(binding_name, _) | BridgeModel::Bin(Some((binding_name, _))) => { let mut interpreters = Vec::new(); if let Some(config_file) = env::var_os("PYO3_CONFIG_FILE") { if !binding_name.starts_with("pyo3") { bail!("Only pyo3 bindings can be configured with PYO3_CONFIG_FILE"); } let interpreter_config = InterpreterConfig::from_pyo3_config(config_file.as_ref(), target) .context("Invalid PYO3_CONFIG_FILE")?; interpreters.push(PythonInterpreter::from_config(interpreter_config)); } else if binding_name.starts_with("pyo3") && target.cross_compiling() { if let Some(cross_lib_dir) = env::var_os("PYO3_CROSS_LIB_DIR") { let host_interpreters = find_interpreter_in_host(bridge, interpreter, target, requires_python)?; let host_python = &host_interpreters[0]; eprintln!("🐍 Using host {host_python} for cross-compiling preparation"); // pyo3 env::set_var("PYO3_PYTHON", &host_python.executable); // rust-cpython, and legacy pyo3 versions env::set_var("PYTHON_SYS_EXECUTABLE", &host_python.executable); let sysconfig_path = find_sysconfigdata(cross_lib_dir.as_ref(), target)?; env::set_var( "MATURIN_PYTHON_SYSCONFIGDATA_DIR", sysconfig_path.parent().unwrap(), ); let sysconfig_data = parse_sysconfigdata(host_python, sysconfig_path)?; let major = sysconfig_data .get("version_major") .context("version_major is not defined")? .parse::() .context("Could not parse value of version_major")?; let minor = sysconfig_data .get("version_minor") .context("version_minor is not defined")? .parse::() .context("Could not parse value of version_minor")?; let abiflags = sysconfig_data .get("ABIFLAGS") .map(ToString::to_string) .unwrap_or_default(); let ext_suffix = sysconfig_data .get("EXT_SUFFIX") .context("syconfig didn't define an `EXT_SUFFIX` ಠ_ಠ")?; let soabi = sysconfig_data.get("SOABI"); let interpreter_kind = soabi .and_then(|tag| { if tag.starts_with("pypy") { Some(InterpreterKind::PyPy) } else if tag.starts_with("cpython") { Some(InterpreterKind::CPython) } else if tag.starts_with("graalpy") { Some(InterpreterKind::GraalPy) } else { None } }) .context("unsupported Python interpreter")?; interpreters.push(PythonInterpreter { config: InterpreterConfig { major, minor, interpreter_kind, abiflags, ext_suffix: ext_suffix.to_string(), pointer_width: None, }, executable: PathBuf::new(), platform: None, runnable: false, implementation_name: interpreter_kind.to_string().to_ascii_lowercase(), soabi: soabi.cloned(), }); } else { if interpreter.is_empty() && !self.find_interpreter { bail!("Couldn't find any python interpreters. Please specify at least one with -i"); } for interp in interpreter { // If `-i` looks like a file path, check if it's a valid interpreter if interp.components().count() > 1 && PythonInterpreter::check_executable(interp, target, bridge)? .is_none() { bail!("{} is not a valid python interpreter", interp.display()); } } interpreters = find_interpreter_in_sysconfig(interpreter, target, requires_python)?; if interpreters.is_empty() { bail!( "Couldn't find any python interpreters from '{}'. Please check that both major and minor python version have been specified in -i/--interpreter.", interpreter .iter() .map(|p| p.display().to_string()) .collect::>() .join(", ") ); } } } else if binding_name.starts_with("pyo3") { // Only pyo3/pyo3-ffi bindings supports bundled sysconfig interpreters interpreters = find_interpreter(bridge, interpreter, target, requires_python)?; } else { interpreters = find_interpreter_in_host(bridge, interpreter, target, requires_python)?; } let interpreters_str = interpreters .iter() .map(ToString::to_string) .collect::>() .join(", "); eprintln!("🐍 Found {interpreters_str}"); Ok(interpreters) } BridgeModel::Cffi => { let interpreter = find_single_python_interpreter(bridge, interpreter, target, "cffi")?; eprintln!("🐍 Using {interpreter} to generate the cffi bindings"); Ok(vec![interpreter]) } BridgeModel::Bin(None) | BridgeModel::UniFfi => Ok(vec![]), BridgeModel::BindingsAbi3(major, minor) => { if target.is_windows() { // Ideally, we wouldn't want to use any python interpreter without abi3 at all. // Unfortunately, on windows we need one to figure out base_prefix for a linker // argument. let interpreters = find_interpreter_in_host(bridge, interpreter, target, requires_python) .unwrap_or_default(); if env::var_os("PYO3_CROSS_LIB_DIR").is_some() { // PYO3_CROSS_LIB_DIR should point to the `libs` directory inside base_prefix // when cross compiling, so we fake a python interpreter matching it eprintln!("⚠️ Cross-compiling is poorly supported"); Ok(vec![PythonInterpreter { config: InterpreterConfig { major: *major as usize, minor: *minor as usize, interpreter_kind: InterpreterKind::CPython, abiflags: "".to_string(), ext_suffix: ".pyd".to_string(), pointer_width: None, }, executable: PathBuf::new(), platform: None, runnable: false, implementation_name: "cpython".to_string(), soabi: None, }]) } else if let Some(config_file) = env::var_os("PYO3_CONFIG_FILE") { let interpreter_config = InterpreterConfig::from_pyo3_config(config_file.as_ref(), target) .context("Invalid PYO3_CONFIG_FILE")?; Ok(vec![PythonInterpreter::from_config(interpreter_config)]) } else if let Some(interp) = interpreters.first() { eprintln!("🐍 Using {interp} to generate to link bindings (With abi3, an interpreter is only required on windows)"); Ok(interpreters) } else if generate_import_lib { eprintln!("🐍 Not using a specific python interpreter (Automatically generating windows import library)"); // fake a python interpreter Ok(vec![PythonInterpreter { config: InterpreterConfig { major: *major as usize, minor: *minor as usize, interpreter_kind: InterpreterKind::CPython, abiflags: "".to_string(), ext_suffix: ".pyd".to_string(), pointer_width: None, }, executable: PathBuf::new(), platform: None, runnable: false, implementation_name: "cpython".to_string(), soabi: None, }]) } else { bail!("Failed to find a python interpreter"); } } else { let found_interpreters = find_interpreter_in_host(bridge, interpreter, target, requires_python) .or_else(|err| { let interps = find_interpreter_in_sysconfig( interpreter, target, requires_python, ) .unwrap_or_default(); if interps.is_empty() && !self.interpreter.is_empty() { // Print error when user supplied `--interpreter` option Err(err) } else { Ok(interps) } })?; eprintln!("🐍 Not using a specific python interpreter"); if self.interpreter.is_empty() { // Fake one to make `BuildContext::build_wheels` happy for abi3 when no cpython/pypy found on host // The python interpreter config doesn't matter, as it's not used for anything Ok(vec![PythonInterpreter { config: InterpreterConfig { major: *major as usize, minor: *minor as usize, interpreter_kind: InterpreterKind::CPython, abiflags: "".to_string(), ext_suffix: "".to_string(), pointer_width: None, }, executable: PathBuf::new(), platform: None, runnable: false, implementation_name: "cpython".to_string(), soabi: None, }]) } else if target.cross_compiling() { let mut interps = Vec::with_capacity(found_interpreters.len()); let mut pypys = Vec::new(); for interp in found_interpreters { if interp.interpreter_kind.is_pypy() { pypys.push(PathBuf::from(format!( "pypy{}.{}", interp.major, interp.minor ))); } else { interps.push(interp); } } // cross compiling to PyPy with abi3 feature enabled, // we cannot use host pypy so switch to bundled sysconfig instead if !pypys.is_empty() { interps.extend(find_interpreter_in_sysconfig( &pypys, target, requires_python, )?) } if interps.is_empty() { bail!("Failed to find any python interpreter"); } Ok(interps) } else { if found_interpreters.is_empty() { bail!("Failed to find any python interpreter"); } Ok(found_interpreters) } } } } } /// Tries to fill the missing metadata for a BuildContext by querying cargo and python #[instrument(skip_all)] pub fn into_build_context( self, release: bool, strip: bool, editable: bool, ) -> Result { let ProjectResolver { project_layout, cargo_toml_path, cargo_toml, pyproject_toml_path, pyproject_toml, module_name, metadata23, mut cargo_options, cargo_metadata, mut pyproject_toml_maturin_options, } = ProjectResolver::resolve(self.manifest_path.clone(), self.cargo.clone())?; let pyproject = pyproject_toml.as_ref(); let bridge = find_bridge( &cargo_metadata, self.bindings.as_deref().or_else(|| { pyproject.and_then(|x| { if x.bindings().is_some() { pyproject_toml_maturin_options.push("bindings"); } x.bindings() }) }), )?; if !bridge.is_bin() && project_layout.extension_name.contains('-') { bail!( "The module name must not contain a minus `-` \ (Make sure you have set an appropriate [lib] name or \ [tool.maturin] module-name in your pyproject.toml)" ); } let mut target_triple = self.target.clone(); let mut universal2 = target_triple.as_deref() == Some("universal2-apple-darwin"); // Also try to determine universal2 from ARCHFLAGS environment variable if target_triple.is_none() { if let Ok(arch_flags) = env::var("ARCHFLAGS") { let arches: HashSet<&str> = arch_flags .split("-arch") .filter_map(|x| { let x = x.trim(); if x.is_empty() { None } else { Some(x) } }) .collect(); match (arches.contains("x86_64"), arches.contains("arm64")) { (true, true) => universal2 = true, (true, false) => target_triple = Some("x86_64-apple-darwin".to_string()), (false, true) => target_triple = Some("aarch64-apple-darwin".to_string()), (false, false) => {} } }; } if universal2 { // Ensure that target_triple is valid. This is necessary to properly // infer the platform tags when cross-compiling from Linux. target_triple = Some("aarch64-apple-darwin".to_string()); } let mut target = Target::from_target_triple(target_triple)?; if !target.user_specified && !universal2 { if let Some(interpreter) = self.interpreter.first() { if let Some(detected_target) = crate::target::detect_arch_from_python(interpreter, &target) { target = Target::from_target_triple(Some(detected_target))?; } } } let wheel_dir = match self.out { Some(ref dir) => dir.clone(), None => PathBuf::from(&cargo_metadata.target_directory).join("wheels"), }; let generate_import_lib = is_generating_import_lib(&cargo_metadata)?; let interpreter = if self.find_interpreter { // Auto-detect interpreters self.find_interpreters( &bridge, &[], &target, metadata23.requires_python.as_ref(), generate_import_lib, )? } else { // User given list of interpreters let interpreter = if self.interpreter.is_empty() && !target.cross_compiling() { if cfg!(test) { match env::var_os("MATURIN_TEST_PYTHON") { Some(python) => vec![python.into()], None => vec![target.get_python()], } } else { vec![target.get_python()] } } else { // XXX: False positive clippy warning #[allow(clippy::redundant_clone)] self.interpreter.clone() }; self.find_interpreters(&bridge, &interpreter, &target, None, generate_import_lib)? }; if cargo_options.args.is_empty() { // if not supplied on command line, try pyproject.toml let tool_maturin = pyproject.and_then(|p| p.maturin()); if let Some(args) = tool_maturin.and_then(|x| x.rustc_args.as_ref()) { cargo_options.args.extend(args.iter().cloned()); pyproject_toml_maturin_options.push("rustc-args"); } } let strip = pyproject.map(|x| x.strip()).unwrap_or_default() || strip; let skip_auditwheel = pyproject.map(|x| x.skip_auditwheel()).unwrap_or_default() || self.skip_auditwheel; let auditwheel = self .auditwheel .or_else(|| pyproject.and_then(|x| x.auditwheel())) .unwrap_or(if skip_auditwheel { AuditWheelMode::Skip } else { AuditWheelMode::Repair }); let platform_tags = if self.platform_tag.is_empty() { #[cfg(feature = "zig")] let use_zig = self.zig; #[cfg(not(feature = "zig"))] let use_zig = false; let compatibility = pyproject .and_then(|x| { if x.compatibility().is_some() { pyproject_toml_maturin_options.push("compatibility"); } x.compatibility() }) .or(if use_zig { if target.is_musl_libc() { // Zig bundles musl 1.2 Some(PlatformTag::Musllinux { x: 1, y: 2 }) } else { // With zig we can compile to any glibc version that we want, so we pick the lowest // one supported by the rust compiler Some(target.get_minimum_manylinux_tag()) } } else { // Defaults to musllinux_1_2 for musl target if it's not bin bindings if target.is_musl_libc() && !bridge.is_bin() { Some(PlatformTag::Musllinux { x: 1, y: 2 }) } else { None } }); if let Some(platform_tag) = compatibility { vec![platform_tag] } else { Vec::new() } } else { self.platform_tag }; for platform_tag in &platform_tags { if !platform_tag.is_supported() { eprintln!("⚠️ Warning: {platform_tag} is unsupported by the Rust compiler."); } else if platform_tag.is_musllinux() && !target.is_musl_libc() { eprintln!("⚠️ Warning: {target} is not compatible with {platform_tag}."); } } validate_bridge_type(&bridge, &target, &platform_tags)?; // linux tag can not be mixed with manylinux and musllinux tags if platform_tags.len() > 1 && platform_tags.iter().any(|tag| !tag.is_portable()) { bail!("Cannot mix linux and manylinux/musllinux platform tags",); } if !pyproject_toml_maturin_options.is_empty() { eprintln!( "📡 Using build options {} from pyproject.toml", pyproject_toml_maturin_options.join(", ") ); } let target_dir = self .cargo .target_dir .clone() .unwrap_or_else(|| cargo_metadata.target_directory.clone().into_std_path_buf()); let config_targets = pyproject.and_then(|x| x.targets()); let compile_targets = filter_cargo_targets(&cargo_metadata, bridge, config_targets.as_deref())?; if compile_targets.is_empty() { bail!("No Cargo targets to build, please check your bindings configuration in pyproject.toml."); } let crate_name = cargo_toml.package.name; Ok(BuildContext { target, compile_targets, project_layout, pyproject_toml_path, pyproject_toml, metadata23, crate_name, module_name, manifest_path: cargo_toml_path, target_dir, out: wheel_dir, release, strip, auditwheel, #[cfg(feature = "zig")] zig: self.zig, platform_tag: platform_tags, interpreter, cargo_metadata, universal2, editable, cargo_options, }) } } /// Checks for bridge/platform type edge cases fn validate_bridge_type( bridge: &BridgeModel, target: &Target, platform_tags: &[PlatformTag], ) -> Result<()> { match bridge { BridgeModel::Bin(None) => { // Only support two different kind of platform tags when compiling to musl target without any binding crates if platform_tags.iter().any(|tag| tag.is_musllinux()) && !target.is_musl_libc() { bail!( "Cannot mix musllinux and manylinux platform tags when compiling to {}", target.target_triple() ); } #[allow(clippy::comparison_chain)] if platform_tags.len() > 2 { bail!( "Expected only one or two platform tags but found {}", platform_tags.len() ); } else if platform_tags.len() == 2 { // The two platform tags can't be the same kind let tag_types = platform_tags .iter() .map(|tag| tag.is_musllinux()) .collect::>(); if tag_types.len() == 1 { bail!( "Expected only one platform tag but found {}", platform_tags.len() ); } } } _ => { if platform_tags.len() > 1 { bail!( "Expected only one platform tag but found {}", platform_tags.len() ); } } } Ok(()) } fn filter_cargo_targets( cargo_metadata: &Metadata, bridge: BridgeModel, config_targets: Option<&[crate::pyproject_toml::CargoTarget]>, ) -> Result> { let root_pkg = cargo_metadata.root_package().unwrap(); let resolved_features = cargo_metadata .resolve .as_ref() .and_then(|resolve| resolve.nodes.iter().find(|node| node.id == root_pkg.id)) .map(|node| node.features.clone()) .unwrap_or_default(); let mut targets: Vec<_> = root_pkg .targets .iter() .filter(|target| match bridge { BridgeModel::Bin(_) => { let is_bin = target.is_bin(); if target.required_features.is_empty() { is_bin } else { // Check all required features are enabled for this bin target is_bin && target .required_features .iter() .all(|f| resolved_features.contains(f)) } } _ => target.kind.contains(&"cdylib".to_string()), }) .map(|target| CompileTarget { target: target.clone(), bridge_model: bridge.clone(), }) .collect(); if targets.is_empty() && !bridge.is_bin() { // No `crate-type = ["cdylib"]` in `Cargo.toml` // Let's try compile one of the target with `--crate-type cdylib` let lib_target = root_pkg.targets.iter().find(|target| { target .kind .iter() .any(|k| LIB_CRATE_TYPES.contains(&k.as_str())) }); if let Some(target) = lib_target { targets.push(CompileTarget { target: target.clone(), bridge_model: bridge, }); } } // Filter targets by config_targets if let Some(config_targets) = config_targets { targets.retain(|CompileTarget { target, .. }| { config_targets.iter().any(|config_target| { let name_eq = config_target.name == target.name; match &config_target.kind { Some(kind) => name_eq && target.kind.contains(kind), None => name_eq, } }) }); if targets.is_empty() { bail!( "No Cargo targets matched by `package.metadata.maturin.targets`, please check your `Cargo.toml`" ); } else { let target_names = targets .iter() .map(|CompileTarget { target, .. }| target.name.as_str()) .collect::>(); eprintln!( "🎯 Found {} Cargo targets in `Cargo.toml`: {}", targets.len(), target_names.join(", ") ); } } Ok(targets) } /// pyo3 supports building abi3 wheels if the unstable-api feature is not selected fn has_abi3(cargo_metadata: &Metadata) -> Result> { let resolve = cargo_metadata .resolve .as_ref() .context("Expected cargo to return metadata with resolve")?; for &lib in PYO3_BINDING_CRATES.iter() { let pyo3_packages = resolve .nodes .iter() .filter(|package| cargo_metadata[&package.id].name.as_str() == lib) .collect::>(); match pyo3_packages.as_slice() { [pyo3_crate] => { // Find the minimal abi3 python version. If there is none, abi3 hasn't been selected // This parser abi3-py{major}{minor} and returns the minimal (major, minor) tuple let abi3_selected = pyo3_crate.features.iter().any(|x| x == "abi3"); let min_abi3_version = pyo3_crate .features .iter() .filter(|x| x.starts_with("abi3-py") && x.len() >= "abi3-pyxx".len()) .map(|x| { Ok(( (x.as_bytes()[7] as char).to_string().parse::()?, x[8..].parse::()?, )) }) .collect::>>() .context(format!("Bogus {lib} cargo features"))? .into_iter() .min(); if abi3_selected && min_abi3_version.is_none() { bail!( "You have selected the `abi3` feature but not a minimum version (e.g. the `abi3-py36` feature). \ maturin needs a minimum version feature to build abi3 wheels." ) } return Ok(min_abi3_version); } _ => continue, } } Ok(None) } /// pyo3 0.16.4+ supports building abi3 wheels without a working Python interpreter for Windows /// when `generate-import-lib` feature is enabled fn is_generating_import_lib(cargo_metadata: &Metadata) -> Result { let resolve = cargo_metadata .resolve .as_ref() .context("Expected cargo to return metadata with resolve")?; for &lib in PYO3_BINDING_CRATES.iter().rev() { let pyo3_packages = resolve .nodes .iter() .filter(|package| cargo_metadata[&package.id].name.as_str() == lib) .collect::>(); match pyo3_packages.as_slice() { [pyo3_crate] => { let generate_import_lib = pyo3_crate .features .iter() .any(|x| x == "generate-import-lib" || x == "generate-abi3-import-lib"); return Ok(generate_import_lib); } _ => continue, } } Ok(false) } /// Tries to determine the bindings type from dependency fn find_bindings( deps: &HashMap<&str, &Node>, packages: &HashMap<&str, &cargo_metadata::Package>, ) -> Option<(String, usize)> { if deps.get("pyo3").is_some() { let ver = &packages["pyo3"].version; let minor = pyo3_minimum_python_minor_version(ver.major, ver.minor).unwrap_or(MINIMUM_PYTHON_MINOR); Some(("pyo3".to_string(), minor)) } else if deps.get("pyo3-ffi").is_some() { let ver = &packages["pyo3-ffi"].version; let minor = pyo3_ffi_minimum_python_minor_version(ver.major, ver.minor) .unwrap_or(MINIMUM_PYTHON_MINOR); Some(("pyo3-ffi".to_string(), minor)) } else if deps.contains_key("uniffi") { Some(("uniffi".to_string(), MINIMUM_PYTHON_MINOR)) } else { None } } /// Tries to determine the [BridgeModel] for the target crate pub fn find_bridge(cargo_metadata: &Metadata, bridge: Option<&str>) -> Result { let resolve = cargo_metadata .resolve .as_ref() .ok_or_else(|| format_err!("Expected to get a dependency graph from cargo"))?; let deps: HashMap<&str, &Node> = resolve .nodes .iter() .map(|node| (cargo_metadata[&node.id].name.as_ref(), node)) .collect(); let packages: HashMap<&str, &cargo_metadata::Package> = cargo_metadata .packages .iter() .filter_map(|pkg| { let name = &pkg.name; if name == "pyo3" || name == "pyo3-ffi" || name == "cpython" || name == "uniffi" { Some((name.as_ref(), pkg)) } else { None } }) .collect(); let root_package = cargo_metadata .root_package() .context("Expected cargo to return metadata with root_package")?; let targets: Vec<_> = root_package .targets .iter() .filter(|target| { target.kind.iter().any(|kind| { kind != "example" && kind != "test" && kind != "bench" && kind != "custom-build" }) }) .flat_map(|target| target.crate_types.iter()) .map(String::as_str) .collect(); let bridge = if let Some(bindings) = bridge { if bindings == "cffi" { BridgeModel::Cffi } else if bindings == "uniffi" { BridgeModel::UniFfi } else if bindings == "bin" { // uniffi bindings don't support bin let bindings = find_bindings(&deps, &packages).filter(|(bindings, _)| bindings != "uniffi"); BridgeModel::Bin(bindings) } else { if !deps.contains_key(bindings) { bail!( "The bindings crate {} was not found in the dependencies list", bindings ); } BridgeModel::Bindings(bindings.to_string(), MINIMUM_PYTHON_MINOR) } } else if let Some((bindings, minor)) = find_bindings(&deps, &packages) { if !targets.contains(&"cdylib") && targets.contains(&"bin") { if bindings == "uniffi" { // uniffi bindings don't support bin BridgeModel::Bin(None) } else { BridgeModel::Bin(Some((bindings, minor))) } } else if bindings == "uniffi" { BridgeModel::UniFfi } else { BridgeModel::Bindings(bindings, minor) } } else if targets.contains(&"cdylib") { BridgeModel::Cffi } else if targets.contains(&"bin") { BridgeModel::Bin(find_bindings(&deps, &packages)) } else { bail!("Couldn't detect the binding type; Please specify them with --bindings/-b") }; if !(bridge.is_bindings("pyo3") || bridge.is_bindings("pyo3-ffi")) { eprintln!("🔗 Found {bridge} bindings"); return Ok(bridge); } for &lib in PYO3_BINDING_CRATES.iter() { if !bridge.is_bin() && bridge.is_bindings(lib) { let pyo3_node = deps[lib]; if !pyo3_node.features.contains(&"extension-module".to_string()) { let version = cargo_metadata[&pyo3_node.id].version.to_string(); eprintln!( "⚠️ Warning: You're building a library without activating {lib}'s \ `extension-module` feature. \ See https://pyo3.rs/v{version}/building_and_distribution.html#linking" ); } return if let Some((major, minor)) = has_abi3(cargo_metadata)? { eprintln!("🔗 Found {lib} bindings with abi3 support for Python ≥ {major}.{minor}"); Ok(BridgeModel::BindingsAbi3(major, minor)) } else { eprintln!("🔗 Found {lib} bindings"); Ok(bridge) }; } } Ok(bridge) } /// Shared between cffi and pyo3-abi3 fn find_single_python_interpreter( bridge: &BridgeModel, interpreter: &[PathBuf], target: &Target, bridge_name: &str, ) -> Result { let err_message = "Failed to find a python interpreter"; let executable = if interpreter.is_empty() { target.get_python() } else if interpreter.len() == 1 { interpreter[0].clone() } else { bail!( "You can only specify one python interpreter for {}", bridge_name ); }; let interpreter = PythonInterpreter::check_executable(executable, target, bridge) .context(format_err!(err_message))? .ok_or_else(|| format_err!(err_message))?; Ok(interpreter) } /// Find python interpreters in host machine first, /// fallback to bundled sysconfig if not found in host machine fn find_interpreter( bridge: &BridgeModel, interpreter: &[PathBuf], target: &Target, requires_python: Option<&VersionSpecifiers>, ) -> Result> { let mut found_interpreters = Vec::new(); if !interpreter.is_empty() { let mut missing = Vec::new(); for interp in interpreter { match PythonInterpreter::check_executable(interp.clone(), target, bridge) { Ok(Some(interp)) => found_interpreters.push(interp), _ => missing.push(interp.clone()), } } if !missing.is_empty() { let sysconfig_interps = find_interpreter_in_sysconfig(&missing, target, requires_python)?; found_interpreters.extend(sysconfig_interps); } } else { found_interpreters = PythonInterpreter::find_all(target, bridge, requires_python) .context("Finding python interpreters failed")?; }; if found_interpreters.is_empty() { if interpreter.is_empty() { if let Some(requires_python) = requires_python { bail!("Couldn't find any python interpreters with version {}. Please specify at least one with -i", requires_python); } else { bail!("Couldn't find any python interpreters. Please specify at least one with -i"); } } else { let interps_str = interpreter .iter() .map(|path| format!("'{}'", path.display())) .collect::>() .join(", "); bail!( "Couldn't find any python interpreters from {}.", interps_str ); } } Ok(found_interpreters) } /// Find python interpreters in the host machine fn find_interpreter_in_host( bridge: &BridgeModel, interpreter: &[PathBuf], target: &Target, requires_python: Option<&VersionSpecifiers>, ) -> Result> { let interpreters = if !interpreter.is_empty() { PythonInterpreter::check_executables(interpreter, target, bridge)? } else { PythonInterpreter::find_all(target, bridge, requires_python) .context("Finding python interpreters failed")? }; if interpreters.is_empty() { if let Some(requires_python) = requires_python { bail!("Couldn't find any python interpreters with {}. Please specify at least one with -i", requires_python); } else { bail!("Couldn't find any python interpreters. Please specify at least one with -i"); } } Ok(interpreters) } /// Find python interpreters in the bundled sysconfig fn find_interpreter_in_sysconfig( interpreter: &[PathBuf], target: &Target, requires_python: Option<&VersionSpecifiers>, ) -> Result> { if interpreter.is_empty() { return Ok(PythonInterpreter::find_by_target(target, requires_python)); } let mut interpreters = Vec::new(); for interp in interpreter { let python = interp.display().to_string(); let (python_impl, python_ver) = if let Some(ver) = python.strip_prefix("pypy") { (InterpreterKind::PyPy, ver.strip_prefix('-').unwrap_or(ver)) } else if let Some(ver) = python.strip_prefix("graalpy") { ( InterpreterKind::GraalPy, ver.strip_prefix('-').unwrap_or(ver), ) } else if let Some(ver) = python.strip_prefix("python") { ( InterpreterKind::CPython, ver.strip_prefix('-').unwrap_or(ver), ) } else if python .chars() .next() .map(|c| c.is_ascii_digit()) .unwrap_or(false) { // Eg: -i 3.9 without interpreter kind, assume it's CPython (InterpreterKind::CPython, &*python) } else { // if interpreter not known if std::path::Path::new(&python).is_file() { bail!("Python interpreter should be a kind of interpreter (e.g. 'python3.8' or 'pypy3.9') when cross-compiling, got path to interpreter: {}", python); } else { bail!("Unsupported Python interpreter for cross-compilation: {}; supported interpreters are pypy, graalpy, and python (cpython)", python); } }; if python_ver.is_empty() { continue; } let (ver_major, ver_minor) = python_ver .split_once('.') .context("Invalid python interpreter version")?; let ver_major = ver_major.parse::().with_context(|| { format!("Invalid python interpreter major version '{ver_major}', expect a digit") })?; let ver_minor = ver_minor.parse::().with_context(|| { format!("Invalid python interpreter minor version '{ver_minor}', expect a digit") })?; let sysconfig = InterpreterConfig::lookup_one(target, python_impl, (ver_major, ver_minor)) .with_context(|| { format!("Failed to find a {python_impl} {ver_major}.{ver_minor} interpreter in known sysconfig") })?; debug!( "Found {} {}.{} in bundled sysconfig", sysconfig.interpreter_kind, sysconfig.major, sysconfig.minor, ); interpreters.push(PythonInterpreter::from_config(sysconfig.clone())); } Ok(interpreters) } /// We need to pass the global flags to cargo metadata /// (https://github.com/PyO3/maturin/issues/211 and https://github.com/PyO3/maturin/issues/472), /// but we can't pass all the extra args, as e.g. `--target` isn't supported, so this tries to /// extract the arguments for cargo metadata /// /// There are flags (without value) and options (with value). The options value be passed /// in the same string as its name or in the next one. For this naive parsing logic, we /// assume that the value is in the next argument if the argument string equals the name, /// otherwise it's in the same argument and the next argument is unrelated. pub(crate) fn extract_cargo_metadata_args(cargo_options: &CargoOptions) -> Result> { let mut cargo_metadata_extra_args = vec![]; if cargo_options.frozen { cargo_metadata_extra_args.push("--frozen".to_string()); } if cargo_options.locked { cargo_metadata_extra_args.push("--locked".to_string()); } if cargo_options.offline { cargo_metadata_extra_args.push("--offline".to_string()); } for feature in &cargo_options.features { cargo_metadata_extra_args.push("--features".to_string()); cargo_metadata_extra_args.push(feature.clone()); } if cargo_options.all_features { cargo_metadata_extra_args.push("--all-features".to_string()); } if cargo_options.no_default_features { cargo_metadata_extra_args.push("--no-default-features".to_string()); } for opt in &cargo_options.unstable_flags { cargo_metadata_extra_args.push("-Z".to_string()); cargo_metadata_extra_args.push(opt.clone()); } Ok(cargo_metadata_extra_args) } impl From for cargo_options::Rustc { fn from(cargo: CargoOptions) -> Self { cargo_options::Rustc { common: cargo_options::CommonOptions { quiet: cargo.quiet, jobs: cargo.jobs, profile: cargo.profile, features: cargo.features, all_features: cargo.all_features, no_default_features: cargo.no_default_features, target: match cargo.target { Some(target) => vec![target], None => Vec::new(), }, target_dir: cargo.target_dir, verbose: cargo.verbose, color: cargo.color, frozen: cargo.frozen, locked: cargo.locked, offline: cargo.offline, config: cargo.config, unstable_flags: cargo.unstable_flags, timings: cargo.timings, ..Default::default() }, manifest_path: cargo.manifest_path, ignore_rust_version: cargo.ignore_rust_version, future_incompat_report: cargo.future_incompat_report, args: cargo.args, ..Default::default() } } } impl CargoOptions { /// Merge options from pyproject.toml pub fn merge_with_pyproject_toml(&mut self, tool_maturin: ToolMaturin) -> Vec<&'static str> { let mut args_from_pyproject = Vec::new(); if self.manifest_path.is_none() && tool_maturin.manifest_path.is_some() { self.manifest_path.clone_from(&tool_maturin.manifest_path); args_from_pyproject.push("manifest-path"); } if self.profile.is_none() && tool_maturin.profile.is_some() { self.profile.clone_from(&tool_maturin.profile); args_from_pyproject.push("profile"); } if let Some(features) = tool_maturin.features { if self.features.is_empty() { self.features = features; args_from_pyproject.push("features"); } } if let Some(all_features) = tool_maturin.all_features { if !self.all_features { self.all_features = all_features; args_from_pyproject.push("all-features"); } } if let Some(no_default_features) = tool_maturin.no_default_features { if !self.no_default_features { self.no_default_features = no_default_features; args_from_pyproject.push("no-default-features"); } } if let Some(frozen) = tool_maturin.frozen { if !self.frozen { self.frozen = frozen; args_from_pyproject.push("frozen"); } } if let Some(locked) = tool_maturin.locked { if !self.locked { self.locked = locked; args_from_pyproject.push("locked"); } } if let Some(config) = tool_maturin.config { if self.config.is_empty() { self.config = config; args_from_pyproject.push("config"); } } if let Some(unstable_flags) = tool_maturin.unstable_flags { if self.unstable_flags.is_empty() { self.unstable_flags = unstable_flags; args_from_pyproject.push("unstable-flags"); } } args_from_pyproject } } #[cfg(test)] mod test { use cargo_metadata::MetadataCommand; use pretty_assertions::assert_eq; use std::path::Path; use super::*; #[test] fn test_find_bridge_pyo3() { let pyo3_mixed = MetadataCommand::new() .manifest_path(Path::new("test-crates/pyo3-mixed").join("Cargo.toml")) .exec() .unwrap(); assert!(matches!( find_bridge(&pyo3_mixed, None), Ok(BridgeModel::Bindings(..)) )); assert!(matches!( find_bridge(&pyo3_mixed, Some("pyo3")), Ok(BridgeModel::Bindings(..)) )); } #[test] fn test_find_bridge_pyo3_abi3() { let pyo3_pure = MetadataCommand::new() .manifest_path(Path::new("test-crates/pyo3-pure").join("Cargo.toml")) .exec() .unwrap(); assert!(matches!( find_bridge(&pyo3_pure, None), Ok(BridgeModel::BindingsAbi3(3, 7)) )); assert!(matches!( find_bridge(&pyo3_pure, Some("pyo3")), Ok(BridgeModel::BindingsAbi3(3, 7)) )); } #[test] fn test_find_bridge_pyo3_feature() { let pyo3_pure = MetadataCommand::new() .manifest_path(Path::new("test-crates/pyo3-feature").join("Cargo.toml")) .exec() .unwrap(); assert!(find_bridge(&pyo3_pure, None).is_err()); let pyo3_pure = MetadataCommand::new() .manifest_path(Path::new("test-crates/pyo3-feature").join("Cargo.toml")) .other_options(vec!["--features=pyo3".to_string()]) .exec() .unwrap(); assert!(matches!( find_bridge(&pyo3_pure, None).unwrap(), BridgeModel::Bindings(..) )); } #[test] fn test_find_bridge_cffi() { let cffi_pure = MetadataCommand::new() .manifest_path(Path::new("test-crates/cffi-pure").join("Cargo.toml")) .exec() .unwrap(); assert_eq!( find_bridge(&cffi_pure, Some("cffi")).unwrap(), BridgeModel::Cffi ); assert_eq!(find_bridge(&cffi_pure, None).unwrap(), BridgeModel::Cffi); assert!(find_bridge(&cffi_pure, Some("pyo3")).is_err()); } #[test] fn test_find_bridge_bin() { let hello_world = MetadataCommand::new() .manifest_path(Path::new("test-crates/hello-world").join("Cargo.toml")) .exec() .unwrap(); assert_eq!( find_bridge(&hello_world, Some("bin")).unwrap(), BridgeModel::Bin(None) ); assert_eq!( find_bridge(&hello_world, None).unwrap(), BridgeModel::Bin(None) ); assert!(find_bridge(&hello_world, Some("pyo3")).is_err()); let pyo3_bin = MetadataCommand::new() .manifest_path(Path::new("test-crates/pyo3-bin").join("Cargo.toml")) .exec() .unwrap(); assert!(matches!( find_bridge(&pyo3_bin, Some("bin")).unwrap(), BridgeModel::Bin(Some((..))) )); assert!(matches!( find_bridge(&pyo3_bin, None).unwrap(), BridgeModel::Bin(Some(..)) )); } #[test] fn test_old_extra_feature_args() { let cargo_extra_args = CargoOptions { no_default_features: true, features: vec!["a".to_string(), "c".to_string()], target: Some("x86_64-unknown-linux-musl".to_string()), ..Default::default() }; let cargo_metadata_extra_args = extract_cargo_metadata_args(&cargo_extra_args).unwrap(); assert_eq!( cargo_metadata_extra_args, vec![ "--features", "a", "--features", "c", "--no-default-features", ] ); } #[test] fn test_extract_cargo_metadata_args() { let args = CargoOptions { locked: true, features: vec!["my-feature".to_string(), "other-feature".to_string()], target: Some("x86_64-unknown-linux-musl".to_string()), unstable_flags: vec!["unstable-options".to_string()], ..Default::default() }; let expected = vec![ "--locked", "--features", "my-feature", "--features", "other-feature", "-Z", "unstable-options", ]; assert_eq!(extract_cargo_metadata_args(&args).unwrap(), expected); } } maturin-1.7.4/src/cargo_toml.rs000066400000000000000000000124371467514767100165160ustar00rootroot00000000000000use anyhow::{bail, Context, Result}; use fs_err as fs; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::Path; /// The `[lib]` section of a Cargo.toml #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] pub(crate) struct CargoTomlLib { pub(crate) crate_type: Option>, pub(crate) name: Option, } /// The `[package]` section of a Cargo.toml #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] pub(crate) struct CargoTomlPackage { pub(crate) name: String, metadata: Option, } /// Extract of the Cargo.toml that can be reused for the python metadata /// /// See https://doc.rust-lang.org/cargo/reference/manifest.html for a specification #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CargoToml { pub(crate) lib: Option, pub(crate) package: CargoTomlPackage, } impl CargoToml { /// Reads and parses the Cargo.toml at the given location pub fn from_path(manifest_file: impl AsRef) -> Result { let contents = fs::read_to_string(&manifest_file).context(format!( "Can't read Cargo.toml at {}", manifest_file.as_ref().display(), ))?; let cargo_toml = toml::from_str(&contents).context(format!( "Failed to parse Cargo.toml at {}", manifest_file.as_ref().display() ))?; Ok(cargo_toml) } /// Returns the value of `[project.metadata.maturin]` or an empty stub pub fn remaining_core_metadata(&self) -> RemainingCoreMetadata { match &self.package.metadata { Some(CargoTomlMetadata { maturin: Some(extra_metadata), }) => extra_metadata.clone(), _ => Default::default(), } } /// Check removed python metadata support in `Cargo.toml` pub fn check_removed_python_metadata(&self) -> Result<()> { let mut removed = Vec::new(); if let Some(CargoTomlMetadata { maturin: Some(extra_metadata), }) = &self.package.metadata { let removed_keys = [ "scripts", "classifiers", "classifier", "data", "maintainer", "maintainer-email", "requires-dist", "requires-python", "requires-external", "project-url", "provides-extra", "description-content-type", ]; for key in removed_keys { if extra_metadata.other.contains_key(key) { removed.push(key); } } } if !removed.is_empty() { bail!( "The following metadata fields in `package.metadata.maturin` section \ of Cargo.toml are removed since maturin 0.14.0: {}, \ please set them in pyproject.toml as PEP 621 specifies.", removed.join(", ") ); } Ok(()) } } #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] struct CargoTomlMetadata { maturin: Option, } /// The `[project.metadata.maturin]` with the maturin specific metadata #[derive(Serialize, Deserialize, Debug, Clone, Default)] #[serde(rename_all = "kebab-case")] pub struct RemainingCoreMetadata { #[serde(flatten)] pub other: HashMap, } #[cfg(test)] mod test { use super::*; use indoc::indoc; #[test] fn test_metadata_from_cargo_toml() { let cargo_toml = indoc!( r#" [package] authors = ["konstin "] name = "info-project" version = "0.1.0" description = "A test project" homepage = "https://example.org" keywords = ["ffi", "test"] [lib] crate-type = ["cdylib"] name = "pyo3_pure" [package.metadata.maturin.scripts] ph = "maturin:print_hello" [package.metadata.maturin] classifiers = ["Programming Language :: Python"] requires-dist = ["flask~=1.1.0", "toml==0.10.0"] [[package.metadata.maturin.targets]] name = "pyo3_pure" kind = "lib" bindings = "pyo3" "# ); let cargo_toml: Result = toml::from_str(cargo_toml); assert!(cargo_toml.is_ok()); } #[test] fn test_metadata_from_cargo_toml_without_authors() { let cargo_toml = indoc!( r#" [package] name = "info-project" version = "0.1.0" description = "A test project" homepage = "https://example.org" keywords = ["ffi", "test"] [lib] crate-type = ["cdylib"] name = "pyo3_pure" [package.metadata.maturin.scripts] ph = "maturin:print_hello" [package.metadata.maturin] classifiers = ["Programming Language :: Python"] requires-dist = ["flask~=1.1.0", "toml==0.10.0"] "# ); let cargo_toml: Result = toml::from_str(cargo_toml); assert!(cargo_toml.is_ok()); } } maturin-1.7.4/src/ci.rs000066400000000000000000001442301467514767100147600ustar00rootroot00000000000000use std::collections::BTreeSet; use std::fmt; use std::path::{Path, PathBuf}; use anyhow::Result; use clap::{ArgAction, Parser, ValueEnum}; use fs_err as fs; use crate::build_options::find_bridge; use crate::project_layout::ProjectResolver; use crate::{BridgeModel, CargoOptions}; /// CI providers #[derive(Debug, Clone, Copy, ValueEnum)] #[clap(rename_all = "lower")] pub enum Provider { /// GitHub GitHub, } /// Platform #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] #[clap(rename_all = "lower")] pub enum Platform { /// All All, /// Manylinux #[clap(alias = "linux")] ManyLinux, /// Musllinux Musllinux, /// Windows Windows, /// macOS Macos, /// Emscripten Emscripten, } impl Platform { fn defaults() -> Vec { vec![ Platform::ManyLinux, Platform::Musllinux, Platform::Windows, Platform::Macos, ] } fn all() -> Vec { vec![ Platform::ManyLinux, Platform::Musllinux, Platform::Windows, Platform::Macos, Platform::Emscripten, ] } } impl fmt::Display for Platform { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Platform::All => write!(f, "all"), Platform::ManyLinux => write!(f, "linux"), Platform::Musllinux => write!(f, "musllinux"), Platform::Windows => write!(f, "windows"), Platform::Macos => write!(f, "macos"), Platform::Emscripten => write!(f, "emscripten"), } } } struct MatrixPlatform { runner: &'static str, target: &'static str, } /// Generate CI configuration #[derive(Debug, Parser)] pub struct GenerateCI { /// CI provider #[arg(value_enum, value_name = "CI")] pub ci: Provider, /// Path to Cargo.toml #[arg(short = 'm', long, value_name = "PATH")] pub manifest_path: Option, /// Output path #[arg(short = 'o', long, value_name = "PATH", default_value = "-")] pub output: PathBuf, /// Platform support #[arg( id = "platform", long, action = ArgAction::Append, num_args = 1.., default_values_t = vec![ Platform::ManyLinux, Platform::Musllinux, Platform::Windows, Platform::Macos, ], )] pub platforms: Vec, /// Enable pytest #[arg(long)] pub pytest: bool, /// Use zig to do cross compilation #[arg(long)] pub zig: bool, } impl Default for GenerateCI { fn default() -> Self { Self { ci: Provider::GitHub, manifest_path: None, output: PathBuf::from("-"), platforms: vec![ Platform::ManyLinux, Platform::Musllinux, Platform::Windows, Platform::Macos, ], pytest: false, zig: false, } } } impl GenerateCI { /// Execute this command pub fn execute(&self) -> Result<()> { let conf = self.generate()?; self.print(&conf) } /// Generate CI configuration pub fn generate(&self) -> Result { let cargo_options = CargoOptions { manifest_path: self.manifest_path.clone(), ..Default::default() }; let ProjectResolver { cargo_metadata, pyproject_toml, project_layout, .. } = ProjectResolver::resolve(self.manifest_path.clone(), cargo_options)?; let pyproject = pyproject_toml.as_ref(); let bridge = find_bridge(&cargo_metadata, pyproject.and_then(|x| x.bindings()))?; let project_name = pyproject .and_then(|project| project.project_name()) .unwrap_or(&project_layout.extension_name); let sdist = pyproject_toml.is_some(); match self.ci { Provider::GitHub => self.generate_github(project_name, &bridge, sdist), } } pub(crate) fn generate_github( &self, project_name: &str, bridge_model: &BridgeModel, sdist: bool, ) -> Result { let is_abi3 = matches!(bridge_model, BridgeModel::BindingsAbi3(..)); let is_bin = bridge_model.is_bin(); let setup_python = self.pytest || matches!( bridge_model, BridgeModel::Bin(Some(_)) | BridgeModel::Bindings(..) | BridgeModel::BindingsAbi3(..) | BridgeModel::Cffi | BridgeModel::UniFfi ); let mut gen_cmd = std::env::args() .enumerate() .map(|(i, arg)| { if i == 0 { env!("CARGO_PKG_NAME").to_string() } else { arg } }) .collect::>() .join(" "); if gen_cmd.starts_with("maturin new") || gen_cmd.starts_with("maturin init") { gen_cmd = format!("{} generate-ci github", env!("CARGO_PKG_NAME")); } let mut conf = format!( "# This file is autogenerated by maturin v{version} # To update, run # # {gen_cmd} # name: CI on: push: branches: - main - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs:\n", version = env!("CARGO_PKG_VERSION"), ); let mut needs = Vec::new(); let platforms: BTreeSet<_> = self .platforms .iter() .flat_map(|p| { if matches!(p, Platform::All) { if !bridge_model.is_bin() { Platform::all() } else { Platform::defaults() } } else { vec![*p] } }) .collect(); for platform in &platforms { if bridge_model.is_bin() && matches!(platform, Platform::Emscripten) { continue; } let plat_name = platform.to_string(); needs.push(plat_name.clone()); conf.push_str(&format!( " {plat_name}: runs-on: ${{{{ matrix.platform.runner }}}}\n" )); // target matrix let targets: Vec<_> = match platform { Platform::ManyLinux => ["x86_64", "x86", "aarch64", "armv7", "s390x", "ppc64le"] .into_iter() .map(|target| MatrixPlatform { runner: "ubuntu-latest", target, }) .collect(), Platform::Musllinux => ["x86_64", "x86", "aarch64", "armv7"] .into_iter() .map(|target| MatrixPlatform { runner: "ubuntu-latest", target, }) .collect(), Platform::Windows => ["x64", "x86"] .into_iter() .map(|target| MatrixPlatform { runner: "windows-latest", target, }) .collect(), Platform::Macos => { vec![ MatrixPlatform { runner: "macos-12", target: "x86_64", }, MatrixPlatform { runner: "macos-14", target: "aarch64", }, ] } Platform::Emscripten => vec![MatrixPlatform { runner: "ubuntu-latest", target: "wasm32-unknown-emscripten", }], _ => Vec::new(), }; if !targets.is_empty() { conf.push_str( " strategy: matrix: platform:\n", ); } for target in targets { conf.push_str(&format!( " - runner: {}\n target: {}\n", target.runner, target.target, )); } // job steps conf.push_str( " steps: - uses: actions/checkout@v4\n", ); // install pyodide-build for emscripten if matches!(platform, Platform::Emscripten) { // install stable pyodide-build conf.push_str(" - run: pip install pyodide-build\n"); // get the current python version for the installed pyodide-build conf.push_str( " - name: Get Emscripten and Python version info shell: bash run: | echo EMSCRIPTEN_VERSION=$(pyodide config get emscripten_version) >> $GITHUB_ENV echo PYTHON_VERSION=$(pyodide config get python_version | cut -d '.' -f 1-2) >> $GITHUB_ENV pip uninstall -y pyodide-build\n", ); conf.push_str( " - uses: mymindstorm/setup-emsdk@v12 with: version: ${{ env.EMSCRIPTEN_VERSION }} actions-cache-folder: emsdk-cache\n", ); conf.push_str( " - uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }}\n", ); // install pyodide-build again in the right Python version conf.push_str(" - run: pip install pyodide-build\n"); } else { // setup python on demand if setup_python { conf.push_str( " - uses: actions/setup-python@v5 with: python-version: 3.x\n", ); if matches!(platform, Platform::Windows) { conf.push_str(" architecture: ${{ matrix.platform.target }}\n"); } } } // build wheels let mut maturin_args = if is_abi3 || (is_bin && !setup_python) { Vec::new() } else if matches!(platform, Platform::Emscripten) { vec!["-i".to_string(), "${{ env.PYTHON_VERSION }}".to_string()] } else { vec!["--find-interpreter".to_string()] }; if let Some(manifest_path) = self.manifest_path.as_ref() { if manifest_path != Path::new("Cargo.toml") { maturin_args.push("--manifest-path".to_string()); maturin_args.push(manifest_path.display().to_string()) } } if self.zig && matches!(platform, Platform::ManyLinux) { maturin_args.push("--zig".to_string()); } let maturin_args = if maturin_args.is_empty() { String::new() } else { format!(" {}", maturin_args.join(" ")) }; conf.push_str(&format!( " - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{{{ matrix.platform.target }}}} args: --release --out dist{maturin_args} sccache: 'true' " )); match platform { Platform::ManyLinux => { conf.push_str(" manylinux: auto\n"); } Platform::Musllinux => { conf.push_str(" manylinux: musllinux_1_2\n"); } Platform::Emscripten => { conf.push_str(" rust-toolchain: nightly\n"); } _ => {} } // upload wheels let artifact_name = match platform { Platform::Emscripten => "wasm-wheels".to_string(), _ => format!("wheels-{platform}-${{{{ matrix.platform.target }}}}"), }; conf.push_str(&format!( " - name: Upload wheels uses: actions/upload-artifact@v4 with: name: {artifact_name} path: dist " )); // pytest let mut chdir = String::new(); if let Some(manifest_path) = self.manifest_path.as_ref() { if manifest_path != Path::new("Cargo.toml") { let parent = manifest_path.parent().unwrap(); chdir = format!("cd {} && ", parent.display()); } } if self.pytest { match platform { Platform::All => {} Platform::ManyLinux => { // Test on host for x86_64 GNU targets conf.push_str(&format!( " - name: pytest if: ${{{{ startsWith(matrix.platform.target, 'x86_64') }}}} shell: bash run: | set -e python3 -m venv .venv source .venv/bin/activate pip install {project_name} --find-links dist --force-reinstall pip install pytest {chdir}pytest " )); // Test on QEMU for other GNU architectures conf.push_str(&format!( " - name: pytest if: ${{{{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}}} uses: uraimo/run-on-arch-action@v2 with: arch: ${{{{ matrix.platform.target }}}} distro: ubuntu22.04 githubToken: ${{{{ github.token }}}} install: | apt-get update apt-get install -y --no-install-recommends python3 python3-pip pip3 install -U pip pytest run: | set -e pip3 install {project_name} --find-links dist --force-reinstall {chdir}pytest " )); } Platform::Musllinux => { conf.push_str(&format!( " - name: pytest if: ${{{{ startsWith(matrix.platform.target, 'x86_64') }}}} uses: addnab/docker-run-action@v3 with: image: alpine:latest options: -v ${{{{ github.workspace }}}}:/io -w /io run: | set -e apk add py3-pip py3-virtualenv python3 -m virtualenv .venv source .venv/bin/activate pip install {project_name} --no-index --find-links dist --force-reinstall pip install pytest {chdir}pytest " )); conf.push_str(&format!( " - name: pytest if: ${{{{ !startsWith(matrix.platform.target, 'x86') }}}} uses: uraimo/run-on-arch-action@v2 with: arch: ${{{{ matrix.platform.target }}}} distro: alpine_latest githubToken: ${{{{ github.token }}}} install: | apk add py3-virtualenv run: | set -e python3 -m virtualenv .venv source .venv/bin/activate pip install pytest pip install {project_name} --find-links dist --force-reinstall {chdir}pytest " )); } Platform::Windows => { conf.push_str(&format!( " - name: pytest if: ${{{{ !startsWith(matrix.platform.target, 'aarch64') }}}} shell: bash run: | set -e python3 -m venv .venv source .venv/Scripts/activate pip install {project_name} --find-links dist --force-reinstall pip install pytest {chdir}pytest " )); } Platform::Macos => { conf.push_str(&format!( " - name: pytest run: | set -e python3 -m venv .venv source .venv/bin/activate pip install {project_name} --find-links dist --force-reinstall pip install pytest {chdir}pytest " )); } Platform::Emscripten => { conf.push_str( " - uses: actions/setup-node@v3 with: node-version: '18' ", ); conf.push_str(&format!( " - name: pytest run: | set -e pyodide venv .venv source .venv/bin/activate pip install {project_name} --find-links dist --force-reinstall pip install pytest {chdir}python -m pytest " )); } } } conf.push('\n'); } // build sdist if sdist { needs.push("sdist".to_string()); let maturin_args = self .manifest_path .as_ref() .map(|manifest_path| { if manifest_path != Path::new("Cargo.toml") { format!(" --manifest-path {}", manifest_path.display()) } else { String::new() } }) .unwrap_or_default(); conf.push_str(&format!( r#" sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist{maturin_args} "# )); conf.push_str( " - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-sdist path: dist ", ); conf.push('\n'); } conf.push_str(&format!( r#" release: name: Release runs-on: ubuntu-latest if: ${{{{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}}} needs: [{needs}] "#, needs = needs.join(", ") )); conf.push_str( r#" permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write "#, ); conf.push_str( r#" steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/* "#, ); if platforms.contains(&Platform::Emscripten) { conf.push_str( " - name: Upload to GitHub Release uses: softprops/action-gh-release@v1 with: files: | wasm-wheels/*.whl prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }} ", ); } Ok(conf) } fn print(&self, conf: &str) -> Result<()> { if self.output == Path::new("-") { print!("{conf}"); } else { fs::write(&self.output, conf)?; } Ok(()) } } #[cfg(test)] mod tests { use super::GenerateCI; use crate::BridgeModel; use expect_test::expect; #[test] fn test_generate_github() { let conf = GenerateCI::default() .generate_github( "example", &BridgeModel::Bindings("pyo3".to_string(), 7), true, ) .unwrap() .lines() .skip(5) .collect::>() .join("\n"); let expected = expect![[r#" name: CI on: push: branches: - main - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 - runner: ubuntu-latest target: s390x - runner: ubuntu-latest target: ppc64le steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.platform.target }} path: dist musllinux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-musllinux-${{ matrix.platform.target }} path: dist windows: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: windows-latest target: x64 - runner: windows-latest target: x86 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x architecture: ${{ matrix.platform.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.platform.target }} path: dist macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: macos-12 target: x86_64 - runner: macos-14 target: aarch64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.platform.target }} path: dist sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-sdist path: dist release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/*"#]]; expected.assert_eq(&conf); } #[test] fn test_generate_github_abi3() { let conf = GenerateCI::default() .generate_github("example", &BridgeModel::BindingsAbi3(3, 7), false) .unwrap() .lines() .skip(5) .collect::>() .join("\n"); let expected = expect![[r#" name: CI on: push: branches: - main - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 - runner: ubuntu-latest target: s390x - runner: ubuntu-latest target: ppc64le steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.platform.target }} path: dist musllinux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-musllinux-${{ matrix.platform.target }} path: dist windows: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: windows-latest target: x64 - runner: windows-latest target: x86 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x architecture: ${{ matrix.platform.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.platform.target }} path: dist macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: macos-12 target: x86_64 - runner: macos-14 target: aarch64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.platform.target }} path: dist release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos] permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/*"#]]; expected.assert_eq(&conf); } #[test] fn test_generate_github_zig_pytest() { let gen = GenerateCI { zig: true, pytest: true, ..Default::default() }; let conf = gen .generate_github( "example", &BridgeModel::Bindings("pyo3".to_string(), 7), true, ) .unwrap() .lines() .skip(5) .collect::>() .join("\n"); let expected = expect![[r#" name: CI on: push: branches: - main - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 - runner: ubuntu-latest target: s390x - runner: ubuntu-latest target: ppc64le steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter --zig sccache: 'true' manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.platform.target }} path: dist - name: pytest if: ${{ startsWith(matrix.platform.target, 'x86_64') }} shell: bash run: | set -e python3 -m venv .venv source .venv/bin/activate pip install example --find-links dist --force-reinstall pip install pytest pytest - name: pytest if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }} uses: uraimo/run-on-arch-action@v2 with: arch: ${{ matrix.platform.target }} distro: ubuntu22.04 githubToken: ${{ github.token }} install: | apt-get update apt-get install -y --no-install-recommends python3 python3-pip pip3 install -U pip pytest run: | set -e pip3 install example --find-links dist --force-reinstall pytest musllinux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-musllinux-${{ matrix.platform.target }} path: dist - name: pytest if: ${{ startsWith(matrix.platform.target, 'x86_64') }} uses: addnab/docker-run-action@v3 with: image: alpine:latest options: -v ${{ github.workspace }}:/io -w /io run: | set -e apk add py3-pip py3-virtualenv python3 -m virtualenv .venv source .venv/bin/activate pip install example --no-index --find-links dist --force-reinstall pip install pytest pytest - name: pytest if: ${{ !startsWith(matrix.platform.target, 'x86') }} uses: uraimo/run-on-arch-action@v2 with: arch: ${{ matrix.platform.target }} distro: alpine_latest githubToken: ${{ github.token }} install: | apk add py3-virtualenv run: | set -e python3 -m virtualenv .venv source .venv/bin/activate pip install pytest pip install example --find-links dist --force-reinstall pytest windows: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: windows-latest target: x64 - runner: windows-latest target: x86 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x architecture: ${{ matrix.platform.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.platform.target }} path: dist - name: pytest if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} shell: bash run: | set -e python3 -m venv .venv source .venv/Scripts/activate pip install example --find-links dist --force-reinstall pip install pytest pytest macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: macos-12 target: x86_64 - runner: macos-14 target: aarch64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.platform.target }} path: dist - name: pytest run: | set -e python3 -m venv .venv source .venv/bin/activate pip install example --find-links dist --force-reinstall pip install pytest pytest sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-sdist path: dist release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/*"#]]; expected.assert_eq(&conf); } #[test] fn test_generate_github_bin_no_binding() { let conf = GenerateCI::default() .generate_github("example", &BridgeModel::Bin(None), true) .unwrap() .lines() .skip(5) .collect::>() .join("\n"); let expected = expect![[r#" name: CI on: push: branches: - main - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 - runner: ubuntu-latest target: s390x - runner: ubuntu-latest target: ppc64le steps: - uses: actions/checkout@v4 - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.platform.target }} path: dist musllinux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64 - runner: ubuntu-latest target: x86 - runner: ubuntu-latest target: aarch64 - runner: ubuntu-latest target: armv7 steps: - uses: actions/checkout@v4 - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-musllinux-${{ matrix.platform.target }} path: dist windows: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: windows-latest target: x64 - runner: windows-latest target: x86 steps: - uses: actions/checkout@v4 - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.platform.target }} path: dist macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: macos-12 target: x86_64 - runner: macos-14 target: aarch64 steps: - uses: actions/checkout@v4 - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} args: --release --out dist sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.platform.target }} path: dist sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-sdist path: dist release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux, musllinux, windows, macos, sdist] permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v1 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: "startsWith(github.ref, 'refs/tags/')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/*"#]]; expected.assert_eq(&conf); } } maturin-1.7.4/src/compile.rs000066400000000000000000000623271467514767100160230ustar00rootroot00000000000000use crate::build_context::BridgeModel; use crate::target::RUST_1_64_0; #[cfg(feature = "zig")] use crate::PlatformTag; use crate::{BuildContext, PythonInterpreter, Target}; use anyhow::{anyhow, bail, Context, Result}; use fat_macho::FatWriter; use fs_err::{self as fs, File}; use normpath::PathExt; use std::collections::HashMap; use std::env; use std::io::{BufReader, Read}; use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use std::str; use tracing::{debug, instrument, trace}; /// The first version of pyo3 that supports building Windows abi3 wheel /// without `PYO3_NO_PYTHON` environment variable const PYO3_ABI3_NO_PYTHON_VERSION: (u64, u64, u64) = (0, 16, 4); /// crate types excluding `bin`, `cdylib` and `proc-macro` pub(crate) const LIB_CRATE_TYPES: [&str; 4] = ["lib", "dylib", "rlib", "staticlib"]; /// A cargo target to build #[derive(Debug, Clone)] pub struct CompileTarget { /// The cargo target to build pub target: cargo_metadata::Target, /// The bridge model to use pub bridge_model: BridgeModel, } /// A cargo build artifact #[derive(Debug, Clone)] pub struct BuildArtifact { /// Path to the build artifact pub path: PathBuf, /// Array of paths to include in the library search path, as indicated by /// the `cargo:rustc-link-search` instruction. pub linked_paths: Vec, } /// Builds the rust crate into a native module (i.e. an .so or .dll) for a /// specific python version. Returns a mapping from crate type (e.g. cdylib) /// to artifact location. pub fn compile( context: &BuildContext, python_interpreter: Option<&PythonInterpreter>, targets: &[CompileTarget], ) -> Result>> { if context.universal2 { compile_universal2(context, python_interpreter, targets) } else { compile_targets(context, python_interpreter, targets) } } /// Build an universal2 wheel for macos which contains both an x86 and an aarch64 binary fn compile_universal2( context: &BuildContext, python_interpreter: Option<&PythonInterpreter>, targets: &[CompileTarget], ) -> Result>> { let mut aarch64_context = context.clone(); aarch64_context.target = Target::from_target_triple(Some("aarch64-apple-darwin".to_string()))?; let aarch64_artifacts = compile_targets(&aarch64_context, python_interpreter, targets) .context("Failed to build a aarch64 library through cargo")?; let mut x86_64_context = context.clone(); x86_64_context.target = Target::from_target_triple(Some("x86_64-apple-darwin".to_string()))?; let x86_64_artifacts = compile_targets(&x86_64_context, python_interpreter, targets) .context("Failed to build a x86_64 library through cargo")?; let mut universal_artifacts = Vec::with_capacity(targets.len()); for (bridge_model, (aarch64_artifact, x86_64_artifact)) in targets .iter() .map(|target| &target.bridge_model) .zip(aarch64_artifacts.iter().zip(&x86_64_artifacts)) { let build_type = if bridge_model.is_bin() { "bin" } else { "cdylib" }; let aarch64_artifact = aarch64_artifact.get(build_type).cloned().ok_or_else(|| { if build_type == "cdylib" { anyhow!( "Cargo didn't build an aarch64 cdylib. Did you miss crate-type = [\"cdylib\"] \ in the lib section of your Cargo.toml?", ) } else { anyhow!("Cargo didn't build an aarch64 bin.") } })?; let x86_64_artifact = x86_64_artifact.get(build_type).cloned().ok_or_else(|| { if build_type == "cdylib" { anyhow!( "Cargo didn't build a x86_64 cdylib. Did you miss crate-type = [\"cdylib\"] \ in the lib section of your Cargo.toml?", ) } else { anyhow!("Cargo didn't build a x86_64 bin.") } })?; // Create an universal dylib let output_path = aarch64_artifact .path .display() .to_string() .replace("aarch64-apple-darwin/", ""); let mut writer = FatWriter::new(); let aarch64_file = fs::read(&aarch64_artifact.path)?; let x86_64_file = fs::read(&x86_64_artifact.path)?; writer .add(aarch64_file) .map_err(|e| anyhow!("Failed to add aarch64 cdylib: {:?}", e))?; writer .add(x86_64_file) .map_err(|e| anyhow!("Failed to add x86_64 cdylib: {:?}", e))?; writer .write_to_file(&output_path) .map_err(|e| anyhow!("Failed to create universal cdylib: {:?}", e))?; let mut result = HashMap::new(); let universal_artifact = BuildArtifact { path: PathBuf::from(output_path), ..x86_64_artifact }; result.insert(build_type.to_string(), universal_artifact); universal_artifacts.push(result); } Ok(universal_artifacts) } fn compile_targets( context: &BuildContext, python_interpreter: Option<&PythonInterpreter>, targets: &[CompileTarget], ) -> Result>> { let mut artifacts = Vec::with_capacity(targets.len()); for target in targets { let build_command = cargo_build_command(context, python_interpreter, target)?; artifacts.push(compile_target(context, build_command)?); } Ok(artifacts) } fn cargo_build_command( context: &BuildContext, python_interpreter: Option<&PythonInterpreter>, compile_target: &CompileTarget, ) -> Result { let target = &context.target; let mut cargo_rustc: cargo_options::Rustc = context.cargo_options.clone().into(); cargo_rustc.message_format = vec!["json-render-diagnostics".to_string()]; // --release and --profile are conflicting options if context.release && cargo_rustc.profile.is_none() { cargo_rustc.release = true; } // Add `--crate-type cdylib` if available if compile_target .target .kind .iter() .any(|k| LIB_CRATE_TYPES.contains(&k.as_str())) { // `--crate-type` is stable since Rust 1.64.0 // See https://github.com/rust-lang/cargo/pull/10838 if target.rustc_version.semver >= RUST_1_64_0 { debug!("Setting crate_type to cdylib for Rust >= 1.64.0"); cargo_rustc.crate_type = vec!["cdylib".to_string()]; } } let target_triple = target.target_triple(); let manifest_dir = context.manifest_path.parent().unwrap(); let mut rustflags = cargo_config2::Config::load_with_cwd(manifest_dir)? .rustflags(target_triple)? .unwrap_or_default(); let original_rustflags = rustflags.flags.clone(); // We need to pass --bin / --lib let bridge_model = &compile_target.bridge_model; match bridge_model { BridgeModel::Bin(..) => { cargo_rustc.bin.push(compile_target.target.name.clone()); } BridgeModel::Cffi | BridgeModel::UniFfi | BridgeModel::Bindings(..) | BridgeModel::BindingsAbi3(..) => { cargo_rustc.lib = true; // https://github.com/rust-lang/rust/issues/59302#issue-422994250 // We must only do this for libraries as it breaks binaries // For some reason this value is ignored when passed as rustc argument if context.target.is_musl_libc() && !rustflags .flags .iter() .any(|f| f == "target-feature=-crt-static") { debug!("Setting `-C target-features=-crt-static` for musl dylib"); rustflags.push("-C"); rustflags.push("target-feature=-crt-static"); } } } // https://github.com/PyO3/pyo3/issues/88#issuecomment-337744403 if target.is_macos() { if let BridgeModel::Bindings(..) | BridgeModel::BindingsAbi3(..) = bridge_model { // Change LC_ID_DYLIB to the final .so name for macOS targets to avoid linking with // non-existent library. // See https://github.com/PyO3/setuptools-rust/issues/106 for detail let module_name = &context.module_name; let so_filename = match bridge_model { BridgeModel::BindingsAbi3(..) => format!("{module_name}.abi3.so"), _ => python_interpreter .expect("missing python interpreter for non-abi3 wheel build") .get_library_name(module_name), }; let macos_dylib_install_name = format!("link-args=-Wl,-install_name,@rpath/{so_filename}"); let mac_args = [ "-C".to_string(), "link-arg=-undefined".to_string(), "-C".to_string(), "link-arg=dynamic_lookup".to_string(), "-C".to_string(), macos_dylib_install_name, ]; debug!("Setting additional linker args for macOS: {:?}", mac_args); cargo_rustc.args.extend(mac_args); } } else if target.is_emscripten() { // Allow user to override these default flags if !rustflags .flags .iter() .any(|f| f.contains("link-native-libraries")) { debug!("Setting `-Z link-native-libraries=no` for Emscripten"); rustflags.push("-Z"); rustflags.push("link-native-libraries=no"); } let mut emscripten_args = Vec::new(); // Allow user to override these default settings if !cargo_rustc .args .iter() .any(|arg| arg.contains("SIDE_MODULE")) { emscripten_args.push("-C".to_string()); emscripten_args.push("link-arg=-sSIDE_MODULE=2".to_string()); } if !cargo_rustc .args .iter() .any(|arg| arg.contains("WASM_BIGINT")) { emscripten_args.push("-C".to_string()); emscripten_args.push("link-arg=-sWASM_BIGINT".to_string()); } debug!( "Setting additional linker args for Emscripten: {:?}", emscripten_args ); cargo_rustc.args.extend(emscripten_args); } if context.strip { // https://doc.rust-lang.org/rustc/codegen-options/index.html#strip cargo_rustc .args .extend(["-C".to_string(), "strip=symbols".to_string()]); } let mut build_command = if target.is_msvc() && target.cross_compiling() { #[cfg(feature = "xwin")] { let xwin_options = { use clap::Parser; // This will populate the default values for the options // and then override them with cargo-xwin environment variables. cargo_xwin::XWinOptions::parse_from(Vec::<&str>::new()) }; let mut build = cargo_xwin::Rustc::from(cargo_rustc); build.target = vec![target_triple.to_string()]; build.xwin = xwin_options; build.build_command()? } #[cfg(not(feature = "xwin"))] { if target.user_specified { cargo_rustc.target = vec![target_triple.to_string()]; } cargo_rustc.command() } } else { #[cfg(feature = "zig")] { let mut build = cargo_zigbuild::Rustc::from(cargo_rustc); if !context.zig { build.disable_zig_linker = true; if target.user_specified { build.target = vec![target_triple.to_string()]; } } else { build.enable_zig_ar = true; let zig_triple = if target.is_linux() && !target.is_musl_libc() { match context.platform_tag.iter().find(|tag| tag.is_manylinux()) { Some(PlatformTag::Manylinux { x, y }) => { format!("{target_triple}.{x}.{y}") } _ => target_triple.to_string(), } } else { target_triple.to_string() }; build.target = vec![zig_triple]; } build.build_command()? } #[cfg(not(feature = "zig"))] { if target.user_specified { cargo_rustc.target = vec![target_triple.to_string()]; } cargo_rustc.command() } }; #[cfg(feature = "zig")] if context.zig { // Pass zig command to downstream, eg. python3-dll-a if let Ok((zig_cmd, zig_args)) = cargo_zigbuild::Zig::find_zig() { if zig_args.is_empty() { build_command.env("ZIG_COMMAND", zig_cmd); } else { build_command.env( "ZIG_COMMAND", format!("{} {}", zig_cmd.display(), zig_args.join(" ")), ); }; } } build_command // We need to capture the json messages .stdout(Stdio::piped()) // We can't get colored human and json messages from rustc as they are mutually exclusive, // but forwarding stderr is still useful in case there some non-json error .stderr(Stdio::inherit()); if !rustflags.flags.is_empty() && rustflags.flags != original_rustflags { build_command.env("CARGO_ENCODED_RUSTFLAGS", rustflags.encode()?); } if let BridgeModel::BindingsAbi3(_, _) = bridge_model { let is_pypy_or_graalpy = python_interpreter .map(|p| p.interpreter_kind.is_pypy() || p.interpreter_kind.is_graalpy()) .unwrap_or(false); if !is_pypy_or_graalpy && !target.is_windows() { let pyo3_ver = pyo3_version(&context.cargo_metadata) .context("Failed to get pyo3 version from cargo metadata")?; if pyo3_ver < PYO3_ABI3_NO_PYTHON_VERSION { // This will make old pyo3's build script only set some predefined linker // arguments without trying to read any python configuration build_command.env("PYO3_NO_PYTHON", "1"); } } } // Setup `PYO3_CONFIG_FILE` if we are cross compiling for pyo3 bindings if let Some(interpreter) = python_interpreter { // Target python interpreter isn't runnable when cross compiling if interpreter.runnable { if bridge_model.is_bindings("pyo3") || bridge_model.is_bindings("pyo3-ffi") || matches!(bridge_model, BridgeModel::BindingsAbi3(_, _)) { debug!( "Setting PYO3_PYTHON to {}", interpreter.executable.display() ); build_command .env("PYO3_PYTHON", &interpreter.executable) .env( "PYO3_ENVIRONMENT_SIGNATURE", interpreter.environment_signature(), ); } // rust-cpython, and legacy pyo3 versions build_command.env("PYTHON_SYS_EXECUTABLE", &interpreter.executable); } else if (bridge_model.is_bindings("pyo3") || bridge_model.is_bindings("pyo3-ffi") || (matches!(bridge_model, BridgeModel::BindingsAbi3(_, _)) && (interpreter.interpreter_kind.is_pypy() || interpreter.interpreter_kind.is_graalpy()))) && env::var_os("PYO3_CONFIG_FILE").is_none() { let pyo3_config = interpreter.pyo3_config_file(); let maturin_target_dir = context.target_dir.join("maturin"); let config_file = maturin_target_dir.join(format!( "pyo3-config-{}-{}.{}.txt", target_triple, interpreter.major, interpreter.minor )); fs::create_dir_all(&maturin_target_dir)?; fs::write(&config_file, pyo3_config).with_context(|| { format!( "Failed to create pyo3 config file at '{}'", config_file.display() ) })?; let abs_config_file = config_file.normalize()?.into_path_buf(); build_command.env("PYO3_CONFIG_FILE", abs_config_file); } } if let Some(lib_dir) = env::var_os("MATURIN_PYTHON_SYSCONFIGDATA_DIR") { build_command.env("PYO3_CROSS_LIB_DIR", lib_dir); } // Set default macOS deployment target version for non-editable builds if !context.editable && target.is_macos() && env::var_os("MACOSX_DEPLOYMENT_TARGET").is_none() { use crate::build_context::rustc_macosx_target_version; let target_config = context .pyproject_toml .as_ref() .and_then(|x| x.target_config(target_triple)); let deployment_target = if let Some(deployment_target) = target_config .as_ref() .and_then(|config| config.macos_deployment_target.as_ref()) { eprintln!( "💻 Using `MACOSX_DEPLOYMENT_TARGET={deployment_target}` for {target_triple} by configuration" ); deployment_target.clone() } else { let (major, minor) = rustc_macosx_target_version(target_triple); eprintln!( "💻 Using `MACOSX_DEPLOYMENT_TARGET={major}.{minor}` for {target_triple} by default" ); format!("{major}.{minor}") }; build_command.env("MACOSX_DEPLOYMENT_TARGET", deployment_target); } Ok(build_command) } fn compile_target( context: &BuildContext, mut build_command: Command, ) -> Result> { debug!("Running {:?}", build_command); let using_cross = build_command .get_program() .to_string_lossy() .starts_with("cross"); let mut cargo_build = build_command .spawn() .context("Failed to run `cargo rustc`")?; let mut artifacts = HashMap::new(); let mut linked_paths = Vec::new(); let stream = cargo_build .stdout .take() .expect("Cargo build should have a stdout"); for message in cargo_metadata::Message::parse_stream(BufReader::new(stream)) { let message = message.context("Failed to parse cargo metadata message")?; trace!("cargo message: {:?}", message); match message { cargo_metadata::Message::CompilerArtifact(artifact) => { let package_in_metadata = context .cargo_metadata .packages .iter() .find(|package| package.id == artifact.package_id); let crate_name = match package_in_metadata { Some(package) => &package.name, None => { let package_id = &artifact.package_id; // Ignore the package if it's coming from Rust sysroot when compiling with `-Zbuild-std` let should_warn = !package_id.repr.contains("rustup") && !package_id.repr.contains("rustlib") && !artifact.features.contains(&"rustc-dep-of-std".to_string()); if should_warn { // This is a spurious error I don't really understand eprintln!( "⚠️ Warning: The package {package_id} wasn't listed in `cargo metadata`" ); } continue; } }; // Extract the location of the .so/.dll/etc. from cargo's json output if crate_name == &context.crate_name { let tuples = artifact .target .crate_types .into_iter() .zip(artifact.filenames); for (crate_type, filename) in tuples { let path = if using_cross && filename.starts_with("/target") { // Convert cross target path in docker back to path on host context .cargo_metadata .target_directory .join(filename.strip_prefix("/target").unwrap()) .into_std_path_buf() } else { filename.into() }; let artifact = BuildArtifact { path, linked_paths: Vec::new(), }; artifacts.insert(crate_type, artifact); } } } // See https://doc.rust-lang.org/cargo/reference/external-tools.html#build-script-output cargo_metadata::Message::BuildScriptExecuted(msg) => { for path in msg.linked_paths.iter().map(|p| p.as_str()) { // `linked_paths` may include a "KIND=" prefix in the string where KIND is the library kind if let Some(index) = path.find('=') { linked_paths.push(path[index + 1..].to_string()); } else { linked_paths.push(path.to_string()); } } } cargo_metadata::Message::CompilerMessage(msg) => { println!("{}", msg.message); } _ => (), } } // Add linked_paths to build artifacts for artifact in artifacts.values_mut() { artifact.linked_paths.clone_from(&linked_paths); } let status = cargo_build .wait() .expect("Failed to wait on cargo child process"); if !status.success() { bail!( r#"Cargo build finished with "{}": `{:?}`"#, status, build_command, ) } Ok(artifacts) } /// Checks that the native library contains a function called `PyInit_` and warns /// if it's missing. /// /// That function is the python's entrypoint for loading native extensions, i.e. python will fail /// to import the module with error if it's missing or named incorrectly /// /// Currently the check is only run on linux, macOS and Windows #[instrument(skip_all)] pub fn warn_missing_py_init(artifact: &Path, module_name: &str) -> Result<()> { let py_init = format!("PyInit_{module_name}"); let mut fd = File::open(artifact)?; let mut buffer = Vec::new(); fd.read_to_end(&mut buffer)?; let mut found = false; match goblin::Object::parse(&buffer)? { goblin::Object::Elf(elf) => { for dyn_sym in elf.dynsyms.iter() { if py_init == elf.dynstrtab[dyn_sym.st_name] { found = true; break; } } } goblin::Object::Mach(mach) => { match mach { goblin::mach::Mach::Binary(macho) => { for sym in macho.exports()? { let sym_name = sym.name; if py_init == sym_name.strip_prefix('_').unwrap_or(&sym_name) { found = true; break; } } if !found { for sym in macho.symbols() { let (sym_name, _) = sym?; if py_init == sym_name.strip_prefix('_').unwrap_or(sym_name) { found = true; break; } } } } goblin::mach::Mach::Fat(_) => { // Ignore fat macho, // we only generate them by combining thin binaries which is handled above found = true } } } goblin::Object::PE(pe) => { for sym in &pe.exports { if let Some(sym_name) = sym.name { if py_init == sym_name { found = true; break; } } } } _ => { // Currently, only linux, macOS and Windows are implemented found = true } } if !found { eprintln!( "⚠️ Warning: Couldn't find the symbol `{py_init}` in the native library. \ Python will fail to import this module. \ If you're using pyo3, check that `#[pymodule]` uses `{module_name}` as module name" ) } Ok(()) } fn pyo3_version(cargo_metadata: &cargo_metadata::Metadata) -> Option<(u64, u64, u64)> { let packages: HashMap<&str, &cargo_metadata::Package> = cargo_metadata .packages .iter() .filter_map(|pkg| { let name = &pkg.name; if name == "pyo3" || name == "pyo3-ffi" { Some((name.as_ref(), pkg)) } else { None } }) .collect(); packages .get("pyo3") .or_else(|| packages.get("pyo3-ffi")) .map(|pkg| (pkg.version.major, pkg.version.minor, pkg.version.patch)) } maturin-1.7.4/src/cross_compile.rs000066400000000000000000000177741467514767100172420ustar00rootroot00000000000000use crate::{PythonInterpreter, Target}; use anyhow::{bail, Result}; use fs_err::{self as fs, DirEntry}; use normpath::PathExt as _; use std::collections::HashMap; use std::env; use std::path::{Path, PathBuf}; pub fn is_cross_compiling(target: &Target) -> Result { let target_triple = target.target_triple(); let host = target.host_triple(); if target_triple == host { // Not cross-compiling return Ok(false); } if target_triple == "x86_64-apple-darwin" && host == "aarch64-apple-darwin" { // Not cross-compiling to compile for x86-64 Python from macOS arm64 return Ok(false); } if target_triple == "aarch64-apple-darwin" && host == "x86_64-apple-darwin" { // Not cross-compiling to compile for arm64 Python from macOS x86_64 return Ok(false); } if target_triple.starts_with("i686-pc-windows") && host.starts_with("x86_64-pc-windows") { // Not cross-compiling to compile for 32-bit Python from windows 64-bit return Ok(false); } if target_triple.ends_with("windows-gnu") && host.ends_with("windows-msvc") { // Not cross-compiling to compile for Windows GNU from Windows MSVC host return Ok(false); } Ok(true) } /// Parse sysconfigdata file /// /// The sysconfigdata is simply a dictionary containing all the build time variables used for the /// python executable and library. Here it is read and added to a script to extract only what is /// necessary. This necessitates a python interpreter for the host machine to work. pub fn parse_sysconfigdata( interpreter: &PythonInterpreter, config_path: impl AsRef, ) -> Result> { let mut script = fs::read_to_string(config_path)?; script += r#" print("version_major", build_time_vars["VERSION"][0]) # 3 print("version_minor", build_time_vars["VERSION"][2:]) # E.g., 8, 10 KEYS = [ "ABIFLAGS", "EXT_SUFFIX", "SOABI", ] for key in KEYS: print(key, build_time_vars.get(key, "")) "#; let output = interpreter.run_script(&script)?; Ok(parse_script_output(&output)) } fn parse_script_output(output: &str) -> HashMap { output .lines() .filter_map(|line| { line.split_once(' ') .map(|(x, y)| (x.to_string(), y.to_string())) }) .collect() } fn starts_with(entry: &DirEntry, pat: &str) -> bool { let name = entry.file_name(); name.to_string_lossy().starts_with(pat) } fn ends_with(entry: &DirEntry, pat: &str) -> bool { let name = entry.file_name(); name.to_string_lossy().ends_with(pat) } /// Finds the `_sysconfigdata*.py` file in the library path. /// /// From the python source for `_sysconfigdata*.py` is always going to be located at /// `build/lib.{PLATFORM}-{PY_MINOR_VERSION}` when built from source. The [exact line][1] is defined as: /// /// ```py /// pybuilddir = 'build/lib.%s-%s' % (get_platform(), sys.version_info[:2]) /// ``` /// /// Where get_platform returns a kebab-case formatted string containing the os, the architecture and /// possibly the os' kernel version (not the case on linux). However, when installed using a package /// manager, the `_sysconfigdata*.py` file is installed in the `${PREFIX}/lib/python3.Y/` directory. /// The `_sysconfigdata*.py` is generally in a sub-directory of the location of `libpython3.Y.so`. /// So we must find the file in the following possible locations: /// /// ```sh /// # distribution from package manager, lib_dir should include lib/ /// ${INSTALL_PREFIX}/lib/python3.Y/_sysconfigdata*.py /// ${INSTALL_PREFIX}/lib/libpython3.Y.so /// ${INSTALL_PREFIX}/lib/python3.Y/config-3.Y-${HOST_TRIPLE}/libpython3.Y.so /// /// # Built from source from host /// ${CROSS_COMPILED_LOCATION}/build/lib.linux-x86_64-Y/_sysconfigdata*.py /// ${CROSS_COMPILED_LOCATION}/libpython3.Y.so /// /// # if cross compiled, kernel release is only present on certain OS targets. /// ${CROSS_COMPILED_LOCATION}/build/lib.{OS}(-{OS-KERNEL-RELEASE})?-{ARCH}-Y/_sysconfigdata*.py /// ${CROSS_COMPILED_LOCATION}/libpython3.Y.so /// ``` /// /// [1]: https://github.com/python/cpython/blob/3.5/Lib/sysconfig.py#L389 pub fn find_sysconfigdata(lib_dir: &Path, target: &Target) -> Result { let sysconfig_paths = search_lib_dir(lib_dir, target)?; let sysconfig_name = env::var_os("_PYTHON_SYSCONFIGDATA_NAME"); let mut sysconfig_paths = sysconfig_paths .iter() .filter_map(|p| { let canonical = p.normalize().ok().map(|p| p.into_path_buf()); match &sysconfig_name { Some(_) => canonical.filter(|p| p.file_stem() == sysconfig_name.as_deref()), None => canonical, } }) .collect::>(); sysconfig_paths.dedup(); if sysconfig_paths.is_empty() { bail!("Could not find _sysconfigdata*.py in {}", lib_dir.display()); } else if sysconfig_paths.len() > 1 { bail!( "Detected multiple possible python versions, please set the PYO3_PYTHON_VERSION \ variable to the wanted version on your system or set the _PYTHON_SYSCONFIGDATA_NAME \ variable to the wanted sysconfigdata file name\nsysconfigdata paths = {:?}", sysconfig_paths ) } Ok(sysconfig_paths.remove(0)) } /// recursive search for _sysconfigdata, returns all possibilities of sysconfigdata paths fn search_lib_dir(path: impl AsRef, target: &Target) -> Result> { let mut sysconfig_paths = vec![]; let (cpython_version_pat, pypy_version_pat) = if let Some(v) = env::var_os("PYO3_CROSS_PYTHON_VERSION").map(|s| s.into_string().unwrap()) { (format!("python{v}"), format!("pypy{v}")) } else { ("python3.".into(), "pypy3.".into()) }; for f in fs::read_dir(path.as_ref())? { let sysc = match &f { Ok(f) if starts_with(f, "_sysconfigdata") && ends_with(f, "py") => vec![f.path()], Ok(f) if starts_with(f, "build") => search_lib_dir(f.path(), target)?, Ok(f) if starts_with(f, "lib.") => { let name = f.file_name(); // check if right target os if !name.to_string_lossy().contains(target.get_python_os()) { continue; } // Check if right arch if !name .to_string_lossy() .contains(&target.target_arch().to_string()) { continue; } search_lib_dir(f.path(), target)? } Ok(f) if starts_with(f, &cpython_version_pat) => search_lib_dir(f.path(), target)?, // PyPy 3.7: /opt/python/pp37-pypy37_pp73/lib_pypy/_sysconfigdata__linux_x86_64-linux-gnu.py Ok(f) if starts_with(f, "lib_pypy") => search_lib_dir(f.path(), target)?, // PyPy 3.8: /opt/python/pp38-pypy38_pp73/lib/pypy3.8/_sysconfigdata__linux_x86_64-linux-gnu.py Ok(f) if starts_with(f, &pypy_version_pat) => search_lib_dir(f.path(), target)?, Ok(f) if starts_with(f, "lib") && f.path().is_dir() => { search_lib_dir(f.path(), target)? } _ => continue, }; sysconfig_paths.extend(sysc); } // If we got more than one file, only take those that contain the arch name. // For ubuntu 20.04 with host architecture x86_64 and a foreign architecture of armhf // this reduces the number of candidates to 1: // // $ find /usr/lib/python3.8/ -name '_sysconfigdata*.py' -not -lname '*' // /usr/lib/python3.8/_sysconfigdata__x86_64-linux-gnu.py // /usr/lib/python3.8/_sysconfigdata__arm-linux-gnueabihf.py if sysconfig_paths.len() > 1 { let temp = sysconfig_paths .iter() .filter(|p| { p.to_string_lossy() .contains(&target.target_arch().to_string()) }) .cloned() .collect::>(); if !temp.is_empty() { sysconfig_paths = temp; } } Ok(sysconfig_paths) } maturin-1.7.4/src/develop.rs000066400000000000000000000362571467514767100160340ustar00rootroot00000000000000use crate::auditwheel::AuditWheelMode; use crate::build_options::CargoOptions; use crate::target::detect_arch_from_python; use crate::BuildContext; use crate::BuildOptions; use crate::PlatformTag; use crate::PythonInterpreter; use crate::Target; use anyhow::{anyhow, bail, Context, Result}; use cargo_options::heading; use fs_err as fs; use pep508_rs::{MarkerExpression, MarkerOperator, MarkerTree, MarkerValue}; use regex::Regex; use std::path::Path; use std::path::PathBuf; use std::process::Command; use std::str; use tempfile::TempDir; use tracing::{debug, instrument}; use url::Url; enum InstallBackend { Pip { path: Option, }, Uv { path: PathBuf, args: Vec<&'static str>, }, } impl InstallBackend { fn is_pip(&self) -> bool { matches!(self, InstallBackend::Pip { .. }) } fn make_command(&self, python_path: &Path) -> Command { match self { InstallBackend::Pip { path } => match &path { Some(path) => { let mut cmd = Command::new(path); cmd.arg("--python") .arg(python_path) .arg("--disable-pip-version-check"); cmd } None => { let mut cmd = Command::new(python_path); cmd.arg("-m").arg("pip").arg("--disable-pip-version-check"); cmd } }, InstallBackend::Uv { path, args } => { let mut cmd = Command::new(path); cmd.args(args).arg("pip"); cmd } } } } /// Detect the plain uv binary fn find_uv_bin() -> Result<(PathBuf, Vec<&'static str>)> { let output = Command::new("uv").arg("--version").output()?; if output.status.success() { let version_str = str::from_utf8(&output.stdout).context("`uv --version` didn't return utf8 output")?; debug!(version = %version_str, "Found uv binary in PATH"); Ok((PathBuf::from("uv"), Vec::new())) } else { bail!("`uv --version` failed with status: {}", output.status); } } /// Detect the Python uv package fn find_uv_python(python_path: &Path) -> Result<(PathBuf, Vec<&'static str>)> { let output = Command::new(python_path) .args(["-m", "uv", "--version"]) .output()?; if output.status.success() { let version_str = str::from_utf8(&output.stdout).context("`uv --version` didn't return utf8 output")?; debug!(version = %version_str, "Found Python uv module"); Ok((python_path.to_path_buf(), vec!["-m", "uv"])) } else { bail!( "`{} -m uv --version` failed with status: {}", python_path.display(), output.status ); } } /// Install the crate as module in the current virtualenv #[derive(Debug, clap::Parser)] pub struct DevelopOptions { /// Which kind of bindings to use #[arg( short = 'b', long = "bindings", alias = "binding-crate", value_parser = ["pyo3", "pyo3-ffi", "cffi", "uniffi", "bin"] )] pub bindings: Option, /// Pass --release to cargo #[arg(short = 'r', long, help_heading = heading::COMPILATION_OPTIONS,)] pub release: bool, /// Strip the library for minimum file size #[arg(long)] pub strip: bool, /// Install extra requires aka. optional dependencies /// /// Use as `--extras=extra1,extra2` #[arg( short = 'E', long, value_delimiter = ',', action = clap::ArgAction::Append )] pub extras: Vec, /// Skip installation, only build the extension module inplace /// /// Only works with mixed Rust/Python project layout #[arg(long)] pub skip_install: bool, /// Use a specific pip installation instead of the default one. /// /// This can be used to supply the path to a pip executable when the /// current virtualenv does not provide one. #[arg(long)] pub pip_path: Option, /// `cargo rustc` options #[command(flatten)] pub cargo_options: CargoOptions, /// Use `uv` to install packages instead of `pip` #[arg(long)] pub uv: bool, } #[instrument(skip_all)] fn install_dependencies( build_context: &BuildContext, extras: &[String], interpreter: &PythonInterpreter, install_backend: &InstallBackend, ) -> Result<()> { if !build_context.metadata23.requires_dist.is_empty() { let mut args = vec!["install".to_string()]; args.extend(build_context.metadata23.requires_dist.iter().map(|x| { let mut pkg = x.clone(); // Remove extra marker to make it installable with pip // Keep in sync with `Metadata21::merge_pyproject_toml()`! for extra in extras { pkg.marker = pkg.marker.and_then(|marker| -> Option { match marker.clone() { MarkerTree::Expression(MarkerExpression { l_value: MarkerValue::Extra, operator: MarkerOperator::Equal, r_value: MarkerValue::QuotedString(extra_value), }) if &extra_value == extra => None, MarkerTree::And(and) => match &*and { [existing, MarkerTree::Expression(MarkerExpression { l_value: MarkerValue::Extra, operator: MarkerOperator::Equal, r_value: MarkerValue::QuotedString(extra_value), })] if extra_value == extra => Some(existing.clone()), _ => Some(marker), }, _ => Some(marker), } }); } pkg.to_string() })); let status = install_backend .make_command(&interpreter.executable) .args(&args) .status() .context("Failed to run pip install")?; if !status.success() { bail!(r#"pip install finished with "{}""#, status) } } Ok(()) } #[instrument(skip_all, fields(wheel_filename = %wheel_filename.display()))] fn pip_install_wheel( build_context: &BuildContext, python: &Path, venv_dir: &Path, wheel_filename: &Path, pip_path: Option, install_backend: &InstallBackend, ) -> Result<()> { let mut cmd = install_backend.make_command(python); let output = cmd .args(["install", "--no-deps", "--force-reinstall"]) .arg(dunce::simplified(wheel_filename)) .output() .context(format!( "pip install failed (ran {:?} with {:?})", cmd.get_program(), &cmd.get_args().collect::>(), ))?; if !output.status.success() { bail!( "pip install in {} failed running {:?}: {}\n--- Stdout:\n{}\n--- Stderr:\n{}\n---\n", venv_dir.display(), &cmd.get_args().collect::>(), output.status, String::from_utf8_lossy(&output.stdout).trim(), String::from_utf8_lossy(&output.stderr).trim(), ); } // uv pip install sends logs to stderr thus only print this warning for pip if !output.stderr.is_empty() && install_backend.is_pip() { eprintln!( "⚠️ Warning: pip raised a warning running {:?}:\n{}", &cmd.get_args().collect::>(), String::from_utf8_lossy(&output.stderr).trim(), ); } // pip show --files is not supported by uv, thus // default to using pip backend all the time fix_direct_url( build_context, python, &InstallBackend::Pip { path: pip_path }, )?; Ok(()) } /// Each editable-installed python package has a direct_url.json file that includes a file:// URL /// indicating the location of the source code of that project. The maturin import hook uses this /// URL to locate and rebuild editable-installed projects. /// /// When a maturin package is installed using `pip install -e`, pip takes care of writing the /// correct URL, however when a maturin package is installed with `maturin develop`, the URL is /// set to the path to the temporary wheel file created during installation. #[instrument(skip_all)] fn fix_direct_url( build_context: &BuildContext, python: &Path, install_backend: &InstallBackend, ) -> Result<()> { println!("✏️ Setting installed package as editable"); let mut cmd = install_backend.make_command(python); let output = cmd .args(["show", "--files"]) .arg(&build_context.metadata23.name) .output() .context(format!( "pip show failed (ran {:?} with {:?})", cmd.get_program(), &cmd.get_args().collect::>(), ))?; if let Some(direct_url_path) = parse_direct_url_path(&String::from_utf8_lossy(&output.stdout))? { let project_dir = build_context .pyproject_toml_path .parent() .ok_or_else(|| anyhow!("failed to get project directory"))?; let uri = Url::from_file_path(project_dir) .map_err(|_| anyhow!("failed to convert project directory to file URL"))?; let content = format!("{{\"dir_info\": {{\"editable\": true}}, \"url\": \"{uri}\"}}"); fs::write(direct_url_path, content)?; } Ok(()) } fn parse_direct_url_path(pip_show_output: &str) -> Result> { if let Some(Some(location)) = Regex::new(r"Location: ([^\r\n]*)")? .captures(pip_show_output) .map(|c| c.get(1)) { if let Some(Some(direct_url_path)) = Regex::new(r" (.*direct_url.json)")? .captures(pip_show_output) .map(|c| c.get(1)) { return Ok(Some( PathBuf::from(location.as_str()).join(direct_url_path.as_str()), )); } } Ok(None) } /// Installs a crate by compiling it and copying the shared library to site-packages. /// Also adds the dist-info directory to make sure pip and other tools detect the library /// /// Works only in a virtualenv. #[allow(clippy::too_many_arguments)] pub fn develop(develop_options: DevelopOptions, venv_dir: &Path) -> Result<()> { let DevelopOptions { bindings, release, strip, extras, skip_install, pip_path, cargo_options, uv, } = develop_options; let mut target_triple = cargo_options.target.as_ref().map(|x| x.to_string()); let target = Target::from_target_triple(cargo_options.target)?; let python = target.get_venv_python(venv_dir); // check python platform and architecture if !target.user_specified { if let Some(detected_target) = detect_arch_from_python(&python, &target) { target_triple = Some(detected_target); } } // Store wheel in a unique location so we don't get name clashes with parallel runs let wheel_dir = TempDir::new().context("Failed to create temporary directory")?; let build_options = BuildOptions { platform_tag: vec![PlatformTag::Linux], interpreter: vec![python.clone()], find_interpreter: false, bindings, out: Some(wheel_dir.path().to_path_buf()), auditwheel: Some(AuditWheelMode::Skip), skip_auditwheel: false, #[cfg(feature = "zig")] zig: false, cargo: CargoOptions { target: target_triple, ..cargo_options }, }; let build_context = build_options.into_build_context(release, strip, true)?; let interpreter = PythonInterpreter::check_executable(&python, &target, build_context.bridge())?.ok_or_else( || anyhow!("Expected `python` to be a python interpreter inside a virtualenv ಠ_ಠ"), )?; let install_backend = if uv { let (uv_path, uv_args) = find_uv_python(&interpreter.executable) .or_else(|_| find_uv_bin()) .context("Failed to find uv")?; InstallBackend::Uv { path: uv_path, args: uv_args, } } else { InstallBackend::Pip { path: pip_path.clone(), } }; install_dependencies(&build_context, &extras, &interpreter, &install_backend)?; let wheels = build_context.build_wheels()?; if !skip_install { for (filename, _supported_version) in wheels.iter() { pip_install_wheel( &build_context, &python, venv_dir, filename, pip_path.clone(), &install_backend, )?; eprintln!( "🛠 Installed {}-{}", build_context.metadata23.name, build_context.metadata23.version ); } } Ok(()) } #[cfg(test)] mod test { use std::path::PathBuf; use super::parse_direct_url_path; #[test] #[cfg(not(target_os = "windows"))] fn test_parse_direct_url() { let example_with_direct_url = "\ Name: my-project Version: 0.1.0 Location: /foo bar/venv/lib/pythonABC/site-packages Editable project location: /tmp/temporary.whl Files: my_project-0.1.0+abc123de.dist-info/INSTALLER my_project-0.1.0+abc123de.dist-info/METADATA my_project-0.1.0+abc123de.dist-info/RECORD my_project-0.1.0+abc123de.dist-info/REQUESTED my_project-0.1.0+abc123de.dist-info/WHEEL my_project-0.1.0+abc123de.dist-info/direct_url.json my_project-0.1.0+abc123de.dist-info/entry_points.txt my_project.pth "; let expected_path = PathBuf::from("/foo bar/venv/lib/pythonABC/site-packages/my_project-0.1.0+abc123de.dist-info/direct_url.json"); assert_eq!( parse_direct_url_path(example_with_direct_url).unwrap(), Some(expected_path) ); let example_without_direct_url = "\ Name: my-project Version: 0.1.0 Location: /foo bar/venv/lib/pythonABC/site-packages Files: my_project-0.1.0+abc123de.dist-info/INSTALLER my_project-0.1.0+abc123de.dist-info/METADATA my_project-0.1.0+abc123de.dist-info/RECORD my_project-0.1.0+abc123de.dist-info/REQUESTED my_project-0.1.0+abc123de.dist-info/WHEEL my_project-0.1.0+abc123de.dist-info/entry_points.txt my_project.pth "; assert_eq!( parse_direct_url_path(example_without_direct_url).unwrap(), None ); } #[test] #[cfg(target_os = "windows")] fn test_parse_direct_url_windows() { let example_with_direct_url_windows = "\ Name: my-project\r Version: 0.1.0\r Location: C:\\foo bar\\venv\\Lib\\site-packages\r Files:\r my_project-0.1.0+abc123de.dist-info\\INSTALLER\r my_project-0.1.0+abc123de.dist-info\\METADATA\r my_project-0.1.0+abc123de.dist-info\\RECORD\r my_project-0.1.0+abc123de.dist-info\\REQUESTED\r my_project-0.1.0+abc123de.dist-info\\WHEEL\r my_project-0.1.0+abc123de.dist-info\\direct_url.json\r my_project-0.1.0+abc123de.dist-info\\entry_points.txt\r my_project.pth\r "; let expected_path = PathBuf::from("C:\\foo bar\\venv\\Lib\\site-packages\\my_project-0.1.0+abc123de.dist-info\\direct_url.json"); assert_eq!( parse_direct_url_path(example_with_direct_url_windows).unwrap(), Some(expected_path) ); } } maturin-1.7.4/src/generate_json_schema.rs000066400000000000000000000040101467514767100205170ustar00rootroot00000000000000#![cfg(feature = "schemars")] use fs_err as fs; use std::path::PathBuf; use anyhow::{bail, Result}; use pretty_assertions::StrComparison; use schemars::schema_for; use crate::pyproject_toml::ToolMaturin; #[derive(Debug, Copy, Clone, PartialEq, Eq, clap::ValueEnum, Default)] /// The mode to use when generating the JSON schema. pub enum Mode { /// Write the JSON schema to the file. #[default] Write, /// Check if the JSON schema is up-to-date. Check, /// Print the JSON schema to stdout. DryRun, } /// Generate the JSON schema for the `pyproject.toml` file. #[derive(Debug, clap::Parser)] pub struct GenerateJsonSchemaOptions { /// The mode to use when generating the JSON schema. #[arg(long, default_value_t, value_enum)] pub mode: Mode, } /// Generate the JSON schema for the `pyproject.toml` file. pub fn generate_json_schema(args: GenerateJsonSchemaOptions) -> Result<()> { let schema = schema_for!(ToolMaturin); let schema_string = serde_json::to_string_pretty(&schema).unwrap(); let filename = "maturin.schema.json"; let schema_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(filename); match args.mode { Mode::DryRun => { println!("{schema_string}"); } Mode::Check => { let current = fs::read_to_string(schema_path)?; if current == schema_string { println!("Up-to-date: {filename}"); } else { let comparison = StrComparison::new(¤t, &schema_string); bail!("{filename} changed, please run `cargo run --features schemars -- generate-json-schema`:\n{comparison}",); } } Mode::Write => { let current = fs::read_to_string(&schema_path)?; if current == schema_string { println!("Up-to-date: {filename}"); } else { println!("Updating: {filename}"); fs::write(schema_path, schema_string.as_bytes())?; } } } Ok(()) } maturin-1.7.4/src/lib.rs000066400000000000000000000045501467514767100151330ustar00rootroot00000000000000//! Builds wheels from a crate that exposes python bindings through pyo3 //! //! The high-level api is [BuildOptions], which can be converted into the [BuildContext], which //! then uses [compile()] and builds the appropriate wheels. //! //! # Cargo features //! //! Default features: log, upload, rustls //! //! - log: Configures pretty-env-logger, even though maturin doesn't use logging itself. //! //! - upload: Uses ureq to add the upload command. //! //! - rustls: Makes ureq use the rustls stack so that we can build maturin in a CentOS 6 //! docker container and which maturin itself manylinux compliant. //! //! - native-tls: Makes ureq use the platform native tls stack //! //! - password-storage (off by default): Uses the keyring package to store the password. keyring //! pulls in a lot of shared libraries and outdated dependencies, so this is off by default, except //! for the build on the github releases page. //! (https://github.com/hwchen/secret-service-rs/issues/9) #![deny(missing_docs)] pub use crate::build_context::{BridgeModel, BuildContext, BuiltWheelMetadata}; pub use crate::build_options::{BuildOptions, CargoOptions}; pub use crate::cargo_toml::CargoToml; pub use crate::compile::{compile, BuildArtifact}; pub use crate::develop::{develop, DevelopOptions}; #[cfg(feature = "schemars")] pub use crate::generate_json_schema::{generate_json_schema, GenerateJsonSchemaOptions, Mode}; pub use crate::metadata::{Metadata23, WheelMetadata}; pub use crate::module_writer::{ write_dist_info, ModuleWriter, PathWriter, SDistWriter, WheelWriter, }; #[cfg(feature = "scaffolding")] pub use crate::new_project::{init_project, new_project, GenerateProjectOptions}; pub use crate::pyproject_toml::PyProjectToml; pub use crate::python_interpreter::PythonInterpreter; pub use crate::target::Target; #[cfg(feature = "upload")] pub use crate::upload::{upload, upload_ui, PublishOpt, Registry, UploadError}; pub use auditwheel::PlatformTag; mod auditwheel; mod build_context; mod build_options; mod cargo_toml; #[cfg(feature = "scaffolding")] /// Generate CI configuration pub mod ci; mod compile; mod cross_compile; mod develop; mod generate_json_schema; mod metadata; mod module_writer; #[cfg(feature = "scaffolding")] mod new_project; mod project_layout; pub mod pyproject_toml; mod python_interpreter; mod source_distribution; mod target; #[cfg(feature = "upload")] mod upload; maturin-1.7.4/src/main.rs000066400000000000000000000464071467514767100153200ustar00rootroot00000000000000//! Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries //! as python packages. This file contains the CLI and keyring integration. //! //! Run with --help for usage information use anyhow::{bail, Context, Result}; use cargo_options::heading; #[cfg(feature = "zig")] use cargo_zigbuild::Zig; #[cfg(feature = "cli-completion")] use clap::CommandFactory; use clap::{Parser, Subcommand}; #[cfg(feature = "scaffolding")] use maturin::{ci::GenerateCI, init_project, new_project, GenerateProjectOptions}; use maturin::{ develop, write_dist_info, BridgeModel, BuildOptions, CargoOptions, DevelopOptions, PathWriter, PlatformTag, PythonInterpreter, Target, }; #[cfg(feature = "schemars")] use maturin::{generate_json_schema, GenerateJsonSchemaOptions}; #[cfg(feature = "upload")] use maturin::{upload_ui, PublishOpt}; use std::env; use std::path::PathBuf; use std::str::FromStr; use tracing::{debug, instrument}; use tracing_subscriber::filter::Directive; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, Layer}; #[derive(Debug, Parser)] #[command( version, name = env!("CARGO_PKG_NAME"), display_order = 1, after_help = "Visit https://maturin.rs to learn more about maturin.", styles = cargo_options::styles(), )] /// Build and publish crates with pyo3, cffi and uniffi bindings as well /// as rust binaries as python packages struct Opt { /// Use verbose output. /// /// * Default: Show build information and `cargo build` output. /// * `-v`: Use `cargo build -v`. /// * `-vv`: Show debug logging and use `cargo build -vv`. /// * `-vvv`: Show trace logging. /// /// You can configure fine-grained logging using the `RUST_LOG` environment variable. /// () #[arg(global = true, action = clap::ArgAction::Count, long, short)] verbose: u8, #[command(subcommand)] command: Command, } #[derive(Debug, Parser)] #[allow(clippy::large_enum_variant)] /// Build and publish crates with pyo3, cffi and uniffi bindings as well /// as rust binaries as python packages enum Command { #[command(name = "build", alias = "b")] /// Build the crate into python packages Build { /// Build artifacts in release mode, with optimizations #[arg(short = 'r', long, help_heading = heading::COMPILATION_OPTIONS)] release: bool, /// Strip the library for minimum file size #[arg(long)] strip: bool, /// Build a source distribution #[arg(long)] sdist: bool, #[command(flatten)] build: BuildOptions, }, #[cfg(feature = "upload")] #[command(name = "publish")] /// Build and publish the crate as python packages to pypi Publish { /// Do not pass --release to cargo #[arg(long)] debug: bool, /// Do not strip the library for minimum file size #[arg(long = "no-strip")] no_strip: bool, /// Don't build a source distribution #[arg(long = "no-sdist")] no_sdist: bool, #[command(flatten)] publish: PublishOpt, #[command(flatten)] build: BuildOptions, }, #[command(name = "list-python")] /// Search and list the available python installations ListPython { #[arg(long)] target: Option, }, #[command(name = "develop", alias = "dev")] /// Install the crate as module in the current virtualenv Develop(DevelopOptions), /// Build only a source distribution (sdist) without compiling. /// /// Building a source distribution requires a pyproject.toml with a `[build-system]` table. /// /// This command is a workaround for [pypa/pip#6041](https://github.com/pypa/pip/issues/6041) #[command(name = "sdist")] SDist { #[arg(short = 'm', long = "manifest-path")] /// The path to the Cargo.toml manifest_path: Option, /// The directory to store the built wheels in. Defaults to a new "wheels" /// directory in the project's target directory #[arg(short, long)] out: Option, }, /// Create a new cargo project in an existing directory #[cfg(feature = "scaffolding")] #[command(name = "init")] InitProject { /// Project path path: Option, #[command(flatten)] options: GenerateProjectOptions, }, /// Create a new cargo project #[cfg(feature = "scaffolding")] #[command(name = "new")] NewProject { /// Project path path: String, #[command(flatten)] options: GenerateProjectOptions, }, #[cfg(feature = "scaffolding")] #[command(name = "generate-ci")] GenerateCI(GenerateCI), /// Upload python packages to pypi /// /// It is mostly similar to `twine upload`, but can only upload python wheels /// and source distributions. #[cfg(feature = "upload")] #[command(name = "upload")] Upload { #[command(flatten)] publish: PublishOpt, /// The python packages to upload #[arg(value_name = "FILE")] files: Vec, }, /// Backend for the PEP 517 integration. Not for human consumption /// /// The commands are meant to be called from the python PEP 517 #[command(subcommand)] Pep517(Pep517Command), /// Generate shell completions #[cfg(feature = "cli-completion")] #[command(name = "completions", hide = true)] Completions { #[arg(value_name = "SHELL")] shell: clap_complete_command::Shell, }, /// Zig linker wrapper #[cfg(feature = "zig")] #[command(subcommand, hide = true)] Zig(Zig), /// Generate the JSON schema for the `pyproject.toml` file. #[cfg(feature = "schemars")] #[command(name = "generate-json-schema", hide = true)] GenerateJsonSchema(GenerateJsonSchemaOptions), } /// Backend for the PEP 517 integration. Not for human consumption /// /// The commands are meant to be called from the python PEP 517 #[derive(Debug, Subcommand)] #[command(name = "pep517", hide = true)] enum Pep517Command { /// The implementation of prepare_metadata_for_build_wheel #[command(name = "write-dist-info")] WriteDistInfo { #[command(flatten)] build_options: BuildOptions, /// The metadata_directory argument to prepare_metadata_for_build_wheel #[arg(long = "metadata-directory")] metadata_directory: PathBuf, /// Strip the library for minimum file size #[arg(long)] strip: bool, }, #[command(name = "build-wheel")] /// Implementation of build_wheel /// /// --release and --strip are currently unused by the PEP 517 implementation BuildWheel { #[command(flatten)] build_options: BuildOptions, /// Strip the library for minimum file size #[arg(long)] strip: bool, /// Build editable wheels #[arg(long)] editable: bool, }, /// The implementation of build_sdist #[command(name = "write-sdist")] WriteSDist { /// The sdist_directory argument to build_sdist #[arg(long = "sdist-directory")] sdist_directory: PathBuf, #[arg(short = 'm', long = "manifest-path", value_name = "PATH")] /// The path to the Cargo.toml manifest_path: Option, }, } fn detect_venv(target: &Target) -> Result { match (env::var_os("VIRTUAL_ENV"), env::var_os("CONDA_PREFIX")) { (Some(dir), None) => return Ok(PathBuf::from(dir)), (None, Some(dir)) => return Ok(PathBuf::from(dir)), (Some(venv), Some(conda)) if venv == conda => return Ok(PathBuf::from(venv)), (Some(_), Some(_)) => { bail!("Both VIRTUAL_ENV and CONDA_PREFIX are set. Please unset one of them") } (None, None) => { // No env var, try finding .venv } }; let current_dir = env::current_dir().context("Failed to detect current directory ಠ_ಠ")?; // .venv in the current or any parent directory for dir in current_dir.ancestors() { let dot_venv = dir.join(".venv"); if dot_venv.is_dir() { if !dot_venv.join("pyvenv.cfg").is_file() { bail!( "Expected {} to be a virtual environment, but pyvenv.cfg is missing", dot_venv.display() ); } let python = target.get_venv_python(&dot_venv); if !python.is_file() { bail!( "Your virtualenv at {} is broken. It contains a pyvenv.cfg but no python at {}", dot_venv.display(), python.display() ); } debug!("Found a virtualenv named .venv at {}", dot_venv.display()); return Ok(dot_venv); } } bail!( "Couldn't find a virtualenv or conda environment, but you need one to use this command. \ For maturin to find your virtualenv you need to either set VIRTUAL_ENV (through activate), \ set CONDA_PREFIX (through conda activate) or have a virtualenv called .venv in the current \ or any parent folder. \ See https://virtualenv.pypa.io/en/latest/index.html on how to use virtualenv or \ use `maturin build` and `pip install ` instead." ) } /// Dispatches into the native implementations of the PEP 517 functions /// /// The last line of stdout is used as return value from the python part of the implementation fn pep517(subcommand: Pep517Command) -> Result<()> { match subcommand { Pep517Command::WriteDistInfo { build_options, metadata_directory, strip, } => { assert_eq!(build_options.interpreter.len(), 1); let context = build_options.into_build_context(true, strip, false)?; // Since afaik all other PEP 517 backends also return linux tagged wheels, we do so too let tags = match context.bridge() { BridgeModel::Bindings(..) | BridgeModel::Bin(Some(..)) => { vec![context.interpreter[0].get_tag(&context, &[PlatformTag::Linux])?] } BridgeModel::BindingsAbi3(major, minor) => { let platform = context.get_platform_tag(&[PlatformTag::Linux])?; vec![format!("cp{major}{minor}-abi3-{platform}")] } BridgeModel::Bin(None) | BridgeModel::Cffi | BridgeModel::UniFfi => { context.get_universal_tags(&[PlatformTag::Linux])?.1 } }; let mut writer = PathWriter::from_path(metadata_directory); write_dist_info(&mut writer, &context.metadata23, &tags)?; println!("{}", context.metadata23.get_dist_info_dir().display()); } Pep517Command::BuildWheel { build_options, strip, editable, } => { let build_context = build_options.into_build_context(true, strip, editable)?; let wheels = build_context.build_wheels()?; assert_eq!(wheels.len(), 1); println!("{}", wheels[0].0.to_str().unwrap()); } Pep517Command::WriteSDist { sdist_directory, manifest_path, } => { let build_options = BuildOptions { out: Some(sdist_directory), cargo: CargoOptions { manifest_path, // Enable all features to ensure all optional path dependencies are packaged // into source distribution all_features: true, ..Default::default() }, ..Default::default() }; let build_context = build_options.into_build_context(false, false, false)?; let (path, _) = build_context .build_source_distribution()? .context("Failed to build source distribution, pyproject.toml not found")?; println!("{}", path.file_name().unwrap().to_str().unwrap()); } }; Ok(()) } #[instrument] fn run() -> Result<()> { #[cfg(feature = "zig")] { // Allow symlink `maturin` to `ar` to invoke `zig ar` // See https://github.com/messense/cargo-zigbuild/issues/52 let mut args = env::args(); let program_path = PathBuf::from(args.next().expect("no program path")); let program_name = program_path.file_stem().expect("no program name"); if program_name.eq_ignore_ascii_case("ar") { let zig = Zig::Ar { args: args.collect(), }; zig.execute()?; return Ok(()); } } #[cfg(not(feature = "wild"))] let opt = Opt::parse(); #[cfg(feature = "wild")] let opt = Opt::parse_from(wild::args_os()); setup_logging(opt.verbose)?; match opt.command { Command::Build { build, release, strip, sdist, } => { let build_context = build.into_build_context(release, strip, false)?; if sdist { build_context .build_source_distribution()? .context("Failed to build source distribution, pyproject.toml not found")?; } let wheels = build_context.build_wheels()?; assert!(!wheels.is_empty()); } #[cfg(feature = "upload")] Command::Publish { build, mut publish, debug, no_strip, no_sdist, } => { let build_context = build.into_build_context(!debug, !no_strip, false)?; if !build_context.release { eprintln!("⚠️ Warning: You're publishing debug wheels"); } let mut wheels = build_context.build_wheels()?; if !no_sdist { if let Some(sd) = build_context.build_source_distribution()? { wheels.push(sd); } } let items = wheels.into_iter().map(|wheel| wheel.0).collect::>(); publish.non_interactive_on_ci(); upload_ui(&items, &publish)? } Command::ListPython { target } => { let found = if target.is_some() { let target = Target::from_target_triple(target)?; PythonInterpreter::find_by_target(&target, None) } else { let target = Target::from_target_triple(None)?; // We don't know the targeted bindings yet, so we use the most lenient PythonInterpreter::find_all(&target, &BridgeModel::Cffi, None)? }; eprintln!("🐍 {} python interpreter found:", found.len()); for interpreter in found { eprintln!(" - {interpreter}"); } } Command::Develop(develop_options) => { let target = Target::from_target_triple(develop_options.cargo_options.target.clone())?; let venv_dir = detect_venv(&target)?; develop(develop_options, &venv_dir)?; } Command::SDist { manifest_path, out } => { let build_options = BuildOptions { out, cargo: CargoOptions { manifest_path, // Enable all features to ensure all optional path dependencies are packaged // into source distribution all_features: true, ..Default::default() }, ..Default::default() }; let build_context = build_options.into_build_context(false, false, false)?; build_context .build_source_distribution()? .context("Failed to build source distribution, pyproject.toml not found")?; } Command::Pep517(subcommand) => pep517(subcommand)?, #[cfg(feature = "scaffolding")] Command::InitProject { path, options } => init_project(path, options)?, #[cfg(feature = "scaffolding")] Command::NewProject { path, options } => new_project(path, options)?, #[cfg(feature = "scaffolding")] Command::GenerateCI(generate_ci) => generate_ci.execute()?, #[cfg(feature = "upload")] Command::Upload { mut publish, files } => { if files.is_empty() { eprintln!("⚠️ Warning: No files given, exiting."); return Ok(()); } publish.non_interactive_on_ci(); upload_ui(&files, &publish)? } #[cfg(feature = "cli-completion")] Command::Completions { shell } => { shell.generate(&mut Opt::command(), &mut std::io::stdout()); } #[cfg(feature = "zig")] Command::Zig(subcommand) => { subcommand .execute() .context("Failed to run zig linker wrapper")?; } #[cfg(feature = "schemars")] Command::GenerateJsonSchema(args) => generate_json_schema(args)?, } Ok(()) } #[cfg(not(debug_assertions))] fn setup_panic_hook() { let default_hook = std::panic::take_hook(); std::panic::set_hook(Box::new(move |panic_info| { eprintln!("\n==================================================================="); eprintln!("maturin has panicked. This is a bug in maturin. Please report this"); eprintln!("at https://github.com/PyO3/maturin/issues/new/choose."); eprintln!("If you can reliably reproduce this panic, include the"); eprintln!("reproduction steps and re-run with the RUST_BACKTRACE=1 environment"); eprintln!("variable set and include the backtrace in your report."); eprintln!(); eprintln!("Platform: {} {}", env::consts::OS, env::consts::ARCH); eprintln!("Version: {}", env!("CARGO_PKG_VERSION")); eprintln!("Args: {}", env::args().collect::>().join(" ")); eprintln!(); default_hook(panic_info); // Rust set exit code to 101 when the process panicked, // so here we use the same exit code std::process::exit(101); })); } fn setup_logging(verbose: u8) -> Result<()> { // `RUST_LOG` takes precedence over these let default_directive = match verbose { // `-v` runs `cargo build -v`, but doesn't show maturin debug logging yet. 0..=1 => tracing::level_filters::LevelFilter::OFF.into(), 2 => Directive::from_str("debug").unwrap(), 3.. => Directive::from_str("trace").unwrap(), }; let filter = EnvFilter::builder() .with_default_directive(default_directive) .from_env() .context("Invalid RUST_LOG directives")?; let logger = tracing_subscriber::fmt::layer() // Avoid showing all the details from the spans .compact() // Log the timing of each span .with_span_events(tracing_subscriber::fmt::format::FmtSpan::CLOSE); tracing_subscriber::registry() .with(logger.with_filter(filter)) .init(); Ok(()) } fn main() { #[cfg(not(debug_assertions))] setup_panic_hook(); if let Err(e) = run() { eprintln!("💥 maturin failed"); for cause in e.chain() { eprintln!(" Caused by: {cause}"); } std::process::exit(1); } } maturin-1.7.4/src/metadata.rs000066400000000000000000001034761467514767100161540ustar00rootroot00000000000000use crate::PyProjectToml; use anyhow::{bail, format_err, Context, Result}; use fs_err as fs; use indexmap::IndexMap; use pep440_rs::{Version, VersionSpecifiers}; use pep508_rs::{MarkerExpression, MarkerOperator, MarkerTree, MarkerValue, Requirement}; use pyproject_toml::License; use regex::Regex; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::fmt::Write as _; use std::path::{Path, PathBuf}; use std::str; use std::str::FromStr; /// The metadata required to generate the .dist-info directory #[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)] pub struct WheelMetadata { /// Python Package Metadata 2.3 pub metadata23: Metadata23, /// The `[console_scripts]` for the entry_points.txt pub scripts: HashMap, /// The name of the module can be distinct from the package name, mostly /// because package names normally contain minuses while module names /// have underscores. The package name is part of metadata23 pub module_name: String, } /// Python Package Metadata 2.3 as specified in /// https://packaging.python.org/specifications/core-metadata/ /// Maturin writes static metadata and does not support dynamic fields atm. #[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)] #[serde(rename_all = "kebab-case")] #[allow(missing_docs)] pub struct Metadata23 { // Mandatory fields pub metadata_version: String, pub name: String, pub version: Version, // Optional fields pub platform: Vec, pub supported_platform: Vec, pub summary: Option, pub description: Option, pub description_content_type: Option, pub keywords: Option, pub home_page: Option, pub download_url: Option, pub author: Option, pub author_email: Option, pub maintainer: Option, pub maintainer_email: Option, pub license: Option, // https://peps.python.org/pep-0639/#license-file-multiple-use pub license_files: Vec, pub classifiers: Vec, pub requires_dist: Vec, pub provides_dist: Vec, pub obsoletes_dist: Vec, pub requires_python: Option, pub requires_external: Vec, pub project_url: IndexMap, pub provides_extra: Vec, pub scripts: IndexMap, pub gui_scripts: IndexMap, pub entry_points: IndexMap>, } impl Metadata23 { /// Initializes with name, version and otherwise the defaults pub fn new(name: String, version: Version) -> Self { Self { metadata_version: "2.3".to_string(), name, version, platform: vec![], supported_platform: vec![], summary: None, description: None, description_content_type: None, keywords: None, home_page: None, download_url: None, author: None, author_email: None, maintainer: None, maintainer_email: None, license: None, license_files: vec![], classifiers: vec![], requires_dist: vec![], provides_dist: vec![], obsoletes_dist: vec![], requires_python: None, requires_external: vec![], project_url: Default::default(), provides_extra: vec![], scripts: Default::default(), gui_scripts: Default::default(), entry_points: Default::default(), } } } const PLAINTEXT_CONTENT_TYPE: &str = "text/plain; charset=UTF-8"; const GFM_CONTENT_TYPE: &str = "text/markdown; charset=UTF-8; variant=GFM"; /// Guess a Description-Content-Type based on the file extension, /// defaulting to plaintext if extension is unknown or empty. /// /// See https://packaging.python.org/specifications/core-metadata/#description-content-type fn path_to_content_type(path: &Path) -> String { path.extension() .map_or(String::from(PLAINTEXT_CONTENT_TYPE), |ext| { let ext = ext.to_string_lossy().to_lowercase(); let type_str = match ext.as_str() { "rst" => "text/x-rst; charset=UTF-8", "md" => GFM_CONTENT_TYPE, "markdown" => GFM_CONTENT_TYPE, _ => PLAINTEXT_CONTENT_TYPE, }; String::from(type_str) }) } impl Metadata23 { /// Merge metadata with pyproject.toml, where pyproject.toml takes precedence /// /// pyproject_dir must be the directory containing pyproject.toml pub fn merge_pyproject_toml( &mut self, pyproject_dir: impl AsRef, pyproject_toml: &PyProjectToml, ) -> Result<()> { let pyproject_dir = pyproject_dir.as_ref(); if let Some(project) = &pyproject_toml.project { self.name.clone_from(&project.name); if let Some(version) = &project.version { self.version = version.clone(); } if let Some(description) = &project.description { self.summary = Some(description.clone()); } match &project.readme { Some(pyproject_toml::ReadMe::RelativePath(readme_path)) => { let readme_path = pyproject_dir.join(readme_path); let description = Some(fs::read_to_string(&readme_path).context(format!( "Failed to read readme specified in pyproject.toml, which should be at {}", readme_path.display() ))?); self.description = description; self.description_content_type = Some(path_to_content_type(&readme_path)); } Some(pyproject_toml::ReadMe::Table { file, text, content_type, }) => { if file.is_some() && text.is_some() { bail!("file and text fields of 'project.readme' are mutually-exclusive, only one of them should be specified"); } if let Some(readme_path) = file { let readme_path = pyproject_dir.join(readme_path); let description = Some(fs::read_to_string(&readme_path).context(format!( "Failed to read readme specified in pyproject.toml, which should be at {}", readme_path.display() ))?); self.description = description; } if let Some(description) = text { self.description = Some(description.clone()); } self.description_content_type.clone_from(content_type); } None => {} } if let Some(requires_python) = &project.requires_python { self.requires_python = Some(requires_python.clone()); } if let Some(license) = &project.license { match license { // TODO: switch to License-Expression core metadata, see https://peps.python.org/pep-0639/#add-license-expression-field License::String(license_expr) => self.license = Some(license_expr.clone()), License::Table { file, text } => match (file, text) { (Some(_), Some(_)) => { bail!("file and text fields of 'project.license' are mutually-exclusive, only one of them should be specified"); } (Some(license_path), None) => { let license_path = pyproject_dir.join(license_path); self.license_files.push(license_path); } (None, Some(license_text)) => self.license = Some(license_text.clone()), (None, None) => {} }, } } // Until PEP 639 is approved with metadata 2.3, we can assume a // dynamic license-files (also awaiting full 2.2 metadata support) // We're already emitting the License-Files metadata without issue. // license-files.globs = ["LICEN[CS]E*", "COPYING*", "NOTICE*", "AUTHORS*"] let license_include_targets = ["LICEN[CS]E*", "COPYING*", "NOTICE*", "AUTHORS*"]; let escaped_manifest_string = glob::Pattern::escape(pyproject_dir.to_str().unwrap()); let escaped_manifest_path = Path::new(&escaped_manifest_string); for pattern in license_include_targets.iter() { for license_path in glob::glob(&escaped_manifest_path.join(pattern).to_string_lossy())? .filter_map(Result::ok) { if !license_path.is_file() { continue; } // if the pyproject.toml specified the license file, // then we won't list it as automatically included if !self.license_files.contains(&license_path) { eprintln!("📦 Including license file \"{}\"", license_path.display()); self.license_files.push(license_path); } } } if let Some(authors) = &project.authors { let mut names = Vec::with_capacity(authors.len()); let mut emails = Vec::with_capacity(authors.len()); for author in authors { match (&author.name, &author.email) { (Some(name), Some(email)) => { emails.push(escape_email_with_display_name(name, email)); } (Some(name), None) => { names.push(name.as_str()); } (None, Some(email)) => { emails.push(email.clone()); } (None, None) => {} } } if !names.is_empty() { self.author = Some(names.join(", ")); } if !emails.is_empty() { self.author_email = Some(emails.join(", ")); } } if let Some(maintainers) = &project.maintainers { let mut names = Vec::with_capacity(maintainers.len()); let mut emails = Vec::with_capacity(maintainers.len()); for maintainer in maintainers { match (&maintainer.name, &maintainer.email) { (Some(name), Some(email)) => { emails.push(escape_email_with_display_name(name, email)); } (Some(name), None) => { names.push(name.as_str()); } (None, Some(email)) => { emails.push(email.clone()); } (None, None) => {} } } if !names.is_empty() { self.maintainer = Some(names.join(", ")); } if !emails.is_empty() { self.maintainer_email = Some(emails.join(", ")); } } if let Some(keywords) = &project.keywords { self.keywords = Some(keywords.join(",")); } if let Some(classifiers) = &project.classifiers { self.classifiers.clone_from(classifiers); } if let Some(urls) = &project.urls { self.project_url.clone_from(urls); } if let Some(dependencies) = &project.dependencies { self.requires_dist.clone_from(dependencies); } if let Some(dependencies) = &project.optional_dependencies { // Transform the extra -> deps map into the PEP 508 style `dep ; extras = ...` style for (extra, deps) in dependencies { self.provides_extra.push(extra.clone()); for dep in deps { let mut dep = dep.clone(); // Keep in sync with `develop()`! let new_extra = MarkerTree::Expression(MarkerExpression { l_value: MarkerValue::Extra, operator: MarkerOperator::Equal, r_value: MarkerValue::QuotedString(extra.to_string()), }); if let Some(existing) = dep.marker.take() { dep.marker = Some(MarkerTree::And(vec![existing, new_extra])); } else { dep.marker = Some(new_extra); } self.requires_dist.push(dep); } } } if let Some(scripts) = &project.scripts { self.scripts.clone_from(scripts); } if let Some(gui_scripts) = &project.gui_scripts { self.gui_scripts.clone_from(gui_scripts); } if let Some(entry_points) = &project.entry_points { // Raise error on ambiguous entry points: https://www.python.org/dev/peps/pep-0621/#entry-points if entry_points.contains_key("console_scripts") { bail!("console_scripts is not allowed in project.entry-points table"); } if entry_points.contains_key("gui_scripts") { bail!("gui_scripts is not allowed in project.entry-points table"); } self.entry_points.clone_from(entry_points); } } Ok(()) } /// Uses a Cargo.toml to create the metadata for python packages /// /// manifest_path must be the directory, not the file pub fn from_cargo_toml( manifest_path: impl AsRef, cargo_metadata: &cargo_metadata::Metadata, ) -> Result { let package = cargo_metadata .root_package() .context("Expected cargo to return metadata with root_package")?; let authors = package.authors.join(", "); let author_email = if authors.contains('@') { Some(authors.clone()) } else { None }; let mut description: Option = None; let mut description_content_type: Option = None; // See https://packaging.python.org/specifications/core-metadata/#description // and https://doc.rust-lang.org/cargo/reference/manifest.html#the-readme-field if package.readme == Some("false".into()) { // > You can suppress this behavior by setting this field to false } else if let Some(ref readme) = package.readme { let readme_path = manifest_path.as_ref().join(readme); description = Some(fs::read_to_string(&readme_path).context(format!( "Failed to read Readme specified in Cargo.toml, which should be at {}", readme_path.display() ))?); description_content_type = Some(path_to_content_type(&readme_path)); } else { // > If no value is specified for this field, and a file named // > README.md, README.txt or README exists in the package root // Even though it's not what cargo does, we also search for README.rst // since it's still popular in the python world for readme_guess in ["README.md", "README.txt", "README.rst", "README"] { let guessed_readme = manifest_path.as_ref().join(readme_guess); if guessed_readme.exists() { let context = format!( "Readme at {} exists, but can't be read", guessed_readme.display() ); description = Some(fs::read_to_string(&guessed_readme).context(context)?); description_content_type = Some(path_to_content_type(&guessed_readme)); break; } } }; let name = package.name.clone(); let mut project_url = IndexMap::new(); if let Some(repository) = package.repository.as_ref() { project_url.insert("Source Code".to_string(), repository.clone()); } let license_files = if let Some(license_file) = package.license_file.as_ref() { vec![manifest_path.as_ref().join(license_file)] } else { Vec::new() }; let version = Version::from_str(&package.version.to_string()).map_err(|err| { format_err!( "Rust version used in Cargo.toml is not a valid python version: {}. \ Note that rust uses [SemVer](https://semver.org/) while python uses \ [PEP 440](https://peps.python.org/pep-0440/), which have e.g. some differences \ when declaring prereleases.", err ) })?; let metadata = Metadata23 { // name, version and metadata_version are added through metadata23::new() // Mapped from cargo metadata summary: package.description.clone(), description, description_content_type, keywords: if package.keywords.is_empty() { None } else { Some(package.keywords.join(",")) }, home_page: package.homepage.clone(), download_url: None, // Cargo.toml has no distinction between author and author email author: if package.authors.is_empty() { None } else { Some(authors) }, author_email, license: package.license.clone(), license_files, project_url, ..Metadata23::new(name, version) }; Ok(metadata) } /// Formats the metadata into a list where keys with multiple values /// become multiple single-valued key-value pairs. This format is needed for the pypi /// uploader and for the METADATA file inside wheels pub fn to_vec(&self) -> Vec<(String, String)> { let mut fields = vec![ ("Metadata-Version", self.metadata_version.clone()), ("Name", self.name.clone()), ("Version", self.version.to_string()), ]; let mut add_vec = |name, values: &[String]| { for i in values { fields.push((name, i.clone())); } }; add_vec("Platform", &self.platform); add_vec("Supported-Platform", &self.supported_platform); add_vec("Classifier", &self.classifiers); add_vec( "Requires-Dist", &self .requires_dist .iter() .map(ToString::to_string) .collect::>(), ); add_vec("Provides-Dist", &self.provides_dist); add_vec("Obsoletes-Dist", &self.obsoletes_dist); add_vec("Requires-External", &self.requires_external); add_vec("Provides-Extra", &self.provides_extra); let license_files: Vec = self .license_files .iter() .map(|path| path.file_name().unwrap().to_str().unwrap().to_string()) .collect(); add_vec("License-File", &license_files); let mut add_option = |name, value: &Option| { if let Some(some) = value.clone() { fields.push((name, some)); } }; add_option("Summary", &self.summary); add_option("Keywords", &self.keywords); add_option("Home-Page", &self.home_page); add_option("Download-URL", &self.download_url); add_option("Author", &self.author); add_option("Author-email", &self.author_email); add_option("Maintainer", &self.maintainer); add_option("Maintainer-email", &self.maintainer_email); add_option("License", &self.license.as_deref().map(fold_header)); add_option( "Requires-Python", &self .requires_python .as_ref() .map(|requires_python| requires_python.to_string()), ); add_option("Description-Content-Type", &self.description_content_type); // Project-URL is special // "A string containing a browsable URL for the project and a label for it, separated by a comma." // `Project-URL: Bug Tracker, http://bitbucket.org/tarek/distribute/issues/` for (key, value) in self.project_url.iter() { fields.push(("Project-URL", format!("{key}, {value}"))) } // Description shall be last, so we can ignore RFC822 and just put the description // in the body // The borrow checker doesn't like us using add_option here if let Some(description) = &self.description { fields.push(("Description", description.clone())); } fields .into_iter() .map(|(k, v)| (k.to_string(), v)) .collect() } /// Writes the format for the metadata file inside wheels pub fn to_file_contents(&self) -> Result { let mut fields = self.to_vec(); let mut out = "".to_string(); let body = match fields.last() { Some((key, description)) if key == "Description" => { let desc = description.clone(); fields.pop().unwrap(); Some(desc) } Some((_, _)) => None, None => None, }; for (key, value) in fields { writeln!(out, "{key}: {value}")?; } if let Some(body) = body { writeln!(out, "\n{body}")?; } Ok(out) } /// Returns the distribution name according to PEP 427, Section "Escaping /// and Unicode" pub fn get_distribution_escaped(&self) -> String { let re = Regex::new(r"[^\w\d.]+").unwrap(); re.replace_all(&self.name, "_").to_string() } /// Returns the version encoded according to PEP 427, Section "Escaping /// and Unicode" pub fn get_version_escaped(&self) -> String { self.version.to_string().replace('-', "_") } /// Returns the name of the .dist-info directory as defined in the wheel specification pub fn get_dist_info_dir(&self) -> PathBuf { PathBuf::from(format!( "{}-{}.dist-info", &self.get_distribution_escaped(), &self.get_version_escaped() )) } } /// Escape email addresses with display name if necessary /// according to RFC 822 Section 3.3. "specials". fn escape_email_with_display_name(display_name: &str, email: &str) -> String { if display_name.chars().any(|c| { matches!( c, '(' | ')' | '<' | '>' | '@' | ',' | ';' | ':' | '\\' | '"' | '.' | '[' | ']' ) }) { return format!( "\"{}\" <{email}>", display_name.replace('\\', "\\\\").replace('\"', "\\\"") ); } format!("{display_name} <{email}>") } /// Fold long header field according to RFC 5322 section 2.2.3 /// https://datatracker.ietf.org/doc/html/rfc5322#section-2.2.3 fn fold_header(text: &str) -> String { let mut result = String::with_capacity(text.len()); let options = textwrap::Options::new(78) .initial_indent("") .subsequent_indent("\t"); for (i, line) in textwrap::wrap(text, options).iter().enumerate() { if i > 0 { result.push_str("\r\n"); } let line = line.trim_end(); if line.is_empty() { result.push('\t'); } else { result.push_str(line); } } result } #[cfg(test)] mod test { use super::*; use cargo_metadata::MetadataCommand; use expect_test::{expect, Expect}; use indoc::indoc; use pretty_assertions::assert_eq; fn assert_metadata_from_cargo_toml( readme: &str, cargo_toml: &str, expected: Expect, ) -> Metadata23 { let crate_dir = tempfile::tempdir().unwrap(); let crate_path = crate_dir.path(); let manifest_path = crate_path.join("Cargo.toml"); fs::create_dir(crate_path.join("src")).unwrap(); fs::write(crate_path.join("src/lib.rs"), "").unwrap(); let readme_path = crate_path.join("README.md"); fs::write(&readme_path, readme.as_bytes()).unwrap(); let readme_path = if cfg!(windows) { readme_path.to_str().unwrap().replace('\\', "/") } else { readme_path.to_str().unwrap().to_string() }; let toml_with_path = cargo_toml.replace("REPLACE_README_PATH", &readme_path); fs::write(&manifest_path, toml_with_path).unwrap(); let cargo_metadata = MetadataCommand::new() .manifest_path(manifest_path) .exec() .unwrap(); let metadata = Metadata23::from_cargo_toml(crate_path, &cargo_metadata).unwrap(); let actual = metadata.to_file_contents().unwrap(); expected.assert_eq(&actual); // get_dist_info_dir test checks against hard-coded values - check that they are as expected in the source first assert!( cargo_toml.contains("name = \"info-project\"") && cargo_toml.contains("version = \"0.1.0\""), "cargo_toml name and version string do not match hardcoded values, test will fail", ); metadata } #[test] fn test_metadata_from_cargo_toml() { let readme = indoc!( r#" # Some test package This is the readme for a test package "# ); let cargo_toml = indoc!( r#" [package] authors = ["konstin "] name = "info-project" version = "0.1.0" description = "A test project" homepage = "https://example.org" readme = "REPLACE_README_PATH" keywords = ["ffi", "test"] [lib] crate-type = ["cdylib"] name = "pyo3_pure" "# ); let expected = expect![[r#" Metadata-Version: 2.3 Name: info-project Version: 0.1.0 Summary: A test project Keywords: ffi,test Home-Page: https://example.org Author: konstin Author-email: konstin Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM # Some test package This is the readme for a test package "#]]; assert_metadata_from_cargo_toml(readme, cargo_toml, expected); } #[test] fn test_path_to_content_type() { for (filename, expected) in &[ ("r.md", GFM_CONTENT_TYPE), ("r.markdown", GFM_CONTENT_TYPE), ("r.mArKdOwN", GFM_CONTENT_TYPE), ("r.rst", "text/x-rst; charset=UTF-8"), ("r.somethingelse", PLAINTEXT_CONTENT_TYPE), ("r", PLAINTEXT_CONTENT_TYPE), ] { let result = path_to_content_type(&PathBuf::from(filename)); assert_eq!( &result.as_str(), expected, "Wrong content type for file '{}'. Expected '{}', got '{}'", filename, expected, result ); } } #[test] fn test_merge_metadata_from_pyproject_toml() { let manifest_dir = PathBuf::from("test-crates").join("pyo3-pure"); let cargo_metadata = MetadataCommand::new() .manifest_path(manifest_dir.join("Cargo.toml")) .exec() .unwrap(); let mut metadata = Metadata23::from_cargo_toml(&manifest_dir, &cargo_metadata).unwrap(); let pyproject_toml = PyProjectToml::new(manifest_dir.join("pyproject.toml")).unwrap(); metadata .merge_pyproject_toml(&manifest_dir, &pyproject_toml) .unwrap(); assert_eq!( metadata.summary, Some("Implements a dummy function in Rust".to_string()) ); assert_eq!( metadata.description, Some(fs_err::read_to_string("test-crates/pyo3-pure/README.md").unwrap()) ); assert_eq!(metadata.classifiers, &["Programming Language :: Rust"]); assert_eq!( metadata.maintainer_email, Some("messense ".to_string()) ); assert_eq!(metadata.scripts["get_42"], "pyo3_pure:DummyClass.get_42"); assert_eq!( metadata.gui_scripts["get_42_gui"], "pyo3_pure:DummyClass.get_42" ); assert_eq!(metadata.provides_extra, &["test"]); assert_eq!( metadata.requires_dist, &[ Requirement::from_str("attrs; extra == 'test'",).unwrap(), Requirement::from_str("boltons; (sys_platform == 'win32') and extra == 'test'") .unwrap(), ] ); assert_eq!(metadata.license.as_ref().unwrap(), "MIT"); let license_file = &metadata.license_files[0]; assert_eq!(license_file.file_name().unwrap(), "LICENSE"); let content = metadata.to_file_contents().unwrap(); let pkginfo: Result = content.parse(); assert!(pkginfo.is_ok()); } #[test] fn test_merge_metadata_from_pyproject_toml_with_customized_python_source_dir() { let manifest_dir = PathBuf::from("test-crates").join("pyo3-mixed-py-subdir"); let cargo_metadata = MetadataCommand::new() .manifest_path(manifest_dir.join("Cargo.toml")) .exec() .unwrap(); let mut metadata = Metadata23::from_cargo_toml(&manifest_dir, &cargo_metadata).unwrap(); let pyproject_toml = PyProjectToml::new(manifest_dir.join("pyproject.toml")).unwrap(); metadata .merge_pyproject_toml(&manifest_dir, &pyproject_toml) .unwrap(); // defined in Cargo.toml assert_eq!( metadata.summary, Some("Implements a dummy function combining rust and python".to_string()) ); // defined in pyproject.toml assert_eq!(metadata.scripts["get_42"], "pyo3_mixed_py_subdir:get_42"); } #[test] fn test_implicit_readme() { let manifest_dir = PathBuf::from("test-crates").join("pyo3-mixed"); let cargo_metadata = MetadataCommand::new() .manifest_path(manifest_dir.join("Cargo.toml")) .exec() .unwrap(); let metadata = Metadata23::from_cargo_toml(&manifest_dir, &cargo_metadata).unwrap(); assert!(metadata.description.unwrap().starts_with("# pyo3-mixed")); assert_eq!( metadata.description_content_type.unwrap(), "text/markdown; charset=UTF-8; variant=GFM" ); } #[test] fn test_merge_metadata_from_pyproject_dynamic_license_test() { let manifest_dir = PathBuf::from("test-crates").join("license-test"); let cargo_metadata = MetadataCommand::new() .manifest_path(manifest_dir.join("Cargo.toml")) .exec() .unwrap(); let mut metadata = Metadata23::from_cargo_toml(&manifest_dir, &cargo_metadata).unwrap(); let pyproject_toml = PyProjectToml::new(manifest_dir.join("pyproject.toml")).unwrap(); metadata .merge_pyproject_toml(&manifest_dir, &pyproject_toml) .unwrap(); // verify Cargo.toml value came through assert_eq!(metadata.license.as_ref().unwrap(), "MIT"); // verify we have the total number of expected licenses assert_eq!(4, metadata.license_files.len()); // Verify pyproject.toml license = {file = ...} worked assert_eq!(metadata.license_files[0], manifest_dir.join("LICENCE.txt")); // Verify the default licenses were included assert_eq!(metadata.license_files[1], manifest_dir.join("LICENSE")); assert_eq!(metadata.license_files[2], manifest_dir.join("NOTICE.md")); assert_eq!(metadata.license_files[3], manifest_dir.join("AUTHORS.txt")); } #[test] fn test_escape_email_with_display_name_without_special_characters() { let display_name = "Foo Bar !#$%&'*+-/=?^_`{|}~ 123"; let email = "foobar-123@example.com"; let result = escape_email_with_display_name(display_name, email); assert_eq!( result, "Foo Bar !#$%&'*+-/=?^_`{|}~ 123 " ); } #[test] fn test_escape_email_with_display_name_with_special_characters() { let tests = [ ("Foo ( Bar", "\"Foo ( Bar\""), ("Foo ) Bar", "\"Foo ) Bar\""), ("Foo < Bar", "\"Foo < Bar\""), ("Foo > Bar", "\"Foo > Bar\""), ("Foo @ Bar", "\"Foo @ Bar\""), ("Foo , Bar", "\"Foo , Bar\""), ("Foo ; Bar", "\"Foo ; Bar\""), ("Foo : Bar", "\"Foo : Bar\""), ("Foo \\ Bar", "\"Foo \\\\ Bar\""), ("Foo \" Bar", "\"Foo \\\" Bar\""), ("Foo . Bar", "\"Foo . Bar\""), ("Foo [ Bar", "\"Foo [ Bar\""), ("Foo ] Bar", "\"Foo ] Bar\""), ("Foo ) Bar", "\"Foo ) Bar\""), ("Foo ) Bar", "\"Foo ) Bar\""), ("Foo, Bar", "\"Foo, Bar\""), ]; for (display_name, expected_name) in tests { let email = "foobar-123@example.com"; let result = escape_email_with_display_name(display_name, email); let expected = format!("{expected_name} <{email}>"); assert_eq!(result, expected); } } } maturin-1.7.4/src/module_writer.rs000066400000000000000000001455701467514767100172560ustar00rootroot00000000000000//! The wheel format is (mostly) specified in PEP 427 use crate::project_layout::ProjectLayout; use crate::target::Os; use crate::{ pyproject_toml::Format, BridgeModel, Metadata23, PyProjectToml, PythonInterpreter, Target, }; use anyhow::{anyhow, bail, Context, Result}; use base64::engine::general_purpose::URL_SAFE_NO_PAD; use base64::Engine; use flate2::write::GzEncoder; use flate2::Compression; use fs_err as fs; #[cfg(unix)] use fs_err::os::unix::fs::OpenOptionsExt; use fs_err::File; #[cfg(unix)] use fs_err::OpenOptions; use ignore::overrides::Override; use ignore::WalkBuilder; use indexmap::IndexMap; use normpath::PathExt as _; use same_file::is_same_file; use sha2::{Digest, Sha256}; use std::collections::HashMap; use std::env; use std::ffi::OsStr; use std::fmt::Write as _; use std::io; use std::io::{Read, Write}; #[cfg(unix)] use std::os::unix::fs::PermissionsExt; use std::path::{Path, PathBuf}; use std::process::{Command, Output}; use std::str; use tempfile::{tempdir, TempDir}; use tracing::{debug, instrument}; use zip::{self, DateTime, ZipWriter}; /// Allows writing the module to a wheel or add it directly to the virtualenv pub trait ModuleWriter { /// Adds a directory relative to the module base path fn add_directory(&mut self, path: impl AsRef) -> Result<()>; /// Adds a file with bytes as content in target relative to the module base path. /// /// For generated files, `source` is `None`. fn add_bytes( &mut self, target: impl AsRef, source: Option<&Path>, bytes: &[u8], ) -> Result<()> { debug!("Adding {}", target.as_ref().display()); // 0o644 is the default from the zip crate self.add_bytes_with_permissions(target, source, bytes, 0o644) } /// Adds a file with bytes as content in target relative to the module base path while setting /// the given unix permissions /// /// For generated files, `source` is `None`. fn add_bytes_with_permissions( &mut self, target: impl AsRef, source: Option<&Path>, bytes: &[u8], permissions: u32, ) -> Result<()>; /// Copies the source file to the target path relative to the module base path fn add_file(&mut self, target: impl AsRef, source: impl AsRef) -> Result<()> { self.add_file_with_permissions(target, source, 0o644) } /// Copies the source file the target path relative to the module base path while setting /// the given unix permissions fn add_file_with_permissions( &mut self, target: impl AsRef, source: impl AsRef, permissions: u32, ) -> Result<()> { let target = target.as_ref(); let source = source.as_ref(); debug!("Adding {} from {}", target.display(), source.display()); let read_failed_context = format!("Failed to read {}", source.display()); let mut file = File::open(source).context(read_failed_context.clone())?; let mut buffer = Vec::new(); file.read_to_end(&mut buffer).context(read_failed_context)?; self.add_bytes_with_permissions(target, Some(source), &buffer, permissions) .context(format!("Failed to write to {}", target.display()))?; Ok(()) } } /// A [ModuleWriter] that adds the module somewhere in the filesystem, e.g. in a virtualenv pub struct PathWriter { base_path: PathBuf, record: Vec<(String, String, usize)>, file_tracker: FileTracker, } impl PathWriter { /// Creates a [ModuleWriter] that adds the module to the current virtualenv pub fn venv(target: &Target, venv_dir: &Path, bridge: &BridgeModel) -> Result { let interpreter = PythonInterpreter::check_executable(target.get_venv_python(venv_dir), target, bridge)? .ok_or_else(|| { anyhow!("Expected `python` to be a python interpreter inside a virtualenv ಠ_ಠ") })?; let base_path = interpreter.get_venv_site_package(venv_dir, target); Ok(PathWriter { base_path, record: Vec::new(), file_tracker: FileTracker::default(), }) } /// Writes the module to the given path pub fn from_path(path: impl AsRef) -> Self { Self { base_path: path.as_ref().to_path_buf(), record: Vec::new(), file_tracker: FileTracker::default(), } } /// Removes a directory relative to the base path if it exists. /// /// This is to clean up the contents of an older develop call pub fn delete_dir(&self, relative: impl AsRef) -> Result<()> { let absolute = self.base_path.join(relative); if absolute.exists() { fs::remove_dir_all(&absolute) .context(format!("Failed to remove {}", absolute.display()))?; } Ok(()) } /// Writes the RECORD file after everything else has been written pub fn write_record(self, metadata23: &Metadata23) -> Result<()> { let record_file = self .base_path .join(metadata23.get_dist_info_dir()) .join("RECORD"); let mut buffer = File::create(&record_file).context(format!( "Failed to create a file at {}", record_file.display() ))?; for (filename, hash, len) in self.record { buffer .write_all(format!("{filename},sha256={hash},{len}\n").as_bytes()) .context(format!( "Failed to write to file at {}", record_file.display() ))?; } // Write the record for the RECORD file itself buffer .write_all(format!("{},,\n", record_file.display()).as_bytes()) .context(format!( "Failed to write to file at {}", record_file.display() ))?; Ok(()) } } impl ModuleWriter for PathWriter { fn add_directory(&mut self, path: impl AsRef) -> Result<()> { let target = self.base_path.join(path); debug!("Adding directory {}", target.display()); fs::create_dir_all(target)?; Ok(()) } fn add_bytes_with_permissions( &mut self, target: impl AsRef, source: Option<&Path>, bytes: &[u8], permissions: u32, ) -> Result<()> { let path = self.base_path.join(&target); if !self.file_tracker.add_file(target.as_ref(), source)? { // Ignore duplicate files. return Ok(()); } // We only need to set the executable bit on unix let mut file = { #[cfg(target_family = "unix")] { OpenOptions::new() .create(true) .write(true) .truncate(true) .mode(permissions) .open(&path) } #[cfg(target_os = "windows")] { File::create(&path) } } .context(format!("Failed to create a file at {}", path.display()))?; file.write_all(bytes) .context(format!("Failed to write to file at {}", path.display()))?; let hash = URL_SAFE_NO_PAD.encode(Sha256::digest(bytes)); self.record.push(( target.as_ref().to_str().unwrap().to_owned(), hash, bytes.len(), )); Ok(()) } } /// A glorified zip builder, mostly useful for writing the record file of a wheel pub struct WheelWriter { zip: ZipWriter, record: Vec<(String, String, usize)>, record_file: PathBuf, wheel_path: PathBuf, file_tracker: FileTracker, excludes: Override, } impl ModuleWriter for WheelWriter { fn add_directory(&mut self, _path: impl AsRef) -> Result<()> { Ok(()) // We don't need to create directories in zip archives } fn add_bytes_with_permissions( &mut self, target: impl AsRef, source: Option<&Path>, bytes: &[u8], permissions: u32, ) -> Result<()> { let target = target.as_ref(); if self.exclude(target) { return Ok(()); } if !self.file_tracker.add_file(target, source)? { // Ignore duplicate files. return Ok(()); } // The zip standard mandates using unix style paths let target = target.to_str().unwrap().replace('\\', "/"); // Unlike users which can use the develop subcommand, the tests have to go through // packing a zip which pip than has to unpack. This makes this 2-3 times faster let compression_method = if cfg!(feature = "faster-tests") { zip::CompressionMethod::Stored } else { zip::CompressionMethod::Deflated }; let mut options = zip::write::FileOptions::default() .unix_permissions(permissions) .compression_method(compression_method); let mtime = self.mtime().ok(); if let Some(mtime) = mtime { options = options.last_modified_time(mtime); } self.zip.start_file(target.clone(), options)?; self.zip.write_all(bytes)?; let hash = URL_SAFE_NO_PAD.encode(Sha256::digest(bytes)); self.record.push((target, hash, bytes.len())); Ok(()) } } impl WheelWriter { /// Create a new wheel file which can be subsequently expanded /// /// Adds the .dist-info directory and the METADATA file in it pub fn new( tag: &str, wheel_dir: &Path, metadata23: &Metadata23, tags: &[String], excludes: Override, ) -> Result { let wheel_path = wheel_dir.join(format!( "{}-{}-{}.whl", metadata23.get_distribution_escaped(), metadata23.get_version_escaped(), tag )); let file = File::create(&wheel_path)?; let mut builder = WheelWriter { zip: ZipWriter::new(file), record: Vec::new(), record_file: metadata23.get_dist_info_dir().join("RECORD"), wheel_path, file_tracker: FileTracker::default(), excludes, }; write_dist_info(&mut builder, metadata23, tags)?; Ok(builder) } /// Add a pth file to wheel root for editable installs pub fn add_pth( &mut self, project_layout: &ProjectLayout, metadata23: &Metadata23, ) -> Result<()> { if project_layout.python_module.is_some() || !project_layout.python_packages.is_empty() { let absolute_path = project_layout .python_dir .normalize() .with_context(|| { format!( "failed to normalize python dir path `{}`", project_layout.python_dir.display() ) })? .into_path_buf(); if let Some(python_path) = absolute_path.to_str() { let name = metadata23.get_distribution_escaped(); let target = format!("{name}.pth"); debug!("Adding {} from {}", target, python_path); self.add_bytes(target, None, python_path.as_bytes())?; } else { eprintln!("⚠️ source code path contains non-Unicode sequences, editable installs may not work."); } } Ok(()) } /// Returns `true` if the given path should be excluded fn exclude(&self, path: impl AsRef) -> bool { self.excludes.matched(path.as_ref(), false).is_whitelist() } /// Returns a DateTime representing the value SOURCE_DATE_EPOCH environment variable /// Note that the earliest timestamp a zip file can represent is 1980-01-01 fn mtime(&self) -> Result { let epoch: i64 = env::var("SOURCE_DATE_EPOCH")?.parse()?; let dt = time::OffsetDateTime::from_unix_timestamp(epoch)?; let min_dt = time::Date::from_calendar_date(1980, time::Month::January, 1) .unwrap() .midnight() .assume_offset(time::UtcOffset::UTC); let dt = dt.max(min_dt); let dt = DateTime::try_from(dt).map_err(|_| anyhow!("Failed to build zip DateTime"))?; Ok(dt) } /// Creates the record file and finishes the zip pub fn finish(mut self) -> Result { let compression_method = if cfg!(feature = "faster-tests") { zip::CompressionMethod::Stored } else { zip::CompressionMethod::Deflated }; let mut options = zip::write::FileOptions::default().compression_method(compression_method); let mtime = self.mtime().ok(); if let Some(mtime) = mtime { options = options.last_modified_time(mtime); } let record_filename = self.record_file.to_str().unwrap().replace('\\', "/"); debug!("Adding {}", record_filename); self.zip.start_file(&record_filename, options)?; for (filename, hash, len) in self.record { self.zip .write_all(format!("{filename},sha256={hash},{len}\n").as_bytes())?; } // Write the record for the RECORD file itself self.zip .write_all(format!("{record_filename},,\n").as_bytes())?; self.zip.finish()?; Ok(self.wheel_path) } } /// Creates a .tar.gz archive containing the source distribution pub struct SDistWriter { tar: tar::Builder>>, path: PathBuf, file_tracker: FileTracker, excludes: Override, } impl ModuleWriter for SDistWriter { fn add_directory(&mut self, _path: impl AsRef) -> Result<()> { Ok(()) } fn add_bytes_with_permissions( &mut self, target: impl AsRef, source: Option<&Path>, bytes: &[u8], permissions: u32, ) -> Result<()> { let target = target.as_ref(); if self.exclude(target) { return Ok(()); } if !self.file_tracker.add_file(target, source)? { // Ignore duplicate files. return Ok(()); } let mut header = tar::Header::new_gnu(); header.set_size(bytes.len() as u64); header.set_mode(permissions); header.set_cksum(); self.tar .append_data(&mut header, target, bytes) .context(format!( "Failed to add {} bytes to sdist as {}", bytes.len(), target.display() ))?; Ok(()) } fn add_file(&mut self, target: impl AsRef, source: impl AsRef) -> Result<()> { let source = source.as_ref(); if self.exclude(source) { return Ok(()); } let target = target.as_ref(); if !self.file_tracker.add_file(target, Some(source))? { // Ignore duplicate files. return Ok(()); } debug!("Adding {} from {}", target.display(), source.display()); self.tar .append_path_with_name(source, target) .context(format!( "Failed to add file from {} to sdist as {}", source.display(), target.display(), ))?; Ok(()) } } impl SDistWriter { /// Create a source distribution .tar.gz which can be subsequently expanded pub fn new( wheel_dir: impl AsRef, metadata23: &Metadata23, excludes: Override, ) -> Result { let path = wheel_dir .as_ref() .normalize()? .join(format!( "{}-{}.tar.gz", &metadata23.get_distribution_escaped(), &metadata23.get_version_escaped() )) .into_path_buf(); let enc = GzEncoder::new(Vec::new(), Compression::default()); let tar = tar::Builder::new(enc); Ok(Self { tar, path, file_tracker: FileTracker::default(), excludes, }) } /// Returns `true` if the given path should be excluded fn exclude(&self, path: impl AsRef) -> bool { self.excludes.matched(path.as_ref(), false).is_whitelist() } /// Finished the .tar.gz archive pub fn finish(self) -> Result { let archive = self.tar.into_inner()?; fs::write(&self.path, archive.finish()?)?; Ok(self.path) } } /// Keep track of which files we added from where, so we can skip duplicate files and error when /// adding conflicting files. /// /// The wrapped type contains as key the path added to the archive and as value the originating path /// on the file system or `None` for generated files. #[derive(Default)] struct FileTracker(HashMap>); impl FileTracker { /// Returns `true` if the file should be added, `false` if an identical file was already added /// (skip) and an error if a different file was already added. fn add_file(&mut self, target: &Path, source: Option<&Path>) -> Result { let Some(previous_source) = self .0 .insert(target.to_path_buf(), source.map(|path| path.to_path_buf())) else { // The path doesn't exist in the archive yet. return Ok(true); }; match (previous_source, source) { (None, None) => { bail!( "Generated file {} was already added, can't add it again", target.display() ); } (Some(previous_source), None) => { bail!( "File {} was already added from {}, can't overwrite with generated file", target.display(), previous_source.display() ) } (None, Some(source)) => { bail!( "Generated file {} was already added, can't overwrite it with {}", target.display(), source.display() ); } (Some(previous_source), Some(source)) => { if is_same_file(source, &previous_source).unwrap_or(false) { // Ignore identical duplicate files Ok(false) } else { bail!( "File {} was already added from {}, can't added it from {}", target.display(), previous_source.display(), source.display() ); } } } } } fn wheel_file(tags: &[String]) -> Result { let mut wheel_file = format!( "Wheel-Version: 1.0 Generator: {name} ({version}) Root-Is-Purelib: false ", name = env!("CARGO_PKG_NAME"), version = env!("CARGO_PKG_VERSION"), ); for tag in tags { writeln!(wheel_file, "Tag: {tag}")?; } Ok(wheel_file) } /// https://packaging.python.org/specifications/entry-points/ fn entry_points_txt( entry_type: &str, entrypoints: &IndexMap, ) -> String { entrypoints .iter() .fold(format!("[{entry_type}]\n"), |text, (k, v)| { text + k + "=" + v + "\n" }) } /// Glue code that exposes `lib`. fn cffi_init_file(extension_name: &str) -> String { format!( r#"__all__ = ["lib", "ffi"] import os from .ffi import ffi lib = ffi.dlopen(os.path.join(os.path.dirname(__file__), '{extension_name}.so')) del os "# ) } /// Wraps some boilerplate around error handling when calling python fn call_python(python: &Path, args: I) -> Result where I: IntoIterator, S: AsRef, { Command::new(python) .args(args) .output() .context(format!("Failed to run python at {:?}", &python)) } /// Checks if user has provided their own header at `target/header.h`, otherwise /// we run cbindgen to generate one. fn cffi_header(crate_dir: &Path, target_dir: &Path, tempdir: &TempDir) -> Result { let maybe_header = target_dir.join("header.h"); if maybe_header.is_file() { eprintln!("💼 Using the existing header at {}", maybe_header.display()); Ok(maybe_header) } else { if crate_dir.join("cbindgen.toml").is_file() { eprintln!( "💼 Using the existing cbindgen.toml configuration.\n\ 💼 Enforcing the following settings:\n \ - language = \"C\" \n \ - no_includes = true, sys_includes = []\n \ (#include is not yet supported by CFFI)\n \ - defines = [], include_guard = None, pragma_once = false, cpp_compat = false\n \ (#define, #ifdef, etc. is not yet supported by CFFI)\n" ); } let mut config = cbindgen::Config::from_root_or_default(crate_dir); config.language = cbindgen::Language::C; config.no_includes = true; config.sys_includes = Vec::new(); config.defines = HashMap::new(); config.include_guard = None; config.pragma_once = false; config.cpp_compat = false; let bindings = cbindgen::Builder::new() .with_config(config) .with_crate(crate_dir) .with_language(cbindgen::Language::C) .with_no_includes() .generate() .context("Failed to run cbindgen")?; let header = tempdir.as_ref().join("header.h"); bindings.write_to_file(&header); debug!("Generated header.h at {}", header.display()); Ok(header) } } /// Returns the content of what will become ffi.py by invoking cbindgen and cffi /// /// Checks if user has provided their own header at `target/header.h`, otherwise /// we run cbindgen to generate one. Installs cffi if it's missing and we're inside a virtualenv /// /// We're using the cffi recompiler, which reads the header, translates them into instructions /// how to load the shared library without the header and then writes those instructions to a /// file called `ffi.py`. This `ffi.py` will expose an object called `ffi`. This object is used /// in `__init__.py` to load the shared library into a module called `lib`. pub fn generate_cffi_declarations( crate_dir: &Path, target_dir: &Path, python: &Path, ) -> Result { let tempdir = tempdir()?; let header = cffi_header(crate_dir, target_dir, &tempdir)?; let ffi_py = tempdir.as_ref().join("ffi.py"); // Using raw strings is important because on windows there are path like // `C:\Users\JohnDoe\AppData\Local\TEmpl\pip-wheel-asdf1234` where the \U // would otherwise be a broken unicode escape sequence let cffi_invocation = format!( r#" import cffi from cffi import recompiler ffi = cffi.FFI() with open(r"{header}") as header: ffi.cdef(header.read()) recompiler.make_py_source(ffi, "ffi", r"{ffi_py}") "#, ffi_py = ffi_py.display(), header = header.display(), ); let output = call_python(python, ["-c", &cffi_invocation])?; let install_cffi = if !output.status.success() { // First, check whether the error was cffi not being installed let last_line = str::from_utf8(&output.stderr)?.lines().last().unwrap_or(""); if last_line == "ModuleNotFoundError: No module named 'cffi'" { // Then check whether we're running in a virtualenv. // We don't want to modify any global environment // https://stackoverflow.com/a/42580137/3549270 let output = call_python( python, ["-c", "import sys\nprint(sys.base_prefix != sys.prefix)"], )?; match str::from_utf8(&output.stdout)?.trim() { "True" => true, "False" => false, _ => { eprintln!( "⚠️ Failed to determine whether python at {:?} is running inside a virtualenv", &python ); false } } } else { false } } else { false }; // If there was success or an error that was not missing cffi, return here if !install_cffi { return handle_cffi_call_result(python, tempdir, &ffi_py, &output); } eprintln!("⚠️ cffi not found. Trying to install it"); // Call pip through python to don't do the wrong thing when python and pip // are coming from different environments let output = call_python( python, [ "-m", "pip", "install", "--disable-pip-version-check", "cffi", ], )?; if !output.status.success() { bail!( "Installing cffi with `{:?} -m pip install cffi` failed: {}\n--- Stdout:\n{}\n--- Stderr:\n{}\n---\nPlease install cffi yourself.", &python, output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)? ); } eprintln!("🎁 Installed cffi"); // Try again let output = call_python(python, ["-c", &cffi_invocation])?; handle_cffi_call_result(python, tempdir, &ffi_py, &output) } /// Extracted into a function because this is needed twice fn handle_cffi_call_result( python: &Path, tempdir: TempDir, ffi_py: &Path, output: &Output, ) -> Result { if !output.status.success() { bail!( "Failed to generate cffi declarations using {}: {}\n--- Stdout:\n{}\n--- Stderr:\n{}", python.display(), output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)?, ); } else { // Don't swallow warnings io::stderr().write_all(&output.stderr)?; let ffi_py_content = fs::read_to_string(ffi_py)?; tempdir.close()?; Ok(ffi_py_content) } } /// Copies the shared library into the module, which is the only extra file needed with bindings #[allow(clippy::too_many_arguments)] #[instrument(skip_all)] pub fn write_bindings_module( writer: &mut impl ModuleWriter, project_layout: &ProjectLayout, artifact: &Path, python_interpreter: Option<&PythonInterpreter>, is_abi3: bool, target: &Target, editable: bool, pyproject_toml: Option<&PyProjectToml>, ) -> Result<()> { let ext_name = &project_layout.extension_name; let so_filename = if is_abi3 { if target.is_unix() { format!("{ext_name}.abi3.so") } else { match python_interpreter { Some(python_interpreter) if python_interpreter.is_windows_debug() => { format!("{ext_name}_d.pyd") } // Apparently there is no tag for abi3 on windows _ => format!("{ext_name}.pyd"), } } } else { let python_interpreter = python_interpreter.expect("A python interpreter is required for non-abi3 build"); python_interpreter.get_library_name(ext_name) }; if !editable { write_python_part(writer, project_layout, pyproject_toml) .context("Failed to add the python module to the package")?; } if let Some(python_module) = &project_layout.python_module { if editable { let target = project_layout.rust_module.join(&so_filename); // Remove existing so file to avoid triggering SIGSEV in running process // See https://github.com/PyO3/maturin/issues/758 debug!("Removing {}", target.display()); let _ = fs::remove_file(&target); debug!("Copying {} to {}", artifact.display(), target.display()); fs::copy(artifact, &target).context(format!( "Failed to copy {} to {}", artifact.display(), target.display() ))?; } else { let relative = project_layout .rust_module .strip_prefix(python_module.parent().unwrap()) .unwrap(); writer.add_file_with_permissions(relative.join(&so_filename), artifact, 0o755)?; } } else { let module = PathBuf::from(ext_name); writer.add_directory(&module)?; // Reexport the shared library as if it were the top level module writer.add_bytes( module.join("__init__.py"), None, format!( r#"from .{ext_name} import * __doc__ = {ext_name}.__doc__ if hasattr({ext_name}, "__all__"): __all__ = {ext_name}.__all__"# ) .as_bytes(), )?; let type_stub = project_layout.rust_module.join(format!("{ext_name}.pyi")); if type_stub.exists() { eprintln!("📖 Found type stub file at {ext_name}.pyi"); writer.add_file(module.join("__init__.pyi"), type_stub)?; writer.add_bytes(module.join("py.typed"), None, b"")?; } writer.add_file_with_permissions(module.join(so_filename), artifact, 0o755)?; } Ok(()) } /// Creates the cffi module with the shared library, the cffi declarations and the cffi loader #[allow(clippy::too_many_arguments)] pub fn write_cffi_module( writer: &mut impl ModuleWriter, project_layout: &ProjectLayout, crate_dir: &Path, target_dir: &Path, module_name: &str, artifact: &Path, python: &Path, editable: bool, pyproject_toml: Option<&PyProjectToml>, ) -> Result<()> { let cffi_declarations = generate_cffi_declarations(crate_dir, target_dir, python)?; if !editable { write_python_part(writer, project_layout, pyproject_toml) .context("Failed to add the python module to the package")?; } let module; if let Some(python_module) = &project_layout.python_module { if editable { let base_path = python_module.join(&project_layout.extension_name); fs::create_dir_all(&base_path)?; let target = base_path.join(format!( "{extension_name}.so", extension_name = &project_layout.extension_name )); fs::copy(artifact, &target).context(format!( "Failed to copy {} to {}", artifact.display(), target.display() ))?; File::create(base_path.join("__init__.py"))? .write_all(cffi_init_file(&project_layout.extension_name).as_bytes())?; File::create(base_path.join("ffi.py"))?.write_all(cffi_declarations.as_bytes())?; } let relative = project_layout .rust_module .strip_prefix(python_module.parent().unwrap()) .unwrap(); module = relative.join(&project_layout.extension_name); if !editable { writer.add_directory(&module)?; } } else { module = PathBuf::from(module_name); writer.add_directory(&module)?; let type_stub = project_layout .rust_module .join(format!("{module_name}.pyi")); if type_stub.exists() { eprintln!("📖 Found type stub file at {module_name}.pyi"); writer.add_file(module.join("__init__.pyi"), type_stub)?; writer.add_bytes(module.join("py.typed"), None, b"")?; } }; if !editable || project_layout.python_module.is_none() { writer.add_bytes( module.join("__init__.py"), None, cffi_init_file(&project_layout.extension_name).as_bytes(), )?; writer.add_bytes(module.join("ffi.py"), None, cffi_declarations.as_bytes())?; writer.add_file_with_permissions( module.join(format!( "{extension_name}.so", extension_name = &project_layout.extension_name )), artifact, 0o755, )?; } Ok(()) } /// uniffi.toml #[derive(Debug, serde::Deserialize)] struct UniFfiToml { #[serde(default)] bindings: HashMap, } /// `bindings` section of uniffi.toml #[derive(Debug, serde::Deserialize)] struct UniFfiBindingsConfig { cdylib_name: Option, } #[derive(Debug, Clone)] struct UniFfiBindings { name: String, cdylib: String, path: PathBuf, } fn uniffi_bindgen_command(crate_dir: &Path) -> Result { let manifest_path = crate_dir.join("Cargo.toml"); let cargo_metadata = cargo_metadata::MetadataCommand::new() .manifest_path(&manifest_path) // We don't need to resolve the dependency graph .no_deps() .verbose(true) .exec()?; let root_pkg = match cargo_metadata.root_package() { Some(pkg) => Some(pkg), None => cargo_metadata .packages .iter() .find(|p| p.manifest_path == manifest_path), }; let has_uniffi_bindgen_target = root_pkg .map(|pkg| { pkg.targets .iter() .any(|target| target.name == "uniffi-bindgen" && target.is_bin()) }) .unwrap_or(false); let has_uniffi_bindgen_workspace_package = cargo_metadata.packages.iter().any(|pkg| { pkg.targets .iter() .any(|target| target.name == "uniffi-bindgen" && target.is_bin()) }); let command = if has_uniffi_bindgen_target { let mut command = Command::new("cargo"); command.args(["run", "--bin", "uniffi-bindgen", "--manifest-path"]); command.arg(manifest_path); command.current_dir(crate_dir); command } else if has_uniffi_bindgen_workspace_package { let mut command = Command::new("cargo"); command.args(["run", "--bin", "uniffi-bindgen"]); command.current_dir(cargo_metadata.workspace_root); command } else { let mut command = Command::new("uniffi-bindgen"); command.current_dir(crate_dir); command }; Ok(command) } fn generate_uniffi_bindings( crate_dir: &Path, target_dir: &Path, target_os: Os, artifact: &Path, ) -> Result { // `binding_dir` must use absolute path because we chdir to `crate_dir` // when running uniffi-bindgen let binding_dir = target_dir .normalize()? .join("maturin") .join("uniffi") .into_path_buf(); fs::create_dir_all(&binding_dir)?; let pattern = crate_dir.join("src").join("*.udl"); let udls = glob::glob(pattern.to_str().unwrap())? .map(|p| p.unwrap()) .collect::>(); let is_library = if udls.is_empty() { true } else if udls.len() > 1 { bail!( "Multiple UDL files found in {}", crate_dir.join("src").display() ); } else { false }; let mut cmd = uniffi_bindgen_command(crate_dir)?; cmd.args([ "generate", "--no-format", "--language", "python", "--out-dir", ]); cmd.arg(&binding_dir); let config_file = crate_dir.join("uniffi.toml"); let mut cdylib_name = None; if config_file.is_file() { let uniffi_toml: UniFfiToml = toml::from_str(&fs::read_to_string(&config_file)?)?; cdylib_name = uniffi_toml .bindings .get("python") .and_then(|py| py.cdylib_name.clone()); if !is_library { cmd.arg("--config"); cmd.arg(config_file); } } let py_binding_name = if is_library { cmd.arg("--library"); cmd.arg(artifact); let file_stem = artifact.file_stem().unwrap().to_str().unwrap(); file_stem .strip_prefix("lib") .unwrap_or(file_stem) .to_string() } else { let udl = &udls[0]; cmd.arg(udl); udl.file_stem().unwrap().to_str().unwrap().to_string() }; debug!("Running {:?}", cmd); let mut child = cmd.spawn().context( "Failed to run uniffi-bindgen, did you install it? Try `pip install uniffi-bindgen`", )?; let exit_status = child.wait().context("Failed to run uniffi-bindgen")?; if !exit_status.success() { bail!("Command {:?} failed", cmd); } // uniffi bindings hardcoded the extension filenames let cdylib_name = match cdylib_name { Some(name) => name, None => format!("uniffi_{py_binding_name}"), }; let cdylib = match target_os { Os::Macos => format!("lib{cdylib_name}.dylib"), Os::Windows => format!("{cdylib_name}.dll"), _ => format!("lib{cdylib_name}.so"), }; Ok(UniFfiBindings { name: py_binding_name, cdylib, path: binding_dir, }) } /// Creates the uniffi module with the shared library #[allow(clippy::too_many_arguments)] pub fn write_uniffi_module( writer: &mut impl ModuleWriter, project_layout: &ProjectLayout, crate_dir: &Path, target_dir: &Path, module_name: &str, artifact: &Path, target_os: Os, editable: bool, pyproject_toml: Option<&PyProjectToml>, ) -> Result<()> { let UniFfiBindings { name: binding_name, cdylib, path: binding_dir, } = generate_uniffi_bindings(crate_dir, target_dir, target_os, artifact)?; let py_init = format!("from .{binding_name} import * # NOQA\n"); if !editable { write_python_part(writer, project_layout, pyproject_toml) .context("Failed to add the python module to the package")?; } let module; if let Some(python_module) = &project_layout.python_module { if editable { let base_path = python_module.join(&project_layout.extension_name); fs::create_dir_all(&base_path)?; let target = base_path.join(&cdylib); fs::copy(artifact, &target).context(format!( "Failed to copy {} to {}", artifact.display(), target.display() ))?; File::create(base_path.join("__init__.py"))?.write_all(py_init.as_bytes())?; if let Ok(read_dir) = fs::read_dir(&binding_dir) { for binding_file in read_dir.flatten() { let target: PathBuf = base_path.join(binding_file.file_name()); fs::copy(binding_file.path(), &target).with_context(|| { format!("Failed to copy {:?} to {:?}", binding_file.path(), target) })?; } } } let relative = project_layout .rust_module .strip_prefix(python_module.parent().unwrap()) .unwrap(); module = relative.join(&project_layout.extension_name); if !editable { writer.add_directory(&module)?; } } else { module = PathBuf::from(module_name); writer.add_directory(&module)?; let type_stub = project_layout .rust_module .join(format!("{module_name}.pyi")); if type_stub.exists() { eprintln!("📖 Found type stub file at {module_name}.pyi"); writer.add_file(module.join("__init__.pyi"), type_stub)?; writer.add_bytes(module.join("py.typed"), None, b"")?; } }; if !editable || project_layout.python_module.is_none() { writer.add_bytes(module.join("__init__.py"), None, py_init.as_bytes())?; if let Ok(read_dir) = fs::read_dir(binding_dir) { for binding_file in read_dir.flatten() { writer.add_file(module.join(binding_file.file_name()), binding_file.path())?; } } writer.add_file_with_permissions(module.join(cdylib), artifact, 0o755)?; } Ok(()) } /// Adds a data directory with a scripts directory with the binary inside it pub fn write_bin( writer: &mut impl ModuleWriter, artifact: &Path, metadata: &Metadata23, bin_name: &str, ) -> Result<()> { let data_dir = PathBuf::from(format!( "{}-{}.data", &metadata.get_distribution_escaped(), &metadata.version )) .join("scripts"); writer.add_directory(&data_dir)?; // We can't use add_file since we need to mark the file as executable writer.add_file_with_permissions(data_dir.join(bin_name), artifact, 0o755)?; Ok(()) } /// Adds a wrapper script that start the wasm binary through wasmtime. /// /// Note that the wasm binary needs to be written separately by [write_bin] pub fn write_wasm_launcher( writer: &mut impl ModuleWriter, metadata: &Metadata23, bin_name: &str, ) -> Result<()> { let entrypoint_script = format!( r#"from pathlib import Path from wasmtime import Store, Module, Engine, WasiConfig, Linker import sysconfig def main(): # The actual executable program_location = Path(sysconfig.get_path("scripts")).joinpath("{bin_name}") # wasmtime-py boilerplate engine = Engine() store = Store(engine) # TODO: is there an option to just get the default of the wasmtime cli here? wasi = WasiConfig() wasi.inherit_argv() wasi.inherit_env() wasi.inherit_stdout() wasi.inherit_stderr() wasi.inherit_stdin() # TODO: Find a real solution here. Maybe there's an always allow callback? # Even fancier would be something configurable in pyproject.toml wasi.preopen_dir(".", ".") store.set_wasi(wasi) linker = Linker(engine) linker.define_wasi() module = Module.from_file(store.engine, str(program_location)) linking1 = linker.instantiate(store, module) # TODO: this is taken from https://docs.wasmtime.dev/api/wasmtime/struct.Linker.html#method.get_default # is this always correct? start = linking1.exports(store).get("") or linking1.exports(store)["_start"] start(store) if __name__ == '__main__': main() "# ); // We can't use add_file since we want to mark the file as executable let launcher_path = Path::new(&metadata.get_distribution_escaped()) .join(bin_name.replace('-', "_")) .with_extension("py"); writer.add_bytes_with_permissions(&launcher_path, None, entrypoint_script.as_bytes(), 0o755)?; Ok(()) } /// Adds the python part of a mixed project to the writer, pub fn write_python_part( writer: &mut impl ModuleWriter, project_layout: &ProjectLayout, pyproject_toml: Option<&PyProjectToml>, ) -> Result<()> { let python_dir = &project_layout.python_dir; let mut python_packages = Vec::new(); if let Some(python_module) = project_layout.python_module.as_ref() { python_packages.push(python_module.to_path_buf()); } for package in &project_layout.python_packages { let package_path = python_dir.join(package); if python_packages.iter().any(|p| *p == package_path) { continue; } python_packages.push(package_path); } for package in python_packages { for absolute in WalkBuilder::new(&project_layout.project_root) .hidden(false) .parents(false) .git_global(false) .git_exclude(false) .build() { let absolute = absolute?.into_path(); if !absolute.starts_with(package.as_path()) { continue; } let relative = absolute.strip_prefix(python_dir).unwrap(); if absolute.is_dir() { writer.add_directory(relative)?; } else { // Ignore native libraries from develop, if any if let Some(extension) = relative.extension() { if extension.to_string_lossy() == "so" { debug!("Ignoring native library {}", relative.display()); continue; } } #[cfg(unix)] let mode = absolute.metadata()?.permissions().mode(); #[cfg(not(unix))] let mode = 0o644; writer .add_file_with_permissions(relative, &absolute, mode) .context(format!("File to add file from {}", absolute.display()))?; } } } // Include additional files if let Some(pyproject) = pyproject_toml { // FIXME: in src-layout pyproject.toml isn't located directly in python dir let pyproject_dir = python_dir; if let Some(glob_patterns) = pyproject.include() { for pattern in glob_patterns .iter() .filter_map(|glob_pattern| glob_pattern.targets(Format::Wheel)) { eprintln!("📦 Including files matching \"{pattern}\""); for source in glob::glob(&pyproject_dir.join(pattern).to_string_lossy()) .with_context(|| format!("Invalid glob pattern: {pattern}"))? .filter_map(Result::ok) { let target = source.strip_prefix(pyproject_dir)?.to_path_buf(); if source.is_dir() { writer.add_directory(target)?; } else { #[cfg(unix)] let mode = source.metadata()?.permissions().mode(); #[cfg(not(unix))] let mode = 0o644; writer.add_file_with_permissions(target, source, mode)?; } } } } } Ok(()) } /// Creates the .dist-info directory and fills it with all metadata files except RECORD pub fn write_dist_info( writer: &mut impl ModuleWriter, metadata23: &Metadata23, tags: &[String], ) -> Result<()> { let dist_info_dir = metadata23.get_dist_info_dir(); writer.add_directory(&dist_info_dir)?; writer.add_bytes( dist_info_dir.join("METADATA"), None, metadata23.to_file_contents()?.as_bytes(), )?; writer.add_bytes( dist_info_dir.join("WHEEL"), None, wheel_file(tags)?.as_bytes(), )?; let mut entry_points = String::new(); if !metadata23.scripts.is_empty() { entry_points.push_str(&entry_points_txt("console_scripts", &metadata23.scripts)); } if !metadata23.gui_scripts.is_empty() { entry_points.push_str(&entry_points_txt("gui_scripts", &metadata23.gui_scripts)); } for (entry_type, scripts) in &metadata23.entry_points { entry_points.push_str(&entry_points_txt(entry_type, scripts)); } if !entry_points.is_empty() { writer.add_bytes( dist_info_dir.join("entry_points.txt"), None, entry_points.as_bytes(), )?; } if !metadata23.license_files.is_empty() { let license_files_dir = dist_info_dir.join("licenses"); writer.add_directory(&license_files_dir)?; for path in &metadata23.license_files { let filename = path.file_name().with_context(|| { format!("missing file name for license file {}", path.display()) })?; writer.add_file(license_files_dir.join(filename), path)?; } } Ok(()) } /// If any, copies the data files from the data directory, resolving symlinks to their source. /// We resolve symlinks since we require this rather rigid structure while people might need /// to save or generate the data in other places /// /// See https://peps.python.org/pep-0427/#file-contents pub fn add_data(writer: &mut impl ModuleWriter, data: Option<&Path>) -> Result<()> { let possible_data_dir_names = ["data", "scripts", "headers", "purelib", "platlib"]; if let Some(data) = data { for subdir in fs::read_dir(data).context("Failed to read data dir")? { let subdir = subdir?; let dir_name = subdir .file_name() .to_str() .context("Invalid data dir name")? .to_string(); if !subdir.path().is_dir() || !possible_data_dir_names.contains(&dir_name.as_str()) { bail!( "Invalid data dir entry {}. Possible are directories named {}", subdir.path().display(), possible_data_dir_names.join(", ") ); } debug!("Adding data from {}", subdir.path().display()); (|| { for file in WalkBuilder::new(subdir.path()) .standard_filters(false) .build() { let file = file?; #[cfg(unix)] let mode = file.metadata()?.permissions().mode(); #[cfg(not(unix))] let mode = 0o644; let relative = file.path().strip_prefix(data.parent().unwrap()).unwrap(); if file.path_is_symlink() { // Copy the actual file contents, not the link, so that you can create a // data directory by joining different data sources let source = fs::read_link(file.path())?; writer.add_file_with_permissions( relative, source.parent().unwrap(), mode, )?; } else if file.path().is_file() { writer.add_file_with_permissions(relative, file.path(), mode)?; } else if file.path().is_dir() { writer.add_directory(relative)?; } else { bail!("Can't handle data dir entry {}", file.path().display()); } } Ok(()) })() .with_context(|| format!("Failed to include data from {}", data.display()))? } } Ok(()) } #[cfg(test)] mod tests { use ignore::overrides::OverrideBuilder; use pep440_rs::Version; use super::*; #[test] // The mechanism is the same for wheel_writer fn sdist_writer_excludes() -> Result<(), Box> { let metadata = Metadata23::new("dummy".to_string(), Version::new([1, 0])); let perm = 0o777; // No excludes let tmp_dir = TempDir::new()?; let mut writer = SDistWriter::new(&tmp_dir, &metadata, Override::empty())?; assert!(writer.file_tracker.0.is_empty()); writer.add_bytes_with_permissions("test", Some(Path::new("test")), &[], perm)?; assert_eq!(writer.file_tracker.0.len(), 1); writer.finish()?; tmp_dir.close()?; // A test filter let tmp_dir = TempDir::new()?; let mut excludes = OverrideBuilder::new(&tmp_dir); excludes.add("test*")?; excludes.add("!test2")?; let mut writer = SDistWriter::new(&tmp_dir, &metadata, excludes.build()?)?; writer.add_bytes_with_permissions("test1", Some(Path::new("test1")), &[], perm)?; writer.add_bytes_with_permissions("test3", Some(Path::new("test3")), &[], perm)?; assert!(writer.file_tracker.0.is_empty()); writer.add_bytes_with_permissions("test2", Some(Path::new("test2")), &[], perm)?; assert!(!writer.file_tracker.0.is_empty()); writer.add_bytes_with_permissions("yes", Some(Path::new("yes")), &[], perm)?; assert_eq!(writer.file_tracker.0.len(), 2); writer.finish()?; tmp_dir.close()?; Ok(()) } } maturin-1.7.4/src/new_project.rs000066400000000000000000000340361467514767100167060ustar00rootroot00000000000000use self::package_name_validations::{cargo_check_name, pypi_check_name}; use crate::ci::GenerateCI; use crate::BridgeModel; use anyhow::{bail, Context, Result}; use console::style; use dialoguer::{theme::ColorfulTheme, Select}; use fs_err as fs; use minijinja::{context, Environment}; use std::path::Path; /// Mixed Rust/Python project layout #[derive(Debug, Clone, Copy)] enum ProjectLayout { Mixed { src: bool }, PureRust, } struct ProjectGenerator<'a> { env: Environment<'a>, project_name: String, crate_name: String, bindings: String, layout: ProjectLayout, ci_config: String, overwrite: bool, } impl<'a> ProjectGenerator<'a> { fn new( project_name: String, layout: ProjectLayout, bindings: String, overwrite: bool, ) -> Result { let crate_name = project_name.replace('-', "_"); let mut env = Environment::new(); env.set_keep_trailing_newline(true); env.add_template(".gitignore", include_str!("templates/.gitignore.j2"))?; env.add_template("Cargo.toml", include_str!("templates/Cargo.toml.j2"))?; env.add_template( "pyproject.toml", include_str!("templates/pyproject.toml.j2"), )?; env.add_template("lib.rs", include_str!("templates/lib.rs.j2"))?; env.add_template("main.rs", include_str!("templates/main.rs.j2"))?; env.add_template("build.rs", include_str!("templates/build.rs.j2"))?; env.add_template("__init__.py", include_str!("templates/__init__.py.j2"))?; env.add_template("test_all.py", include_str!("templates/test_all.py.j2"))?; env.add_template("example.udl", include_str!("templates/example.udl.j2"))?; let bridge_model = match bindings.as_str() { "bin" => BridgeModel::Bin(None), "cffi" => BridgeModel::Cffi, "uniffi" => BridgeModel::UniFfi, _ => BridgeModel::Bindings(bindings.clone(), 7), }; let ci_config = GenerateCI::default().generate_github(&project_name, &bridge_model, true)?; Ok(Self { env, project_name, crate_name, bindings, layout, ci_config, overwrite, }) } fn generate(&self, project_path: &Path) -> Result<()> { fs::create_dir_all(project_path)?; self.write_project_file(project_path, ".gitignore")?; self.write_project_file(project_path, "pyproject.toml")?; // CI configuration let gh_action_path = project_path.join(".github").join("workflows"); fs::create_dir_all(&gh_action_path)?; self.write_content(&gh_action_path, "CI.yml", self.ci_config.as_bytes())?; let rust_project = match self.layout { ProjectLayout::Mixed { src } => { let python_dir = if src { project_path.join("src") } else { project_path.join("python") }; let python_project = python_dir.join(&self.crate_name); fs::create_dir_all(&python_project)?; self.write_project_file(&python_project, "__init__.py")?; let test_dir = python_dir.join("tests"); fs::create_dir_all(&test_dir)?; self.write_project_file(&test_dir, "test_all.py")?; if src { project_path.join("rust") } else { project_path.to_path_buf() } } ProjectLayout::PureRust => project_path.to_path_buf(), }; let rust_src = rust_project.join("src"); fs::create_dir_all(&rust_src)?; self.write_project_file(&rust_project, "Cargo.toml")?; if self.bindings == "bin" { self.write_project_file(&rust_src, "main.rs")?; } else { self.write_project_file(&rust_src, "lib.rs")?; if self.bindings == "uniffi" { self.write_project_file(&rust_project, "build.rs")?; self.write_project_file(&rust_src, "example.udl")?; } } Ok(()) } fn render_template(&self, tmpl_name: &str) -> Result { let version_major: usize = env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap(); let version_minor: usize = env!("CARGO_PKG_VERSION_MINOR").parse().unwrap(); let tmpl = self.env.get_template(tmpl_name)?; let out = tmpl.render(context!( name => self.project_name, crate_name => self.crate_name, bindings => self.bindings, mixed_non_src => matches!(self.layout, ProjectLayout::Mixed { src: false }), version_major => version_major, version_minor => version_minor ))?; Ok(out) } fn write_project_file(&self, directory: &Path, file: &str) -> Result<()> { let content = self.render_template(file)?; self.write_content(directory, file, content.as_bytes()) } fn write_content(&self, directory: &Path, file: &str, content: &[u8]) -> Result<()> { let path = directory.join(file); if self.overwrite || !path.exists() { fs::write(path, content)?; } Ok(()) } } fn validate_name(name: &str) -> anyhow::Result { cargo_check_name(name).context("Invalid Cargo package name")?; pypi_check_name(name).context("Invalid PyPI package name")?; Ok(name.to_string()) } /// Options common to `maturin new` and `maturin init`. #[derive(Debug, clap::Parser)] pub struct GenerateProjectOptions { /// Set the resulting package name, defaults to the directory name #[arg( long, value_parser=validate_name, )] name: Option, /// Use mixed Rust/Python project layout #[arg(long)] mixed: bool, /// Use Python first src layout for mixed Rust/Python project #[arg(long)] src: bool, /// Which kind of bindings to use #[arg( short, long, value_parser = ["pyo3", "cffi", "uniffi", "bin"] )] bindings: Option, } /// Generate a new cargo project pub fn new_project(path: String, options: GenerateProjectOptions) -> Result<()> { let project_path = Path::new(&path); if project_path.exists() { bail!("destination `{}` already exists", project_path.display()); } generate_project(project_path, options, true)?; eprintln!( " ✨ {} {} {}", style("Done!").bold().green(), style("New project created").bold(), style(&project_path.display()).underlined() ); Ok(()) } /// Generate a new cargo project in an existing directory pub fn init_project(path: Option, options: GenerateProjectOptions) -> Result<()> { let project_path = path .map(Into::into) .map_or_else(std::env::current_dir, Ok)?; if project_path.join("pyproject.toml").exists() || project_path.join("Cargo.toml").exists() { bail!("`maturin init` cannot be run on existing projects"); } generate_project(&project_path, options, false)?; eprintln!( " ✨ {} {} {}", style("Done!").bold().green(), style("Initialized project").bold(), style(&project_path.display()).underlined() ); Ok(()) } fn generate_project( project_path: &Path, options: GenerateProjectOptions, overwrite: bool, ) -> Result<()> { let name = if let Some(name) = options.name { name } else { let file_name = project_path.file_name().with_context(|| { format!("Failed to get name from path '{}'", project_path.display()) })?; let temp = file_name .to_str() .context("Filename isn't valid Unicode")? .to_string(); validate_name(temp.as_str()).map_err(|e| anyhow::anyhow!(e))? }; let bindings_items = if options.mixed { vec!["pyo3", "cffi", "uniffi"] } else { vec!["pyo3", "cffi", "uniffi", "bin"] }; let bindings = if let Some(bindings) = options.bindings { bindings } else { let selection = Select::with_theme(&ColorfulTheme::default()) .with_prompt(format!( "🤷 {}\n 📖 {}", style("Which kind of bindings to use?").bold(), style("Documentation: https://maturin.rs/bindings.html").dim() )) .items(&bindings_items) .default(0) .interact()?; bindings_items[selection].to_string() }; let layout = if options.mixed { ProjectLayout::Mixed { src: options.src } } else { ProjectLayout::PureRust }; let generator = ProjectGenerator::new(name, layout, bindings, overwrite)?; generator.generate(project_path) } mod package_name_validations { // based on: https://github.com/pypi/warehouse/blob/8f79d90a310f0243ab15f52c41de093708a61dfd/warehouse/packaging/models.py#L211C9-L214C10 pub fn pypi_check_name(name: &str) -> anyhow::Result<()> { // The `(?i)` flag was added to make the regex case-insensitive let pattern = regex::Regex::new(r"^((?i)[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$").unwrap(); if !pattern.is_match(name) { anyhow::bail!("The name `{}` is not a valid package name", name) } Ok(()) } // Based on: https://github.com/rust-lang/cargo/blob/e975158c1b542aa3833fd8584746538c17a6ae55/src/cargo/ops/cargo_new.rs#L169 pub fn cargo_check_name(name: &str) -> anyhow::Result<()> { // Instead of `PackageName::new` which performs these checks in the original cargo code validate_package_name(name)?; if is_keyword(name) { anyhow::bail!( "the name `{}` cannot be used as a package name, it is a Rust keyword", name, ); } if is_conflicting_artifact_name(name) { anyhow::bail!( "the name `{}` cannot be used as a package name, \ it conflicts with cargo's build directory names", name, ); } if name == "test" { anyhow::bail!( "the name `test` cannot be used as a package name, \ it conflicts with Rust's built-in test library", ); } if ["core", "std", "alloc", "proc_macro", "proc-macro"].contains(&name) { eprintln!( "⚠️ Warning: the name `{}` is part of Rust's standard library\n\ It is recommended to use a different name to avoid problems.", name, ); } if is_windows_reserved(name) { eprintln!( "⚠️ Warning: the name `{}` is a reserved Windows filename\n\ This package will not work on Windows platforms.", name ); } if is_non_ascii_name(name) { eprintln!( "⚠️ Warning: the name `{}` contains non-ASCII characters\n\ Non-ASCII crate names are not supported by Rust.", name ); } let name_in_lowercase = name.to_lowercase(); if name != name_in_lowercase { eprintln!( "⚠️ Warning: the name `{name}` is not snake_case or kebab-case which is recommended for package names, consider `{name_in_lowercase}`" ); } Ok(()) } // Based on: https://github.com/rust-lang/cargo/blob/7b7af3077bff8d60b7f124189bc9de227d3063a9/crates/cargo-util-schemas/src/restricted_names.rs#L42 fn validate_package_name(name: &str) -> anyhow::Result<()> { if name.is_empty() { anyhow::bail!("Package names cannot be empty"); } let mut chars = name.chars(); if let Some(ch) = chars.next() { if ch.is_ascii_digit() { // A specific error for a potentially common case. anyhow::bail!("Package names cannot start with a digit"); } if !(unicode_xid::UnicodeXID::is_xid_start(ch) || ch == '_') { anyhow::bail!( "the first character must be a Unicode XID start character (most letters or `_`)" ); } } for ch in chars { if !(unicode_xid::UnicodeXID::is_xid_continue(ch) || ch == '-') { anyhow::bail!( "characters must be Unicode XID characters (numbers, `-`, `_`, or most letters)" ); } } Ok(()) } // The following functions are based on https://github.com/rust-lang/cargo/blob/e975158c1b542aa3833fd8584746538c17a6ae55/src/cargo/util/restricted_names.rs /// Returns `true` if the name contains non-ASCII characters. pub fn is_non_ascii_name(name: &str) -> bool { name.chars().any(|ch| ch > '\x7f') } /// A Rust keyword. pub fn is_keyword(name: &str) -> bool { // See https://doc.rust-lang.org/reference/keywords.html [ "Self", "abstract", "as", "async", "await", "become", "box", "break", "const", "continue", "crate", "do", "dyn", "else", "enum", "extern", "false", "final", "fn", "for", "if", "impl", "in", "let", "loop", "macro", "match", "mod", "move", "mut", "override", "priv", "pub", "ref", "return", "self", "static", "struct", "super", "trait", "true", "try", "type", "typeof", "unsafe", "unsized", "use", "virtual", "where", "while", "yield", ] .contains(&name) } /// These names cannot be used on Windows, even with an extension. pub fn is_windows_reserved(name: &str) -> bool { [ "con", "prn", "aux", "nul", "com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9", "lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9", ] .contains(&name.to_ascii_lowercase().as_str()) } /// An artifact with this name will conflict with one of Cargo's build directories. pub fn is_conflicting_artifact_name(name: &str) -> bool { ["deps", "examples", "build", "incremental"].contains(&name) } } maturin-1.7.4/src/project_layout.rs000066400000000000000000000413441467514767100174320ustar00rootroot00000000000000use crate::build_options::{extract_cargo_metadata_args, CargoOptions}; use crate::{CargoToml, Metadata23, PyProjectToml}; use anyhow::{bail, format_err, Context, Result}; use cargo_metadata::{Metadata, MetadataCommand}; use normpath::PathExt as _; use std::collections::HashSet; use std::env; use std::io; use std::path::{Path, PathBuf}; use tracing::{debug, instrument}; const PYPROJECT_TOML: &str = "pyproject.toml"; /// Whether this project is pure rust or rust mixed with python and whether it has wheel data #[derive(Clone, Debug, PartialEq, Eq)] pub struct ProjectLayout { /// Contains the absolute path to the project root directory pub project_root: PathBuf, /// Contains the absolute path to the python source directory pub python_dir: PathBuf, /// Contains the canonicalized (i.e. absolute) path to the python part of the project /// If none, we have a rust crate compiled into a shared library with only some glue python for cffi /// If some, we have a python package that is extended by a native rust module. pub python_module: Option, /// Python packages to include pub python_packages: Vec, /// Contains the canonicalized (i.e. absolute) path to the rust part of the project pub rust_module: PathBuf, /// Rust extension name pub extension_name: String, /// The location of the wheel data, if any pub data: Option, } /// Project resolver #[derive(Clone, Debug)] pub struct ProjectResolver { /// Project layout pub project_layout: ProjectLayout, /// Cargo.toml path pub cargo_toml_path: PathBuf, /// Parsed Cargo.toml pub cargo_toml: CargoToml, /// pyproject.toml path pub pyproject_toml_path: PathBuf, /// Parsed pyproject.toml pub pyproject_toml: Option, /// Rust module name pub module_name: String, /// Python Package Metadata 2.3 pub metadata23: Metadata23, /// Cargo options pub cargo_options: CargoOptions, /// Cargo.toml as resolved by [cargo_metadata] pub cargo_metadata: Metadata, /// maturin options specified in pyproject.toml pub pyproject_toml_maturin_options: Vec<&'static str>, } impl ProjectResolver { /// Resolve project layout pub fn resolve( cargo_manifest_path: Option, mut cargo_options: CargoOptions, ) -> Result { let (manifest_file, pyproject_file) = Self::resolve_manifest_paths(cargo_manifest_path, &cargo_options)?; if !manifest_file.is_file() { bail!( "{} is not the path to a Cargo.toml", manifest_file.display() ); } // Sanity checks in debug build debug_assert!( manifest_file.is_absolute(), "manifest_file {} is not absolute", manifest_file.display() ); debug_assert!( pyproject_file.is_absolute(), "pyproject_file {} is not absolute", pyproject_file.display() ); // Set Cargo manifest path cargo_options.manifest_path = Some(manifest_file.clone()); let cargo_toml = CargoToml::from_path(&manifest_file)?; cargo_toml.check_removed_python_metadata()?; let manifest_dir = manifest_file.parent().unwrap(); let pyproject_toml: Option = if pyproject_file.is_file() { let pyproject = PyProjectToml::new(&pyproject_file)?; pyproject.warn_bad_maturin_version(); pyproject.warn_missing_build_backend(); Some(pyproject) } else { None }; let pyproject = pyproject_toml.as_ref(); let tool_maturin = pyproject.and_then(|p| p.maturin()); let pyproject_toml_maturin_options = if let Some(tool_maturin) = tool_maturin { cargo_options.merge_with_pyproject_toml(tool_maturin.clone()) } else { Vec::new() }; let cargo_metadata = Self::resolve_cargo_metadata(&manifest_file, &cargo_options)?; let mut metadata23 = Metadata23::from_cargo_toml(manifest_dir, &cargo_metadata) .context("Failed to parse Cargo.toml into python metadata")?; if let Some(pyproject) = pyproject { let pyproject_dir = pyproject_file.parent().unwrap(); metadata23.merge_pyproject_toml(pyproject_dir, pyproject)?; } let crate_name = &cargo_toml.package.name; // If the package name contains minuses, you must declare a module with // underscores as lib name // Precedence: // * Explicitly declared pyproject.toml `tool.maturin.module-name` // * Cargo.toml `lib.name` // * pyproject.toml `project.name` // * Cargo.toml `package.name` let module_name = pyproject .and_then(|x| x.module_name()) .or(cargo_toml.lib.as_ref().and_then(|lib| lib.name.as_deref())) .or(pyproject .and_then(|pyproject| pyproject.project.as_ref()) .map(|project| project.name.as_str())) .unwrap_or(crate_name) .to_owned(); let project_root = if pyproject_file.is_file() { pyproject_file.parent().unwrap_or(manifest_dir) } else { manifest_dir }; let python_packages = pyproject .and_then(|x| x.python_packages()) .unwrap_or_default() .to_vec(); let py_root = match pyproject.and_then(|x| x.python_source()) { Some(py_src) => project_root.join(py_src), None => match pyproject.and_then(|x| x.project_name()) { Some(project_name) => { // Detect src layout let rust_cargo_toml_found = project_root.join("rust").join("Cargo.toml").is_file(); let import_name = project_name.replace('-', "_"); let mut package_init = HashSet::new(); package_init.insert( project_root .join("src") .join(import_name) .join("__init__.py"), ); for package in &python_packages { package_init .insert(project_root.join("src").join(package).join("__init__.py")); } let python_src_found = package_init.iter().any(|x| x.is_file()); if rust_cargo_toml_found && python_src_found { project_root.join("src") } else { project_root.to_path_buf() } } None => project_root.to_path_buf(), }, }; let data = pyproject.and_then(|x| x.data()).map(|data| { if data.is_absolute() { data.to_path_buf() } else { project_root.join(data) } }); let custom_python_source = pyproject.and_then(|x| x.python_source()).is_some(); let project_layout = ProjectLayout::determine( project_root, &module_name, py_root, python_packages, data, custom_python_source, )?; Ok(Self { project_layout, cargo_toml_path: manifest_file, cargo_toml, pyproject_toml_path: pyproject_file, pyproject_toml, module_name, metadata23, cargo_options, cargo_metadata, pyproject_toml_maturin_options, }) } /// Get cargo manifest file path and pyproject.toml path fn resolve_manifest_paths( cargo_manifest_path: Option, cargo_options: &CargoOptions, ) -> Result<(PathBuf, PathBuf)> { // use command line argument if specified if let Some(path) = cargo_manifest_path { let path = path .normalize() .with_context(|| format!("failed to normalize manifest path `{}`", path.display()))? .into_path_buf(); debug!( "Using cargo manifest path from command line argument: {:?}", path ); let workspace_root = Self::resolve_cargo_metadata(&path, cargo_options)?.workspace_root; let workspace_parent = workspace_root.parent().unwrap_or(&workspace_root); for parent in path.ancestors().skip(1) { // Allow looking outside to the parent directory of Cargo workspace root if !dunce::simplified(parent).starts_with(workspace_parent) { break; } let pyproject_file = parent.join(PYPROJECT_TOML); if pyproject_file.is_file() { debug!("Found pyproject.toml at {:?}", pyproject_file); return Ok((path, pyproject_file)); } } let pyproject_file = path.parent().unwrap().join(PYPROJECT_TOML); debug!("Trying pyproject.toml at {:?}", pyproject_file); return Ok((path, pyproject_file)); } // check `manifest-path` option in pyproject.toml let current_dir = env::current_dir() .context("Failed to detect current directory ಠ_ಠ")? .normalize()? .into_path_buf(); let pyproject_file = current_dir.join(PYPROJECT_TOML); if pyproject_file.is_file() { debug!( "Found pyproject.toml in working directory at {:?}", pyproject_file ); let pyproject = PyProjectToml::new(&pyproject_file)?; if let Some(path) = pyproject.manifest_path() { debug!("Using cargo manifest path from pyproject.toml {:?}", path); return Ok(( path.normalize() .with_context(|| { format!("failed to normalize manifest path `{}`", path.display()) })? .into_path_buf(), pyproject_file, )); } else { // Detect src layout: // // my-project // ├── README.md // ├── pyproject.toml // ├── src // │ └── my_project // │ ├── __init__.py // │ └── bar.py // └── rust // ├── Cargo.toml // └── src // └── lib.rs let path = current_dir.join("rust").join("Cargo.toml"); if path.is_file() { debug!("Python first src-layout detected"); if pyproject.python_source().is_some() { // python source directory is specified in pyproject.toml return Ok((path, pyproject_file)); } else if let Some(project_name) = pyproject.project_name() { // Check if python source directory in `src/` let import_name = project_name.replace('-', "_"); let mut package_init = HashSet::new(); package_init.insert( current_dir .join("src") .join(import_name) .join("__init__.py"), ); for package in pyproject.python_packages().unwrap_or_default() { package_init .insert(current_dir.join("src").join(package).join("__init__.py")); } if package_init.iter().any(|x| x.is_file()) { return Ok((path, pyproject_file)); } } } } } // check Cargo.toml in current directory let path = current_dir.join("Cargo.toml"); if path.exists() { debug!( "Using cargo manifest path from working directory: {:?}", path ); Ok((path, current_dir.join(PYPROJECT_TOML))) } else { Err(format_err!( "Can't find {} (in {})", path.display(), current_dir.display() )) } } #[instrument(skip_all)] fn resolve_cargo_metadata( manifest_path: &Path, cargo_options: &CargoOptions, ) -> Result { debug!("Resolving cargo metadata from {:?}", manifest_path); let cargo_metadata_extra_args = extract_cargo_metadata_args(cargo_options)?; let result = MetadataCommand::new() // Force resolving metadata using cargo instead of instead of $CARGO env var // to avoid getting wrong file path like target directory, for example `cross` would // output paths in docker while we want paths on host. .cargo_path("cargo") .manifest_path(manifest_path) .verbose(true) .other_options(cargo_metadata_extra_args) .exec(); let cargo_metadata = match result { Ok(cargo_metadata) => cargo_metadata, Err(cargo_metadata::Error::Io(inner)) if inner.kind() == io::ErrorKind::NotFound => { // NotFound is the specific error when cargo is not in PATH return Err(inner) .context("Cargo metadata failed. Do you have cargo in your PATH?"); } Err(err) => { return Err(err) .context("Cargo metadata failed. Does your crate compile with `cargo build`?"); } }; Ok(cargo_metadata) } } impl ProjectLayout { /// Checks whether a python module exists besides Cargo.toml with the right name fn determine( project_root: &Path, module_name: &str, python_root: PathBuf, python_packages: Vec, data: Option, custom_python_source: bool, ) -> Result { // A dot in the module name means the extension module goes into the module folder specified by the path let parts: Vec<&str> = module_name.split('.').collect(); let (python_module, rust_module, extension_name) = if parts.len() > 1 { let mut rust_module = python_root.clone(); rust_module.extend(&parts[0..parts.len() - 1]); ( python_root.join(parts[0]), rust_module, parts[parts.len() - 1].to_string(), ) } else { ( python_root.join(module_name), python_root.join(module_name), module_name.to_string(), ) }; debug!( project_root = %project_root.display(), python_dir = %python_root.display(), rust_module = %rust_module.display(), python_module = %python_module.display(), extension_name = %extension_name, module_name = %module_name, "Project layout resolved" ); let data = if let Some(data) = data { if !data.is_dir() { bail!("No such data directory {}", data.display()); } Some(data) } else if project_root.join(format!("{module_name}.data")).is_dir() { Some(project_root.join(format!("{module_name}.data"))) } else { None }; if python_module.is_dir() { eprintln!("🍹 Building a mixed python/rust project"); Ok(ProjectLayout { project_root: project_root.to_path_buf(), python_dir: python_root, python_packages, python_module: Some(python_module), rust_module, extension_name, data, }) } else { if custom_python_source { eprintln!( "⚠️ Warning: You specified the python source as {}, but the python module at \ {} is missing. No python module will be included.", python_root.display(), python_module.display() ); } Ok(ProjectLayout { project_root: project_root.to_path_buf(), python_dir: python_root, python_packages, python_module: None, rust_module: project_root.to_path_buf(), extension_name, data, }) } } } maturin-1.7.4/src/pyproject_toml.rs000066400000000000000000000515011467514767100174350ustar00rootroot00000000000000//! A pyproject.toml as specified in PEP 517 use crate::auditwheel::AuditWheelMode; use crate::PlatformTag; use anyhow::{Context, Result}; use fs_err as fs; use pep440_rs::Version; use pep508_rs::VersionOrUrl; use pyproject_toml::{BuildSystem, Project}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::str::FromStr; /// The `[tool]` section of a pyproject.toml #[derive(Serialize, Deserialize, Debug, Clone, Default)] #[serde(rename_all = "kebab-case")] pub struct Tool { /// maturin options pub maturin: Option, } #[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] #[serde(rename_all = "lowercase")] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] /// The target format for the include or exclude [GlobPattern]. /// /// See [Formats]. pub enum Format { /// Source distribution Sdist, /// Wheel Wheel, } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] #[serde(untagged)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] /// A single [Format] or multiple [Format] values for a [GlobPattern]. pub enum Formats { /// A single [Format] value Single(Format), /// Multiple [Format] values Multiple(Vec), } impl Formats { /// Returns `true` if the inner [Format] value(s) target the given [Format] pub fn targets(&self, format: Format) -> bool { match self { Self::Single(val) if val == &format => true, Self::Multiple(formats) if formats.contains(&format) => true, _ => false, } } } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] #[serde(untagged)] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] /// A glob pattern for the include and exclude configuration. /// /// See [PyProjectToml::include] and [PyProject::exclude]. /// /// Based on . pub enum GlobPattern { /// A glob Path(String), /// A glob `path` with a `format` key to specify one or more [Format] values WithFormat { /// A glob path: String, /// One or more [Format] values format: Formats, }, } impl GlobPattern { /// Returns the glob pattern for this pattern if it targets the given [Format], else this returns `None`. pub fn targets(&self, format: Format) -> Option<&str> { match self { // Not specified defaults to both Self::Path(ref glob) => Some(glob), Self::WithFormat { path, format: formats, } if formats.targets(format) => Some(path), _ => None, } } } /// Cargo compile target #[derive(Serialize, Deserialize, Debug, Clone, Default)] #[serde(rename_all = "kebab-case")] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CargoTarget { /// Name as given in the `Cargo.toml` or generated from the file name pub name: String, /// Kind of target ("bin", "lib") pub kind: Option, // TODO: Add bindings option // Bridge model, which kind of bindings to use // pub bindings: Option, } /// Target configuration #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TargetConfig { /// macOS deployment target version #[serde(alias = "macosx-deployment-target")] pub macos_deployment_target: Option, } /// Source distribution generator #[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)] #[serde(rename_all = "kebab-case")] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum SdistGenerator { /// Use `cargo package --list` #[default] Cargo, /// Use `git ls-files` Git, } /// The `[tool.maturin]` section of a pyproject.toml #[derive(Serialize, Deserialize, Debug, Clone, Default)] #[serde(rename_all = "kebab-case")] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ToolMaturin { // maturin specific options /// Module name, accepts setuptools style import name like `foo.bar` pub module_name: Option, /// Include files matching the given glob pattern(s) pub include: Option>, /// Exclude files matching the given glob pattern(s) pub exclude: Option>, /// Bindings type pub bindings: Option, /// Platform compatibility #[serde(alias = "manylinux")] pub compatibility: Option, /// Audit wheel mode pub auditwheel: Option, /// Skip audit wheel #[serde(default)] pub skip_auditwheel: bool, /// Strip the final binary #[serde(default)] pub strip: bool, /// Source distribution generator #[serde(default)] pub sdist_generator: SdistGenerator, /// The directory with python module, contains `/__init__.py` pub python_source: Option, /// Python packages to include pub python_packages: Option>, /// Path to the wheel directory, defaults to `.data` pub data: Option, /// Cargo compile targets pub targets: Option>, /// Target configuration #[serde(default, rename = "target")] pub target_config: HashMap, // Some customizable cargo options /// Build artifacts with the specified Cargo profile pub profile: Option, /// Space or comma separated list of features to activate pub features: Option>, /// Activate all available features pub all_features: Option, /// Do not activate the `default` feature pub no_default_features: Option, /// Path to Cargo.toml pub manifest_path: Option, /// Require Cargo.lock and cache are up to date pub frozen: Option, /// Require Cargo.lock is up to date pub locked: Option, /// Override a configuration value (unstable) pub config: Option>, /// Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details pub unstable_flags: Option>, /// Additional rustc arguments pub rustc_args: Option>, } /// A pyproject.toml as specified in PEP 517 #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(rename_all = "kebab-case")] pub struct PyProjectToml { /// Build-related data pub build_system: BuildSystem, /// Project metadata pub project: Option, /// PEP 518: The `[tool]` table is where any tool related to your Python project, not just build /// tools, can have users specify configuration data as long as they use a sub-table within /// `[tool]`, e.g. the flit tool would store its configuration in `[tool.flit]`. /// /// We use it for `[tool.maturin]` pub tool: Option, } impl PyProjectToml { /// Returns the contents of a pyproject.toml with a `[build-system]` entry or an error /// /// Does no specific error handling because it's only used to check whether or not to build /// source distributions pub fn new(pyproject_file: impl AsRef) -> Result { let path = pyproject_file.as_ref(); let contents = fs::read_to_string(path)?; let pyproject = toml::from_str(&contents).with_context(|| { format!( "pyproject.toml at {} is invalid", pyproject_file.as_ref().display() ) })?; Ok(pyproject) } /// Returns the value of `[project.name]` in pyproject.toml pub fn project_name(&self) -> Option<&str> { self.project.as_ref().map(|project| project.name.as_str()) } /// Returns the values of `[tool.maturin]` in pyproject.toml #[inline] pub fn maturin(&self) -> Option<&ToolMaturin> { self.tool.as_ref()?.maturin.as_ref() } /// Returns the value of `[tool.maturin.module-name]` in pyproject.toml pub fn module_name(&self) -> Option<&str> { self.maturin()?.module_name.as_deref() } /// Returns the value of `[tool.maturin.include]` in pyproject.toml pub fn include(&self) -> Option<&[GlobPattern]> { self.maturin()?.include.as_ref().map(AsRef::as_ref) } /// Returns the value of `[tool.maturin.exclude]` in pyproject.toml pub fn exclude(&self) -> Option<&[GlobPattern]> { self.maturin()?.exclude.as_ref().map(AsRef::as_ref) } /// Returns the value of `[tool.maturin.bindings]` in pyproject.toml pub fn bindings(&self) -> Option<&str> { self.maturin()?.bindings.as_deref() } /// Returns the value of `[tool.maturin.compatibility]` in pyproject.toml pub fn compatibility(&self) -> Option { self.maturin()?.compatibility } /// Returns the value of `[tool.maturin.auditwheel]` in pyproject.toml pub fn auditwheel(&self) -> Option { self.maturin() .map(|maturin| maturin.auditwheel) .unwrap_or_default() } /// Returns the value of `[tool.maturin.skip-auditwheel]` in pyproject.toml pub fn skip_auditwheel(&self) -> bool { self.maturin() .map(|maturin| maturin.skip_auditwheel) .unwrap_or_default() } /// Returns the value of `[tool.maturin.strip]` in pyproject.toml pub fn strip(&self) -> bool { self.maturin() .map(|maturin| maturin.strip) .unwrap_or_default() } /// Returns the value of `[tool.maturin.sdist-generator]` in pyproject.toml pub fn sdist_generator(&self) -> SdistGenerator { self.maturin() .map(|maturin| maturin.sdist_generator) .unwrap_or_default() } /// Returns the value of `[tool.maturin.python-source]` in pyproject.toml pub fn python_source(&self) -> Option<&Path> { self.maturin() .and_then(|maturin| maturin.python_source.as_deref()) } /// Returns the value of `[tool.maturin.python-packages]` in pyproject.toml pub fn python_packages(&self) -> Option<&[String]> { self.maturin() .and_then(|maturin| maturin.python_packages.as_deref()) } /// Returns the value of `[tool.maturin.data]` in pyproject.toml pub fn data(&self) -> Option<&Path> { self.maturin().and_then(|maturin| maturin.data.as_deref()) } /// Returns the value of `[tool.maturin.targets]` in pyproject.toml pub fn targets(&self) -> Option> { self.maturin().and_then(|maturin| maturin.targets.clone()) } /// Returns the value of `[tool.maturin.target.]` in pyproject.toml pub fn target_config(&self, target: &str) -> Option<&TargetConfig> { self.maturin() .and_then(|maturin| maturin.target_config.get(target)) } /// Returns the value of `[tool.maturin.manifest-path]` in pyproject.toml pub fn manifest_path(&self) -> Option<&Path> { self.maturin()?.manifest_path.as_deref() } /// Warn about `build-system.requires` mismatching expectations. /// /// Having a pyproject.toml without a version constraint is a bad idea /// because at some point we'll have to do breaking changes and then source /// distributions would break. /// /// The second problem we check for is the current maturin version not matching the constraint. /// /// Returns false if a warning was emitted. pub fn warn_bad_maturin_version(&self) -> bool { let maturin = env!("CARGO_PKG_NAME"); let current_major = env!("CARGO_PKG_VERSION_MAJOR").parse::().unwrap(); let self_version = Version::from_str(env!("CARGO_PKG_VERSION")).unwrap(); let requires_maturin = self .build_system .requires .iter() .find(|x| x.name.as_ref() == maturin); if let Some(requires_maturin) = requires_maturin { match requires_maturin.version_or_url.as_ref() { Some(VersionOrUrl::VersionSpecifier(version_specifier)) => { if !version_specifier.contains(&self_version) { eprintln!( "⚠️ Warning: You specified {requires_maturin} in pyproject.toml under \ `build-system.requires`, but the current {maturin} version is {version}", requires_maturin = requires_maturin, maturin = maturin, version = self_version, ); return false; } } Some(VersionOrUrl::Url(_)) => { // We can't check this } None => { eprintln!( "⚠️ Warning: Please use {maturin} in pyproject.toml with a version constraint, \ e.g. `requires = [\"{maturin}>={current}.0,<{next}.0\"]`. \ This will become an error.", maturin = maturin, current = current_major, next = current_major + 1, ); return false; } } } true } /// Having a pyproject.toml without `build-backend` set to `maturin` /// may result in build errors when build from source distribution /// /// Returns true if the pyproject.toml has `build-backend` set to `maturin` pub fn warn_missing_build_backend(&self) -> bool { let maturin = env!("CARGO_PKG_NAME"); if self.build_system.build_backend.as_deref() == Some(maturin) { return true; } if std::env::var("MATURIN_NO_MISSING_BUILD_BACKEND_WARNING").is_ok() { return false; } eprintln!( "⚠️ Warning: `build-backend` in pyproject.toml is not set to `{maturin}`, \ packaging tools such as pip will not use maturin to build this project." ); false } } #[cfg(test)] mod tests { use crate::{ pyproject_toml::{Format, Formats, GlobPattern, ToolMaturin}, PyProjectToml, }; use expect_test::expect; use fs_err as fs; use indoc::indoc; use pretty_assertions::assert_eq; use std::path::Path; use tempfile::TempDir; #[test] fn test_parse_tool_maturin() { let tmp_dir = TempDir::new().unwrap(); let pyproject_file = tmp_dir.path().join("pyproject.toml"); fs::write( &pyproject_file, r#"[build-system] requires = ["maturin"] build-backend = "maturin" [tool.maturin] manylinux = "2010" python-packages = ["foo", "bar"] manifest-path = "Cargo.toml" profile = "dev" features = ["foo", "bar"] no-default-features = true locked = true rustc-args = ["-Z", "unstable-options"] [[tool.maturin.targets]] name = "pyo3_pure" kind = "lib" bindings = "pyo3" [tool.maturin.target."x86_64-apple-darwin"] macos-deployment-target = "10.12" "#, ) .unwrap(); let pyproject = PyProjectToml::new(pyproject_file).unwrap(); assert_eq!(pyproject.manifest_path(), Some(Path::new("Cargo.toml"))); let maturin = pyproject.maturin().unwrap(); assert_eq!(maturin.profile.as_deref(), Some("dev")); assert_eq!( maturin.features, Some(vec!["foo".to_string(), "bar".to_string()]) ); assert!(maturin.all_features.is_none()); assert_eq!(maturin.no_default_features, Some(true)); assert_eq!(maturin.locked, Some(true)); assert!(maturin.frozen.is_none()); assert_eq!( maturin.rustc_args, Some(vec!["-Z".to_string(), "unstable-options".to_string()]) ); assert_eq!( maturin.python_packages, Some(vec!["foo".to_string(), "bar".to_string()]) ); let targets = maturin.targets.as_ref().unwrap(); assert_eq!("pyo3_pure", targets[0].name); let target_config = pyproject.target_config("x86_64-apple-darwin").unwrap(); assert_eq!( target_config.macos_deployment_target.as_deref(), Some("10.12") ); } #[test] fn test_warn_missing_maturin_version() { let with_constraint = PyProjectToml::new("test-crates/pyo3-pure/pyproject.toml").unwrap(); assert!(with_constraint.warn_bad_maturin_version()); let without_constraint_dir = TempDir::new().unwrap(); let pyproject_file = without_constraint_dir.path().join("pyproject.toml"); fs::write( &pyproject_file, r#"[build-system] requires = ["maturin"] build-backend = "maturin" [tool.maturin] manylinux = "2010" "#, ) .unwrap(); let without_constraint = PyProjectToml::new(pyproject_file).unwrap(); assert!(!without_constraint.warn_bad_maturin_version()); } #[test] fn test_warn_incorrect_maturin_version() { let without_constraint_dir = TempDir::new().unwrap(); let pyproject_file = without_constraint_dir.path().join("pyproject.toml"); fs::write( &pyproject_file, r#"[build-system] requires = ["maturin==0.0.1"] build-backend = "maturin" [tool.maturin] manylinux = "2010" "#, ) .unwrap(); let without_constraint = PyProjectToml::new(pyproject_file).unwrap(); assert!(!without_constraint.warn_bad_maturin_version()); } #[test] fn deserialize_include_exclude() { let single = r#"include = ["single"]"#; assert_eq!( toml::from_str::(single).unwrap().include, Some(vec![GlobPattern::Path("single".to_string())]) ); let multiple = r#"include = ["one", "two"]"#; assert_eq!( toml::from_str::(multiple).unwrap().include, Some(vec![ GlobPattern::Path("one".to_string()), GlobPattern::Path("two".to_string()) ]) ); let single_format = r#"include = [{path = "path", format="sdist"}]"#; assert_eq!( toml::from_str::(single_format) .unwrap() .include, Some(vec![GlobPattern::WithFormat { path: "path".to_string(), format: Formats::Single(Format::Sdist) },]) ); let multiple_formats = r#"include = [{path = "path", format=["sdist", "wheel"]}]"#; assert_eq!( toml::from_str::(multiple_formats) .unwrap() .include, Some(vec![GlobPattern::WithFormat { path: "path".to_string(), format: Formats::Multiple(vec![Format::Sdist, Format::Wheel]) },]) ); let mixed = r#"include = ["one", {path = "two", format="sdist"}, {path = "three", format=["sdist", "wheel"]}]"#; assert_eq!( toml::from_str::(mixed).unwrap().include, Some(vec![ GlobPattern::Path("one".to_string()), GlobPattern::WithFormat { path: "two".to_string(), format: Formats::Single(Format::Sdist), }, GlobPattern::WithFormat { path: "three".to_string(), format: Formats::Multiple(vec![Format::Sdist, Format::Wheel]) } ]) ); } #[test] fn test_gh_1615() { let source = indoc!( r#"[build-system] requires = [ "maturin>=0.14", "numpy", "wheel", "patchelf",] build-backend = "maturin" [project] name = "..." license-files = [ "license.txt",] requires-python = ">=3.8" requires-dist = [ "maturin>=0.14", "...",] dependencies = [ "packaging", "...",] zip-safe = false version = "..." readme = "..." description = "..." classifiers = [ "...",] "# ); let temp_dir = TempDir::new().unwrap(); let pyproject_toml = temp_dir.path().join("pyproject.toml"); fs::write(&pyproject_toml, source).unwrap(); let outer_error = PyProjectToml::new(&pyproject_toml).unwrap_err(); let inner_error = outer_error.source().unwrap(); let expected = expect![[r#" TOML parse error at line 7, column 17 | 7 | license-files = [ "license.txt",] | ^^^^^^^^^^^^^^^^^ wanted string or table "#]]; expected.assert_eq(&inner_error.to_string()); } } maturin-1.7.4/src/python_interpreter/000077500000000000000000000000001467514767100177575ustar00rootroot00000000000000maturin-1.7.4/src/python_interpreter/config.rs000066400000000000000000000670171467514767100216050ustar00rootroot00000000000000use super::{InterpreterKind, MAXIMUM_PYPY_MINOR, MAXIMUM_PYTHON_MINOR, MINIMUM_PYTHON_MINOR}; use crate::target::{Arch, Os}; use crate::Target; use anyhow::{format_err, Context, Result}; use fs_err as fs; use serde::Deserialize; use std::fmt::Write as _; use std::io::{BufRead, BufReader}; use std::path::Path; const PYPY_ABI_TAG: &str = "pp73"; const GRAALPY_ABI_TAG: &str = "graalpy230_310_native"; /// Some of the sysconfigdata of Python interpreter we care about #[derive(Debug, Clone, Deserialize, Eq, PartialEq)] pub struct InterpreterConfig { /// Python's major version pub major: usize, /// Python's minor version pub minor: usize, /// cpython, pypy, or graalpy #[serde(rename = "interpreter")] pub interpreter_kind: InterpreterKind, /// For linux and mac, this contains the value of the abiflags, e.g. "m" /// for python3.7m or "dm" for python3.6dm. Since python3.8, the value is /// empty. On windows, the value was always None. /// /// See PEP 261 and PEP 393 for details pub abiflags: String, /// Suffix to use for extension modules as given by sysconfig. pub ext_suffix: String, /// Pointer width pub pointer_width: Option, } impl InterpreterConfig { /// Lookup a wellknown sysconfig for a given Python interpreter pub fn lookup_one( target: &Target, python_impl: InterpreterKind, python_version: (usize, usize), ) -> Option { use InterpreterKind::*; let (major, minor) = python_version; if major < 3 { // Python 2 is not supported return None; } let python_ext_arch = target.get_python_ext_arch(python_impl); let target_env = target.get_python_target_env(python_impl, python_version); match (target.target_os(), python_impl) { (Os::Linux, CPython) => { let abiflags = if python_version < (3, 8) { "m".to_string() } else { "".to_string() }; let ldversion = format!("{}{}{}", major, minor, abiflags); let ext_suffix = format!( ".cpython-{}-{}-linux-{}.so", ldversion, python_ext_arch, target_env ); Some(Self { major, minor, interpreter_kind: CPython, abiflags, ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Linux, PyPy) => { let abi_tag = format!("pypy{}{}-{}", major, minor, PYPY_ABI_TAG); let ext_suffix = format!(".{}-{}-linux-{}.so", abi_tag, python_ext_arch, target_env); Some(Self { major, minor, interpreter_kind: PyPy, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Macos, CPython) => { let abiflags = if python_version < (3, 8) { "m".to_string() } else { "".to_string() }; let ldversion = format!("{}{}{}", major, minor, abiflags); let ext_suffix = format!(".cpython-{}-darwin.so", ldversion); Some(Self { major, minor, interpreter_kind: CPython, abiflags, ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Macos, PyPy) => { let ext_suffix = format!(".pypy{}{}-{}-darwin.so", major, minor, PYPY_ABI_TAG); Some(Self { major, minor, interpreter_kind: PyPy, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Windows, CPython) => { let ext_suffix = if python_version < (3, 8) { ".pyd".to_string() } else { let platform = match target.target_arch() { Arch::Aarch64 => "win_arm64", Arch::X86 => "win32", Arch::X86_64 => "win_amd64", _ => return None, }; format!(".cp{}{}-{}.pyd", major, minor, platform) }; Some(Self { major, minor, interpreter_kind: CPython, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Windows, PyPy) => { if target.target_arch() != Arch::X86_64 { // PyPy on Windows only supports x86_64 return None; } let ext_suffix = format!(".pypy{}{}-{}-win_amd64.pyd", major, minor, PYPY_ABI_TAG); Some(Self { major, minor, interpreter_kind: PyPy, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::FreeBsd, CPython) => { let (abiflags, ext_suffix) = if python_version < (3, 8) { ("m".to_string(), ".so".to_string()) } else { ("".to_string(), format!(".cpython-{}{}.so", major, minor)) }; Some(Self { major, minor, interpreter_kind: CPython, abiflags, ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::NetBsd, CPython) => { let ext_suffix = ".so".to_string(); Some(Self { major, minor, interpreter_kind: CPython, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::OpenBsd, CPython) => { let ldversion = format!("{}{}", major, minor); let ext_suffix = format!(".cpython-{}.so", ldversion); Some(Self { major, minor, interpreter_kind: CPython, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (Os::Emscripten, CPython) => { let ldversion = format!("{}{}", major, minor); let ext_suffix = format!(".cpython-{}-{}-emscripten.so", ldversion, python_ext_arch); Some(Self { major, minor, interpreter_kind: CPython, abiflags: String::new(), ext_suffix, pointer_width: Some(target.pointer_width()), }) } (_, _) => None, } } /// Lookup wellknown sysconfigs for a given target pub fn lookup_target(target: &Target) -> Vec { let mut configs = Vec::new(); for (python_impl, max_minor_ver) in [ (InterpreterKind::CPython, MAXIMUM_PYTHON_MINOR), (InterpreterKind::PyPy, MAXIMUM_PYPY_MINOR), ] { for minor in MINIMUM_PYTHON_MINOR..=max_minor_ver { if let Some(config) = Self::lookup_one(target, python_impl, (3, minor)) { configs.push(config); } } } configs } /// Construct a new InterpreterConfig from a pyo3 config file pub fn from_pyo3_config(config_file: &Path, target: &Target) -> Result { let config_file = fs::File::open(config_file)?; let reader = BufReader::new(config_file); let lines = reader.lines(); macro_rules! parse_value { ($variable:ident, $value:ident) => { $variable = Some($value.trim().parse().context(format!( concat!( "failed to parse ", stringify!($variable), " from config value '{}'" ), $value ))?) }; } let mut implementation = None; let mut version = None; let mut abiflags = None; let mut ext_suffix = None; let mut abi_tag = None; let mut pointer_width = None; for (i, line) in lines.enumerate() { let line = line.context("failed to read line from config")?; let (key, value) = line .split_once('=') .with_context(|| format!("expected key=value pair on line {}", i + 1))?; match key { "implementation" => parse_value!(implementation, value), "version" => parse_value!(version, value), "abiflags" => parse_value!(abiflags, value), "ext_suffix" => parse_value!(ext_suffix, value), "abi_tag" => parse_value!(abi_tag, value), "pointer_width" => parse_value!(pointer_width, value), _ => continue, } } let version: String = version.context("missing value for version")?; let (ver_major, ver_minor) = version .split_once('.') .context("Invalid python interpreter version")?; let major = ver_major.parse::().with_context(|| { format!("Invalid python interpreter major version '{ver_major}', expect a digit") })?; let minor = ver_minor.parse::().with_context(|| { format!("Invalid python interpreter minor version '{ver_minor}', expect a digit") })?; let implementation = implementation.unwrap_or_else(|| "cpython".to_string()); let interpreter_kind = implementation.parse().map_err(|e| format_err!("{}", e))?; let abi_tag = match interpreter_kind { InterpreterKind::CPython => { if (major, minor) >= (3, 8) { abi_tag.unwrap_or_else(|| format!("{major}{minor}")) } else { abi_tag.unwrap_or_else(|| format!("{major}{minor}m")) } } InterpreterKind::PyPy => abi_tag.unwrap_or_else(|| PYPY_ABI_TAG.to_string()), InterpreterKind::GraalPy => abi_tag.unwrap_or_else(|| GRAALPY_ABI_TAG.to_string()), }; let file_ext = if target.is_windows() { "pyd" } else { "so" }; let ext_suffix = if target.is_linux() || target.is_macos() { let target_env = target.get_python_target_env(interpreter_kind, (major, minor)); match interpreter_kind { InterpreterKind::CPython => ext_suffix.unwrap_or_else(|| { // Eg: .cpython-38-x86_64-linux-gnu.so format!( ".cpython-{}-{}-{}-{}.{}", abi_tag, target.get_python_ext_arch(interpreter_kind), target.get_python_os(), target_env, file_ext, ) }), InterpreterKind::PyPy => ext_suffix.unwrap_or_else(|| { // Eg: .pypy38-pp73-x86_64-linux-gnu.so format!( ".pypy{}{}-{}-{}-{}-{}.{}", major, minor, abi_tag, target.get_python_ext_arch(interpreter_kind), target.get_python_os(), target_env, file_ext, ) }), InterpreterKind::GraalPy => ext_suffix.unwrap_or_else(|| { // e.g. .graalpy230-310-native-x86_64-linux.so format!( ".{}-{}-{}.{}", abi_tag.replace('_', "-"), target.get_python_ext_arch(interpreter_kind), target.get_python_os(), file_ext, ) }), } } else if target.is_emscripten() && matches!(interpreter_kind, InterpreterKind::CPython) { ext_suffix.unwrap_or_else(|| { format!( ".cpython-{}-{}-{}.{}", abi_tag, target.get_python_ext_arch(interpreter_kind), target.get_python_os(), file_ext ) }) } else { ext_suffix.context("missing value for ext_suffix")? }; Ok(Self { major, minor, interpreter_kind, abiflags: abiflags.unwrap_or_default(), ext_suffix, pointer_width, }) } /// Generate pyo3 config file content pub fn pyo3_config_file(&self) -> String { let mut content = format!( r#"implementation={implementation} version={major}.{minor} shared=true abi3=false build_flags=WITH_THREAD suppress_build_script_link_lines=false"#, implementation = self.interpreter_kind, major = self.major, minor = self.minor, ); if let Some(pointer_width) = self.pointer_width { write!(content, "\npointer_width={pointer_width}").unwrap(); } content } } #[cfg(test)] mod test { use super::*; use expect_test::expect; use pretty_assertions::assert_eq; #[test] fn test_well_known_sysconfigs_linux() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-x86_64-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("i686-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-i386-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-aarch64-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("armv7-unknown-linux-gnueabihf".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-arm-linux-gnueabihf.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("arm-unknown-linux-gnueabihf".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-arm-linux-gnueabihf.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("powerpc64le-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!( sysconfig.ext_suffix, ".cpython-310-powerpc64le-linux-gnu.so" ); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("powerpc-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-powerpc-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("mips64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!( sysconfig.ext_suffix, ".cpython-310-mips64-linux-gnuabi64.so" ); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("mips-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-mips-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("s390x-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-s390x-linux-gnu.so"); // PyPy let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.abiflags, ""); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-x86_64-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("i686-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-x86-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-aarch64-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("armv7-unknown-linux-gnueabihf".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-arm-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("arm-unknown-linux-gnueabihf".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-arm-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("powerpc64le-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-ppc_64-linux-gnu.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("s390x-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-s390x-linux-gnu.so"); } #[test] fn test_well_known_sysconfigs_macos() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-apple-darwin".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-darwin.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-apple-darwin".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310-darwin.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-apple-darwin".to_string())).unwrap(), InterpreterKind::CPython, (3, 7), ) .unwrap(); assert_eq!(sysconfig.abiflags, "m"); assert_eq!(sysconfig.ext_suffix, ".cpython-37m-darwin.so"); // PyPy let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-apple-darwin".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.abiflags, ""); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-darwin.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-apple-darwin".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-darwin.so"); } #[test] fn test_well_known_sysconfigs_windows() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-pc-windows-msvc".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cp310-win_amd64.pyd"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("i686-pc-windows-msvc".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cp310-win32.pyd"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-pc-windows-msvc".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cp310-win_arm64.pyd"); // PyPy let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-pc-windows-msvc".to_string())).unwrap(), InterpreterKind::PyPy, (3, 9), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".pypy39-pp73-win_amd64.pyd"); } #[test] fn test_well_known_sysconfigs_freebsd() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-freebsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 7), ) .unwrap(); assert_eq!(sysconfig.abiflags, "m"); assert_eq!(sysconfig.ext_suffix, ".so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-freebsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.abiflags, ""); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("i686-unknown-freebsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-unknown-freebsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("armv7-unknown-freebsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); } #[test] fn test_well_known_sysconfigs_netbsd() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-netbsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 7), ) .unwrap(); assert_eq!(sysconfig.abiflags, ""); assert_eq!(sysconfig.ext_suffix, ".so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-netbsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".so"); } #[test] fn test_well_known_sysconfigs_openbsd() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-openbsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("i686-unknown-openbsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("aarch64-unknown-openbsd".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-310.so"); } #[test] fn test_well_known_sysconfigs_emscripten() { // CPython let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("wasm32-unknown-emscripten".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); assert_eq!(sysconfig.abiflags, ""); assert_eq!(sysconfig.ext_suffix, ".cpython-310-wasm32-emscripten.so"); } #[test] fn test_pyo3_config_file() { let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-linux-gnu".to_string())).unwrap(), InterpreterKind::CPython, (3, 10), ) .unwrap(); let config_file = sysconfig.pyo3_config_file(); let expected = expect![[r#" implementation=CPython version=3.10 shared=true abi3=false build_flags=WITH_THREAD suppress_build_script_link_lines=false pointer_width=64"#]]; expected.assert_eq(&config_file); } #[test] fn test_pyo3_config_file_musl_python_3_11() { let sysconfig = InterpreterConfig::lookup_one( &Target::from_target_triple(Some("x86_64-unknown-linux-musl".to_string())).unwrap(), InterpreterKind::CPython, (3, 11), ) .unwrap(); assert_eq!(sysconfig.ext_suffix, ".cpython-311-x86_64-linux-musl.so"); let config_file = sysconfig.pyo3_config_file(); let expected = expect![[r#" implementation=CPython version=3.11 shared=true abi3=false build_flags=WITH_THREAD suppress_build_script_link_lines=false pointer_width=64"#]]; expected.assert_eq(&config_file); } } maturin-1.7.4/src/python_interpreter/get_interpreter_metadata.py000066400000000000000000000027521467514767100254010ustar00rootroot00000000000000import json import platform import sys import sysconfig import struct if platform.python_implementation() == "PyPy": # Workaround for PyPy 3.6 on windows: # - sysconfig.get_config_var("EXT_SUFFIX") differs to importlib until # Python 3.8 # - PyPy does not load the plain ".pyd" suffix because it expects that's # for a CPython extension module # # This workaround can probably be removed once PyPy for Python 3.8 is the # main PyPy version. import importlib.machinery ext_suffix = importlib.machinery.EXTENSION_SUFFIXES[0] else: ext_suffix = sysconfig.get_config_var("EXT_SUFFIX") metadata = { # sys.implementation.name can differ from platform.python_implementation(), for example # Pyston has sys.implementation.name == "pyston" while platform.python_implementation() == cpython "implementation_name": sys.implementation.name, "executable": sys.executable or None, "major": sys.version_info.major, "minor": sys.version_info.minor, "abiflags": sysconfig.get_config_var("ABIFLAGS"), "interpreter": platform.python_implementation().lower(), "ext_suffix": ext_suffix, "soabi": sysconfig.get_config_var("SOABI") or None, "platform": sysconfig.get_platform(), # This one isn't technically necessary, but still very useful for sanity checks "system": platform.system().lower(), # This one is for generating a config file for pyo3 "pointer_width": struct.calcsize("P") * 8, } print(json.dumps(metadata)) maturin-1.7.4/src/python_interpreter/mod.rs000066400000000000000000001132431467514767100211100ustar00rootroot00000000000000pub use self::config::InterpreterConfig; use crate::auditwheel::PlatformTag; use crate::{BridgeModel, BuildContext, Target}; use anyhow::{bail, format_err, Context, Result}; use pep440_rs::{Version, VersionSpecifiers}; use regex::Regex; use serde::Deserialize; use std::collections::HashSet; use std::fmt; use std::io::{self, Write}; use std::ops::Deref; use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use std::str::{self, FromStr}; use tracing::{debug, instrument}; mod config; /// This snippets will give us information about the python interpreter's /// version and abi as json through stdout const GET_INTERPRETER_METADATA: &str = include_str!("get_interpreter_metadata.py"); pub const MINIMUM_PYTHON_MINOR: usize = 7; /// Be liberal here to include preview versions pub const MAXIMUM_PYTHON_MINOR: usize = 12; pub const MAXIMUM_PYPY_MINOR: usize = 10; /// Identifies conditions where we do not want to build wheels fn windows_interpreter_no_build( major: usize, minor: usize, target_width: usize, pointer_width: usize, min_python_minor: usize, requires_python: Option<&VersionSpecifiers>, ) -> bool { // Only python 3 with supported major versions if major != 3 || minor < min_python_minor { return true; } // From requires-python in pyproject.toml if let Some(requires_python) = requires_python { if !requires_python.contains(&Version::new([major as u64, minor as u64])) { return true; } } // There can be 32-bit installations on a 64-bit machine, but we can't link // those for 64-bit targets if pointer_width != target_width { eprintln!( "👽 {major}.{minor} is installed as {pointer_width}-bit, while the target is {target_width}-bit. Skipping." ); return true; } false } /// On windows regular Python installs are supported along with environments /// being managed by `conda`. /// /// We can't use the linux trick with trying different binary names since on /// windows the binary is always called "python.exe". However, whether dealing /// with regular Python installs or `conda` environments there are tools we can /// use to query the information regarding installed interpreters. /// /// Regular Python installs downloaded from Python.org will include the python /// launcher by default. We can use the launcher to find the information we need /// for each installed interpreter using `py -0` which produces something like /// the following output (the path can by determined using `sys.executable`): /// /// ```bash /// Installed Pythons found by py Launcher for Windows /// -3.7-64 * /// -3.6-32 /// ``` /// /// When using `conda` we can use the `conda info -e` command to retrieve information /// regarding the installed interpreters being managed by `conda`. This is an example /// of the output expected: /// /// ```bash /// # conda environments: /// # /// base C:\Users\\Anaconda3 /// foo1 * C:\Users\\Anaconda3\envs\foo1 /// foo2 * C:\Users\\Anaconda3\envs\foo2 /// ``` /// /// The information required can either by obtained by parsing this output directly or /// by invoking the interpreters to obtain the information. /// /// As well as the version numbers, etc. of the interpreters we also have to find the /// pointer width to make sure that the pointer width (32-bit or 64-bit) matches across /// platforms. fn find_all_windows( target: &Target, min_python_minor: usize, requires_python: Option<&VersionSpecifiers>, ) -> Result> { let code = "import sys; print(sys.executable or '')"; let mut interpreter = vec![]; let mut versions_found = HashSet::new(); // If Python is installed from Python.org it should include the "python launcher" // which is used to find the installed interpreters let execution = Command::new("cmd") .arg("/c") .arg("py") .arg("--list-paths") .output(); if let Ok(output) = execution { // x86_64: ' -3.10-64 * C:\Users\xxx\AppData\Local\Programs\Python\Python310\python.exe' // x86_64: ' -3.11 * C:\Users\xxx\AppData\Local\Programs\Python\Python310\python.exe' // arm64: ' -V:3.11-arm64 * C:\Users\xxx\AppData\Local\Programs\Python\Python311-arm64\python.exe let expr = Regex::new(r" -(V:)?(\d).(\d+)-?(arm)?(\d*)\s*\*?\s*(.*)?").unwrap(); let stdout = str::from_utf8(&output.stdout).unwrap(); for line in stdout.lines() { if let Some(capture) = expr.captures(line) { let major = capture .get(2) .unwrap() .as_str() .parse::() .context("Expected a digit for major version")?; let minor = capture .get(3) .unwrap() .as_str() .parse::() .context("Expected a digit for minor version")?; if !versions_found.contains(&(major, minor)) { let pointer_width = capture .get(5) .map(|m| m.as_str()) .filter(|m| !m.is_empty()) .unwrap_or("64") .parse::() .context("Expected a digit for pointer width")?; if windows_interpreter_no_build( major, minor, target.pointer_width(), pointer_width, min_python_minor, requires_python, ) { continue; } let executable = capture.get(6).unwrap().as_str(); let output = Command::new(executable).args(["-c", code]).output(); let output = match output { Ok(output) => output, Err(err) => { eprintln!( "⚠️ Warning: failed to determine the path to python for `{executable}`: {err}" ); continue; } }; let path = str::from_utf8(&output.stdout).unwrap().trim(); if !output.status.success() || path.trim().is_empty() { eprintln!( "⚠️ Warning: couldn't determine the path to python for `{executable}`" ); continue; } interpreter.push(path.to_string()); versions_found.insert((major, minor)); } } } } // Conda environments are also supported on windows let conda_info = Command::new("conda").arg("info").arg("-e").output(); if let Ok(output) = conda_info { let lines = str::from_utf8(&output.stdout).unwrap().lines(); // The regex has three parts: The first matches the name and skips // comments, the second skips the part in between and the third // extracts the path let re = Regex::new(r"^([^#].*?)[\s*]+([\w\\:.-]+)\s*$").unwrap(); let mut paths = vec![]; for i in lines { if let Some(capture) = re.captures(i) { if &capture[1] == "base" { continue; } paths.push(String::from(&capture[2])); } } for path in paths { let executable_win = Path::new(&path).join("python.exe"); let executable = if executable_win.exists() { executable_win } else { Path::new(&path).join("python") }; if let Some(python_info) = windows_python_info(&executable)? { if windows_interpreter_no_build( python_info.major, python_info.minor, target.pointer_width(), python_info.pointer_width.unwrap(), min_python_minor, requires_python, ) { continue; } interpreter.push(String::from(executable.to_str().unwrap())); versions_found.insert((python_info.major, python_info.minor)); } } } // Fallback to pythonX.Y for Microsoft Store versions for minor in min_python_minor..=MAXIMUM_PYTHON_MINOR { if !versions_found.contains(&(3, minor)) { let executable = format!("python3.{minor}.exe"); if let Some(python_info) = windows_python_info(Path::new(&executable))? { if windows_interpreter_no_build( python_info.major, python_info.minor, target.pointer_width(), python_info.pointer_width.unwrap(), min_python_minor, requires_python, ) { continue; } interpreter.push(executable); versions_found.insert((3, minor)); } } } if interpreter.is_empty() { bail!( "Could not find any interpreters, are you sure you have python installed on your PATH?" ); }; Ok(interpreter) } fn windows_python_info(executable: &Path) -> Result> { let python_info = Command::new(executable) .arg("-c") .arg("import sys; print(sys.version)") .output(); let python_info = match python_info { Ok(python_info) => python_info, Err(err) => { if err.kind() == io::ErrorKind::NotFound { // python executable not found return Ok(None); } else { bail!( "Error getting Python version info from {}", executable.display() ); } } }; let version_info = str::from_utf8(&python_info.stdout).unwrap(); let expr = Regex::new(r"(\d).(\d).(\d+)").unwrap(); if let Some(capture) = expr.captures(version_info) { let major = capture.get(1).unwrap().as_str().parse::().unwrap(); let minor = capture.get(2).unwrap().as_str().parse::().unwrap(); let pointer_width = if version_info.contains("64 bit (AMD64)") { 64 } else { 32 }; Ok(Some(InterpreterConfig { major, minor, interpreter_kind: InterpreterKind::CPython, abiflags: String::new(), ext_suffix: String::new(), pointer_width: Some(pointer_width), })) } else { Ok(None) } } #[derive(Debug, Clone, Copy, Eq, PartialEq, Deserialize, clap::ValueEnum)] #[serde(rename_all = "lowercase")] #[clap(rename_all = "lower")] pub enum InterpreterKind { CPython, PyPy, GraalPy, } impl InterpreterKind { /// Is this a CPython interpreter? pub fn is_cpython(&self) -> bool { matches!(self, InterpreterKind::CPython) } /// Is this a PyPy interpreter? pub fn is_pypy(&self) -> bool { matches!(self, InterpreterKind::PyPy) } /// Is this a GraalPy interpreter? pub fn is_graalpy(&self) -> bool { matches!(self, InterpreterKind::GraalPy) } } impl fmt::Display for InterpreterKind { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { InterpreterKind::CPython => write!(f, "CPython"), InterpreterKind::PyPy => write!(f, "PyPy"), InterpreterKind::GraalPy => write!(f, "GraalPy"), } } } impl FromStr for InterpreterKind { type Err = String; fn from_str(s: &str) -> Result { match s.to_ascii_lowercase().as_str() { "cpython" => Ok(InterpreterKind::CPython), "pypy" => Ok(InterpreterKind::PyPy), "graalvm" | "graalpy" => Ok(InterpreterKind::GraalPy), unknown => Err(format!("Unknown interpreter kind '{unknown}'")), } } } /// The output format of [GET_INTERPRETER_METADATA] #[derive(Deserialize)] struct InterpreterMetadataMessage { implementation_name: String, executable: Option, major: usize, minor: usize, abiflags: Option, interpreter: String, ext_suffix: Option, // comes from `sysconfig.get_platform()` platform: String, // comes from `platform.system()` system: String, soabi: Option, } /// The location and version of an interpreter #[derive(Debug, Clone, Eq, PartialEq)] pub struct PythonInterpreter { /// Python's sysconfig /// Python's major version pub config: InterpreterConfig, /// Path to the python interpreter, e.g. /usr/bin/python3.6 /// /// Just the name of the binary in PATH does also work, e.g. `python3.5` pub executable: PathBuf, /// Comes from `sysconfig.get_platform()` /// /// Note that this can be `None` when cross compiling pub platform: Option, /// Is this interpreter runnable /// /// When cross compile the target interpreter isn't runnable, /// and it's `executable` is empty pub runnable: bool, /// Comes from `sys.platform.name` pub implementation_name: String, /// Comes from sysconfig var `SOABI` pub soabi: Option, } impl Deref for PythonInterpreter { type Target = InterpreterConfig; fn deref(&self) -> &Self::Target { &self.config } } /// Returns the abiflags that are assembled through the message, with some /// additional sanity checks. /// /// The rules are as follows: /// - python 3 + Unix: Use ABIFLAGS /// - python 3 + Windows: No ABIFLAGS, return an empty string fn fun_with_abiflags( message: &InterpreterMetadataMessage, target: &Target, bridge: &BridgeModel, ) -> Result { if bridge != &BridgeModel::Cffi && target.get_python_os() != message.system && !target.cross_compiling() { bail!( "platform.system() in python, {}, and the rust target, {:?}, don't match ಠ_ಠ", message.system, target, ) } if message.major != 3 || message.minor < 7 { bail!( "Only python >= 3.7 is supported, while you're using python {}.{}", message.major, message.minor ); } if message.interpreter == "pypy" || message.interpreter == "graalvm" { // pypy and graalpy do not specify abi flags Ok("".to_string()) } else if message.system == "windows" { if matches!(message.abiflags.as_deref(), Some("") | None) { Ok("".to_string()) } else { bail!("A python 3 interpreter on windows does not define abiflags in its sysconfig ಠ_ಠ") } } else if let Some(ref abiflags) = message.abiflags { if message.minor >= 8 { // for 3.8, "builds with and without pymalloc are ABI compatible" and the flag dropped Ok(abiflags.to_string()) } else if (abiflags != "m") && (abiflags != "dm") { bail!("A python 3 interpreter on linux or mac os must have 'm' or 'dm' as abiflags ಠ_ಠ") } else { Ok(abiflags.to_string()) } } else { bail!("A python 3 interpreter on linux or mac os must define abiflags in its sysconfig ಠ_ಠ") } } impl PythonInterpreter { /// Does this interpreter have PEP 384 stable api aka. abi3 support? pub fn has_stable_api(&self) -> bool { if self.implementation_name.parse::().is_err() { false } else { match self.interpreter_kind { InterpreterKind::CPython => true, InterpreterKind::PyPy | InterpreterKind::GraalPy => false, } } } /// Returns the supported python environment in the PEP 425 format used for the wheel filename: /// {python tag}-{abi tag}-{platform tag} /// /// Don't ask me why or how, this is just what setuptools uses so I'm also going to use /// /// If abi3 is true, cpython wheels use the generic abi3 with the given version as minimum pub fn get_tag(&self, context: &BuildContext, platform_tags: &[PlatformTag]) -> Result { // Restrict `sysconfig.get_platform()` usage to Windows and non-portable Linux only for now // so we don't need to deal with macOS deployment target let target = &context.target; let use_sysconfig_platform = target.is_windows() || (target.is_linux() && platform_tags.iter().any(|tag| !tag.is_portable())) || target.is_illumos(); let platform = if use_sysconfig_platform { if let Some(platform) = self.platform.clone() { platform } else { context.get_platform_tag(platform_tags)? } } else { context.get_platform_tag(platform_tags)? }; let tag = if self.implementation_name.parse::().is_err() { // Use generic tags when `sys.implementation.name` != `platform.python_implementation()`, for example Pyston // See also https://github.com/pypa/packaging/blob/0031046f7fad649580bc3127d1cef9157da0dd79/packaging/tags.py#L234-L261 format!( "{interpreter}{major}{minor}-{soabi}-{platform}", interpreter = self.implementation_name, major = self.major, minor = self.minor, soabi = self .soabi .as_deref() .unwrap_or("none") .replace(['-', '.'], "_"), platform = platform ) } else { match self.interpreter_kind { InterpreterKind::CPython => { if target.is_unix() { format!( "cp{major}{minor}-cp{major}{minor}{abiflags}-{platform}", major = self.major, minor = self.minor, abiflags = self.abiflags, platform = platform ) } else { // On windows the abiflags are missing, but this seems to work format!( "cp{major}{minor}-none-{platform}", major = self.major, minor = self.minor, platform = platform ) } } InterpreterKind::PyPy => { // pypy uses its version as part of the ABI, e.g. // pypy 3.7 7.3 => numpy-1.20.1-pp37-pypy37_pp73-manylinux2014_x86_64.whl format!( "pp{major}{minor}-{abi_tag}-{platform}", major = self.major, minor = self.minor, abi_tag = calculate_abi_tag(&self.ext_suffix) .expect("PyPy's syconfig didn't define a valid `EXT_SUFFIX` ಠ_ಠ"), platform = platform, ) } InterpreterKind::GraalPy => { // GraalPy like PyPy uses its version as part of the ABI // graalpy 3.10 23.1 => numpy-1.23.5-graalpy310-graalpy231_310_native-manylinux2014_x86_64.whl format!( "graalpy{major}{minor}-{abi_tag}-{platform}", major = self.major, minor = self.minor, abi_tag = calculate_abi_tag(&self.ext_suffix) .expect("GraalPy's syconfig didn't define a valid `EXT_SUFFIX` ಠ_ಠ"), platform = platform, ) } } }; Ok(tag) } /// Adds the ext_suffix we read from python or know (.pyd/.abi3.so) and adds it to the base name /// /// For CPython, generate extensions as follows: /// /// For python 3, there is PEP 3149, but /// that is only valid for 3.2 - 3.4. Since only 3.6+ is supported, the /// templates are adapted from the (also /// incorrect) release notes of CPython 3.5: /// https://docs.python.org/3/whatsnew/3.5.html#build-and-c-api-changes /// /// Examples for 64-bit on CPython 3.6m: /// Linux: foobar.cpython-36m-x86_64-linux-gnu.so /// Windows: foobar.cp36-win_amd64.pyd /// Mac: foobar.cpython-36m-darwin.so /// FreeBSD: foobar.cpython-36m.so /// /// For pypy3, we read importlib.machinery.EXTENSION_SUFFIXES[0]. pub fn get_library_name(&self, base: &str) -> String { format!( "{base}{ext_suffix}", base = base, ext_suffix = self.ext_suffix ) } /// Is this a debug build of Python for Windows? pub fn is_windows_debug(&self) -> bool { self.ext_suffix.starts_with("_d.") && self.ext_suffix.ends_with(".pyd") } /// Checks whether the given command is a python interpreter and returns a /// [PythonInterpreter] if that is the case #[instrument(skip_all, fields(executable = %executable.as_ref().display()))] pub fn check_executable( executable: impl AsRef, target: &Target, bridge: &BridgeModel, ) -> Result> { let output = Command::new(executable.as_ref()) .env("PYTHONNOUSERSITE", "1") .args(["-c", GET_INTERPRETER_METADATA]) .output(); let err_msg = format!( "Trying to get metadata from the python interpreter '{}' failed", executable.as_ref().display() ); let output = match output { Ok(output) => { if output.status.success() { output } else { let stderr = String::from_utf8_lossy(&output.stderr); if stderr.starts_with(&format!( "pyenv: {}: command not found", executable.as_ref().display() )) { eprintln!( "⚠️ Warning: skipped unavailable python interpreter '{}' from pyenv", executable.as_ref().display() ); return Ok(None); } else { eprintln!("{stderr}"); bail!(err_msg); } } } Err(err) => { if err.kind() == io::ErrorKind::NotFound { if cfg!(windows) { if let Some(python) = executable.as_ref().to_str() { let ver = if python.starts_with("python") { python.strip_prefix("python").unwrap_or(python) } else { python }; // Try py -x.y on Windows let mut metadata_py = tempfile::NamedTempFile::new()?; write!(metadata_py, "{GET_INTERPRETER_METADATA}")?; let mut cmd = Command::new("cmd"); cmd.arg("/c") .arg("py") .arg(format!("-{}-{}", ver, target.pointer_width())) .arg(metadata_py.path()) .env("PYTHONNOUSERSITE", "1"); let output = cmd.output(); match output { Ok(output) if output.status.success() => output, _ => return Ok(None), } } else { return Ok(None); } } else { return Ok(None); } } else { return Err(err).context(err_msg); } } }; let message: InterpreterMetadataMessage = serde_json::from_slice(&output.stdout) .context(err_msg) .context(String::from_utf8_lossy(&output.stdout).trim().to_string())?; if (message.major == 2 && message.minor != 7) || (message.major == 3 && message.minor < 5) { debug!( "Skipping outdated python interpreter '{}'", executable.as_ref().display() ); return Ok(None); } let interpreter = match message.interpreter.as_str() { "cpython" => InterpreterKind::CPython, "pypy" => InterpreterKind::PyPy, "graalvm" | "graalpy" => InterpreterKind::GraalPy, other => { bail!("Unsupported interpreter {}", other); } }; let abiflags = fun_with_abiflags(&message, target, bridge).context(format_err!( "Failed to get information from the python interpreter at {}", executable.as_ref().display() ))?; let platform = if message.platform.starts_with("macosx") { // We don't use platform from sysconfig on macOS None } else { Some(message.platform.to_lowercase().replace(['-', '.'], "_")) }; let executable = message .executable .map(PathBuf::from) .unwrap_or_else(|| executable.as_ref().to_path_buf()); debug!( "Found {} interpreter at {}", interpreter, executable.display() ); Ok(Some(PythonInterpreter { config: InterpreterConfig { major: message.major, minor: message.minor, interpreter_kind: interpreter, abiflags, ext_suffix: message .ext_suffix .context("syconfig didn't define an `EXT_SUFFIX` ಠ_ಠ")?, pointer_width: None, }, executable, platform, runnable: true, implementation_name: message.implementation_name, soabi: message.soabi, })) } /// Construct a `PythonInterpreter` from a sysconfig and target pub fn from_config(config: InterpreterConfig) -> Self { let implementation_name = config.interpreter_kind.to_string().to_ascii_lowercase(); PythonInterpreter { config, executable: PathBuf::new(), platform: None, runnable: false, implementation_name, soabi: None, } } /// Find all available python interpreters for a given target pub fn find_by_target( target: &Target, requires_python: Option<&VersionSpecifiers>, ) -> Vec { InterpreterConfig::lookup_target(target) .into_iter() .filter_map(|config| match requires_python { Some(requires_python) => { if requires_python .contains(&Version::new([config.major as u64, config.minor as u64])) { Some(Self::from_config(config)) } else { None } } None => Some(Self::from_config(config)), }) .collect() } /// Tries to find all installed python versions using the heuristic for the /// given platform. /// /// We have two filters: The optional requires-python from the pyproject.toml and minimum python /// minor either from the bindings (i.e. Cargo.toml `abi3-py{major}{minor}`) or the global /// default minimum minor version pub fn find_all( target: &Target, bridge: &BridgeModel, requires_python: Option<&VersionSpecifiers>, ) -> Result> { let min_python_minor = match bridge { BridgeModel::Bindings(_, minor) | BridgeModel::Bin(Some((_, minor))) => *minor, _ => MINIMUM_PYTHON_MINOR, }; let executables = if target.is_windows() { find_all_windows(target, min_python_minor, requires_python)? } else { let mut executables: Vec = (min_python_minor..=MAXIMUM_PYTHON_MINOR) .filter(|minor| { requires_python .map(|requires_python| { requires_python.contains(&Version::new([3, *minor as u64])) }) .unwrap_or(true) }) .map(|minor| format!("python3.{minor}")) .collect(); // Also try to find PyPy for cffi and pyo3 bindings if *bridge == BridgeModel::Cffi || bridge.is_bindings("pyo3") || bridge.is_bindings("pyo3-ffi") { executables.extend( (min_python_minor..=MAXIMUM_PYPY_MINOR) .filter(|minor| { requires_python .map(|requires_python| { requires_python.contains(&Version::new([3, *minor as u64])) }) .unwrap_or(true) }) .map(|minor| format!("pypy3.{minor}")), ); } executables }; let mut available_versions = Vec::new(); for executable in executables { if let Some(version) = PythonInterpreter::check_executable(executable, target, bridge)? { available_versions.push(version); } } Ok(available_versions) } /// Checks that given list of executables are all valid python interpreters, /// determines the abiflags and versions of those interpreters and /// returns them as [PythonInterpreter] pub fn check_executables( executables: &[PathBuf], target: &Target, bridge: &BridgeModel, ) -> Result> { let mut available_versions = Vec::new(); for executable in executables { if let Some(version) = PythonInterpreter::check_executable(executable, target, bridge) .context(format!( "{} is not a valid python interpreter", executable.display() ))? { available_versions.push(version); } else { bail!( "Python interpreter `{}` doesn't exist", executable.display() ); } } Ok(available_versions) } /// Run a python script using this Python interpreter. pub fn run_script(&self, script: &str) -> Result { if !self.runnable { bail!("This {} isn't runnable", self); } let out = Command::new(&self.executable) .env("PYTHONIOENCODING", "utf-8") .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::inherit()) .spawn() .and_then(|mut child| { child .stdin .as_mut() .expect("piped stdin") .write_all(script.as_bytes())?; child.wait_with_output() }); match out { Err(err) => { if err.kind() == io::ErrorKind::NotFound { bail!( "Could not find any interpreter at {}, \ are you sure you have Python installed on your PATH?", self.executable.display() ); } else { bail!( "Failed to run the Python interpreter at {}: {}", self.executable.display(), err ); } } Ok(ok) if !ok.status.success() => bail!("Python script failed"), Ok(ok) => Ok(String::from_utf8(ok.stdout)?), } } /// Whether this Python interpreter support portable manylinux/musllinux wheels /// /// Returns `true` if we can not decide pub fn support_portable_wheels(&self) -> bool { if !self.runnable { return true; } let out = Command::new(&self.executable) .args([ "-m", "pip", "debug", "--verbose", "--disable-pip-version-check", ]) .output(); match out { Err(_) => true, Ok(ok) if !ok.status.success() => true, Ok(ok) => { if let Ok(stdout) = String::from_utf8(ok.stdout) { stdout.contains("manylinux") || stdout.contains("musllinux") } else { true } } } } /// An opaque string that uniquely identifies this Python interpreter. /// Used to trigger rebuilds for `pyo3` when the Python interpreter changes. pub fn environment_signature(&self) -> String { let pointer_width = self.pointer_width.unwrap_or(64); format!( "{}-{}.{}-{}bit", self.implementation_name, self.major, self.minor, pointer_width ) } /// Returns the site-packages directory inside a venv e.g. /// {venv_base}/lib/python{x}.{y} on unix or {venv_base}/Lib on window pub fn get_venv_site_package(&self, venv_base: impl AsRef, target: &Target) -> PathBuf { if target.is_unix() { match self.interpreter_kind { InterpreterKind::CPython | InterpreterKind::GraalPy => { let python_dir = format!("python{}.{}", self.major, self.minor); venv_base .as_ref() .join("lib") .join(python_dir) .join("site-packages") } InterpreterKind::PyPy => venv_base.as_ref().join("site-packages"), } } else { venv_base.as_ref().join("Lib").join("site-packages") } } } impl fmt::Display for PythonInterpreter { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { if self.runnable { write!( f, "{} {}.{}{} at {}", self.config.interpreter_kind, self.config.major, self.config.minor, self.config.abiflags, self.executable.display() ) } else { write!( f, "{} {}.{}{}", self.config.interpreter_kind, self.config.major, self.config.minor, self.config.abiflags, ) } } } /// Calculate the ABI tag from EXT_SUFFIX fn calculate_abi_tag(ext_suffix: &str) -> Option { let parts = ext_suffix.split('.').collect::>(); if parts.len() < 3 { // CPython3.7 and earlier uses ".pyd" on Windows. return None; } let soabi = parts[1]; let mut soabi_split = soabi.split('-'); let abi = if soabi.starts_with("cpython") { // non-windows format!("cp{}", soabi_split.nth(1).unwrap()) } else if soabi.starts_with("cp") { // windows soabi_split.next().unwrap().to_string() } else if soabi.starts_with("pypy") { soabi_split.take(2).collect::>().join("-") } else if soabi.starts_with("graalpy") { soabi_split.take(3).collect::>().join("-") } else if !soabi.is_empty() { // pyston, ironpython, others? soabi_split.nth(1).unwrap().to_string() } else { return None; }; let abi_tag = abi.replace(['.', '-', ' '], "_"); Some(abi_tag) } #[cfg(test)] mod tests { use super::*; #[test] fn test_find_interpreter_by_target() { let target = Target::from_target_triple(Some("x86_64-unknown-linux-gnu".to_string())).unwrap(); let pythons = PythonInterpreter::find_by_target(&target, None); assert_eq!(pythons.len(), 10); let pythons = PythonInterpreter::find_by_target( &target, Some(&VersionSpecifiers::from_str(">=3.7").unwrap()), ); assert_eq!(pythons.len(), 10); let pythons = PythonInterpreter::find_by_target( &target, Some(&VersionSpecifiers::from_str(">=3.10").unwrap()), ); assert_eq!(pythons.len(), 4); } #[test] fn test_calculate_abi_tag() { let cases = vec![ (".cpython-37m-x86_64-linux-gnu.so", Some("cp37m")), (".cpython-310-x86_64-linux-gnu.so", Some("cp310")), (".cpython-310-darwin.so", Some("cp310")), (".cp310-win_amd64.pyd", Some("cp310")), (".cp39-mingw_x86_64.pyd", Some("cp39")), (".cpython-312-wasm32-wasi.so", Some("cp312")), (".cpython-38.so", Some("cp38")), (".pyd", None), (".so", None), (".pypy38-pp73-x86_64-linux-gnu.so", Some("pypy38_pp73")), ( ".graalpy-38-native-x86_64-darwin.dylib", Some("graalpy_38_native"), ), (".pyston-23-x86_64-linux-gnu.so", Some("23")), ]; for (ext_suffix, expected) in cases { assert_eq!(calculate_abi_tag(ext_suffix).as_deref(), expected); } } } maturin-1.7.4/src/source_distribution.rs000066400000000000000000000741111467514767100204640ustar00rootroot00000000000000use crate::module_writer::{add_data, ModuleWriter}; use crate::pyproject_toml::SdistGenerator; use crate::{pyproject_toml::Format, BuildContext, PyProjectToml, SDistWriter}; use anyhow::{bail, Context, Result}; use cargo_metadata::camino::Utf8Path; use cargo_metadata::{Metadata, MetadataCommand, PackageId}; use fs_err as fs; use ignore::overrides::Override; use normpath::PathExt as _; use path_slash::PathExt as _; use std::collections::HashMap; use std::ffi::OsStr; use std::io::Write; use std::path::{Path, PathBuf}; use std::process::Command; use std::str; use toml_edit::DocumentMut; use tracing::debug; /// Path dependency information. /// It may be in a different workspace than the root crate. /// /// ```toml /// [dependencies] /// foo = { path = "path/to/foo" } /// ``` #[derive(Debug, Clone)] struct PathDependency { /// `Cargo.toml` path of the path dependency manifest_path: PathBuf, /// workspace root of the path dependency workspace_root: PathBuf, /// readme path of the path dependency readme: Option, } fn parse_toml_file(path: &Path, kind: &str) -> Result { let text = fs::read_to_string(path)?; let document = text.parse::().context(format!( "Failed to parse {} at {}", kind, path.display() ))?; Ok(document) } /// Rewrite Cargo.toml to only retain path dependencies that are actually used /// /// We only want to add path dependencies that are actually used /// to reduce the size of the source distribution. fn rewrite_cargo_toml( document: &mut DocumentMut, manifest_path: &Path, known_path_deps: &HashMap, ) -> Result<()> { debug!( "Rewriting Cargo.toml `workspace.members` at {}", manifest_path.display() ); // Update workspace members if let Some(workspace) = document.get_mut("workspace").and_then(|x| x.as_table_mut()) { if let Some(members) = workspace.get_mut("members").and_then(|x| x.as_array()) { if known_path_deps.is_empty() { // Remove workspace members when there isn't any path dep workspace.remove("members"); if workspace.is_empty() { // Remove workspace all together if it's empty document.remove("workspace"); } } else { let mut new_members = toml_edit::Array::new(); for member in members { if let toml_edit::Value::String(ref s) = member { let member_path = s.value(); // See https://github.com/rust-lang/cargo/blob/0de91c89e6479016d0ed8719fdc2947044335b36/src/cargo/util/restricted_names.rs#L119-L122 let is_glob_pattern = member_path.contains(['*', '?', '[', ']']); if is_glob_pattern { let pattern = glob::Pattern::new(member_path).with_context(|| { format!( "Invalid `workspace.members` glob pattern: {} in {}", member_path, manifest_path.display() ) })?; if known_path_deps.values().any(|path_dep| { let relative_path = path_dep .manifest_path .strip_prefix(&path_dep.workspace_root) .unwrap(); let relative_path_str = relative_path.to_str().unwrap(); pattern.matches(relative_path_str) }) { new_members.push(member_path); } } else if known_path_deps.contains_key(member_path) { new_members.push(member_path); } } } if !new_members.is_empty() { workspace["members"] = toml_edit::value(new_members); } else { workspace.remove("members"); } } } } Ok(()) } /// Rewrite `Cargo.toml` to find the readme in the same directory. /// /// `package.readme` may point to any point above the package, so when we move the directory, but /// keep the readme position, we could get different readme files at the same archive location. /// Putting the readme in the same directory as the `Cargo.toml` prevents this. fn rewrite_cargo_toml_readme( document: &mut DocumentMut, manifest_path: &Path, readme_name: Option<&str>, ) -> Result<()> { debug!( "Rewriting Cargo.toml `package.readme` at {}", manifest_path.display() ); if let Some(readme_name) = readme_name { let project = document.get_mut("package").with_context(|| { format!( "Missing `[package]` table in Cargo.toml with readme at {}", manifest_path.display() ) })?; project["readme"] = toml_edit::value(readme_name); } Ok(()) } /// When `pyproject.toml` is inside the Cargo workspace root, /// we need to update `tool.maturin.manifest-path` in `pyproject.toml`. fn rewrite_pyproject_toml( pyproject_toml_path: &Path, relative_manifest_path: &Path, ) -> Result { let mut data = parse_toml_file(pyproject_toml_path, "pyproject.toml")?; let tool = data .entry("tool") .or_insert_with(|| toml_edit::Item::Table(toml_edit::Table::new())) .as_table_like_mut() .with_context(|| { format!( "`[tool]` must be a table in {}", pyproject_toml_path.display() ) })?; let maturin = tool .entry("maturin") .or_insert_with(|| toml_edit::Item::Table(toml_edit::Table::new())) .as_table_like_mut() .with_context(|| { format!( "`[tool.maturin]` must be a table in {}", pyproject_toml_path.display() ) })?; maturin.remove("manifest-path"); maturin.insert( "manifest-path", toml_edit::value(relative_manifest_path.to_str().unwrap()), ); Ok(data.to_string()) } /// Copies the files of a crate to a source distribution, recursively adding path dependencies /// and rewriting path entries in Cargo.toml /// /// Runs `cargo package --list --allow-dirty` to obtain a list of files to package. fn add_crate_to_source_distribution( writer: &mut SDistWriter, manifest_path: impl AsRef, prefix: impl AsRef, readme: Option<&Path>, known_path_deps: &HashMap, root_crate: bool, skip_cargo_toml: bool, ) -> Result<()> { let manifest_path = manifest_path.as_ref(); let args = ["package", "--list", "--allow-dirty", "--manifest-path"]; let output = Command::new("cargo") .args(args) .arg(manifest_path) .output() .with_context(|| { format!( "Failed to run `cargo package --list --allow-dirty --manifest-path {}`", manifest_path.display() ) })?; if !output.status.success() { bail!( "Failed to query file list from cargo: {}\n--- Manifest path: {}\n--- Stdout:\n{}\n--- Stderr:\n{}", output.status, manifest_path.display(), String::from_utf8_lossy(&output.stdout), String::from_utf8_lossy(&output.stderr), ); } if !output.stderr.is_empty() { eprintln!("From `cargo {}`:", args.join(" ")); std::io::stderr().write_all(&output.stderr)?; } let file_list: Vec<&Path> = str::from_utf8(&output.stdout) .context("Cargo printed invalid utf-8 ಠ_ಠ")? .lines() .map(Path::new) .collect(); // manifest_dir should be a relative path let manifest_dir = manifest_path.parent().unwrap(); let target_source: Vec<(PathBuf, PathBuf)> = file_list .iter() .map(|relative_to_manifests| { let relative_to_cwd = manifest_dir.join(relative_to_manifests); (relative_to_manifests.to_path_buf(), relative_to_cwd) }) // We rewrite Cargo.toml and add it separately .filter(|(target, source)| { #[allow(clippy::if_same_then_else)] // Skip generated files. See https://github.com/rust-lang/cargo/issues/7938#issuecomment-593280660 // and https://github.com/PyO3/maturin/issues/449 if target == Path::new("Cargo.toml.orig") || target == Path::new("Cargo.toml") { false } else if root_crate && target == Path::new("pyproject.toml") { // pyproject.toml is handled separately because it has be to put in the root dir // of source distribution false } else if matches!(target.extension(), Some(ext) if ext == "pyc" || ext == "pyd" || ext == "so") { // Technically, `cargo package --list` should handle this, // but somehow it doesn't on Alpine Linux running in GitHub Actions, // so we do it manually here. // See https://github.com/PyO3/maturin/pull/1255#issuecomment-1308838786 debug!("Ignoring {}", target.display()); false } else { source.exists() } }) .collect(); let prefix = prefix.as_ref(); writer.add_directory(prefix)?; let cargo_toml_path = prefix.join(manifest_path.file_name().unwrap()); let readme_name = readme .as_ref() .map(|readme| { readme .file_name() .and_then(OsStr::to_str) .with_context(|| format!("Missing readme filename for {}", manifest_path.display())) }) .transpose()?; if root_crate { let mut document = parse_toml_file(manifest_path, "Cargo.toml")?; rewrite_cargo_toml_readme(&mut document, manifest_path, readme_name)?; rewrite_cargo_toml(&mut document, manifest_path, known_path_deps)?; writer.add_bytes( cargo_toml_path, Some(manifest_path), document.to_string().as_bytes(), )?; } else if !skip_cargo_toml { let mut document = parse_toml_file(manifest_path, "Cargo.toml")?; rewrite_cargo_toml_readme(&mut document, manifest_path, readme_name)?; writer.add_bytes( cargo_toml_path, Some(manifest_path), document.to_string().as_bytes(), )?; } for (target, source) in target_source { writer.add_file(prefix.join(target), source)?; } Ok(()) } /// Finds all path dependencies of the crate fn find_path_deps(cargo_metadata: &Metadata) -> Result> { let root = cargo_metadata .root_package() .context("Expected the dependency graph to have a root package")?; let pkg_readmes = cargo_metadata .packages .iter() .filter_map(|package| { package .readme .as_ref() .map(|readme| (package.id.clone(), readme.clone().into_std_path_buf())) }) .collect::>(); // scan the dependency graph for path dependencies let mut path_deps = HashMap::new(); let mut stack: Vec<&cargo_metadata::Package> = vec![root]; while let Some(top) = stack.pop() { // There seems to be no API to get the package id of a dependency, so collect the package ids from resolve // and match them up with the `Dependency`s from `Package.dependencies`. let dep_ids = &cargo_metadata .resolve .as_ref() .unwrap() .nodes .iter() .find(|node| node.id == top.id) .unwrap() .dependencies; for dep_id in dep_ids { // Assumption: Each package name can only occur once in a `[dependencies]` table. let dependency = top .dependencies .iter() .find(|package| { // Package ids are opaque and there seems to be no way to query their name. let dep_name = &cargo_metadata .packages .iter() .find(|package| &package.id == dep_id) .unwrap() .name; &package.name == dep_name }) .unwrap(); if let Some(path) = &dependency.path { let dep_name = dependency.rename.as_ref().unwrap_or(&dependency.name); if path_deps.contains_key(dep_name) { continue; } // we search for the respective package by `manifest_path`, there seems // to be no way to query the dependency graph given `dependency` let dep_manifest_path = path.join("Cargo.toml"); // Path dependencies may not be in the same workspace as the root crate, // thus we need to find out its workspace root from `cargo metadata` let path_dep_metadata = MetadataCommand::new() .manifest_path(&dep_manifest_path) .verbose(true) // We don't need to resolve the dependency graph .no_deps() .exec() .with_context(|| { format!( "Failed to resolve workspace root for {} at '{}'", dep_id, dep_manifest_path ) })?; path_deps.insert( dep_name.clone(), PathDependency { manifest_path: PathBuf::from(dep_manifest_path.clone()), workspace_root: path_dep_metadata .workspace_root .clone() .into_std_path_buf(), readme: pkg_readmes.get(dep_id).cloned(), }, ); if let Some(dep_package) = cargo_metadata .packages .iter() .find(|package| package.manifest_path == dep_manifest_path) { // scan the dependencies of the path dependency stack.push(dep_package) } } } } Ok(path_deps) } /// Copies the files of git to a source distribution /// /// Runs `git ls-files -z` to obtain a list of files to package. fn add_git_tracked_files_to_sdist( pyproject_toml_path: &Path, writer: &mut SDistWriter, prefix: impl AsRef, ) -> Result<()> { let pyproject_dir = pyproject_toml_path.parent().unwrap(); let output = Command::new("git") .args(["ls-files", "-z"]) .current_dir(pyproject_dir) .output() .context("Failed to run `git ls-files -z`")?; if !output.status.success() { bail!( "Failed to query file list from git: {}\n--- Project Path: {}\n--- Stdout:\n{}\n--- Stderr:\n{}", output.status, pyproject_dir.display(), String::from_utf8_lossy(&output.stdout), String::from_utf8_lossy(&output.stderr), ); } let prefix = prefix.as_ref(); writer.add_directory(prefix)?; let file_paths = str::from_utf8(&output.stdout) .context("git printed invalid utf-8 ಠ_ಠ")? .split('\0') .filter(|s| !s.is_empty()) .map(Path::new); for source in file_paths { writer.add_file(prefix.join(source), pyproject_dir.join(source))?; } Ok(()) } /// Copies the files of a crate to a source distribution, recursively adding path dependencies /// and rewriting path entries in Cargo.toml fn add_cargo_package_files_to_sdist( build_context: &BuildContext, pyproject_toml_path: &Path, writer: &mut SDistWriter, root_dir: &Path, ) -> Result<()> { let manifest_path = &build_context.manifest_path; let workspace_root = &build_context.cargo_metadata.workspace_root; let workspace_manifest_path = workspace_root.join("Cargo.toml"); let known_path_deps = find_path_deps(&build_context.cargo_metadata)?; debug!( "Found path dependencies: {:?}", known_path_deps.keys().collect::>() ); let mut sdist_root = common_path_prefix(workspace_root.as_std_path(), pyproject_toml_path).unwrap(); for path_dep in known_path_deps.values() { if let Some(prefix) = common_path_prefix(&sdist_root, path_dep.manifest_path.parent().unwrap()) { sdist_root = prefix; } else { bail!("Failed to determine common path prefix of path dependencies"); } } debug!("Found sdist root: {}", sdist_root.display()); // Add local path dependencies for (name, path_dep) in known_path_deps.iter() { add_path_dep( writer, root_dir, workspace_root, &workspace_manifest_path, &known_path_deps, &sdist_root, name, path_dep, ) .with_context(|| format!("Failed to add path dependency {}", name))?; } // Add the main crate let abs_manifest_path = manifest_path .normalize() .with_context(|| { format!( "failed to normalize manifest path `{}`", manifest_path.display() ) })? .into_path_buf(); let abs_manifest_dir = abs_manifest_path.parent().unwrap(); let main_crate = build_context.cargo_metadata.root_package().unwrap(); let relative_main_crate_manifest_dir = manifest_path .parent() .unwrap() .strip_prefix(&sdist_root) .unwrap(); add_crate_to_source_distribution( writer, manifest_path, root_dir.join(relative_main_crate_manifest_dir), None, &known_path_deps, true, false, )?; // Handle possible relative readme field in Cargo.toml if let Some(readme) = main_crate.readme.as_ref() { let readme = abs_manifest_dir.join(readme); let abs_readme = readme .normalize() .with_context(|| format!("failed to normalize readme path `{}`", readme.display()))? .into_path_buf(); // Add readme next to Cargo.toml so we don't get collisions between crates using readmes // higher up the file tree. writer.add_file(root_dir.join(readme.file_name().unwrap()), &abs_readme)?; } // Add Cargo.lock file and workspace Cargo.toml let manifest_cargo_lock_path = abs_manifest_dir.join("Cargo.lock"); let workspace_cargo_lock = workspace_root.join("Cargo.lock").into_std_path_buf(); let (cargo_lock_path, use_workspace_cargo_lock) = if manifest_cargo_lock_path.exists() { (Some(manifest_cargo_lock_path.clone()), false) } else if workspace_cargo_lock.exists() { (Some(workspace_cargo_lock), true) } else { (None, false) }; let cargo_lock_required = build_context.cargo_options.locked || build_context.cargo_options.frozen; if let Some(cargo_lock_path) = cargo_lock_path { let pyproject_root = pyproject_toml_path.parent().unwrap(); let project_root = if pyproject_root == sdist_root || pyproject_root.starts_with(&sdist_root) { &sdist_root } else { assert!(sdist_root.starts_with(pyproject_root)); pyproject_root }; let relative_cargo_lock = cargo_lock_path.strip_prefix(project_root).unwrap(); writer.add_file(root_dir.join(relative_cargo_lock), &cargo_lock_path)?; if use_workspace_cargo_lock { let relative_workspace_cargo_toml = relative_cargo_lock.with_file_name("Cargo.toml"); let mut deps_to_keep = known_path_deps.clone(); // Also need to the main Python binding crate let main_member_name = abs_manifest_dir .strip_prefix(workspace_root) .unwrap() .to_slash() .unwrap() .to_string(); deps_to_keep.insert( main_member_name, PathDependency { manifest_path: manifest_path.clone(), workspace_root: workspace_root.clone().into_std_path_buf(), readme: None, }, ); let mut document = parse_toml_file(workspace_manifest_path.as_std_path(), "Cargo.toml")?; rewrite_cargo_toml( &mut document, workspace_manifest_path.as_std_path(), &deps_to_keep, )?; writer.add_bytes( root_dir.join(relative_workspace_cargo_toml), Some(workspace_manifest_path.as_std_path()), document.to_string().as_bytes(), )?; } } else if cargo_lock_required { bail!("Cargo.lock is required by `--locked`/`--frozen` but it's not found."); } else { eprintln!( "⚠️ Warning: Cargo.lock is not found, it is recommended \ to include it in the source distribution" ); } // Add pyproject.toml let pyproject_dir = pyproject_toml_path.parent().unwrap(); if pyproject_dir != sdist_root { // rewrite `tool.maturin.manifest-path` in pyproject.toml let rewritten_pyproject_toml = rewrite_pyproject_toml( pyproject_toml_path, &relative_main_crate_manifest_dir.join("Cargo.toml"), )?; writer.add_bytes( root_dir.join("pyproject.toml"), Some(pyproject_toml_path), rewritten_pyproject_toml.as_bytes(), )?; } else { writer.add_file(root_dir.join("pyproject.toml"), pyproject_toml_path)?; } // Add python source files let mut python_packages = Vec::new(); if let Some(python_module) = build_context.project_layout.python_module.as_ref() { python_packages.push(python_module.to_path_buf()); } for package in &build_context.project_layout.python_packages { let package_path = build_context.project_layout.python_dir.join(package); if python_packages.iter().any(|p| *p == package_path) { continue; } python_packages.push(package_path); } for package in python_packages { for entry in ignore::Walk::new(package) { let source = entry?.into_path(); // Technically, `ignore` crate should handle this, // but somehow it doesn't on Alpine Linux running in GitHub Actions, // so we do it manually here. // See https://github.com/PyO3/maturin/pull/1187#issuecomment-1273987013 if source .extension() .map(|ext| ext == "pyc" || ext == "pyd" || ext == "so") .unwrap_or_default() { debug!("Ignoring {}", source.display()); continue; } let target = root_dir.join(source.strip_prefix(pyproject_dir).unwrap()); if source.is_dir() { writer.add_directory(target)?; } else { writer.add_file(target, &source)?; } } } Ok(()) } #[allow(clippy::too_many_arguments)] // TODO(konsti) fn add_path_dep( writer: &mut SDistWriter, root_dir: &Path, workspace_root: &Utf8Path, workspace_manifest_path: &Utf8Path, known_path_deps: &HashMap, sdist_root: &Path, name: &str, path_dep: &PathDependency, ) -> Result<()> { debug!( "Adding path dependency: {} at {}", name, path_dep.manifest_path.display() ); let path_dep_manifest_dir = path_dep.manifest_path.parent().unwrap(); let relative_path_dep_manifest_dir = path_dep_manifest_dir.strip_prefix(sdist_root).unwrap(); // we may need to rewrite workspace Cargo.toml later so don't add it to sdist yet let skip_cargo_toml = workspace_manifest_path == path_dep.manifest_path; add_crate_to_source_distribution( writer, &path_dep.manifest_path, root_dir.join(relative_path_dep_manifest_dir), path_dep.readme.as_deref(), known_path_deps, false, skip_cargo_toml, ) .with_context(|| { format!( "Failed to add local dependency {} at {} to the source distribution", name, path_dep.manifest_path.display() ) })?; // Include readme if let Some(readme) = path_dep.readme.as_ref() { let readme = path_dep_manifest_dir.join(readme); let abs_readme = readme .normalize() .with_context(|| format!("failed to normalize readme path `{}`", readme.display()))? .into_path_buf(); // Add readme next to Cargo.toml so we don't get collisions between crates using readmes // higher up the file tree. See also [`rewrite_cargo_toml_readme`]. writer.add_file( root_dir .join(relative_path_dep_manifest_dir) .join(readme.file_name().unwrap()), &abs_readme, )?; } // Handle different workspace manifest if path_dep.workspace_root != workspace_root { let path_dep_workspace_manifest = path_dep.workspace_root.join("Cargo.toml"); let relative_path_dep_workspace_manifest = path_dep_workspace_manifest .strip_prefix(sdist_root) .unwrap(); writer.add_file( root_dir.join(relative_path_dep_workspace_manifest), &path_dep_workspace_manifest, )?; } Ok(()) } /// Creates a source distribution, packing the root crate and all local dependencies /// /// The source distribution format is specified in /// [PEP 517 under "build_sdist"](https://www.python.org/dev/peps/pep-0517/#build-sdist) /// and in /// https://packaging.python.org/specifications/source-distribution-format/#source-distribution-file-format pub fn source_distribution( build_context: &BuildContext, pyproject: &PyProjectToml, excludes: Override, ) -> Result { let pyproject_toml_path = build_context .pyproject_toml_path .normalize() .with_context(|| { format!( "failed to normalize pyproject.toml path `{}`", build_context.pyproject_toml_path.display() ) })? .into_path_buf(); let metadata23 = &build_context.metadata23; let mut writer = SDistWriter::new(&build_context.out, metadata23, excludes)?; let root_dir = PathBuf::from(format!( "{}-{}", &metadata23.get_distribution_escaped(), &metadata23.get_version_escaped() )); match pyproject.sdist_generator() { SdistGenerator::Cargo => add_cargo_package_files_to_sdist( build_context, &pyproject_toml_path, &mut writer, &root_dir, )?, SdistGenerator::Git => { add_git_tracked_files_to_sdist(&pyproject_toml_path, &mut writer, &root_dir)? } } let pyproject_toml_path = build_context .pyproject_toml_path .normalize() .with_context(|| { format!( "failed to normalize pyproject.toml path `{}`", build_context.pyproject_toml_path.display() ) })? .into_path_buf(); let pyproject_dir = pyproject_toml_path.parent().unwrap(); // Add readme, license if let Some(project) = pyproject.project.as_ref() { if let Some(pyproject_toml::ReadMe::RelativePath(readme)) = project.readme.as_ref() { writer.add_file(root_dir.join(readme), pyproject_dir.join(readme))?; } if let Some(pyproject_toml::License::Table { file: Some(license), text: None, }) = project.license.as_ref() { writer.add_file(root_dir.join(license), pyproject_dir.join(license))?; } } let mut include = |pattern| -> Result<()> { eprintln!("📦 Including files matching \"{pattern}\""); for source in glob::glob(&pyproject_dir.join(pattern).to_string_lossy()) .with_context(|| format!("Invalid glob pattern: {pattern}"))? .filter_map(Result::ok) { let target = root_dir.join(source.strip_prefix(pyproject_dir).unwrap()); if source.is_dir() { writer.add_directory(target)?; } else { writer.add_file(target, source)?; } } Ok(()) }; if let Some(glob_patterns) = pyproject.include() { for pattern in glob_patterns .iter() .filter_map(|glob_pattern| glob_pattern.targets(Format::Sdist)) { include(pattern)?; } } writer.add_bytes( root_dir.join("PKG-INFO"), None, metadata23.to_file_contents()?.as_bytes(), )?; add_data(&mut writer, build_context.project_layout.data.as_deref())?; let source_distribution_path = writer.finish()?; eprintln!( "📦 Built source distribution to {}", source_distribution_path.display() ); Ok(source_distribution_path) } /// Find the common prefix, if any, between two paths /// /// Taken from https://docs.rs/common-path/1.0.0/src/common_path/lib.rs.html#84-109 /// License: MIT/Apache 2.0 fn common_path_prefix(one: P, two: Q) -> Option where P: AsRef, Q: AsRef, { let one = one.as_ref(); let two = two.as_ref(); let one = one.components(); let two = two.components(); let mut final_path = PathBuf::new(); let mut found = false; let paths = one.zip(two); for (l, r) in paths { if l == r { final_path.push(l.as_os_str()); found = true; } else { break; } } if found { Some(final_path) } else { None } } maturin-1.7.4/src/target.rs000066400000000000000000000550661467514767100156630ustar00rootroot00000000000000use crate::cross_compile::is_cross_compiling; use crate::python_interpreter::InterpreterKind; use crate::python_interpreter::InterpreterKind::{CPython, GraalPy, PyPy}; use crate::PlatformTag; use anyhow::{anyhow, bail, format_err, Result}; use platform_info::*; use rustc_version::VersionMeta; use serde::Deserialize; use std::env; use std::fmt; use std::path::Path; use std::path::PathBuf; use std::process::Command; use std::str; use target_lexicon::{Architecture, Environment, Triple}; use tracing::error; pub(crate) const RUST_1_64_0: semver::Version = semver::Version::new(1, 64, 0); /// All supported operating system #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Deserialize)] #[serde(rename_all = "lowercase")] pub enum Os { Linux, Windows, Macos, Ios, FreeBsd, NetBsd, OpenBsd, Dragonfly, Solaris, Illumos, Haiku, Emscripten, Wasi, Aix, } impl fmt::Display for Os { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Os::Linux => write!(f, "Linux"), Os::Windows => write!(f, "Windows"), Os::Macos => write!(f, "macOS"), Os::Ios => write!(f, "iOS"), Os::FreeBsd => write!(f, "FreeBSD"), Os::NetBsd => write!(f, "NetBSD"), Os::OpenBsd => write!(f, "OpenBSD"), Os::Dragonfly => write!(f, "DragonFly"), Os::Solaris => write!(f, "Solaris"), Os::Illumos => write!(f, "Illumos"), Os::Haiku => write!(f, "Haiku"), Os::Emscripten => write!(f, "Emscripten"), Os::Wasi => write!(f, "Wasi"), Os::Aix => write!(f, "AIX"), } } } /// All supported CPU architectures #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Deserialize)] #[serde(rename_all = "lowercase")] pub enum Arch { Aarch64, Armv6L, Armv7L, #[serde(alias = "ppc")] Powerpc, #[serde(alias = "ppc64le")] Powerpc64Le, #[serde(alias = "ppc64")] Powerpc64, #[serde(alias = "i686")] X86, X86_64, S390X, Wasm32, Riscv32, Riscv64, Mips64el, Mips64, Mipsel, Mips, Sparc64, LoongArch64, } impl fmt::Display for Arch { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Arch::Aarch64 => write!(f, "aarch64"), Arch::Armv6L => write!(f, "armv6l"), Arch::Armv7L => write!(f, "armv7l"), Arch::Powerpc => write!(f, "ppc"), Arch::Powerpc64Le => write!(f, "ppc64le"), Arch::Powerpc64 => write!(f, "ppc64"), Arch::X86 => write!(f, "i686"), Arch::X86_64 => write!(f, "x86_64"), Arch::S390X => write!(f, "s390x"), Arch::Wasm32 => write!(f, "wasm32"), Arch::Riscv32 => write!(f, "riscv32"), Arch::Riscv64 => write!(f, "riscv64"), Arch::Mips64el => write!(f, "mips64el"), Arch::Mips64 => write!(f, "mips64"), Arch::Mipsel => write!(f, "mipsel"), Arch::Mips => write!(f, "mips"), Arch::Sparc64 => write!(f, "sparc64"), Arch::LoongArch64 => write!(f, "loongarch64"), } } } impl Arch { /// Represents the hardware platform. /// /// This is the same as the native platform's `uname -m` output. pub fn machine(&self) -> &'static str { // See https://www.freebsd.org/cgi/man.cgi?query=arch&sektion=7&format=html // MACHINE_ARCH vs MACHINE_CPUARCH vs MACHINE section match self { Arch::Aarch64 => "arm64", Arch::Armv6L | Arch::Armv7L => "arm", Arch::Powerpc | Arch::Powerpc64Le | Arch::Powerpc64 => "powerpc", Arch::X86 => "i386", Arch::X86_64 => "amd64", Arch::Riscv32 | Arch::Riscv64 => "riscv", Arch::Mips64el | Arch::Mips64 | Arch::Mipsel | Arch::Mips => "mips", // sparc64 is unsupported since FreeBSD 13.0 Arch::Sparc64 => "sparc64", Arch::Wasm32 => "wasm32", Arch::S390X => "s390x", Arch::LoongArch64 => "loongarch64", } } } // Returns the set of supported architectures for each operating system fn get_supported_architectures(os: &Os) -> Vec { match os { Os::Linux => vec![ Arch::Aarch64, Arch::Armv6L, Arch::Armv7L, Arch::Powerpc, Arch::Powerpc64, Arch::Powerpc64Le, Arch::S390X, Arch::X86, Arch::X86_64, Arch::Riscv32, Arch::Riscv64, Arch::Mips64el, Arch::Mips64, Arch::Mipsel, Arch::Mips, Arch::Sparc64, Arch::LoongArch64, ], Os::Windows => vec![Arch::X86, Arch::X86_64, Arch::Aarch64], Os::Macos => vec![Arch::Aarch64, Arch::X86_64], Os::Ios => vec![Arch::Aarch64, Arch::X86_64], Os::FreeBsd | Os::NetBsd => vec![ Arch::Aarch64, Arch::Armv6L, Arch::Armv7L, Arch::Powerpc, Arch::Powerpc64, Arch::Powerpc64Le, Arch::X86, Arch::X86_64, Arch::Riscv32, Arch::Riscv64, Arch::Mips64el, Arch::Mipsel, Arch::Sparc64, ], Os::OpenBsd => vec![ Arch::X86, Arch::X86_64, Arch::Aarch64, Arch::Armv7L, Arch::Powerpc, Arch::Powerpc64, Arch::Powerpc64Le, Arch::Riscv32, Arch::Riscv64, Arch::Sparc64, ], Os::Dragonfly => vec![Arch::X86_64], Os::Illumos => vec![Arch::X86_64], Os::Haiku => vec![Arch::X86_64], Os::Solaris => vec![Arch::X86_64, Arch::Sparc64], Os::Emscripten | Os::Wasi => vec![Arch::Wasm32], Os::Aix => vec![Arch::Powerpc64], } } /// The part of the current platform that is relevant when building wheels and is supported #[derive(Debug, Clone, Eq, PartialEq)] pub struct Target { os: Os, arch: Arch, env: Environment, triple: String, cross_compiling: bool, /// rustc version information pub(crate) rustc_version: VersionMeta, /// Is user specified `--target` pub(crate) user_specified: bool, } impl fmt::Display for Target { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", self.triple) } } impl Target { /// Uses the given target triple or tries the guess the current target by using the one used /// for compilation /// /// Fails if the target triple isn't supported pub fn from_target_triple(target_triple: Option) -> Result { use target_lexicon::{ ArmArchitecture, Mips32Architecture, Mips64Architecture, OperatingSystem, }; let rustc_version = rustc_version_meta()?; let host_triple = &rustc_version.host; let (platform, triple) = if let Some(ref target_triple) = target_triple { let platform: Triple = target_triple .parse() .map_err(|_| format_err!("Unknown target triple {}", target_triple))?; (platform, target_triple.to_string()) } else { let platform: Triple = host_triple .parse() .map_err(|_| format_err!("Unknown target triple {}", host_triple))?; (platform, host_triple.clone()) }; let os = match platform.operating_system { OperatingSystem::Linux => Os::Linux, OperatingSystem::Windows => Os::Windows, OperatingSystem::MacOSX { .. } | OperatingSystem::Darwin => Os::Macos, OperatingSystem::Ios => Os::Ios, OperatingSystem::Netbsd => Os::NetBsd, OperatingSystem::Freebsd => Os::FreeBsd, OperatingSystem::Openbsd => Os::OpenBsd, OperatingSystem::Dragonfly => Os::Dragonfly, OperatingSystem::Solaris => Os::Solaris, OperatingSystem::Illumos => Os::Illumos, OperatingSystem::Haiku => Os::Haiku, OperatingSystem::Emscripten => Os::Emscripten, OperatingSystem::Wasi | OperatingSystem::WasiP1 | OperatingSystem::WasiP2 => Os::Wasi, OperatingSystem::Aix => Os::Aix, unsupported => bail!("The operating system {:?} is not supported", unsupported), }; let arch = match platform.architecture { Architecture::X86_64 | Architecture::X86_64h => Arch::X86_64, Architecture::X86_32(_) => Arch::X86, Architecture::Arm(arm_arch) => match arm_arch { ArmArchitecture::Arm | ArmArchitecture::Armv6 => Arch::Armv6L, _ => Arch::Armv7L, }, Architecture::Aarch64(_) => Arch::Aarch64, Architecture::Powerpc => Arch::Powerpc, Architecture::Powerpc64 => Arch::Powerpc64, Architecture::Powerpc64le => Arch::Powerpc64Le, Architecture::S390x => Arch::S390X, Architecture::Wasm32 => Arch::Wasm32, Architecture::Riscv32(_) => Arch::Riscv32, Architecture::Riscv64(_) => Arch::Riscv64, Architecture::Mips64(mips64_arch) => match mips64_arch { Mips64Architecture::Mips64el => Arch::Mips64el, Mips64Architecture::Mips64 => Arch::Mips64, _ => bail!("The architecture {} is not supported", mips64_arch), }, Architecture::Mips32(mips32_arch) => match mips32_arch { Mips32Architecture::Mipsel => Arch::Mipsel, Mips32Architecture::Mips => Arch::Mips, _ => bail!("The architecture {} is not supported", mips32_arch), }, Architecture::Sparc64 => Arch::Sparc64, Architecture::LoongArch64 => Arch::LoongArch64, unsupported => bail!("The architecture {} is not supported", unsupported), }; if !get_supported_architectures(&os).contains(&arch) { bail!("{} is not supported on {}", arch, os); } let mut target = Target { os, arch, env: platform.environment, triple, rustc_version, user_specified: target_triple.is_some(), cross_compiling: false, }; target.cross_compiling = is_cross_compiling(&target)?; Ok(target) } /// Returns the platform architecture pub fn get_platform_arch(&self) -> Result { if self.cross_compiling { return Ok(self.arch.to_string()); } let machine = PlatformInfo::new().map(|info| info.machine().to_string_lossy().into_owned()); let arch = match machine { Ok(machine) => { let linux32 = (machine == "x86_64" && self.arch != Arch::X86_64) || (machine == "aarch64" && self.arch != Arch::Aarch64); if linux32 { // When running in Docker sometimes uname returns 64-bit architecture while the container is actually 32-bit, // In this case we trust the architecture of rustc target self.arch.to_string() } else { machine } } Err(err) => { error!("Failed to get machine architecture: {}", err); self.arch.to_string() } }; Ok(arch) } /// Returns the platform release pub fn get_platform_release(&self) -> Result { let os = self.os.to_string(); let os_version = env::var(format!("MATURIN_{}_VERSION", os.to_ascii_uppercase())); let release = match os_version { Ok(os_ver) => os_ver, Err(_) => { let info = PlatformInfo::new() .map_err(|e| anyhow!("Failed to fetch platform information: {e}"))?; info.release().to_string_lossy().into_owned() } }; let release = release.replace(['.', '-'], "_"); Ok(release) } /// Returns the name python uses in `sys.platform` for this architecture. pub fn get_python_arch(&self) -> &str { match self.arch { Arch::Aarch64 => "aarch64", Arch::Armv6L => "armv6l", Arch::Armv7L => "armv7l", Arch::Powerpc => "ppc", Arch::Powerpc64Le => "powerpc64le", Arch::Powerpc64 => "powerpc64", Arch::X86 => "i386", Arch::X86_64 => "x86_64", Arch::S390X => "s390x", Arch::Wasm32 => "wasm32", Arch::Riscv32 => "riscv32", Arch::Riscv64 => "riscv64", // It's kinda surprising that Python doesn't include the `el` suffix Arch::Mips64el | Arch::Mips64 => "mips64", Arch::Mipsel | Arch::Mips => "mips", Arch::Sparc64 => "sparc64", Arch::LoongArch64 => "loongarch64", } } /// Returns the extension architecture name python uses in `ext_suffix` for this architecture. pub fn get_python_ext_arch(&self, python_impl: InterpreterKind) -> &str { if matches!(self.target_arch(), Arch::Armv6L | Arch::Armv7L) { "arm" } else if matches!(self.target_arch(), Arch::Powerpc64Le) && python_impl == InterpreterKind::PyPy { "ppc_64" } else if matches!(self.target_arch(), Arch::X86) && python_impl == InterpreterKind::PyPy { "x86" } else if matches!(self.target_arch(), Arch::Powerpc) { "powerpc" } else { self.get_python_arch() } } /// Returns the environment python uses in `ext_suffix` for this architecture. pub fn get_python_target_env( &self, python_impl: InterpreterKind, python_version: (usize, usize), ) -> String { match python_impl { CPython => { // For musl handling see https://github.com/pypa/auditwheel/issues/349 if matches!(self.target_arch(), Arch::Mips64 | Arch::Mips64el) && self.is_linux() { "gnuabi64".to_string() } else if python_version >= (3, 11) { self.target_env().to_string() } else { self.target_env().to_string().replace("musl", "gnu") } } PyPy | GraalPy => "gnu".to_string(), } } /// Returns the name python uses in `sys.platform` for this os pub fn get_python_os(&self) -> &str { match self.os { Os::Windows => "windows", Os::Linux => "linux", Os::Macos => "darwin", Os::Ios => "darwin", Os::FreeBsd => "freebsd", Os::NetBsd => "netbsd", Os::OpenBsd => "openbsd", Os::Dragonfly => "dragonfly", Os::Solaris => "sunos", Os::Illumos => "sunos", Os::Haiku => "haiku", Os::Emscripten => "emscripten", // This isn't real, there's no sys.platform here Os::Wasi => "wasi", Os::Aix => "aix", } } /// Returns the oldest possible Manylinux tag for this architecture pub fn get_minimum_manylinux_tag(&self) -> PlatformTag { match self.arch { Arch::Aarch64 | Arch::Armv7L | Arch::Powerpc64 | Arch::Powerpc64Le | Arch::S390X => { PlatformTag::manylinux2014() } Arch::X86 | Arch::X86_64 => { // rustc 1.64.0 bumps glibc requirement to 2.17 // see https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html if self.rustc_version.semver >= RUST_1_64_0 { PlatformTag::manylinux2014() } else { PlatformTag::manylinux2010() } } Arch::Armv6L | Arch::Wasm32 | Arch::Riscv32 | Arch::Riscv64 | Arch::Mips64el | Arch::Mips64 | Arch::Mipsel | Arch::Mips | Arch::Powerpc | Arch::Sparc64 | Arch::LoongArch64 => PlatformTag::Linux, } } /// Returns whether the platform is 64 bit or 32 bit pub fn pointer_width(&self) -> usize { match self.arch { Arch::Aarch64 | Arch::Powerpc64 | Arch::Powerpc64Le | Arch::X86_64 | Arch::S390X | Arch::Riscv64 | Arch::Mips64el | Arch::Mips64 | Arch::Sparc64 | Arch::LoongArch64 => 64, Arch::Armv6L | Arch::Armv7L | Arch::X86 | Arch::Wasm32 | Arch::Mipsel | Arch::Mips | Arch::Riscv32 | Arch::Powerpc => 32, } } /// Returns target triple as string #[inline] pub fn target_triple(&self) -> &str { &self.triple } /// Returns host triple as string #[inline] pub fn host_triple(&self) -> &str { &self.rustc_version.host } /// Returns true if the current platform is not windows pub fn is_unix(&self) -> bool { match self.os { Os::Windows => false, Os::Linux | Os::Macos | Os::Ios | Os::FreeBsd | Os::NetBsd | Os::OpenBsd | Os::Dragonfly | Os::Solaris | Os::Illumos | Os::Haiku | Os::Emscripten | Os::Wasi | Os::Aix => true, } } /// Returns target operating system #[inline] pub fn target_os(&self) -> Os { self.os } /// Returns target architecture #[inline] pub fn target_arch(&self) -> Arch { self.arch } /// Returns target environment #[inline] pub fn target_env(&self) -> Environment { self.env } /// Returns true if the current platform is linux #[inline] pub fn is_linux(&self) -> bool { self.os == Os::Linux } /// Returns true if the current platform is freebsd #[inline] pub fn is_freebsd(&self) -> bool { self.os == Os::FreeBsd } /// Returns true if the current platform is mac os #[inline] pub fn is_macos(&self) -> bool { self.os == Os::Macos } /// Returns true if the current platform is windows #[inline] pub fn is_windows(&self) -> bool { self.os == Os::Windows } /// Returns true if the current environment is msvc #[inline] pub fn is_msvc(&self) -> bool { self.env == Environment::Msvc } /// Returns true if the current platform is illumos #[inline] pub fn is_illumos(&self) -> bool { self.os == Os::Illumos } /// Returns true if the current platform is haiku #[inline] pub fn is_haiku(&self) -> bool { self.os == Os::Haiku } /// Returns true if the current platform is Emscripten #[inline] pub fn is_emscripten(&self) -> bool { self.os == Os::Emscripten } /// Returns true if we're building a binary for wasm32-wasi #[inline] pub fn is_wasi(&self) -> bool { self.os == Os::Wasi } /// Returns true if the current platform's target env is Musl #[inline] pub fn is_musl_libc(&self) -> bool { matches!( self.env, Environment::Musl | Environment::Musleabi | Environment::Musleabihf | Environment::Muslabi64 ) } /// Is cross compiling for this target #[inline] pub fn cross_compiling(&self) -> bool { self.cross_compiling } /// Returns the path to the python executable inside a venv pub fn get_venv_python(&self, venv_base: impl AsRef) -> PathBuf { let python = if self.is_windows() { "python.exe" } else { "python" }; self.get_venv_bin_dir(venv_base).join(python) } /// Returns the directory where the binaries are stored inside a venv pub fn get_venv_bin_dir(&self, venv_base: impl AsRef) -> PathBuf { let venv = venv_base.as_ref(); if self.is_windows() { let bin_dir = venv.join("Scripts"); if bin_dir.join("python.exe").exists() { return bin_dir; } // Python installed via msys2 on Windows might produce a POSIX-like venv // See https://github.com/PyO3/maturin/issues/1108 let bin_dir = venv.join("bin"); if bin_dir.join("python.exe").exists() { return bin_dir; } // for conda environment venv.to_path_buf() } else { venv.join("bin") } } /// Returns the path to the python executable /// /// For windows it's always python.exe for unix it's first the venv's `python` /// and then `python3` pub fn get_python(&self) -> PathBuf { if self.is_windows() { PathBuf::from("python.exe") } else if env::var_os("VIRTUAL_ENV").is_some() { PathBuf::from("python") } else { PathBuf::from("python3") } } } fn rustc_version_meta() -> Result { let meta = rustc_version::version_meta().map_err(|err| match err { rustc_version::Error::CouldNotExecuteCommand(e) if e.kind() == std::io::ErrorKind::NotFound => { anyhow!( "rustc, the rust compiler, is not installed or not in PATH. \ This package requires Rust and Cargo to compile extensions. \ Install it through the system's package manager or via https://rustup.rs/.", ) } err => anyhow!(err).context("Failed to run rustc to get the host target"), })?; Ok(meta) } pub(crate) fn detect_arch_from_python(python: &PathBuf, target: &Target) -> Option { match Command::new(python) .arg("-c") .arg("import sysconfig; print(sysconfig.get_platform(), end='')") .output() { Ok(output) if output.status.success() => { let platform = String::from_utf8_lossy(&output.stdout); if platform.contains("macos") { if platform.contains("x86_64") && target.target_arch() != Arch::X86_64 { return Some("x86_64-apple-darwin".to_string()); } else if platform.contains("arm64") && target.target_arch() != Arch::Aarch64 { return Some("aarch64-apple-darwin".to_string()); } } } _ => eprintln!("⚠️ Warning: Failed to determine python platform"), } None } maturin-1.7.4/src/templates/000077500000000000000000000000001467514767100160115ustar00rootroot00000000000000maturin-1.7.4/src/templates/.gitignore.j2000066400000000000000000000012561467514767100203170ustar00rootroot00000000000000/target # Byte-compiled / optimized / DLL files __pycache__/ .pytest_cache/ *.py[cod] # C extensions *.so # Distribution / packaging .Python .venv/ env/ bin/ build/ develop-eggs/ dist/ eggs/ lib/ lib64/ parts/ sdist/ var/ include/ man/ venv/ *.egg-info/ .installed.cfg *.egg # Installer logs pip-log.txt pip-delete-this-directory.txt pip-selfcheck.json # Unit test / coverage reports htmlcov/ .tox/ .coverage .cache nosetests.xml coverage.xml # Translations *.mo # Mr Developer .mr.developer.cfg .project .pydevproject # Rope .ropeproject # Django stuff: *.log *.pot .DS_Store # Sphinx documentation docs/_build/ # PyCharm .idea/ # VSCode .vscode/ # Pyenv .python-version maturin-1.7.4/src/templates/Cargo.toml.j2000066400000000000000000000007151467514767100202560ustar00rootroot00000000000000[package] name = "{{ name }}" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html {%- if bindings != "bin" %} [lib] name = "{{ crate_name }}" crate-type = ["cdylib"] {%- endif %} [dependencies] {% if bindings == "pyo3" -%} pyo3 = "0.22.0" {% elif bindings == "uniffi" -%} uniffi = "0.28.0" [build-dependencies] uniffi = { version = "0.28.0", features = ["build"] } {% endif -%} maturin-1.7.4/src/templates/__init__.py.j2000066400000000000000000000002251467514767100204330ustar00rootroot00000000000000from .{{ crate_name }} import * __doc__ = {{ crate_name }}.__doc__ if hasattr({{ crate_name }}, "__all__"): __all__ = {{ crate_name }}.__all__ maturin-1.7.4/src/templates/build.rs.j2000066400000000000000000000001731467514767100177710ustar00rootroot00000000000000{%- if bindings == "uniffi" -%} fn main() { uniffi::generate_scaffolding("./src/example.udl").unwrap(); } {% endif -%} maturin-1.7.4/src/templates/example.udl.j2000066400000000000000000000000601467514767100204600ustar00rootroot00000000000000namespace example { u32 add(u32 a, u32 b); }; maturin-1.7.4/src/templates/lib.rs.j2000066400000000000000000000010111467514767100174300ustar00rootroot00000000000000{%- if bindings == "pyo3" -%} use pyo3::prelude::*; /// Formats the sum of two numbers as string. #[pyfunction] fn sum_as_string(a: usize, b: usize) -> PyResult { Ok((a + b).to_string()) } /// A Python module implemented in Rust. #[pymodule] fn {{crate_name}}(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(sum_as_string, m)?)?; Ok(()) } {%- elif bindings == "uniffi" -%} fn add(a: u32, b: u32) -> u32 { a + b } uniffi::include_scaffolding!("example"); {%- endif %} maturin-1.7.4/src/templates/main.rs.j2000066400000000000000000000000551467514767100176150ustar00rootroot00000000000000fn main() { println!("Hello, world!"); } maturin-1.7.4/src/templates/pyproject.toml.j2000066400000000000000000000015611467514767100212420ustar00rootroot00000000000000[build-system] requires = ["maturin>={{ version_major }}.{{ version_minor }},<{{ version_major + 1 }}.0"] build-backend = "maturin" [project] name = "{{ name }}" requires-python = ">=3.8" classifiers = [ "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] {% if bindings == "cffi" -%} dependencies = ["cffi"] {% endif -%} dynamic = ["version"] {% if mixed_non_src -%} [project.optional-dependencies] tests = [ "pytest", ] {% endif -%} {% if bindings in ["bin", "cffi", "pyo3"] or mixed_non_src -%} [tool.maturin] {% if bindings == "cffi" or bindings == "bin" -%} bindings = "{{ bindings }}" {% endif -%} {% if mixed_non_src -%} python-source = "python" {% endif -%} {% if bindings == "pyo3" -%} features = ["pyo3/extension-module"] {% endif -%} {% endif -%} maturin-1.7.4/src/templates/test_all.py.j2000066400000000000000000000001711467514767100205030ustar00rootroot00000000000000import pytest import {{ crate_name }} def test_sum_as_string(): assert {{ crate_name }}.sum_as_string(1, 1) == "2" maturin-1.7.4/src/upload.rs000066400000000000000000000561311467514767100156530ustar00rootroot00000000000000//! The uploading logic was mostly reverse engineered; I wrote it down as //! documentation at https://warehouse.readthedocs.io/api-reference/legacy/#upload-api use crate::build_context::hash_file; use anyhow::{bail, Context, Result}; use base64::engine::general_purpose::STANDARD; use base64::Engine; use bytesize::ByteSize; use configparser::ini::Ini; use fs_err as fs; use fs_err::File; use multipart::client::lazy::Multipart; use regex::Regex; use serde::Deserialize; use std::collections::HashMap; use std::env; #[cfg(any(feature = "native-tls", feature = "rustls"))] use std::ffi::OsString; use std::io; use std::path::{Path, PathBuf}; use std::time::Duration; use thiserror::Error; use tracing::debug; /// An account with a registry, possibly incomplete #[derive(Debug, clap::Parser)] pub struct PublishOpt { /// The repository (package index) to upload the package to. Should be a section in the config file. /// /// Can also be set via MATURIN_REPOSITORY environment variable. #[arg(short = 'r', long, env = "MATURIN_REPOSITORY", default_value = "pypi")] repository: String, /// The URL of the registry where the wheels are uploaded to. This overrides --repository. /// /// Can also be set via MATURIN_REPOSITORY_URL environment variable. #[arg(long, env = "MATURIN_REPOSITORY_URL", overrides_with = "repository")] repository_url: Option, /// Username for pypi or your custom registry. /// /// Can also be set via MATURIN_USERNAME environment variable. /// /// Set MATURIN_PYPI_TOKEN variable to use token-based authentication instead #[arg(short, long, env = "MATURIN_USERNAME")] username: Option, /// Password for pypi or your custom registry. /// /// Can also be set via MATURIN_PASSWORD environment variable. #[arg(short, long, env = "MATURIN_PASSWORD", hide_env_values = true)] password: Option, /// Continue uploading files if one already exists. /// (Only valid when uploading to PyPI. Other implementations may not support this.) #[arg(long)] skip_existing: bool, /// Do not interactively prompt for username/password if the required credentials are missing. /// /// Can also be set via MATURIN_NON_INTERACTIVE environment variable. #[arg(long, env = "MATURIN_NON_INTERACTIVE")] non_interactive: bool, } impl PublishOpt { // Here we omit trailing slashes from the repository URL, which we'll add back in `complete_registry` const DEFAULT_REPOSITORY_URL: &'static str = "https://upload.pypi.org/legacy"; const TEST_REPOSITORY_URL: &'static str = "https://test.pypi.org/legacy"; /// Set to non interactive mode if we're running on CI pub fn non_interactive_on_ci(&mut self) { if !self.non_interactive && env::var("CI").map(|v| v == "true").unwrap_or_default() { eprintln!("🎛️ Running in non-interactive mode on CI"); self.non_interactive = true; } } } /// Error type for different types of errors that can happen when uploading a /// wheel. /// /// The most interesting type is AuthenticationError because it allows asking /// the user to reenter the password #[derive(Error, Debug)] #[error("Uploading to the registry failed")] pub enum UploadError { /// Any ureq error #[error("Http error")] UreqError(#[source] Box), /// The registry returned a "403 Forbidden" #[error("Username or password are incorrect")] AuthenticationError(String), /// Reading the wheel failed #[error("IO Error")] IoError(#[source] io::Error), /// The registry returned something else than 200 #[error("Failed to upload the wheel with status {0}: {1}")] StatusCodeError(String, String), /// File already exists #[error("File already exists: {0}")] FileExistsError(String), /// Read package metadata error #[error("Could not read the metadata from the package at {0}")] PkgInfoError(PathBuf, #[source] python_pkginfo::Error), /// TLS error #[cfg(feature = "native-tls")] #[error("TLS Error")] TlsError(#[source] native_tls::Error), } impl From for UploadError { fn from(error: io::Error) -> Self { UploadError::IoError(error) } } impl From for UploadError { fn from(error: ureq::Error) -> Self { UploadError::UreqError(Box::new(error)) } } #[cfg(feature = "native-tls")] impl From for UploadError { fn from(error: native_tls::Error) -> Self { UploadError::TlsError(error) } } /// A pip registry such as pypi or testpypi with associated credentials, used /// for uploading wheels #[derive(Debug, Clone, Eq, PartialEq)] pub struct Registry { /// The username pub username: String, /// The password pub password: String, /// The url endpoint for legacy uploading pub url: String, } impl Registry { /// Creates a new registry pub fn new(username: String, password: String, url: String) -> Registry { Registry { username, password, url, } } } /// Attempts to fetch the password from the keyring (if enabled) /// and falls back to the interactive password prompt. fn get_password(_username: &str) -> String { #[cfg(feature = "keyring")] { let service = env!("CARGO_PKG_NAME"); let keyring = keyring::Entry::new(service, _username); if let Ok(password) = keyring.and_then(|keyring| keyring.get_password()) { return password; }; } dialoguer::Password::new() .with_prompt("Please enter your password") .interact() .unwrap_or_else(|_| { // So we need this fallback for pycharm on windows let mut password = String::new(); io::stdin() .read_line(&mut password) .expect("Failed to read line"); password.trim().to_string() }) } fn get_username() -> String { eprintln!("Please enter your username:"); let mut line = String::new(); io::stdin().read_line(&mut line).unwrap(); line.trim().to_string() } fn load_pypirc() -> Ini { let mut config = Ini::new(); if let Some(mut config_path) = dirs::home_dir() { config_path.push(".pypirc"); if let Ok(pypirc) = fs::read_to_string(config_path.as_path()) { let _ = config.read(pypirc); } } config } fn load_pypi_cred_from_config(config: &Ini, registry_name: &str) -> Option<(String, String)> { if let (Some(username), Some(password)) = ( config.get(registry_name, "username"), config.get(registry_name, "password"), ) { return Some((username, password)); } None } /// Gets the PyPI credentials from (in precedence order): /// /// 1. `MATURIN_PYPI_TOKEN` environment variable /// 2. `.pypirc` config file /// 3. maturin command arguments /// 4. `MATURIN_USERNAME` and `MATURIN_PASSWORD` environment variables /// 5. the password keyring /// 6. interactive prompt fn resolve_pypi_cred( opt: &PublishOpt, config: &Ini, registry_name: Option<&str>, registry_url: &str, ) -> Result<(String, String)> { // API token from environment variable takes priority if let Ok(token) = env::var("MATURIN_PYPI_TOKEN") { return Ok(("__token__".to_string(), token)); } // Try to get a token via OIDC exchange match resolve_pypi_token_via_oidc(registry_url) { Ok(Some(token)) => { eprintln!("🔐 Using trusted publisher for upload"); return Ok(("__token__".to_string(), token)); } Ok(None) => {} Err(e) => eprintln!("⚠️ Warning: Failed to resolve PyPI token via OIDC: {}", e), } if let Some((username, password)) = registry_name.and_then(|name| load_pypi_cred_from_config(config, name)) { eprintln!("🔐 Using credential in pypirc for upload"); return Ok((username, password)); } // fallback to username and password if opt.non_interactive && (opt.username.is_none() || opt.password.is_none()) { bail!("Credentials not found and non-interactive mode is enabled"); } let username = opt.username.clone().unwrap_or_else(get_username); let password = opt .password .clone() .unwrap_or_else(|| get_password(&username)); Ok((username, password)) } #[derive(Debug, Deserialize)] struct OidcAudienceResponse { audience: String, } #[derive(Debug, Deserialize)] struct OidcTokenResponse { value: String, } #[derive(Debug, Deserialize)] struct MintTokenResponse { token: String, } /// Trusted Publisher support for GitHub Actions fn resolve_pypi_token_via_oidc(registry_url: &str) -> Result> { if env::var_os("GITHUB_ACTIONS").is_none() { return Ok(None); } if let (Ok(req_token), Ok(req_url)) = ( env::var("ACTIONS_ID_TOKEN_REQUEST_TOKEN"), env::var("ACTIONS_ID_TOKEN_REQUEST_URL"), ) { let registry_url = url::Url::parse(registry_url)?; let mut audience_url = registry_url.clone(); audience_url.set_path("_/oidc/audience"); debug!("Requesting OIDC audience from {}", audience_url); let agent = http_agent()?; let audience_res = agent .get(audience_url.as_str()) .timeout(Duration::from_secs(30)) .call()?; if audience_res.status() == 404 { // OIDC is not enabled/supported on this registry return Ok(None); } let audience = audience_res.into_json::()?.audience; debug!("Requesting OIDC token for {} from {}", audience, req_url); let request_token_res: OidcTokenResponse = agent .get(&req_url) .query("audience", &audience) .set("Authorization", &format!("bearer {req_token}")) .timeout(Duration::from_secs(30)) .call()? .into_json()?; let oidc_token = request_token_res.value; let mut mint_token_url = registry_url; mint_token_url.set_path("_/oidc/github/mint-token"); debug!("Requesting API token from {}", mint_token_url); let mut mint_token_req = HashMap::new(); mint_token_req.insert("token", oidc_token); let mint_token_res = agent .post(mint_token_url.as_str()) .timeout(Duration::from_secs(30)) .send_json(mint_token_req)? .into_json::()?; return Ok(Some(mint_token_res.token)); } Ok(None) } /// Asks for username and password for a registry account where missing. fn complete_registry(opt: &PublishOpt) -> Result { // load creds from pypirc if found let pypirc = load_pypirc(); let (registry_name, registry_url) = if let Some(repository_url) = opt.repository_url.as_deref() { // to normalize URLs by removing trailing slashes match repository_url.trim_end_matches('/') { PublishOpt::DEFAULT_REPOSITORY_URL => ( Some("pypi"), // Add trailing slash back format!("{}/", PublishOpt::DEFAULT_REPOSITORY_URL), ), PublishOpt::TEST_REPOSITORY_URL => ( Some("testpypi"), // Add trailing slash back format!("{}/", PublishOpt::TEST_REPOSITORY_URL), ), _ => (None, repository_url.to_string()), } } else if let Some(url) = pypirc.get(&opt.repository, "repository") { (Some(opt.repository.as_str()), url) } else if opt.repository == "pypi" { ( Some("pypi"), // Add trailing slash back format!("{}/", PublishOpt::DEFAULT_REPOSITORY_URL), ) } else if opt.repository == "testpypi" { ( Some("testpypi"), // Add trailing slash back format!("{}/", PublishOpt::TEST_REPOSITORY_URL), ) } else { bail!( "Failed to get registry {} in .pypirc. \ Note: Your index didn't start with http:// or https://, \ which is required for non-pypirc indices.", opt.repository ); }; let (username, password) = resolve_pypi_cred(opt, &pypirc, registry_name, ®istry_url)?; let registry = Registry::new(username, password, registry_url); Ok(registry) } /// Port of pip's `canonicalize_name` /// https://github.com/pypa/pip/blob/b33e791742570215f15663410c3ed987d2253d5b/src/pip/_vendor/packaging/utils.py#L18-L25 fn canonicalize_name(name: &str) -> String { Regex::new("[-_.]+") .unwrap() .replace_all(name, "-") .to_lowercase() } #[cfg(any(feature = "native-tls", feature = "rustls"))] fn tls_ca_bundle() -> Option { env::var_os("MATURIN_CA_BUNDLE") .or_else(|| env::var_os("REQUESTS_CA_BUNDLE")) .or_else(|| env::var_os("CURL_CA_BUNDLE")) } // Prefer rustls if both native-tls and rustls features are enabled #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[allow(clippy::result_large_err)] fn http_agent() -> Result { use std::sync::Arc; let mut builder = ureq::builder().try_proxy_from_env(true); let mut tls_builder = native_tls::TlsConnector::builder(); if let Some(ca_bundle) = tls_ca_bundle() { let mut reader = io::BufReader::new(File::open(ca_bundle)?); for cert in rustls_pemfile::certs(&mut reader) { let cert = cert?; tls_builder.add_root_certificate(native_tls::Certificate::from_pem(&cert)?); } } builder = builder.tls_connector(Arc::new(tls_builder.build()?)); Ok(builder.build()) } #[cfg(feature = "rustls")] #[allow(clippy::result_large_err)] fn http_agent() -> Result { use std::sync::Arc; let builder = ureq::builder().try_proxy_from_env(true); if let Some(ca_bundle) = tls_ca_bundle() { let mut reader = io::BufReader::new(File::open(ca_bundle)?); let certs = rustls_pemfile::certs(&mut reader).collect::, _>>()?; let mut root_certs = rustls::RootCertStore::empty(); root_certs.add_parsable_certificates(certs); let client_config = rustls::ClientConfig::builder() .with_root_certificates(root_certs) .with_no_client_auth(); Ok(builder.tls_config(Arc::new(client_config)).build()) } else { Ok(builder.build()) } } #[cfg(not(any(feature = "native-tls", feature = "rustls")))] #[allow(clippy::result_large_err)] fn http_agent() -> Result { let builder = ureq::builder().try_proxy_from_env(true); Ok(builder.build()) } /// Uploads a single wheel to the registry #[allow(clippy::result_large_err)] pub fn upload(registry: &Registry, wheel_path: &Path) -> Result<(), UploadError> { let hash_hex = hash_file(wheel_path)?; let dist = python_pkginfo::Distribution::new(wheel_path) .map_err(|err| UploadError::PkgInfoError(wheel_path.to_owned(), err))?; let metadata = dist.metadata(); let mut api_metadata = vec![ (":action", "file_upload".to_string()), ("sha256_digest", hash_hex), ("protocol_version", "1".to_string()), ("metadata_version", metadata.metadata_version.clone()), ("name", canonicalize_name(&metadata.name)), ("version", metadata.version.clone()), ("pyversion", dist.python_version().to_string()), ("filetype", dist.r#type().to_string()), ]; let mut add_option = |name, value: &Option| { if let Some(some) = value.clone() { api_metadata.push((name, some)); } }; // https://github.com/pypa/warehouse/blob/75061540e6ab5aae3f8758b569e926b6355abea8/warehouse/forklift/legacy.py#L424 add_option("summary", &metadata.summary); add_option("description", &metadata.description); add_option( "description_content_type", &metadata.description_content_type, ); add_option("author", &metadata.author); add_option("author_email", &metadata.author_email); add_option("maintainer", &metadata.maintainer); add_option("maintainer_email", &metadata.maintainer_email); add_option("license", &metadata.license); add_option("keywords", &metadata.keywords); add_option("home_page", &metadata.home_page); add_option("download_url", &metadata.download_url); add_option("requires_python", &metadata.requires_python); if metadata.requires_python.is_none() { // GitLab PyPI repository API implementation requires this metadata field // and twine always includes it in the request, even when it's empty. api_metadata.push(("requires_python", "".to_string())); } let mut add_vec = |name, values: &[String]| { for i in values { api_metadata.push((name, i.clone())); } }; add_vec("classifiers", &metadata.classifiers); add_vec("platform", &metadata.platforms); add_vec("requires_dist", &metadata.requires_dist); add_vec("provides_dist", &metadata.provides_dist); add_vec("obsoletes_dist", &metadata.obsoletes_dist); add_vec("requires_external", &metadata.requires_external); add_vec("project_urls", &metadata.project_urls); let wheel = File::open(wheel_path)?; let wheel_name = wheel_path .file_name() .expect("Wheel path has a file name") .to_string_lossy(); let mut form = Multipart::new(); for (key, value) in api_metadata { form.add_text(key, value); } form.add_stream("content", &wheel, Some(wheel_name), None); let multipart_data = form.prepare().map_err(|e| e.error)?; let encoded = STANDARD.encode(format!("{}:{}", registry.username, registry.password)); let agent = http_agent()?; let response = agent .post(registry.url.as_str()) .set( "Content-Type", &format!( "multipart/form-data; boundary={}", multipart_data.boundary() ), ) .set( "User-Agent", &format!("{}/{}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")), ) .set("Authorization", &format!("Basic {encoded}")) .send(multipart_data); match response { Ok(_) => Ok(()), Err(ureq::Error::Status(status, response)) => { let err_text = response.into_string().unwrap_or_else(|e| { format!( "The registry should return some text, \ even in case of an error, but didn't ({e})" ) }); debug!("Upload error response: {}", err_text); // Detect FileExistsError the way twine does // https://github.com/pypa/twine/blob/87846e5777b380d4704704a69e1f9a7a1231451c/twine/commands/upload.py#L30 if status == 403 { if err_text.contains("overwrite artifact") { // Artifactory (https://jfrog.com/artifactory/) Err(UploadError::FileExistsError(err_text)) } else { Err(UploadError::AuthenticationError(err_text)) } } else { let status_string = status.to_string(); if status == 409 // conflict, pypiserver (https://pypi.org/project/pypiserver) // PyPI / TestPyPI || (status == 400 && err_text.contains("already exists")) // Nexus Repository OSS (https://www.sonatype.com/nexus-repository-oss) || (status == 400 && err_text.contains("updating asset")) // # Gitlab Enterprise Edition (https://about.gitlab.com) || (status == 400 && err_text.contains("already been taken")) { Err(UploadError::FileExistsError(err_text)) } else { Err(UploadError::StatusCodeError(status_string, err_text)) } } } Err(err) => Err(UploadError::UreqError(err.into())), } } /// Handles authentication/keyring integration and retrying of the publish subcommand pub fn upload_ui(items: &[PathBuf], publish: &PublishOpt) -> Result<()> { let registry = complete_registry(publish)?; eprintln!("🚀 Uploading {} packages", items.len()); for i in items { let upload_result = upload(®istry, i); match upload_result { Ok(()) => (), Err(UploadError::AuthenticationError(msg)) => { let title_re = regex::Regex::new(r"(.+?)").unwrap(); let title = title_re .captures(&msg) .and_then(|c| c.get(1)) .map(|m| m.as_str()); match title { Some(title) => { eprintln!("⛔ {title}"); } None => eprintln!("⛔ Username and/or password are wrong"), } #[cfg(feature = "keyring")] { // Delete the wrong password from the keyring let old_username = registry.username; match keyring::Entry::new(env!("CARGO_PKG_NAME"), &old_username) .and_then(|keyring| keyring.delete_password()) { Ok(()) => { eprintln!("🔑 Removed wrong password from keyring") } Err(keyring::Error::NoEntry) | Err(keyring::Error::NoStorageAccess(_)) | Err(keyring::Error::PlatformFailure(_)) => {} Err(err) => { eprintln!("⚠️ Warning: Failed to remove password from keyring: {err}") } } } bail!("Username and/or password are possibly wrong"); } Err(err) => { let filename = i.file_name().unwrap_or(i.as_os_str()); if let UploadError::FileExistsError(_) = err { if publish.skip_existing { eprintln!( "⚠️ Note: Skipping {filename:?} because it appears to already exist" ); continue; } } let filesize = fs::metadata(i) .map(|x| ByteSize(x.len()).to_string()) .unwrap_or_else(|e| format!("Failed to get the filesize of {:?}: {}", &i, e)); return Err(err).context(format!("💥 Failed to upload {filename:?} ({filesize})")); } } } eprintln!("✨ Packages uploaded successfully"); #[cfg(feature = "keyring")] { // We know the password is correct, so we can save it in the keyring let username = registry.username.clone(); let password = registry.password; match keyring::Entry::new(env!("CARGO_PKG_NAME"), &username) .and_then(|keyring| keyring.set_password(&password)) { Ok(()) | Err(keyring::Error::NoStorageAccess(_)) | Err(keyring::Error::PlatformFailure(_)) => {} Err(err) => { eprintln!("⚠️ Warning: Failed to store the password in the keyring: {err:?}"); } } } Ok(()) } maturin-1.7.4/sysconfig/000077500000000000000000000000001467514767100152305ustar00rootroot00000000000000maturin-1.7.4/sysconfig/Readme.md000066400000000000000000000003261467514767100167500ustar00rootroot00000000000000This folder contains all the sysconfigs (`python -m sysconfig`) I came across. I collected those because they differ highly across versions and operating systems, but are essential for naming wheels and libraries. maturin-1.7.4/sysconfig/cpython-aix-3.9.txt000066400000000000000000000636231467514767100205550ustar00rootroot00000000000000Platform: "aix-7205-2345-64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/opt/freeware" include = "/opt/freeware/include/python3.9" platinclude = "/opt/freeware/include/python3.9" platlib = "/opt/freeware/lib64/python3.9/site-packages" platstdlib = "/opt/freeware/lib64/python3.9" purelib = "/opt/freeware/lib/python3.9/site-packages" scripts = "/opt/freeware/bin" stdlib = "/opt/freeware/lib64/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "2245" AIX_GENUINE_CPLUSPLUS = "1" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "/usr/bin/ar -X32_64" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/opt/freeware/bin" BINLIBDEST = "/opt/freeware/lib64/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "/opt/freeware/lib64/python3.9/config-3.9/ld_so_aix gcc -maix64 -fPIC -pthread -O2 -bI:/opt/freeware/lib64/python3.9/config-3.9/python.exp -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "powerpc-ibm-aix7.1.5.0" BYTESTR_DEPS = "\" CC = "gcc -maix64 -fPIC -pthread -O2" CCSHARED = "" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O2 -Wall -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" CONFIGURE_LDFLAGS = "-L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/opt/freeware' '--libdir=/opt/freeware/lib64' '--with-platlibdir=lib64' '--mandir=/opt/freeware/man' '--enable-shared' '--enable-ipv6' '--with-system-ffi' '--with-system-expat' '--with-tcltk-includes=-I/opt/freeware/include' '--with-tcltk-libs=-L/opt/freeware/lib -ltcl -ltk' '--with-computed-gotos' '--without-ensurepip' 'CC=gcc -maix64 -fPIC -pthread -O2' 'CFLAGS=-I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT' 'LDFLAGS=-L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib' 'CPPFLAGS=-I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT' 'PKG_CONFIG_PATH=/opt/freeware/lib64/pkgconfig:/opt/freeware/lib/pkgconfig'" CONFINCLUDEDIR = "/opt/freeware/include" CONFINCLUDEPY = "/opt/freeware/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit/coverage.info" COVERAGE_REPORT = "/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" CXX = "g++ -maix64 -fPIC -pthread -O2" DESTDIRS = "/opt/freeware /opt/freeware/lib64 /opt/freeware/lib64/python3.9 /opt/freeware/lib64/python3.9/lib-dynload" DESTLIB = "/opt/freeware/lib64/python3.9" DESTPATH = "" DESTSHARED = "/opt/freeware/lib64/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "1" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "0" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPORTSFROM = "libpython3.9.a(libpython3.9.so)" EXPORTSYMS = "Modules/python.exp" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-39.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "1" FLOCK_NEEDS_LIBBSD = "1" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "no" HAVE_ACCEPT4 = "0" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "1" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "1" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "1" HAVE_DECL_RTLD_NODELETE = "0" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "1" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "1" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "0" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "0" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "0" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "0" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "0" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "0" HAVE_HTOLE64 = "0" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LIBUUID = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_AUXVEC_H = "0" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "0" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "0" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "0" HAVE_PLOCK = "1" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "1" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "0" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "0" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "0" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "0" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "1" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "0" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "0" HAVE_TRUNCATE = "1" HAVE_TZNAME = "1" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "1" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "powerpc-ibm-aix7.1.5.0" INCLDIRSTOMAKE = "/opt/freeware/include /opt/freeware/include /opt/freeware/include/python3.9 /opt/freeware/include/python3.9" INCLUDEDIR = "/opt/freeware/include" INCLUDEPY = "/opt/freeware/include/python3.9" INSTALL = "/opt/freeware/bin/install -c" INSTALL_DATA = "/opt/freeware/bin/install -c -m 644" INSTALL_PROGRAM = "/opt/freeware/bin/install -c" INSTALL_SCRIPT = "/opt/freeware/bin/install -c" INSTALL_SHARED = "/opt/freeware/bin/install -c -m 755" INSTSONAME = "libpython3.9.a" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "/opt/freeware/lib64/python3.9/config-3.9/ld_so_aix gcc -maix64 -fPIC -pthread -O2 -bI:/opt/freeware/lib64/python3.9/config-3.9/python.exp" LDFLAGS = "-L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.a" LDLIBRARYDIR = "" LDSHARED = "/opt/freeware/lib64/python3.9/config-3.9/ld_so_aix gcc -maix64 -fPIC -pthread -O2 -bI:/opt/freeware/lib64/python3.9/config-3.9/python.exp -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" LDVERSION = "3.9" LIBC = "" LIBDEST = "/opt/freeware/lib64/python3.9" LIBDIR = "/opt/freeware/lib64" LIBFFI_INCLUDEDIR = "/opt/freeware/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/opt/freeware/lib64/pkgconfig" LIBPL = "/opt/freeware/lib64/python3.9/config-3.9" LIBPYTHON = "-lpython3.9" LIBRARY = "libpython3.9-static.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "/opt/freeware/lib/libintl.a -ldl -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -maix64 -fPIC -pthread -O2" LINKFORSHARED = "-Wl,-bE:Modules/python.exp -lld" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "aix" MACHDEP_OBJS = "" MACHDESTLIB = "/opt/freeware/lib64/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -maix64 -fPIC -pthread -O2" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "./Modules/makesetup" MANDIR = "/opt/freeware/man" MKDIR_P = "/opt/freeware/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -O2 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib64" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O2 -Wall -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O2 -Wall -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O2 -Wall -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" PY_CPPFLAGS = "-I. -I./Include -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib -L/opt/freeware/lib/pthread -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib/pthread:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O2 -Wall -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT -I/opt/freeware/include -I/usr/include -DAIX_GENUINE_CPLUSCPLUS -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = ":" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LIBPATH=/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit" SCRIPTDIR = "/opt/freeware/lib64" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "/opt/freeware/lib/libintl.a -ldl -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "4" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-39.so" SOABI = "cpython-39" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "-I/opt/freeware/include" TCLTK_LIBS = "-L/opt/freeware/lib -ltcl -ltk" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LIBPATH=/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LIBPATH=/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "1" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit" abs_srcdir = "/home/buildusr/rpmbuild/BUILD/Python-3.9.18/64bit" base = "/opt/freeware" datarootdir = "/opt/freeware/share" exec_prefix = "/opt/freeware" installed_base = "/opt/freeware" installed_platbase = "/opt/freeware" platbase = "/opt/freeware" platlibdir = "lib64" prefix = "/opt/freeware" projectbase = "/opt/freeware/bin" py_version = "3.9.18" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/opt/freeware/lib64/python3.9/config-3.9" userbase = "/home/rsdev/.local" maturin-1.7.4/sysconfig/cpython-android-3.8-aarch64.txt000066400000000000000000000673701467514767100226440ustar00rootroot00000000000000Platform: "linux-aarch64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/data/data/com.termux/files/usr" include = "/data/data/com.termux/files/usr/include/python3.8" platinclude = "/data/data/com.termux/files/usr/include/python3.8" platlib = "/data/data/com.termux/files/usr/lib/python3.8/site-packages" platstdlib = "/data/data/com.termux/files/usr/lib/python3.8" purelib = "/data/data/com.termux/files/usr/lib/python3.8/site-packages" scripts = "/data/data/com.termux/files/usr/bin" stdlib = "/data/data/com.termux/files/usr/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "24" AR = "aarch64-linux-android-ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "-IObjects -IInclude -IPython" BASEMODLIBS = "" BINDIR = "/data/data/com.termux/files/usr/bin" BINLIBDEST = "/data/data/com.termux/files/usr/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "aarch64-linux-android-clang -shared -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "aarch64-linux-android-clang" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "-fno-strict-aliasing" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-fstack-protector-strong -O3" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include" CONFIGURE_LDFLAGS = "-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--disable-dependency-tracking' '--prefix=/data/data/com.termux/files/usr' '--libdir=/data/data/com.termux/files/usr/lib' '--disable-rpath' '--disable-rpath-hack' '--host=aarch64-linux-android' 'ac_cv_file__dev_ptmx=yes' 'ac_cv_file__dev_ptc=no' 'ac_cv_func_wcsftime=no' 'ac_cv_func_ftime=no' 'ac_cv_func_faccessat=no' 'ac_cv_func_gethostbyname_r=no' '--build=x86_64-pc-linux-gnu' '--with-system-ffi' '--without-ensurepip' 'ac_cv_func_linkat=no' 'ac_cv_posix_semaphores_enabled=no' 'ac_cv_buggy_getaddrinfo=no' '--enable-loadable-sqlite-extensions' 'ac_cv_little_endian_double=yes' 'ac_cv_func_sem_open=no' 'ac_cv_func_sem_timedwait=no' 'ac_cv_func_sem_getvalue=no' 'ac_cv_func_sem_unlink=no' '--disable-nls' '--enable-shared' '--enable-static' '--libexecdir=/data/data/com.termux/files/usr/libexec' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=aarch64-linux-android' 'CC=aarch64-linux-android-clang' 'CFLAGS= -fstack-protector-strong -O3' 'LDFLAGS=-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib' 'CPPFLAGS=-I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include' 'CPP=aarch64-linux-android-cpp' 'PKG_CONFIG=/home/builder/.termux-build/_cache/android-r20-api-24-v3/bin/aarch64-linux-android-pkg-config' 'PKG_CONFIG_LIBDIR=/data/data/com.termux/files/usr/lib/pkgconfig'" CONFINCLUDEDIR = "/data/data/com.termux/files/usr/include" CONFINCLUDEPY = "/data/data/com.termux/files/usr/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/home/builder/.termux-build/python/build/coverage.info" COVERAGE_REPORT = "/home/builder/.termux-build/python/build/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-IObjects -IInclude -IPython -I. -I/home/builder/.termux-build/python/src/Include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include" CXX = "aarch64-linux-android-clang++" DESTDIRS = "/data/data/com.termux/files/usr /data/data/com.termux/files/usr/lib /data/data/com.termux/files/usr/lib/python3.8 /data/data/com.termux/files/usr/lib/python3.8/lib-dynload" DESTLIB = "/data/data/com.termux/files/usr/lib/python3.8" DESTPATH = "" DESTSHARED = "/data/data/com.termux/files/usr/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "1" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "1" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "0" HAVE_CONFSTR = "0" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "0" HAVE_CTERMID = "0" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "0" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "0" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "0" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "0" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "0" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "0" HAVE_LINKAT = "0" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "0" HAVE_POSIX_SPAWNP = "0" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "0" HAVE_SEM_OPEN = "0" HAVE_SEM_TIMEDWAIT = "0" HAVE_SEM_UNLINK = "0" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "0" HAVE_SHM_UNLINK = "0" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "0" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "0" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "0" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "aarch64-unknown-linux-android" INCLDIRSTOMAKE = "/data/data/com.termux/files/usr/include /data/data/com.termux/files/usr/include /data/data/com.termux/files/usr/include/python3.8 /data/data/com.termux/files/usr/include/python3.8" INCLUDEDIR = "/data/data/com.termux/files/usr/include" INCLUDEPY = "/data/data/com.termux/files/usr/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "aarch64-linux-android-clang++ -shared" LDFLAGS = "-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "aarch64-linux-android-clang -shared -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" LDVERSION = "3.8" LIBC = "" LIBDEST = "/data/data/com.termux/files/usr/lib/python3.8" LIBDIR = "/data/data/com.termux/files/usr/lib" LIBFFI_INCLUDEDIR = "/data/data/com.termux/files/usr/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/data/data/com.termux/files/usr/lib/pkgconfig" LIBPL = "/data/data/com.termux/files/usr/lib/python3.8/config-3.8" LIBPYTHON = "-lpython3.8" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -ldl -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "aarch64-linux-android-clang" LINKFORSHARED = "-pie -Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr"" LLVM_PROF_MERGER = "/home/builder/.termux-build/_cache/android-r20-api-24-v3/bin/llvm-profdata merge -output=code.profclangd *.profclangr" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/data/data/com.termux/files/usr/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "aarch64-linux-android-clang" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "/home/builder/.termux-build/python/src/Modules/makesetup" MANDIR = "/data/data/com.termux/files/usr/share/man" MKDIR_P = "/usr/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/data/data/com.termux/files/usr/include" OPENSSL_LDFLAGS = "-L/data/data/com.termux/files/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "-fprofile-instr-generate" PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "1" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "0" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "_PYTHON_PROJECT_BASE=/home/builder/.termux-build/python/build _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /home/builder/.termux-build/python/build/`cat pybuilddir.txt`:)/home/builder/.termux-build/python/src/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__linux_ python3.8" PYTHON_FOR_REGEN = "python3.8" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3 -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I/home/builder/.termux-build/python/src/Include/internal -IObjects -IInclude -IPython -I. -I/home/builder/.termux-build/python/src/Include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I/home/builder/.termux-build/python/src/Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3 -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I/home/builder/.termux-build/python/src/Include/internal -IObjects -IInclude -IPython -I. -I/home/builder/.termux-build/python/src/Include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I/home/builder/.termux-build/python/src/Include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib -L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-support -L/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -O3 -fstack-protector-strong -O3 -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I/home/builder/.termux-build/python/src/Include/internal -IObjects -IInclude -IPython -I. -I/home/builder/.termux-build/python/src/Include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -I/data/data/com.termux/files/usr/include -I/home/builder/.termux-build/_cache/android-r20-api-24-v3/sysroot/usr/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "aarch64-linux-android-readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "" SCRIPTDIR = "/data/data/com.termux/files/usr/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -ldl -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38.so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "/home/builder/.termux-build/python/src/Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "./python" TESTPYTHONOPTS = "" TESTRUNNER = "./python /home/builder/.termux-build/python/src/Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.8 /home/builder/.termux-build/python/src/Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" VPATH = "/home/builder/.termux-build/python/src" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/home/builder/.termux-build/python/build" abs_srcdir = "/home/builder/.termux-build/python/src" base = "/data/data/com.termux/files/usr" datarootdir = "/data/data/com.termux/files/usr/share" exec_prefix = "/data/data/com.termux/files/usr" installed_base = "/data/data/com.termux/files/usr" installed_platbase = "/data/data/com.termux/files/usr" platbase = "/data/data/com.termux/files/usr" prefix = "/data/data/com.termux/files/usr" projectbase = "/data/data/com.termux/files/usr/bin" py_version = "3.8.3" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/data/data/com.termux/files/usr/lib/python3.8/config-3.8" userbase = "/data/data/com.termux/files/home/.local" maturin-1.7.4/sysconfig/cpython-dragonfly-3.8.txt000066400000000000000000000526511467514767100217570ustar00rootroot00000000000000Platform: "dragonfly-6.0-RELEASE-x86_64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "cc -pthread -shared -L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-portbld-dragonfly6.0" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--with-system-expat' '--enable-ipv6' '--with-system-libmpdec' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=x86_64-portbld-dragonfly6.0' 'build_alias=x86_64-portbld-dragonfly6.0' 'CC=cc' 'CFLAGS=-pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/construction/lang/python38/Python-3.8.12/coverage.info" COVERAGE_REPORT = "/construction/lang/python38/Python-3.8.12/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "0" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "0" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-portbld-dragonfly6.0" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "dragonfly6" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "_sqlite3 _tkinter _gdbm" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/local/include" OPENSSL_LDFLAGS = "-L/usr/local/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -Wl,-rpath=/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -pipe -I/usr/local/include -I/usr/local/include/ncurses -O2 -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/construction/lang/python38/Python-3.8.12" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38.so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/construction/lang/python38/Python-3.8.12 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/construction/lang/python38/Python-3.8.12 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/construction/lang/python38/Python-3.8.12" abs_srcdir = "/construction/lang/python38/Python-3.8.12" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.12" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8" userbase = "/root/.local" maturin-1.7.4/sysconfig/cpython-freebsd-11.2.txt000066400000000000000000000457301467514767100214550ustar00rootroot00000000000000Platform: "freebsd-11.2-RELEASE-p9-amd64" Python version: "3.6" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.6m" platinclude = "/usr/local/include/python3.6m" platlib = "/usr/local/lib/python3.6/site-packages" platstdlib = "/usr/local/lib/python3.6" purelib = "/usr/local/lib/python3.6/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.6" Variables: ABIFLAGS = "m" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rc" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.6" BLDLIBRARY = "-L. -lpython3.6m" BLDSHARED = "cc -shared -lpthread -L/usr/local/lib -fstack-protector" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "amd64-portbld-freebsd11.2" BYTESTR_DEPS = "\" CC = "cc" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=nehalem -fstack-protector -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--without-pydebug' '--disable-ipv6' '--with-system-ffi' '--with-pymalloc' '--with-threads' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=amd64-portbld-freebsd11.2' 'build_alias=amd64-portbld-freebsd11.2' 'CC=cc' 'CFLAGS=-O2 -pipe -march=nehalem -fstack-protector -fno-strict-aliasing ' 'LDFLAGS= -lpthread -L/usr/local/lib -fstack-protector ' 'LIBS=' 'CPPFLAGS=-I/usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.6m" COREPYTHONPATH = ":" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7/coverage.info" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include" CXX = "c++" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.6 /usr/local/lib/python3.6/lib-dynload" DESTLIB = "/usr/local/lib/python3.6" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.6/lib-dynload" DFLAGS = "" DIRMODE = "755" DISABLED_EXTENSIONS = "_sqlite3 _tkinter _gdbm" DIST = "README ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "0" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRAMACHDEPPATH = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".so" FILEMODE = "644" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_CRYPT_H = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "0" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMMOVE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_PREAD = "1" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_ATFORK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CALLBACK = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SELECT = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "amd64-portbld-freebsd11.2" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.6m /usr/local/include/python3.6m" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.6m" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 555" INSTSONAME = "libpython3.6m.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -shared" LDFLAGS = "-lpthread -L/usr/local/lib -fstack-protector" LDLAST = "" LDLIBRARY = "libpython3.6m.so" LDLIBRARYDIR = "" LDSHARED = "cc -shared -lpthread -L/usr/local/lib -fstack-protector" LDVERSION = "3.6m" LIBC = "" LIBDEST = "/usr/local/lib/python3.6" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/lib/libffi-3.2.1/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.6/config-3.6m" LIBRARY = "libpython3.6m.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-ldl -lutil" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" LOG1P_DROPS_ZERO_SIGN = "0" MACHDEP = "freebsd11" MACHDEPPATH = ":" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.6" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODLIBS = "" MODNAMES = "_thread posix errno pwd _sre _codecs _weakref _functools _operator _collections itertools atexit _signal _stat time _locale _io zipimport faulthandler _tracemalloc _symtable xxsubtype" MODOBJS = "Modules/_threadmodule.o Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/zipimport.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGEN = "Parser/pgen" PGENOBJS = "\ \" PGOBJS = "\" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" PLATDIR = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test.regrtest --pgo" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = ":" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=nehalem -fstack-protector -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=nehalem -fstack-protector -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -I. -I./Include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-lpthread -L/usr/local/lib -fstack-protector" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" RANLIB = "ranlib" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "" SHELL = "/bin/sh" SHLIBS = "-ldl -lutil" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".so" SOABI = "cpython-36m" SRCDIRS = "Parser Objects Python Modules Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TANH_PRESERVES_ZERO_SIGN = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" THREADOBJ = "Python/thread.o" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" USE_INLINE = "1" VERSION = "3.6" WANT_SIGFPE_HANDLER = "0" WINDOW_HAS_FLAGS = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_THREAD = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "m" abs_builddir = "/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7" abs_srcdir = "/wrkdirs/usr/ports/lang/python36/work/Python-3.6.7" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.6.7" py_version_nodot = "36" py_version_short = "3.6" srcdir = "/usr/local/lib/python3.6/config-3.6m" userbase = "/home/ashorin/.local" maturin-1.7.4/sysconfig/cpython-freebsd-13.0-aarch64.txt000066400000000000000000000625331467514767100227030ustar00rootroot00000000000000Platform: "freebsd-13.0-RELEASE-arm64" Python version: "3.7" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.7m" platinclude = "/usr/local/include/python3.7m" platlib = "/usr/local/lib/python3.7/site-packages" platstdlib = "/usr/local/lib/python3.7" purelib = "/usr/local/lib/python3.7/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.7" Variables: ABIFLAGS = "m" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.7" BLDLIBRARY = "-L. -lpython3.7m" BLDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "aarch64-portbld-freebsd13.0" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--enable-ipv6' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=aarch64-portbld-freebsd13.0' 'build_alias=aarch64-portbld-freebsd13.0' 'CC=cc' 'CFLAGS=-O2 -pipe -fstack-protector-strong -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -fstack-protector-strong ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.7m" COREPYTHONPATH = "" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10/coverage.info" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.7 /usr/local/lib/python3.7/lib-dynload" DESTLIB = "/usr/local/lib/python3.7" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.7/lib-dynload" DFLAGS = "" DIRMODE = "755" DISABLED_EXTENSIONS = "_sqlite3 _tkinter _gdbm" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".so" FILEMODE = "644" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "1" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "aarch64-portbld-freebsd13.0" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.7m /usr/local/include/python3.7m" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.7m" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 555" INSTSONAME = "libpython3.7m.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" LDFLAGS_NODIST = "" LDLAST = "" LDLIBRARY = "libpython3.7m.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" LDVERSION = "3.7m" LIBC = "" LIBDEST = "/usr/local/lib/python3.7" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.7/config-3.7m" LIBRARY = "libpython3.7m.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" LOG1P_DROPS_ZERO_SIGN = "0" MACHDEP = "freebsd13" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.7" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io zipimport faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/zipimport.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGEN = "Parser/pgen" PGENOBJS = "\ \" PGOBJS = "\" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test.regrtest --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".so" SOABI = "cpython-37m" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TANH_PRESERVES_ZERO_SIGN = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.7" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "m" abs_builddir = "/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10" abs_srcdir = "/wrkdirs/usr/ports/lang/python37/work/Python-3.7.10" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.7.10" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/usr/local/lib/python3.7/config-3.7m" userbase = "/root/.local"maturin-1.7.4/sysconfig/cpython-freebsd-13.0-powerpc64.txt000066400000000000000000000524431467514767100233030ustar00rootroot00000000000000Platform: "freebsd-13.0-RELEASE-p4-powerpc" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "powerpc64-portbld-freebsd13.0" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--enable-ipv6' '--with-system-libmpdec' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=powerpc64-portbld-freebsd13.0' 'build_alias=powerpc64-portbld-freebsd13.0' 'CC=cc' 'CFLAGS=-O2 -pipe -fstack-protector-strong -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -fstack-protector-strong ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12/coverage.info" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "1" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "0" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "1" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "powerpc64-portbld-freebsd13.0" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "freebsd13" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "_sqlite3 _tkinter _gdbm" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38.so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" abs_srcdir = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.12" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8" userbase = "/home/pkubaj/.local" maturin-1.7.4/sysconfig/cpython-freebsd-13.0-powerpc64le.txt000066400000000000000000000524531467514767100236250ustar00rootroot00000000000000Platform: "freebsd-13.0-RELEASE-p4-powerpc" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "powerpc64le-portbld-freebsd13.0" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--enable-ipv6' '--with-system-libmpdec' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=powerpc64le-portbld-freebsd13.0' 'build_alias=powerpc64le-portbld-freebsd13.0' 'CC=cc' 'CFLAGS=-O2 -pipe -fstack-protector-strong -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -fstack-protector-strong ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12/coverage.info" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "powerpc64le-portbld-freebsd13.0" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "freebsd13" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "_sqlite3 _tkinter _gdbm" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lintl -ldl -L/usr/local/lib -lintl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38.so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" abs_srcdir = "/wrkdirs/usr/ports/lang/python38/work/Python-3.8.12" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.12" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8" userbase = "/home/pkubaj/.local" maturin-1.7.4/sysconfig/cpython-freebsd-13.1-armv7.txt000066400000000000000000000773461467514767100225200ustar00rootroot00000000000000Platform: "freebsd-13.1-RELEASE-arm" Python version: "3.11" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.11" platinclude = "/usr/local/include/python3.11" platlib = "/usr/local/lib/python3.11/site-packages" platstdlib = "/usr/local/lib/python3.11" purelib = "/usr/local/lib/python3.11/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.11" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "4" ALIGNOF_SIZE_T = "4" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "/usr/bin/llvm-ar" ARFLAGS = "rcs" BASECFLAGS = "-Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.11" BLDLIBRARY = "-L. -lpython3.11" BLDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" BOOTSTRAP_HEADERS = "\" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "armv7-portbld-freebsd13.1" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_LDFLAGS_NODIST = "-flto=thin -g" CONFIGURE_LDFLAGS_NOLTO = "-fno-lto" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--enable-ipv6' '--with-system-libmpdec' '--with-lto=thin' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=armv7-portbld-freebsd13.1' 'build_alias=armv7-portbld-freebsd13.1' 'PKG_CONFIG=pkgconf' 'PKG_CONFIG_LIBDIR=/wrkdirs/usr/ports/lang/python311/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig' 'CC=cc' 'CFLAGS=-O2 -pipe -fstack-protector-strong -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -fstack-protector-strong ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=cpp'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.11" COREPYTHONPATH = "" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0/coverage.info" COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0/lcov-report" COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.11 LCOV report [commit $(shell )]"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "c++ -pthread" DECIMAL_CFLAGS = "-DCONFIG_32=1 -DANSI=1" DECIMAL_LDFLAGS = "-lmpdec" DEEPFREEZE_DEPS = "./Tools/scripts/deepfreeze.py _bootstrap_python ./Programs/_freeze_module.py \" DEEPFREEZE_OBJS = "Python/deepfreeze/deepfreeze.o" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.11 /usr/local/lib/python3.11/lib-dynload" DESTLIB = "/usr/local/lib/python3.11" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.11/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPAT_CFLAGS = "-I./Modules/expat" EXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-311.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FREEZE_MODULE = "./_bootstrap_python ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP = "./Programs/_freeze_module" FREEZE_MODULE_BOOTSTRAP_DEPS = "Programs/_freeze_module" FREEZE_MODULE_DEPS = "_bootstrap_python ./Programs/_freeze_module.py" FROZEN_FILES_IN = "\" FROZEN_FILES_OUT = "\" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT = "1" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_BZLIB_H = "1" HAVE_CHFLAGS = "1" HAVE_CHMOD = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_NANOSLEEP = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_CONNECT = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DB_H = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORK1 = "0" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "0" HAVE_GDBM_DASH_NDBM_H = "0" HAVE_GDBM_H = "0" HAVE_GDBM_NDBM_H = "0" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETEGID = "1" HAVE_GETENTROPY = "1" HAVE_GETEUID = "1" HAVE_GETGID = "1" HAVE_GETGRGID = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYADDR = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETHOSTNAME = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPROTOBYNAME = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETRUSAGE = "1" HAVE_GETSERVBYNAME = "1" HAVE_GETSERVBYPORT = "1" HAVE_GETSID = "1" HAVE_GETSOCKNAME = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETUID = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_NTOA = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "1" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LIBB2 = "0" HAVE_LIBDB = "0" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBGDBM_COMPAT = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBNDBM = "0" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBSQLITE3 = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_AUXVEC_H = "0" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_SOUNDCARD_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LISTEN = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LOGIN_TTY = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_LZMA_H = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NANOSLEEP = "1" HAVE_NCURSES_H = "1" HAVE_NDBM_H = "1" HAVE_NDIR_H = "0" HAVE_NETCAN_CAN_H = "0" HAVE_NETDB_H = "1" HAVE_NETINET_IN_H = "1" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENDIR = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTHREAD_STUBS = "0" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RECVFROM = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_RPC_RPC_H = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SENDTO = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETJMP_H = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETSOCKOPT = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SHUTDOWN = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKET = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SPLICE = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYSLOG_H = "1" HAVE_SYSTEM = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENTFD_H = "1" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_SOUNDCARD_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TTYNAME = "1" HAVE_TZNAME = "0" HAVE_UMASK = "1" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "1" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UTMP_H = "0" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_VFORK = "1" HAVE_WAIT = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE_ZLIB_H = "0" HAVE__GETPTY = "0" HOSTRUNNER = "" HOST_GNU_TYPE = "armv7-portbld-freebsd13.1" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.11 /usr/local/include/python3.11" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.11" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.11.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.11.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" LDVERSION = "3.11" LIBC = "" LIBDEST = "/usr/local/lib/python3.11" LIBDIR = "/usr/local/lib" LIBEXPAT_A = "Modules/expat/libexpat.a" LIBEXPAT_CFLAGS = "-I./Modules/expat -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -fPIC" LIBEXPAT_HEADERS = "\" LIBEXPAT_OBJS = "\" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a" LIBMPDEC_CFLAGS = "-DCONFIG_32=1 -DANSI=1 -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -fPIC" LIBMPDEC_HEADERS = "\" LIBMPDEC_OBJS = "\" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.11/config-3.11" LIBPYTHON = "" LIBRARY = "libpython3.11.a" LIBRARY_DEPS = "libpython3.11.a libpython3.11.so libpython3.so" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lintl -ldl -L/usr/local/lib -lintl -lutil" LIBSUBDIRS = "asyncio \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LINK_PYTHON_DEPS = "libpython3.11.a libpython3.11.so libpython3.so" LINK_PYTHON_OBJS = "-L. -lpython3.11" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "freebsd13" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.11" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "atexit faulthandler posix _signal _tracemalloc _codecs _collections errno _io itertools _sre _thread time _weakref _abc _functools _locale _operator _stat _symtable pwd xxsubtype" MODDISABLED_NAMES = "_sqlite3 _tkinter _gdbm" MODLIBS = "" MODOBJS = "Modules/atexitmodule.o Modules/faulthandler.o Modules/posixmodule.o Modules/signalmodule.o Modules/_tracemalloc.o Modules/_codecsmodule.o Modules/_collectionsmodule.o Modules/errnomodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/itertoolsmodule.o Modules/_sre/sre.o Modules/_threadmodule.o Modules/timemodule.o Modules/_weakref.o Modules/_abc.o Modules/_functoolsmodule.o Modules/_localemodule.o Modules/_operator.o Modules/_stat.o Modules/symtablemodule.o Modules/pwdmodule.o Modules/xxsubtype.o" MODSHARED_NAMES = "" MODULE_ARRAY_STATE = "yes" MODULE_ATEXIT_LDFLAGS = "" MODULE_AUDIOOP_LDFLAGS = "-lm" MODULE_AUDIOOP_STATE = "yes" MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32" MODULE_BINASCII_LDFLAGS = "-lz" MODULE_BINASCII_STATE = "yes" MODULE_CMATH_DEPS = "./Modules/_math.h" MODULE_CMATH_LDFLAGS = "-lm" MODULE_CMATH_STATE = "yes" MODULE_ERRNO_LDFLAGS = "" MODULE_FAULTHANDLER_LDFLAGS = "" MODULE_FCNTL_LDFLAGS = "" MODULE_FCNTL_STATE = "yes" MODULE_GRP_STATE = "yes" MODULE_ITERTOOLS_LDFLAGS = "" MODULE_MATH_DEPS = "./Modules/_math.h" MODULE_MATH_LDFLAGS = "-lm" MODULE_MATH_STATE = "yes" MODULE_MMAP_STATE = "yes" MODULE_NIS_CFLAGS = "" MODULE_NIS_LDFLAGS = "" MODULE_NIS_STATE = "yes" MODULE_OBJS = "\" MODULE_OSSAUDIODEV_LDFLAGS = "" MODULE_OSSAUDIODEV_STATE = "yes" MODULE_POSIX_LDFLAGS = "" MODULE_PWD_LDFLAGS = "" MODULE_PWD_STATE = "yes" MODULE_PYEXPAT_CFLAGS = "-I./Modules/expat" MODULE_PYEXPAT_DEPS = "\ Modules/expat/libexpat.a" MODULE_PYEXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a" MODULE_PYEXPAT_STATE = "yes" MODULE_RESOURCE_STATE = "yes" MODULE_SELECT_STATE = "yes" MODULE_SPWD_STATE = "n/a" MODULE_SYSLOG_STATE = "yes" MODULE_TERMIOS_STATE = "yes" MODULE_TIME_LDFLAGS = "" MODULE_TIME_STATE = "yes" MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h" MODULE_UNICODEDATA_STATE = "yes" MODULE_XXLIMITED_35_STATE = "yes" MODULE_XXLIMITED_STATE = "yes" MODULE_XXSUBTYPE_LDFLAGS = "" MODULE_ZLIB_CFLAGS = "" MODULE_ZLIB_LDFLAGS = "-lz" MODULE_ZLIB_STATE = "yes" MODULE__ABC_LDFLAGS = "" MODULE__ASYNCIO_STATE = "yes" MODULE__BISECT_STATE = "yes" MODULE__BLAKE2_CFLAGS = "" MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h" MODULE__BLAKE2_LDFLAGS = "" MODULE__BLAKE2_STATE = "yes" MODULE__BZ2_CFLAGS = "" MODULE__BZ2_LDFLAGS = "-lbz2" MODULE__BZ2_STATE = "yes" MODULE__CODECS_CN_STATE = "yes" MODULE__CODECS_HK_STATE = "yes" MODULE__CODECS_ISO2022_STATE = "yes" MODULE__CODECS_JP_STATE = "yes" MODULE__CODECS_KR_STATE = "yes" MODULE__CODECS_LDFLAGS = "" MODULE__CODECS_TW_STATE = "yes" MODULE__COLLECTIONS_LDFLAGS = "" MODULE__CONTEXTVARS_STATE = "yes" MODULE__CRYPT_CFLAGS = "" MODULE__CRYPT_LDFLAGS = "-lcrypt" MODULE__CRYPT_STATE = "yes" MODULE__CSV_STATE = "yes" MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h" MODULE__CTYPES_TEST_LDFLAGS = "-lm" MODULE__CTYPES_TEST_STATE = "yes" MODULE__DATETIME_LDFLAGS = "-lm" MODULE__DATETIME_STATE = "yes" MODULE__DECIMAL_CFLAGS = "-DCONFIG_32=1 -DANSI=1" MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \" MODULE__DECIMAL_LDFLAGS = "-lmpdec" MODULE__DECIMAL_STATE = "yes" MODULE__ELEMENTTREE_CFLAGS = "-I./Modules/expat" MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c \ Modules/expat/libexpat.a" MODULE__ELEMENTTREE_STATE = "yes" MODULE__FUNCTOOLS_LDFLAGS = "" MODULE__GDBM_STATE = "missing" MODULE__HASHLIB_CFLAGS = "-I/usr/include" MODULE__HASHLIB_DEPS = "./Modules/hashlib.h" MODULE__HASHLIB_LDFLAGS = "-L/usr/lib -lcrypto" MODULE__HASHLIB_STATE = "yes" MODULE__HEAPQ_STATE = "yes" MODULE__IO_CFLAGS = "-I./Modules/_io" MODULE__IO_DEPS = "./Modules/_io/_iomodule.h" MODULE__IO_LDFLAGS = "" MODULE__IO_STATE = "yes" MODULE__JSON_STATE = "yes" MODULE__LOCALE_LDFLAGS = "" MODULE__LSPROF_STATE = "yes" MODULE__LZMA_CFLAGS = "" MODULE__LZMA_LDFLAGS = "-llzma" MODULE__LZMA_STATE = "yes" MODULE__MD5_DEPS = "./Modules/hashlib.h" MODULE__MD5_STATE = "yes" MODULE__MULTIBYTECODEC_STATE = "yes" MODULE__MULTIPROCESSING_CFLAGS = "-I./Modules/_multiprocessing" MODULE__MULTIPROCESSING_STATE = "yes" MODULE__OPCODE_STATE = "yes" MODULE__OPERATOR_LDFLAGS = "" MODULE__PICKLE_STATE = "yes" MODULE__POSIXSHMEM_CFLAGS = "-I./Modules/_multiprocessing" MODULE__POSIXSHMEM_LDFLAGS = "" MODULE__POSIXSHMEM_STATE = "yes" MODULE__POSIXSUBPROCESS_STATE = "yes" MODULE__QUEUE_STATE = "yes" MODULE__RANDOM_STATE = "yes" MODULE__SCPROXY_STATE = "n/a" MODULE__SHA1_DEPS = "./Modules/hashlib.h" MODULE__SHA1_STATE = "yes" MODULE__SHA256_DEPS = "./Modules/hashlib.h" MODULE__SHA256_STATE = "yes" MODULE__SHA3_DEPS = "./Modules/_sha3/sha3.c ./Modules/_sha3/sha3.h ./Modules/hashlib.h" MODULE__SHA3_STATE = "yes" MODULE__SHA512_DEPS = "./Modules/hashlib.h" MODULE__SHA512_STATE = "yes" MODULE__SIGNAL_LDFLAGS = "" MODULE__SOCKET_DEPS = "./Modules/socketmodule.h ./Modules/addrinfo.h ./Modules/getaddrinfo.c ./Modules/getnameinfo.c" MODULE__SOCKET_STATE = "yes" MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h" MODULE__SQLITE3_STATE = "disabled" MODULE__SRE_LDFLAGS = "" MODULE__SSL_CFLAGS = "-I/usr/include" MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h" MODULE__SSL_LDFLAGS = "-L/usr/lib -lssl -lcrypto" MODULE__SSL_STATE = "yes" MODULE__STATISTICS_LDFLAGS = "-lm" MODULE__STATISTICS_STATE = "yes" MODULE__STAT_LDFLAGS = "" MODULE__STRUCT_STATE = "yes" MODULE__SYMTABLE_LDFLAGS = "" MODULE__TESTBUFFER_STATE = "yes" MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h" MODULE__TESTCAPI_STATE = "yes" MODULE__TESTIMPORTMULTIPLE_STATE = "yes" MODULE__TESTINTERNALCAPI_STATE = "yes" MODULE__TESTMULTIPHASE_STATE = "yes" MODULE__THREAD_LDFLAGS = "" MODULE__TKINTER_STATE = "missing" MODULE__TRACEMALLOC_LDFLAGS = "" MODULE__TYPING_STATE = "yes" MODULE__UUID_CFLAGS = "" MODULE__UUID_LDFLAGS = "" MODULE__UUID_STATE = "yes" MODULE__WEAKREF_LDFLAGS = "" MODULE__XXSUBINTERPRETERS_STATE = "yes" MODULE__XXTESTFUZZ_STATE = "yes" MODULE__ZONEINFO_STATE = "yes" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPENSSL_RPATH = "" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo --timeout=1200" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_BUILD_DEPS = "python" PYTHON_FOR_FREEZE = "./_bootstrap_python" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing" PY_CFLAGS_NODIST = "-flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong -flto=thin -g" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_ENABLE_SHARED = "1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_LDFLAGS_NODIST = "-flto=thin -g" PY_LDFLAGS_NOLTO = "-L/usr/local/lib -fstack-protector-strong -fno-lto" PY_SQLITE_ENABLE_LOAD_EXTENSION = "0" PY_SQLITE_HAVE_SERIALIZE = "0" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -flto=thin -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" PY_SUPPORT_TIER = "0" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_STATS = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SHELL = "/bin/sh" SHLIBS = "-lintl -ldl -L/usr/local/lib -lintl -lutil" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "4" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "4" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "4" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "4" SIZEOF_VOID_P = "4" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SOABI = "cpython-311" SRCDIRS = "Modules Modules/_blake2 Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_io Modules/_multiprocessing Modules/_sha3 Modules/_sqlite Modules/_sre Modules/_xxtestfuzz Modules/cjkcodecs Modules/expat Objects Parser Programs Python Python/frozen_modules Python/deepfreeze" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STATIC_LIBPYTHON = "1" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0 ./python -E" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0 ./python -E ./Tools/scripts/run_tests.py" TESTSUBDIRS = "ctypes/test \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.11" WASM_ASSETS_DIR = "./usr/local" WASM_STDLIB = "./usr/local/lib/python3.11/os.py" WHEEL_PKG_DIR = "" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_EDITLINE = "0" WITH_FREELISTS = "1" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0" abs_srcdir = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" platlibdir = "lib" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.11.0" py_version_nodot = "311" py_version_nodot_plat = "" py_version_short = "3.11" srcdir = "/usr/local/lib/python3.11/config-3.11" userbase = "/root/.local" maturin-1.7.4/sysconfig/cpython-freebsd-14.0-riscv64.txt000066400000000000000000000763761467514767100227660ustar00rootroot00000000000000Platform: "freebsd-14.0-CURRENT-riscv" Python version: "3.11" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.11" platinclude = "/usr/local/include/python3.11" platlib = "/usr/local/lib/python3.11/site-packages" platstdlib = "/usr/local/lib/python3.11" purelib = "/usr/local/lib/python3.11/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.11" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "8" ALIGNOF_SIZE_T = "8" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.11" BLDLIBRARY = "-L. -lpython3.11" BLDSHARED = "/usr/bin/cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "riscv64-portbld-freebsd14.0" BYTESTR_DEPS = "\" CC = "/usr/bin/cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--without-ensurepip' '--with-system-ffi' '--without-pydebug' '--enable-ipv6' '--with-system-libmpdec' '--with-pymalloc' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=riscv64-portbld-freebsd14.0' 'build_alias=riscv64-portbld-freebsd14.0' 'CC=/usr/bin/cc' 'CFLAGS=-O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing ' 'LDFLAGS= -L/usr/local/lib -fstack-protector-strong ' 'LIBS=-L/usr/local/lib -lintl' 'CPPFLAGS=-I/usr/local/include -I/usr/local/include' 'CPP=/usr/bin/cpp' 'PKG_CONFIG=pkgconf'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.11" COREPYTHONPATH = "" COVERAGE_INFO = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2/coverage.info" COVERAGE_REPORT = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" CXX = "/usr/bin/c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.11 /usr/local/lib/python3.11/lib-dynload" DESTLIB = "/usr/local/lib/python3.11" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.11/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPERIMENTAL_ISOLATED_SUBINTERPRETERS = "0" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-311.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" FROZEN_FILES_IN = "\" FROZEN_FILES_OUT = "\" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_NANOSLEEP = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LIBUUID = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NANOSLEEP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SPLICE = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENTFD_H = "1" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_VFORK = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "riscv64-portbld-freebsd14.0" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.11 /usr/local/include/python3.11" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.11" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "install -m 0644" INSTALL_PROGRAM = "install -s -m 555" INSTALL_SCRIPT = "install -m 555" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.11.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "/usr/bin/c++ -pthread -shared" LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.11.so" LDLIBRARYDIR = "" LDSHARED = "/usr/bin/cc -pthread -shared -L/usr/local/lib -fstack-protector-strong" LDVERSION = "3.11" LIBC = "" LIBDEST = "/usr/local/lib/python3.11" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/libdata/pkgconfig" LIBPL = "/usr/local/lib/python3.11/config-3.11" LIBPYTHON = "" LIBRARY = "libpython3.11.a" LIBRARY_DEPS = "libpython3.11.a libpython3.11.so libpython3.so" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lintl -ldl -L/usr/local/lib -lintl -lutil" LIBSUBDIRS = "asyncio \" LINKCC = "/usr/bin/cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "freebsd14" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.11" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "/usr/bin/cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "_collections _abc _codecs _functools _io _locale _operator _signal _sre _stat _symtable _thread _tracemalloc _weakref atexit errno faulthandler itertools posix pwd time xxsubtype" MODDISABLED_NAMES = "_sqlite3 _tkinter _gdbm" MODLIBS = "" MODOBJS = "Modules/_collectionsmodule.o Modules/_abc.o Modules/_codecsmodule.o Modules/_functoolsmodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/_localemodule.o Modules/_operator.o Modules/signalmodule.o Modules/_sre.o Modules/_stat.o Modules/symtablemodule.o Modules/_threadmodule.o Modules/_tracemalloc.o Modules/_weakref.o Modules/atexitmodule.o Modules/errnomodule.o Modules/faulthandler.o Modules/itertoolsmodule.o Modules/posixmodule.o Modules/pwdmodule.o Modules/timemodule.o Modules/xxsubtype.o" MODSHARED_NAMES = "" MODULE_CMATH_DEPS = "./Modules/_math.h" MODULE_MATH_DEPS = "./Modules/_math.h" MODULE_OBJS = "\" MODULE_PYEXPAT_DEPS = "./Modules/expat/ascii.h ./Modules/expat/asciitab.h ./Modules/expat/expat.h ./Modules/expat/expat_config.h ./Modules/expat/expat_external.h ./Modules/expat/internal.h ./Modules/expat/latin1tab.h ./Modules/expat/utf8tab.h ./Modules/expat/xmlrole.h ./Modules/expat/xmltok.h ./Modules/expat/xmltok_impl.h" MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h" MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-dispatch.c ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2-kat.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b-test.c ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2bp-test.c ./Modules/_blake2/impl/blake2bp.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s-test.c ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/impl/blake2sp-test.c ./Modules/_blake2/impl/blake2sp.c ./Modules/hashlib.h" MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h" MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h ./Modules/_decimal/libmpdec/basearith.h ./Modules/_decimal/libmpdec/bits.h ./Modules/_decimal/libmpdec/constants.h ./Modules/_decimal/libmpdec/convolute.h ./Modules/_decimal/libmpdec/crt.h ./Modules/_decimal/libmpdec/difradix2.h ./Modules/_decimal/libmpdec/fnt.h ./Modules/_decimal/libmpdec/fourstep.h ./Modules/_decimal/libmpdec/io.h ./Modules/_decimal/libmpdec/mpalloc.h ./Modules/_decimal/libmpdec/mpdecimal.h ./Modules/_decimal/libmpdec/numbertheory.h ./Modules/_decimal/libmpdec/sixstep.h ./Modules/_decimal/libmpdec/transpose.h ./Modules/_decimal/libmpdec/typearith.h ./Modules/_decimal/libmpdec/umodarith.h" MODULE__ELEMENTTREE_DEPS = "./Modules/expat/ascii.h ./Modules/expat/asciitab.h ./Modules/expat/expat.h ./Modules/expat/expat_config.h ./Modules/expat/expat_external.h ./Modules/expat/internal.h ./Modules/expat/latin1tab.h ./Modules/expat/utf8tab.h ./Modules/expat/xmlparse.c ./Modules/expat/xmlrole.c ./Modules/expat/xmlrole.h ./Modules/expat/xmltok.c ./Modules/expat/xmltok.h ./Modules/expat/xmltok_impl.h ./Modules/pyexpat.c" MODULE__HASHLIB_DEPS = "./Modules/hashlib.h" MODULE__IO_DEPS = "./Modules/_io/_iomodule.h" MODULE__MD5_DEPS = "./Modules/hashlib.h" MODULE__SHA1_DEPS = "./Modules/hashlib.h" MODULE__SHA256_DEPS = "./Modules/hashlib.h" MODULE__SHA3_DEPS = "./Modules/_sha3/kcp/KeccakHash.c ./Modules/_sha3/kcp/KeccakHash.h ./Modules/_sha3/kcp/KeccakP-1600-64.macros ./Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h ./Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h ./Modules/_sha3/kcp/KeccakP-1600-SnP.h ./Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c ./Modules/_sha3/kcp/KeccakP-1600-opt64-config.h ./Modules/_sha3/kcp/KeccakP-1600-opt64.c ./Modules/_sha3/kcp/KeccakP-1600-unrolling.macros ./Modules/_sha3/kcp/KeccakSponge.c ./Modules/_sha3/kcp/KeccakSponge.h ./Modules/_sha3/kcp/KeccakSponge.inc ./Modules/_sha3/kcp/PlSnP-Fallback.inc ./Modules/_sha3/kcp/SnP-Relaned.h ./Modules/_sha3/kcp/align.h ./Modules/hashlib.h" MODULE__SHA512_DEPS = "./Modules/hashlib.h" MODULE__SOCKET_DEPS = "./Modules/socketmodule.h" MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h" MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPENSSL_RPATH = "" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo --timeout=1200" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include -I/usr/local/include" PY_ENABLE_SHARED = "1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib -fstack-protector-strong" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=rv64imafdc -mabi=lp64d -fstack-protector-strong -fno-strict-aliasing -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/usr/local/include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SHELL = "/bin/sh" SHLIBS = "-lintl -ldl -L/usr/local/lib -lintl -lutil" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-311.so" SOABI = "cpython-311" SRCDIRS = "Modules Modules/_blake2 Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_io Modules/_multiprocessing Modules/_sha3 Modules/_sqlite Modules/_xxtestfuzz Modules/cjkcodecs Modules/expat Objects Parser Programs Python" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STATIC_LIBPYTHON = "1" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2 ./python ./Tools/scripts/run_tests.py" TESTSUBDIRS = "ctypes/test \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.11" WHEEL_PKG_DIR = "" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_EDITLINE = "0" WITH_FREELISTS = "1" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2" abs_srcdir = "/wrkdirs/usr/ports/lang/python311/work/Python-3.11.0a2" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" platlibdir = "lib" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.11.0a2" py_version_nodot = "311" py_version_nodot_plat = "" py_version_short = "3.11" srcdir = "/usr/local/lib/python3.11/config-3.11" userbase = "/root/.local" maturin-1.7.4/sysconfig/cpython-haiku-3.9.txt000066400000000000000000000545461467514767100211010ustar00rootroot00000000000000Platform: "haiku-1-x86_64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/packages/python39-3.9.5-4/.self" include = "/packages/python39-3.9.5-4/.self/include/python3.9" platinclude = "/packages/python39-3.9.5-4/.self/include/python3.9" platlib = "/packages/python39-3.9.5-4/.self/lib/python3.9/site-packages" platstdlib = "/packages/python39-3.9.5-4/.self/lib/python3.9" purelib = "/packages/python39-3.9.5-4/.self/lib/python3.9/site-packages" scripts = "/packages/python39-3.9.5-4/.self/bin" stdlib = "/packages/python39-3.9.5-4/.self/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/packages/python39-3.9.5-4/.self/bin" BINLIBDEST = "/packages/python39-3.9.5-4/.self/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "gcc -shared" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-unknown-haiku" BYTESTR_DEPS = "\" CC = "gcc" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -D_BSD_SOURCE -D_BSD_SOURCE" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-D_BSD_SOURCE" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "" CONFIGURE_LDFLAGS = "" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/packages/python39-3.9.5-4/.self' '--sysconfdir=/packages/python39-3.9.5-4/.settings' '--datadir=/packages/python39-3.9.5-4/.self/data' '--datarootdir=/packages/python39-3.9.5-4/.self/data' '--sbindir=/packages/python39-3.9.5-4/.self/bin' '--libdir=/packages/python39-3.9.5-4/.self/lib' '--oldincludedir=/packages/python39-3.9.5-4/.self/develop/headers' '--docdir=/packages/python39-3.9.5-4/.self/documentation/packages/python39' '--infodir=/packages/python39-3.9.5-4/.self/documentation/info' '--mandir=/packages/python39-3.9.5-4/.self/documentation/man' '--libexecdir=/packages/python39-3.9.5-4/.self/lib' '--sharedstatedir=/packages/python39-3.9.5-4/.self/var' '--localstatedir=/packages/python39-3.9.5-4/.self/var' '--build=x86_64-unknown-haiku' '--enable-shared' '--without-ensurepip' '--with-system-ffi' '--with-system-expat' '--bindir=/packages/python39-3.9.5-4/.self/bin' '--includedir=/packages/python39-3.9.5-4/.self/develop/headers' 'build_alias=x86_64-unknown-haiku' 'CFLAGS=-D_BSD_SOURCE'" CONFINCLUDEDIR = "/packages/python39-3.9.5-4/.self/develop/headers" CONFINCLUDEPY = "/packages/python39-3.9.5-4/.self/develop/headers/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/sources/Python-3.9.5/coverage.info" COVERAGE_REPORT = "/sources/Python-3.9.5/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include" CXX = "g++" DESTDIRS = "/packages/python39-3.9.5-4/.self /packages/python39-3.9.5-4/.self/lib /packages/python39-3.9.5-4/.self/lib/python3.9 /packages/python39-3.9.5-4/.self/lib/python3.9/lib-dynload" DESTLIB = "/packages/python39-3.9.5-4/.self/lib/python3.9" DESTPATH = "" DESTSHARED = "/packages/python39-3.9.5-4/.self/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-39.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "0" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "0" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "0" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "0" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "0" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "0" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "0" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "0" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETWD = "0" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "0" HAVE_LIBREADLINE = "0" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "0" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "0" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "0" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "0" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "0" HAVE_RL_CATCH_SIGNAL = "0" HAVE_RL_COMPLETION_APPEND_CHARACTER = "0" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "0" HAVE_RL_COMPLETION_MATCHES = "0" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "0" HAVE_RL_PRE_INPUT_HOOK = "0" HAVE_RL_RESIZE_TERMINAL = "0" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "0" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "0" HAVE_WAIT4 = "0" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "0" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-unknown-haiku" INCLDIRSTOMAKE = "/packages/python39-3.9.5-4/.self/develop/headers /packages/python39-3.9.5-4/.self/develop/headers /packages/python39-3.9.5-4/.self/develop/headers/python3.9 /packages/python39-3.9.5-4/.self/develop/headers/python3.9" INCLUDEDIR = "/packages/python39-3.9.5-4/.self/develop/headers" INCLUDEPY = "/packages/python39-3.9.5-4/.self/develop/headers/python3.9" INSTALL = "/bin/install -c" INSTALL_DATA = "/bin/install -c -m 644" INSTALL_PROGRAM = "/bin/install -c" INSTALL_SCRIPT = "/bin/install -c" INSTALL_SHARED = "/bin/install -c -m 755" INSTSONAME = "libpython3.9.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -shared" LDFLAGS = "" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.so" LDLIBRARYDIR = "" LDSHARED = "gcc -shared" LDVERSION = "3.9" LIBC = "" LIBDEST = "/packages/python39-3.9.5-4/.self/lib/python3.9" LIBDIR = "/packages/python39-3.9.5-4/.self/lib" LIBFFI_INCLUDEDIR = "/packages/libffi-3.4.2-1/.self/develop/headers" LIBM = "" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/packages/python39-3.9.5-4/.self/lib/pkgconfig" LIBPL = "/packages/python39-3.9.5-4/.self/lib/python3.9/config-3.9" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lnetwork -lbsd" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln -s" LOCALMODLIBS = "" MACHDEP = "haiku1" MACHDEP_OBJS = "" MACHDESTLIB = "/packages/python39-3.9.5-4/.self/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/packages/python39-3.9.5-4/.self/documentation/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/packages/openssl-1.1.1k-1/.self/develop/headers" OPENSSL_LDFLAGS = "-L/packages/openssl-1.1.1k-1/.self/develop/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -D_BSD_SOURCE -D_BSD_SOURCE -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -D_BSD_SOURCE -D_BSD_SOURCE" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -D_BSD_SOURCE -D_BSD_SOURCE -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "" PY_CPPFLAGS = "-I. -I./Include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -D_BSD_SOURCE -D_BSD_SOURCE -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LIBRARY_PATH=/sources/Python-3.9.5:%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib" SCRIPTDIR = "/packages/python39-3.9.5-4/.self/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lnetwork -lbsd" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-39.so" SOABI = "cpython-39" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LIBRARY_PATH=/sources/Python-3.9.5:%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LIBRARY_PATH=/sources/Python-3.9.5:%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/sources/Python-3.9.5" abs_srcdir = "/sources/Python-3.9.5" base = "/packages/python39-3.9.5-4/.self" datarootdir = "/packages/python39-3.9.5-4/.self/data" exec_prefix = "/packages/python39-3.9.5-4/.self" installed_base = "/packages/python39-3.9.5-4/.self" installed_platbase = "/packages/python39-3.9.5-4/.self" platbase = "/packages/python39-3.9.5-4/.self" platlibdir = "lib" prefix = "/packages/python39-3.9.5-4/.self" projectbase = "/boot/system/bin" py_version = "3.9.5" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/boot/system/lib/python3.9/config-3.9" userbase = "/boot/home/.local" maturin-1.7.4/sysconfig/cpython-linux-3.7.txt000066400000000000000000000541371467514767100211310ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.7" Current installation scheme: "posix_prefix" Paths: data = "/home/konsti/maturin/.venv" include = "/home/konsti/.pyenv/versions/3.7.7/include/python3.7m" platinclude = "/home/konsti/.pyenv/versions/3.7.7/include/python3.7m" platlib = "/home/konsti/maturin/.venv/lib/python3.7/site-packages" platstdlib = "/home/konsti/maturin/.venv/lib/python3.7" purelib = "/home/konsti/maturin/.venv/lib/python3.7/site-packages" scripts = "/home/konsti/maturin/.venv/bin" stdlib = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7" Variables: ABIFLAGS = "m" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/home/konsti/.pyenv/versions/3.7.7/bin" BINLIBDEST = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7" BLDLIBRARY = "-L. -lpython3.7m" BLDSHARED = "gcc -pthread -shared -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-I/home/konsti/.pyenv/versions/3.7.7/include" CONFIGURE_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/home/konsti/.pyenv/versions/3.7.7' '--enable-shared' '--libdir=/home/konsti/.pyenv/versions/3.7.7/lib' 'LDFLAGS=-L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib ' 'CPPFLAGS=-I/home/konsti/.pyenv/versions/3.7.7/include '" CONFINCLUDEDIR = "/home/konsti/.pyenv/versions/3.7.7/include" CONFINCLUDEPY = "/home/konsti/.pyenv/versions/3.7.7/include/python3.7m" COREPYTHONPATH = "" COVERAGE_INFO = "/tmp/python-build.20200705125857.15611/Python-3.7.7/coverage.info" COVERAGE_REPORT = "/tmp/python-build.20200705125857.15611/Python-3.7.7/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/home/konsti/.pyenv/versions/3.7.7/include -I/home/konsti/.pyenv/versions/3.7.7/include" CXX = "g++ -pthread" DESTDIRS = "/home/konsti/.pyenv/versions/3.7.7 /home/konsti/.pyenv/versions/3.7.7/lib /home/konsti/.pyenv/versions/3.7.7/lib/python3.7 /home/konsti/.pyenv/versions/3.7.7/lib/python3.7/lib-dynload" DESTLIB = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7" DESTPATH = "" DESTSHARED = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-37m-x86_64-linux-gnu.so" FILEMODE = "644" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-linux-gnu" INCLDIRSTOMAKE = "/home/konsti/.pyenv/versions/3.7.7/include /home/konsti/.pyenv/versions/3.7.7/include /home/konsti/.pyenv/versions/3.7.7/include/python3.7m /home/konsti/.pyenv/versions/3.7.7/include/python3.7m" INCLUDEDIR = "/home/konsti/.pyenv/versions/3.7.7/include" INCLUDEPY = "/home/konsti/.pyenv/versions/3.7.7/include/python3.7m" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 555" INSTSONAME = "libpython3.7m.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared" LDFLAGS = "-L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" LDFLAGS_NODIST = "" LDLAST = "" LDLIBRARY = "libpython3.7m.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" LDVERSION = "3.7m" LIBC = "" LIBDEST = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7" LIBDIR = "/home/konsti/.pyenv/versions/3.7.7/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/home/konsti/.pyenv/versions/3.7.7/lib/pkgconfig" LIBPL = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7/config-3.7m-x86_64-linux-gnu" LIBRARY = "libpython3.7m.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" LOG1P_DROPS_ZERO_SIGN = "0" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/home/konsti/.pyenv/versions/3.7.7/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io zipimport faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/zipimport.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "x86_64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGEN = "Parser/pgen" PGENOBJS = "\ \" PGOBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test.regrtest --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3.7" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I. -I./Include -I/home/konsti/.pyenv/versions/3.7.7/include -I/home/konsti/.pyenv/versions/3.7.7/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I. -I./Include -I/home/konsti/.pyenv/versions/3.7.7/include -I/home/konsti/.pyenv/versions/3.7.7/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" PY_CPPFLAGS = "-I. -I./Include -I/home/konsti/.pyenv/versions/3.7.7/include -I/home/konsti/.pyenv/versions/3.7.7/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib -L/home/konsti/.pyenv/versions/3.7.7/lib -Wl,-rpath=/home/konsti/.pyenv/versions/3.7.7/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I. -I./Include -I/home/konsti/.pyenv/versions/3.7.7/include -I/home/konsti/.pyenv/versions/3.7.7/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/tmp/python-build.20200705125857.15611/Python-3.7.7" SCRIPTDIR = "/home/konsti/.pyenv/versions/3.7.7/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-37m-x86_64-linux-gnu.so" SOABI = "cpython-37m-x86_64-linux-gnu" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TANH_PRESERVES_ZERO_SIGN = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/tmp/python-build.20200705125857.15611/Python-3.7.7 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/tmp/python-build.20200705125857.15611/Python-3.7.7 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.7 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.7" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "m" abs_builddir = "/tmp/python-build.20200705125857.15611/Python-3.7.7" abs_srcdir = "/tmp/python-build.20200705125857.15611/Python-3.7.7" base = "/home/konsti/maturin/.venv" datarootdir = "/home/konsti/.pyenv/versions/3.7.7/share" exec_prefix = "/home/konsti/.pyenv/versions/3.7.7" installed_base = "/home/konsti/.pyenv/versions/3.7.7" installed_platbase = "/home/konsti/.pyenv/versions/3.7.7" platbase = "/home/konsti/maturin/.venv" prefix = "/home/konsti/.pyenv/versions/3.7.7" projectbase = "/home/konsti/.pyenv/versions/3.7.7/bin" py_version = "3.7.7" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/home/konsti/.pyenv/versions/3.7.7/lib/python3.7/config-3.7m-x86_64-linux-gnu" userbase = "/home/konsti/.local" maturin-1.7.4/sysconfig/cpython-linux-3.8-aarch64.txt000066400000000000000000000541451467514767100223570ustar00rootroot00000000000000Platform: "linux-aarch64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "gcc -pthread -shared" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "aarch64-unknown-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "" CONFIGURE_LDFLAGS = "" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--build=aarch64-linux-gnu' '--enable-loadable-sqlite-extensions' '--enable-optimizations' '--enable-option-checking=fatal' '--enable-shared' '--with-system-expat' '--with-system-ffi' '--without-ensurepip' 'build_alias=aarch64-linux-gnu'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/usr/src/python/coverage.info" COVERAGE_REPORT = "/usr/src/python/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include" CXX = "g++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38-aarch64-linux-gnu.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "1" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "aarch64-unknown-linux-gnu" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared" LDFLAGS = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/lib/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8-aarch64-linux-gnu" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "aarch64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"aarch64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "" PY_CPPFLAGS = "-I. -I./Include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/usr/src/python" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38-aarch64-linux-gnu.so" SOABI = "cpython-38-aarch64-linux-gnu" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/usr/src/python ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/usr/src/python ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/usr/src/python" abs_srcdir = "/usr/src/python" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.2" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8-aarch64-linux-gnu" userbase = "/root/.local" maturin-1.7.4/sysconfig/cpython-linux-3.8.txt000066400000000000000000000534411467514767100211270ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/home/konsti/.pyenv/versions/3.8.2" include = "/home/konsti/.pyenv/versions/3.8.2/include/python3.8" platinclude = "/home/konsti/.pyenv/versions/3.8.2/include/python3.8" platlib = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8/site-packages" platstdlib = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" purelib = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8/site-packages" scripts = "/home/konsti/.pyenv/versions/3.8.2/bin" stdlib = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/home/konsti/.pyenv/versions/3.8.2/bin" BINLIBDEST = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" BLDLIBRARY = "libpython3.8.a" BLDSHARED = "gcc -pthread -shared -L/home/konsti/.pyenv/versions/3.8.2/lib -L/home/konsti/.pyenv/versions/3.8.2/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-I/home/konsti/.pyenv/versions/3.8.2/include" CONFIGURE_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.8.2/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/home/konsti/.pyenv/versions/3.8.2' '--libdir=/home/konsti/.pyenv/versions/3.8.2/lib' 'LDFLAGS=-L/home/konsti/.pyenv/versions/3.8.2/lib ' 'CPPFLAGS=-I/home/konsti/.pyenv/versions/3.8.2/include '" CONFINCLUDEDIR = "/home/konsti/.pyenv/versions/3.8.2/include" CONFINCLUDEPY = "/home/konsti/.pyenv/versions/3.8.2/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/tmp/python-build.20200506220910.17899/Python-3.8.2/coverage.info" COVERAGE_REPORT = "/tmp/python-build.20200506220910.17899/Python-3.8.2/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/home/konsti/.pyenv/versions/3.8.2/include -I/home/konsti/.pyenv/versions/3.8.2/include" CXX = "g++ -pthread" DESTDIRS = "/home/konsti/.pyenv/versions/3.8.2 /home/konsti/.pyenv/versions/3.8.2/lib /home/konsti/.pyenv/versions/3.8.2/lib/python3.8 /home/konsti/.pyenv/versions/3.8.2/lib/python3.8/lib-dynload" DESTLIB = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" DESTPATH = "" DESTSHARED = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38-x86_64-linux-gnu.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-linux-gnu" INCLDIRSTOMAKE = "/home/konsti/.pyenv/versions/3.8.2/include /home/konsti/.pyenv/versions/3.8.2/include /home/konsti/.pyenv/versions/3.8.2/include/python3.8 /home/konsti/.pyenv/versions/3.8.2/include/python3.8" INCLUDEDIR = "/home/konsti/.pyenv/versions/3.8.2/include" INCLUDEPY = "/home/konsti/.pyenv/versions/3.8.2/include/python3.8" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8.a" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared" LDFLAGS = "-L/home/konsti/.pyenv/versions/3.8.2/lib -L/home/konsti/.pyenv/versions/3.8.2/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.a" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared -L/home/konsti/.pyenv/versions/3.8.2/lib -L/home/konsti/.pyenv/versions/3.8.2/lib" LDVERSION = "3.8" LIBC = "" LIBDEST = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" LIBDIR = "/home/konsti/.pyenv/versions/3.8.2/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/home/konsti/.pyenv/versions/3.8.2/lib/pkgconfig" LIBPL = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8/config-3.8-x86_64-linux-gnu" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/home/konsti/.pyenv/versions/3.8.2/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "x86_64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/home/konsti/.pyenv/versions/3.8.2/include -I/home/konsti/.pyenv/versions/3.8.2/include -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/home/konsti/.pyenv/versions/3.8.2/include -I/home/konsti/.pyenv/versions/3.8.2/include -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.8.2/lib -L/home/konsti/.pyenv/versions/3.8.2/lib" PY_CPPFLAGS = "-I. -I./Include -I/home/konsti/.pyenv/versions/3.8.2/include -I/home/konsti/.pyenv/versions/3.8.2/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/home/konsti/.pyenv/versions/3.8.2/lib -L/home/konsti/.pyenv/versions/3.8.2/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/home/konsti/.pyenv/versions/3.8.2/include -I/home/konsti/.pyenv/versions/3.8.2/include" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "" SCRIPTDIR = "/home/konsti/.pyenv/versions/3.8.2/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38-x86_64-linux-gnu.so" SOABI = "cpython-38-x86_64-linux-gnu" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "./python" TESTPYTHONOPTS = "" TESTRUNNER = "./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/tmp/python-build.20200506220910.17899/Python-3.8.2" abs_srcdir = "/tmp/python-build.20200506220910.17899/Python-3.8.2" base = "/home/konsti/.pyenv/versions/3.8.2" datarootdir = "/home/konsti/.pyenv/versions/3.8.2/share" exec_prefix = "/home/konsti/.pyenv/versions/3.8.2" installed_base = "/home/konsti/.pyenv/versions/3.8.2" installed_platbase = "/home/konsti/.pyenv/versions/3.8.2" platbase = "/home/konsti/.pyenv/versions/3.8.2" prefix = "/home/konsti/.pyenv/versions/3.8.2" projectbase = "/home/konsti/.pyenv/versions/3.8.2/bin" py_version = "3.8.2" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/home/konsti/.pyenv/versions/3.8.2/lib/python3.8/config-3.8-x86_64-linux-gnu" userbase = "/home/konsti/.local" maturin-1.7.4/sysconfig/cpython-linux-3.9.txt000066400000000000000000000672771467514767100211440ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr" include = "/usr/include/python3.9" platinclude = "/usr/include/python3.9" platlib = "/usr/lib/python3.9/site-packages" platstdlib = "/usr/lib/python3.9" purelib = "/usr/lib/python3.9/site-packages" scripts = "/usr/bin" stdlib = "/usr/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/bin" BINLIBDEST = "/usr/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition" CONFIGURE_CFLAGS_NODIST = "-flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-D_FORTIFY_SOURCE=2" CONFIGURE_LDFLAGS = "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition" CONFIGURE_LDFLAGS_NODIST = "-flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" CONFIG_ARGS = "'--prefix=/usr' '--enable-shared' '--with-computed-gotos' '--enable-optimizations' '--with-lto' '--enable-ipv6' '--with-system-expat' '--with-dbmliborder=gdbm:ndbm' '--with-system-ffi' '--with-system-libmpdec' '--enable-loadable-sqlite-extensions' '--without-ensurepip' '--with-tzpath=/usr/share/zoneinfo' 'CFLAGS=-march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition' 'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'" CONFINCLUDEDIR = "/usr/include" CONFINCLUDEPY = "/usr/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/build/python/src/Python-3.9.1/coverage.info" COVERAGE_REPORT = "/build/python/src/Python-3.9.1/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=2" CXX = "g++ -pthread" DESTDIRS = "/usr /usr/lib /usr/lib/python3.9 /usr/lib/python3.9/lib-dynload" DESTLIB = "/usr/lib/python3.9" DESTPATH = "" DESTSHARED = "/usr/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXT_SUFFIX = ".cpython-39-x86_64-linux-gnu.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_J1939_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LINUX_WAIT_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-linux-gnu" INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.9 /usr/include/python3.9" INCLUDEDIR = "/usr/include" INCLUDEPY = "/usr/include/python3.9" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.9.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared" LDFLAGS = "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" LDVERSION = "3.9" LIBC = "" LIBDEST = "/usr/lib/python3.9" LIBDIR = "/usr/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/lib/pkgconfig" LIBPL = "/usr/lib/python3.9/config-3.9-x86_64-linux-gnu" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/share/man" MKDIR_P = "/usr/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "x86_64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt" PY_CFLAGS_NODIST = "-flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_CPPFLAGS = "-I. -I./Include -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=2" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" PY_LDFLAGS_NODIST = "-flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -flto=4 -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=2 -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/build/python/src/Python-3.9.1" SCRIPTDIR = "/usr/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-39-x86_64-linux-gnu.so" SOABI = "cpython-39-x86_64-linux-gnu" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/build/python/src/Python-3.9.1 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/build/python/src/Python-3.9.1 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "1" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/build/python/src/Python-3.9.1" abs_srcdir = "/build/python/src/Python-3.9.1" base = "/usr" datarootdir = "/usr/share" exec_prefix = "/usr" installed_base = "/usr" installed_platbase = "/usr" platbase = "/usr" platlibdir = "lib" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.9.1" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/lib/python3.9/config-3.9-x86_64-linux-gnu" userbase = "/home/kngwyu/.local" maturin-1.7.4/sysconfig/cpython-linux-mips64-3.11.txt000066400000000000000000001033751467514767100223230ustar00rootroot00000000000000Platform: "linux-mips64" Python version: "3.11" Current installation scheme: "posix_prefix" Paths: data = "/usr" include = "/usr/include/python3.11" platinclude = "/usr/include/python3.11" platlib = "/usr/lib/python3.11/site-packages" platstdlib = "/usr/lib/python3.11" purelib = "/usr/lib/python3.11/site-packages" scripts = "/usr/bin" stdlib = "/usr/lib/python3.11" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "8" ALIGNOF_SIZE_T = "8" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "mips64-unknown-linux-gnu-ar" ARFLAGS = "rcs" BASECFLAGS = "-Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/bin" BINLIBDEST = "/usr/lib/python3.11" BLDLIBRARY = "-L. -lpython3.11" BLDSHARED = "mips64-unknown-linux-gnu-gcc -shared" BOOTSTRAP_HEADERS = "\" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "mips64-unknown-linux-gnu" BYTESTR_DEPS = "\" CC = "mips64-unknown-linux-gnu-gcc" CCSHARED = "-fPIC" CFLAGS = "-Wsign-compare -DNDEBUG" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "" CONFIGURE_CFLAGS_NODIST = "-O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-I/usr/include/ncursesw" CONFIGURE_LDFLAGS = "" CONFIGURE_LDFLAGS_NODIST = "-Wl,-O1 -Wl,--as-needed -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" CONFIGURE_LDFLAGS_NOLTO = "-fno-lto" CONFIG_ARGS = "'--prefix=/usr' '--build=mips64-unknown-linux-gnu' '--host=mips64-unknown-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--docdir=/usr/share/doc/python-3.11.4' '--htmldir=/usr/share/doc/python-3.11.4/html' '--libdir=/usr/lib64' 'ac_cv_header_stropts_h=no' '--enable-shared' '--without-static-libpython' '--enable-ipv6' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-computed-gotos' '--with-dbmliborder=gdbm' '--with-libc=' '--enable-loadable-sqlite-extensions' '--without-ensurepip' '--with-system-expat' '--with-system-ffi' '--with-platlibdir=lib' '--with-pkg-config=yes' '--with-wheel-pkg-dir=/usr/lib/python/ensurepip' '--without-assertions' '--with-lto' '--enable-optimizations' '--with-readline=readline' '--without-valgrind' 'build_alias=mips64-unknown-linux-gnu' 'host_alias=mips64-unknown-linux-gnu' 'PKG_CONFIG=mips64-unknown-linux-gnu-pkg-config' 'CFLAGS=' 'LDFLAGS=' 'CPPFLAGS= -I/usr/include/ncursesw' 'PROFILE_TASK=-m test -j16 --pgo-extended -u-network --timeout 1200 -x test_gdb -x test_dtrace -x test_asyncio -x test_httpservers -x test_logging -x test_multiprocessing_fork -x test_socket -x test_xmlrpc -x test_tools'" CONFINCLUDEDIR = "/usr/include" CONFINCLUDEPY = "/usr/include/python3.11" COREPYTHONPATH = "" COVERAGE_INFO = "/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4/coverage.info" COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1" COVERAGE_REPORT = "/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4/lcov-report" COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.11 LCOV report [commit $(shell )]"" CPPFLAGS = "-I. -I./Include -I/usr/include/ncursesw" CXX = "mips64-unknown-linux-gnu-g++" DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1" DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a" DEEPFREEZE_DEPS = "./Tools/scripts/deepfreeze.py _bootstrap_python ./Programs/_freeze_module.py \" DEEPFREEZE_OBJS = "Python/deepfreeze/deepfreeze.o" DESTDIRS = "/usr /usr/lib64 /usr/lib/python3.11 /usr/lib/python3.11/lib-dynload" DESTLIB = "/usr/lib/python3.11" DESTPATH = "" DESTSHARED = "/usr/lib/python3.11/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "1" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "0" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPAT_CFLAGS = "" EXPAT_LDFLAGS = "-lexpat" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-311-mips64-linux-gnuabi64.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "1" FREEZE_MODULE = "./_bootstrap_python ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP = "./Programs/_freeze_module" FREEZE_MODULE_BOOTSTRAP_DEPS = "Programs/_freeze_module" FREEZE_MODULE_DEPS = "_bootstrap_python ./Programs/_freeze_module.py" FROZEN_FILES_IN = "\" FROZEN_FILES_OUT = "\" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT = "1" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "1" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_BZLIB_H = "1" HAVE_CHFLAGS = "0" HAVE_CHMOD = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_NANOSLEEP = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_CONNECT = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DB_H = "0" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORK1 = "0" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GDBM_DASH_NDBM_H = "0" HAVE_GDBM_H = "1" HAVE_GDBM_NDBM_H = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETEGID = "1" HAVE_GETENTROPY = "1" HAVE_GETEUID = "1" HAVE_GETGID = "1" HAVE_GETGRGID = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYADDR = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETHOSTNAME = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPROTOBYNAME = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETRUSAGE = "1" HAVE_GETSERVBYNAME = "1" HAVE_GETSERVBYPORT = "1" HAVE_GETSID = "1" HAVE_GETSOCKNAME = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETUID = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_NTOA = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LIBB2 = "1" HAVE_LIBDB = "0" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBGDBM_COMPAT = "1" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBNDBM = "0" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBSQLITE3 = "1" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_AUXVEC_H = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_J1939_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_SOUNDCARD_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LINUX_WAIT_H = "1" HAVE_LISTEN = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LOGIN_TTY = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_LZMA_H = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMRCHR = "1" HAVE_MINIX_CONFIG_H = "0" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NANOSLEEP = "1" HAVE_NCURSES_H = "1" HAVE_NDBM_H = "0" HAVE_NDIR_H = "0" HAVE_NETCAN_CAN_H = "0" HAVE_NETDB_H = "1" HAVE_NETINET_IN_H = "1" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENDIR = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTHREAD_STUBS = "0" HAVE_PTY_H = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RECVFROM = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_RPC_RPC_H = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SENDTO = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETJMP_H = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETSOCKOPT = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SHUTDOWN = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKET = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SPLICE = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDIO_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYSLOG_H = "1" HAVE_SYSTEM = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENTFD_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_SOUNDCARD_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TTYNAME = "1" HAVE_TZNAME = "0" HAVE_UMASK = "1" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UTMP_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_VFORK = "1" HAVE_WAIT = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE_ZLIB_H = "0" HAVE__GETPTY = "0" HOSTRUNNER = "" HOST_GNU_TYPE = "mips64-unknown-linux-gnu" INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.11 /usr/include/python3.11" INCLUDEDIR = "/usr/include" INCLUDEPY = "/usr/include/python3.11" INSTALL = "/var/tmp/portage/._portage_reinstall_.4wisvm5r/bin/ebuild-helpers/xattr/install -c" INSTALL_DATA = "/var/tmp/portage/._portage_reinstall_.4wisvm5r/bin/ebuild-helpers/xattr/install -c -m 644" INSTALL_PROGRAM = "/var/tmp/portage/._portage_reinstall_.4wisvm5r/bin/ebuild-helpers/xattr/install -c" INSTALL_SCRIPT = "/var/tmp/portage/._portage_reinstall_.4wisvm5r/bin/ebuild-helpers/xattr/install -c" INSTALL_SHARED = "/var/tmp/portage/._portage_reinstall_.4wisvm5r/bin/ebuild-helpers/xattr/install -c -m 755" INSTSONAME = "libpython3.11.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "mips64-unknown-linux-gnu-g++ -shared" LDFLAGS = "" LDLIBRARY = "libpython3.11.so" LDLIBRARYDIR = "" LDSHARED = "mips64-unknown-linux-gnu-gcc -shared" LDVERSION = "3.11" LIBC = "" LIBDEST = "/usr/lib/python3.11" LIBDIR = "/usr/lib64" LIBEXPAT_A = "Modules/expat/libexpat.a" LIBEXPAT_CFLAGS = "-Wsign-compare -DNDEBUG -O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncursesw -fPIC -fPIC" LIBEXPAT_HEADERS = "\" LIBEXPAT_OBJS = "\" LIBFFI_INCLUDEDIR = "/usr/lib64/libffi/include" LIBM = "-lm" LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a" LIBMPDEC_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 -Wsign-compare -DNDEBUG -O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncursesw -fPIC -fPIC" LIBMPDEC_HEADERS = "\" LIBMPDEC_OBJS = "\" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/lib64/pkgconfig" LIBPL = "/usr/lib/python3.11/config-3.11-mips64-linux-gnuabi64" LIBPYTHON = "" LIBRARY = "libpython3.11.a" LIBRARY_DEPS = "libpython3.11.so libpython3.so" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-ldl" LIBSUBDIRS = "asyncio \" LINKCC = "mips64-unknown-linux-gnu-gcc" LINKFORSHARED = "-Xlinker -export-dynamic" LINK_PYTHON_DEPS = "libpython3.11.so libpython3.so" LINK_PYTHON_OBJS = "-L. -lpython3.11" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/lib/python3.11" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "mips64-unknown-linux-gnu-gcc" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "atexit faulthandler posix _signal _tracemalloc _codecs _collections errno _io itertools _sre _thread time _weakref _abc _functools _locale _operator _stat _symtable pwd xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/atexitmodule.o Modules/faulthandler.o Modules/posixmodule.o Modules/signalmodule.o Modules/_tracemalloc.o Modules/_codecsmodule.o Modules/_collectionsmodule.o Modules/errnomodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/itertoolsmodule.o Modules/_sre/sre.o Modules/_threadmodule.o Modules/timemodule.o Modules/_weakref.o Modules/_abc.o Modules/_functoolsmodule.o Modules/_localemodule.o Modules/_operator.o Modules/_stat.o Modules/symtablemodule.o Modules/pwdmodule.o Modules/xxsubtype.o" MODSHARED_NAMES = "" MODULE_ARRAY_STATE = "yes" MODULE_ATEXIT_LDFLAGS = "" MODULE_AUDIOOP_LDFLAGS = "-lm" MODULE_AUDIOOP_STATE = "yes" MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32" MODULE_BINASCII_LDFLAGS = "-lz" MODULE_BINASCII_STATE = "yes" MODULE_CMATH_DEPS = "./Modules/_math.h" MODULE_CMATH_LDFLAGS = "-lm" MODULE_CMATH_STATE = "yes" MODULE_ERRNO_LDFLAGS = "" MODULE_FAULTHANDLER_LDFLAGS = "" MODULE_FCNTL_LDFLAGS = "" MODULE_FCNTL_STATE = "yes" MODULE_GRP_STATE = "yes" MODULE_ITERTOOLS_LDFLAGS = "" MODULE_MATH_DEPS = "./Modules/_math.h" MODULE_MATH_LDFLAGS = "-lm" MODULE_MATH_STATE = "yes" MODULE_MMAP_STATE = "yes" MODULE_NIS_CFLAGS = "-I/usr/include/tirpc" MODULE_NIS_LDFLAGS = "-lnsl -ltirpc" MODULE_NIS_STATE = "disabled" MODULE_OBJS = "\" MODULE_OSSAUDIODEV_LDFLAGS = "" MODULE_OSSAUDIODEV_STATE = "yes" MODULE_POSIX_LDFLAGS = "" MODULE_PWD_LDFLAGS = "" MODULE_PWD_STATE = "yes" MODULE_PYEXPAT_CFLAGS = "" MODULE_PYEXPAT_DEPS = "" MODULE_PYEXPAT_LDFLAGS = "-lexpat" MODULE_PYEXPAT_STATE = "yes" MODULE_READLINE_STATE = "yes" MODULE_RESOURCE_STATE = "yes" MODULE_SELECT_STATE = "yes" MODULE_SPWD_STATE = "yes" MODULE_SYSLOG_STATE = "yes" MODULE_TERMIOS_STATE = "yes" MODULE_TIME_LDFLAGS = "" MODULE_TIME_STATE = "yes" MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h" MODULE_UNICODEDATA_STATE = "yes" MODULE_XXLIMITED_35_STATE = "yes" MODULE_XXLIMITED_STATE = "yes" MODULE_XXSUBTYPE_LDFLAGS = "" MODULE_ZLIB_CFLAGS = "" MODULE_ZLIB_LDFLAGS = "-lz" MODULE_ZLIB_STATE = "yes" MODULE__ABC_LDFLAGS = "" MODULE__ASYNCIO_STATE = "yes" MODULE__BISECT_STATE = "yes" MODULE__BLAKE2_CFLAGS = "" MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h" MODULE__BLAKE2_LDFLAGS = "-lb2" MODULE__BLAKE2_STATE = "yes" MODULE__BZ2_CFLAGS = "" MODULE__BZ2_LDFLAGS = "-lbz2" MODULE__BZ2_STATE = "yes" MODULE__CODECS_CN_STATE = "yes" MODULE__CODECS_HK_STATE = "yes" MODULE__CODECS_ISO2022_STATE = "yes" MODULE__CODECS_JP_STATE = "yes" MODULE__CODECS_KR_STATE = "yes" MODULE__CODECS_LDFLAGS = "" MODULE__CODECS_TW_STATE = "yes" MODULE__COLLECTIONS_LDFLAGS = "" MODULE__CONTEXTVARS_STATE = "yes" MODULE__CRYPT_CFLAGS = "" MODULE__CRYPT_LDFLAGS = "-lcrypt" MODULE__CRYPT_STATE = "yes" MODULE__CSV_STATE = "yes" MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h" MODULE__CTYPES_TEST_LDFLAGS = "-lm" MODULE__CTYPES_TEST_STATE = "yes" MODULE__CURSES_PANEL_STATE = "yes" MODULE__CURSES_STATE = "yes" MODULE__DATETIME_LDFLAGS = "-lm" MODULE__DATETIME_STATE = "yes" MODULE__DBM_STATE = "yes" MODULE__DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1" MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \ Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_STATE = "yes" MODULE__ELEMENTTREE_CFLAGS = "" MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c" MODULE__ELEMENTTREE_STATE = "yes" MODULE__FUNCTOOLS_LDFLAGS = "" MODULE__GDBM_CFLAGS = "" MODULE__GDBM_LDFLAGS = "-lgdbm" MODULE__GDBM_STATE = "yes" MODULE__HASHLIB_CFLAGS = "" MODULE__HASHLIB_DEPS = "./Modules/hashlib.h" MODULE__HASHLIB_LDFLAGS = "-lcrypto" MODULE__HASHLIB_STATE = "yes" MODULE__HEAPQ_STATE = "yes" MODULE__IO_CFLAGS = "-I./Modules/_io" MODULE__IO_DEPS = "./Modules/_io/_iomodule.h" MODULE__IO_LDFLAGS = "" MODULE__IO_STATE = "yes" MODULE__JSON_STATE = "yes" MODULE__LOCALE_LDFLAGS = "" MODULE__LSPROF_STATE = "yes" MODULE__LZMA_CFLAGS = "" MODULE__LZMA_LDFLAGS = "-llzma" MODULE__LZMA_STATE = "yes" MODULE__MD5_DEPS = "./Modules/hashlib.h" MODULE__MD5_STATE = "yes" MODULE__MULTIBYTECODEC_STATE = "yes" MODULE__MULTIPROCESSING_CFLAGS = "-I./Modules/_multiprocessing" MODULE__MULTIPROCESSING_STATE = "yes" MODULE__OPCODE_STATE = "yes" MODULE__OPERATOR_LDFLAGS = "" MODULE__PICKLE_STATE = "yes" MODULE__POSIXSHMEM_CFLAGS = "-I./Modules/_multiprocessing" MODULE__POSIXSHMEM_LDFLAGS = "" MODULE__POSIXSHMEM_STATE = "yes" MODULE__POSIXSUBPROCESS_STATE = "yes" MODULE__QUEUE_STATE = "yes" MODULE__RANDOM_STATE = "yes" MODULE__SCPROXY_STATE = "n/a" MODULE__SHA1_DEPS = "./Modules/hashlib.h" MODULE__SHA1_STATE = "yes" MODULE__SHA256_DEPS = "./Modules/hashlib.h" MODULE__SHA256_STATE = "yes" MODULE__SHA3_DEPS = "./Modules/_sha3/sha3.c ./Modules/_sha3/sha3.h ./Modules/hashlib.h" MODULE__SHA3_STATE = "yes" MODULE__SHA512_DEPS = "./Modules/hashlib.h" MODULE__SHA512_STATE = "yes" MODULE__SIGNAL_LDFLAGS = "" MODULE__SOCKET_DEPS = "./Modules/socketmodule.h ./Modules/addrinfo.h ./Modules/getaddrinfo.c ./Modules/getnameinfo.c" MODULE__SOCKET_STATE = "yes" MODULE__SQLITE3_CFLAGS = "-I./Modules/_sqlite" MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h" MODULE__SQLITE3_LDFLAGS = "-lsqlite3" MODULE__SQLITE3_STATE = "yes" MODULE__SRE_LDFLAGS = "" MODULE__SSL_CFLAGS = "" MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h" MODULE__SSL_LDFLAGS = "-lssl -lcrypto" MODULE__SSL_STATE = "yes" MODULE__STATISTICS_LDFLAGS = "-lm" MODULE__STATISTICS_STATE = "yes" MODULE__STAT_LDFLAGS = "" MODULE__STRUCT_STATE = "yes" MODULE__SYMTABLE_LDFLAGS = "" MODULE__TESTBUFFER_STATE = "yes" MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h" MODULE__TESTCAPI_STATE = "yes" MODULE__TESTCLINIC_STATE = "yes" MODULE__TESTIMPORTMULTIPLE_STATE = "yes" MODULE__TESTINTERNALCAPI_STATE = "yes" MODULE__TESTMULTIPHASE_STATE = "yes" MODULE__THREAD_LDFLAGS = "" MODULE__TKINTER_STATE = "disabled" MODULE__TRACEMALLOC_LDFLAGS = "" MODULE__TYPING_STATE = "yes" MODULE__UUID_CFLAGS = "-I/usr/include/uuid" MODULE__UUID_LDFLAGS = "-luuid" MODULE__UUID_STATE = "yes" MODULE__WEAKREF_LDFLAGS = "" MODULE__XXSUBINTERPRETERS_STATE = "yes" MODULE__XXTESTFUZZ_STATE = "yes" MODULE__ZONEINFO_STATE = "yes" MULTIARCH = "mips64-linux-gnuabi64" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"mips64-linux-gnuabi64\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPENSSL_RPATH = "" OPT = "-DNDEBUG" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test -j16 --pgo-extended -u-network --timeout 1200 -x test_gdb -x test_dtrace -x test_asyncio -x test_httpservers -x test_logging -x test_multiprocessing_fork -x test_socket -x test_xmlrpc -x test_tools" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_BUILD_DEPS = "python" PYTHON_FOR_FREEZE = "./_bootstrap_python" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wsign-compare -DNDEBUG -O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncursesw -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wsign-compare -DNDEBUG" PY_CFLAGS_NODIST = "-O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wsign-compare -DNDEBUG -O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncursesw -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-Wl,-O1 -Wl,--as-needed -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_CPPFLAGS = "-I. -I./Include -I/usr/include/ncursesw" PY_ENABLE_SHARED = "1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "" PY_LDFLAGS_NODIST = "-Wl,-O1 -Wl,--as-needed -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_LDFLAGS_NOLTO = "-fno-lto" PY_SQLITE_ENABLE_LOAD_EXTENSION = "1" PY_SQLITE_HAVE_SERIALIZE = "1" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wsign-compare -DNDEBUG -O3 -pipe -march=native -mtune=native -mabi=64 -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncursesw -fPIC" PY_SUPPORT_TIER = "0" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_STATS = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "mips64-unknown-linux-gnu-readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4" SCRIPTDIR = "/usr/lib" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-ldl" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SOABI = "cpython-311-mips64-linux-gnuabi64" SRCDIRS = "Modules Modules/_blake2 Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_io Modules/_multiprocessing Modules/_sha3 Modules/_sqlite Modules/_sre Modules/_xxtestfuzz Modules/cjkcodecs Modules/expat Objects Parser Programs Python Python/frozen_modules Python/deepfreeze" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STATIC_LIBPYTHON = "0" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4 ./python -E" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4 ./python -E ./Tools/scripts/run_tests.py" TESTSUBDIRS = "ctypes/test \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "1" VERSION = "3.11" WASM_ASSETS_DIR = "./usr" WASM_STDLIB = "./usr/lib/python3.11/os.py" WHEEL_PKG_DIR = "/usr/lib/python/ensurepip" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_EDITLINE = "0" WITH_FREELISTS = "1" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4" abs_srcdir = "/var/tmp/portage/dev-lang/python-3.11.4/work/Python-3.11.4" base = "/usr" datarootdir = "/usr/share" exec_prefix = "/usr" installed_base = "/usr" installed_platbase = "/usr" platbase = "/usr" platlibdir = "lib" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.11.4" py_version_nodot = "311" py_version_nodot_plat = "" py_version_short = "3.11" srcdir = "/usr/lib/python3.11/config-3.11-mips64-linux-gnuabi64" userbase = "/var/lib/portage/home/.local" maturin-1.7.4/sysconfig/cpython-linux-mips64el-3.10.txt000066400000000000000000000576151467514767100226500ustar00rootroot00000000000000Platform: "linux-mips64" Python version: "3.10" Current installation scheme: "posix_local" Paths: data = "/usr/local" include = "/usr/include/python3.10" platinclude = "/usr/include/python3.10" platlib = "/usr/local/lib/python3.10/dist-packages" platstdlib = "/usr/lib/python3.10" purelib = "/usr/local/lib/python3.10/dist-packages" scripts = "/usr/local/bin" stdlib = "/usr/lib/python3.10" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "8" ALIGNOF_SIZE_T = "8" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "mips64el-linux-gnuabi64-ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "-IObjects -IInclude -IPython" BASEMODLIBS = "" BINDIR = "/usr/bin" BINLIBDEST = "/usr/lib/mips64el-linux-gnuabi64/python3.10" BLDLIBRARY = "-lpython3.10" BLDSHARED = "mips64el-linux-gnuabi64-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions " BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "mips64el-unknown-linux-gnuabi64" BYTESTR_DEPS = "\" CC = "mips64el-linux-gnuabi64-gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-g -fstack-protector-strong -Wformat -Werror=format-security" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-Wdate-time -D_FORTIFY_SOURCE=2" CONFIGURE_LDFLAGS = " " CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--prefix=/usr' '--libdir=/usr/lib/mips64el-linux-gnuabi64' '--enable-ipv6' '--enable-loadable-sqlite-extensions' '--with-dbmliborder=bdb:gdbm' '--with-computed-gotos' '--without-ensurepip' '--with-system-expat' '--with-dtrace' '--with-system-libmpdec' '--with-wheel-pkg-dir=/usr/share/python-wheels/' 'MKDIR_P=/bin/mkdir -p' '--with-system-ffi' 'CC=mips64el-linux-gnuabi64-gcc' 'CFLAGS=-g -fstack-protector-strong -Wformat -Werror=format-security ' 'LDFLAGS= ' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'" CONFINCLUDEDIR = "/usr/include" CONFINCLUDEPY = "/usr/include/python3.10" COREPYTHONPATH = "" COVERAGE_INFO = "/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared/coverage.info" COVERAGE_REPORT = "/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2" CXX = "mips64el-linux-gnuabi64-g++ -pthread" DESTDIRS = "/usr /usr/lib/mips64el-linux-gnuabi64 /usr/lib/mips64el-linux-gnuabi64/python3.10 /usr/lib/python3.10/lib-dynload" DESTLIB = "/usr/lib/python3.10" DESTPATH = "" DESTSHARED = "/usr/lib/python3.10/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "/usr/bin/dtrace" DTRACE_DEPS = "\" DTRACE_HEADERS = "Include/pydtrace_probes.h" DTRACE_OBJS = "Python/pydtrace.o" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPERIMENTAL_ISOLATED_SUBINTERPRETERS = "0" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXT_SUFFIX = ".cpython-310-mips64el-linux-gnuabi64.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_CLOSE_RANGE = "0" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LIBUUID = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_AUXVEC_H = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_J1939_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LINUX_WAIT_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "0" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SPLICE = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENTFD_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_VFORK = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "mips64el-unknown-linux-gnuabi64" INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.10 /usr/include/python3.10" INCLUDEDIR = "/usr/include" INCLUDEPY = "/usr/include/python3.10" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.10.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "mips64el-linux-gnuabi64-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions" LDFLAGS = " " LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.10.so" LDLIBRARYDIR = "" LDSHARED = "mips64el-linux-gnuabi64-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions " LDVERSION = "3.10" LIBC = "" LIBDEST = "/usr/lib/python3.10" LIBDIR = "/usr/lib/mips64el-linux-gnuabi64" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/lib/mips64el-linux-gnuabi64/pkgconfig" LIBPL = "/usr/lib/python3.10/config-3.10-mips64el-linux-gnuabi64" LIBPYTHON = "" LIBRARY = "libpython3.10.a" LIBRARY_DEPS = "libpython3.10.a libpython3.10.so libpython3.so" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "asyncio \" LINKCC = "mips64el-linux-gnuabi64-gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "-lexpat -L/usr/lib -lz -lexpat" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/lib/mips64el-linux-gnuabi64/python3.10" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "mips64el-linux-gnuabi64-gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "../Modules/makesetup" MANDIR = "/usr/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "array cmath math _struct _random _elementtree _pickle _datetime _bisect _heapq _statistics unicodedata fcntl spwd grp select _csv _socket _posixsubprocess _md5 _sha1 _sha256 _sha512 _sha3 _blake2 syslog binascii zlib posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable pyexpat xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "-lexpat -L/usr/lib -lz -lexpat" MODOBJS = "$(sort Modules/arraymodule.o Modules/cmathmodule.o Modules/_math.o Modules/mathmodule.o Modules/_math.o Modules/_struct.o Modules/_randommodule.o Modules/_elementtree.o Modules/_pickle.o Modules/_datetimemodule.o Modules/_bisectmodule.o Modules/_heapqmodule.o Modules/_statisticsmodule.o Modules/unicodedata.o Modules/fcntlmodule.o Modules/spwdmodule.o Modules/grpmodule.o Modules/selectmodule.o Modules/_csv.o Modules/socketmodule.o Modules/_posixsubprocess.o Modules/md5module.o Modules/sha1module.o Modules/sha256module.o Modules/sha512module.o Modules/sha3module.o Modules/blake2module.o Modules/blake2b_impl.o Modules/blake2s_impl.o Modules/syslogmodule.o Modules/binascii.o Modules/zlibmodule.o Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/symtablemodule.o Modules/pyexpat.o Modules/xxsubtype.o)" MODULE_OBJS = "\" MULTIARCH = "mips64el-linux-gnuabi64" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"mips64el-linux-gnuabi64\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPENSSL_RPATH = "" OPT = "-DNDEBUG -g -fwrapv -O2 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo --timeout=1200" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I../Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = " " PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2" PY_ENABLE_SHARED = "1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = " " PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared" SCRIPTDIR = "/usr/lib" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-310-mips64el-linux-gnuabi64.so" SOABI = "cpython-310-mips64el-linux-gnuabi64" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "../Tools/gdb/libpython.py" STATIC_LIBPYTHON = "1" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "-I/usr/include/tcl8.6" TCLTK_LIBS = "-ltk8.6 -ltkstub8.6 -ltcl8.6 -ltclstub8.6" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared ./python ../Tools/scripts/run_tests.py" TESTSUBDIRS = "ctypes/test \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "../Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "1" VERSION = "3.10" VPATH = ".." WHEEL_PKG_DIR = "/usr/share/python-wheels/" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "1" WITH_DYLD = "0" WITH_EDITLINE = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared" abs_srcdir = "/build/python3.10-4eBcjM/python3.10-3.10.5/build-shared/.." base = "/usr" datarootdir = "/usr/share" exec_prefix = "/usr" installed_base = "/usr" installed_platbase = "/usr" multiarchsubdir = "/mips64el-linux-gnuabi64" platbase = "/usr" platlibdir = "lib" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.10.5" py_version_nodot = "310" py_version_nodot_plat = "" py_version_short = "3.10" srcdir = "/usr/lib/python3.10/config-3.10-mips64el-linux-gnuabi64" userbase = "/root/.local"maturin-1.7.4/sysconfig/cpython-macos-3.9-arm64.txt000066400000000000000000000672431467514767100220270ustar00rootroot00000000000000Platform: "macosx-11.2-arm64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/Users/messense/.pyenv/versions/test" include = "/Users/messense/.pyenv/versions/3.9.2/include/python3.9" platinclude = "/Users/messense/.pyenv/versions/3.9.2/include/python3.9" platlib = "/Users/messense/.pyenv/versions/test/lib/python3.9/site-packages" platstdlib = "/Users/messense/.pyenv/versions/test/lib/python3.9" purelib = "/Users/messense/.pyenv/versions/test/lib/python3.9/site-packages" scripts = "/Users/messense/.pyenv/versions/test/bin" stdlib = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/Users/messense/.pyenv/versions/3.9.2/bin" BINLIBDEST = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "clang -bundle -undefined dynamic_lookup -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" BUILDEXE = ".exe" BUILDPYTHON = "python.exe" BUILD_GNU_TYPE = "arm-apple-darwin20.3.0" BYTESTR_DEPS = "\" CC = "clang" CCSHARED = "" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "-fno-strict-aliasing" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include" CONFIGURE_LDFLAGS = "-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/Users/messense/.pyenv/versions/3.9.2' '--enable-shared' '--libdir=/Users/messense/.pyenv/versions/3.9.2/lib' '--with-openssl=/opt/homebrew/opt/openssl@1.1' 'CC=clang' 'CFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include ' 'LDFLAGS=-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib' 'CPPFLAGS=-I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include ' 'PKG_CONFIG_PATH=/opt/homebrew/opt/openssl@1.1/lib/pkgconfig/:'" CONFINCLUDEDIR = "/Users/messense/.pyenv/versions/3.9.2/include" CONFINCLUDEPY = "/Users/messense/.pyenv/versions/3.9.2/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2/coverage.info" COVERAGE_REPORT = "/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include" CXX = "clang++" DESTDIRS = "/Users/messense/.pyenv/versions/3.9.2 /Users/messense/.pyenv/versions/3.9.2/lib /Users/messense/.pyenv/versions/3.9.2/lib/python3.9 /Users/messense/.pyenv/versions/3.9.2/lib/python3.9/lib-dynload" DESTLIB = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9" DESTPATH = "" DESTSHARED = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-39-darwin.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "no" HAVE_ACCEPT4 = "0" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "1" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "0" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "0" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "0" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "0" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "0" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "0" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "0" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "0" HAVE_MKNOD = "1" HAVE_MKNODAT = "0" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "0" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "0" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "0" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "0" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "0" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "1" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "1" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "arm-apple-darwin20.3.0" INCLDIRSTOMAKE = "/Users/messense/.pyenv/versions/3.9.2/include /Users/messense/.pyenv/versions/3.9.2/include /Users/messense/.pyenv/versions/3.9.2/include/python3.9 /Users/messense/.pyenv/versions/3.9.2/include/python3.9" INCLUDEDIR = "/Users/messense/.pyenv/versions/3.9.2/include" INCLUDEPY = "/Users/messense/.pyenv/versions/3.9.2/include/python3.9" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.9.dylib" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "clang++ -bundle -undefined dynamic_lookup" LDFLAGS = "-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.dylib" LDLIBRARYDIR = "" LDSHARED = "clang -bundle -undefined dynamic_lookup -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" LDVERSION = "3.9" LIBC = "" LIBDEST = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9" LIBDIR = "/Users/messense/.pyenv/versions/3.9.2/lib" LIBFFI_INCLUDEDIR = "" LIBM = "" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/Users/messense/.pyenv/versions/3.9.2/lib/pkgconfig" LIBPL = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9/config-3.9-darwin" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-ldl -framework CoreFoundation" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "clang" LINKFORSHARED = "-Wl,-stack_size,1000000 -framework CoreFoundation" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr"" LLVM_PROF_MERGER = "/usr/bin/xcrun llvm-profdata merge -output=code.profclangd *.profclangr" LN = "ln" LOCALMODLIBS = "" MACHDEP = "darwin" MACHDEP_OBJS = "" MACHDESTLIB = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "11.2" MAINCC = "clang" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/Users/messense/.pyenv/versions/3.9.2/share/man" MKDIR_P = "/opt/homebrew/bin/gmkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "darwin" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"darwin\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/opt/homebrew/opt/openssl@1.1/include" OPENSSL_LDFLAGS = "-L/opt/homebrew/opt/openssl@1.1/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-instr-generate" PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "0" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python.exe -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" PY_CPPFLAGS = "-I. -I./Include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/readline/lib -L/Users/messense/.pyenv/versions/3.9.2/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/readline/include -I/Users/messense/.pyenv/versions/3.9.2/include" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = ":" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "DYLD_LIBRARY_PATH=/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2" SCRIPTDIR = "/Users/messense/.pyenv/versions/3.9.2/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-ldl -framework CoreFoundation" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "8" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-39-darwin.so" SOABI = "cpython-39-darwin" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "DYLD_LIBRARY_PATH=/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2 ./python.exe" TESTPYTHONOPTS = "" TESTRUNNER = "DYLD_LIBRARY_PATH=/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2 ./python.exe ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "1" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2" abs_srcdir = "/var/folders/0r/4fqyt_zs2tj4zvglsb7f4zjw0000gn/T/python-build.20210320213320.90609/Python-3.9.2" base = "/Users/messense/.pyenv/versions/test" datarootdir = "/Users/messense/.pyenv/versions/3.9.2/share" exec_prefix = "/Users/messense/.pyenv/versions/3.9.2" installed_base = "/Users/messense/.pyenv/versions/3.9.2" installed_platbase = "/Users/messense/.pyenv/versions/3.9.2" platbase = "/Users/messense/.pyenv/versions/test" platlibdir = "lib" prefix = "/Users/messense/.pyenv/versions/3.9.2" projectbase = "/Users/messense/.pyenv/versions/3.9.2/bin" py_version = "3.9.2" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/Users/messense/.pyenv/versions/3.9.2/lib/python3.9/config-3.9-darwin" userbase = "/Users/messense/.local" maturin-1.7.4/sysconfig/cpython-netbsd-3.9.txt000066400000000000000000000600761467514767100212520ustar00rootroot00000000000000Platform: "netbsd-9.99.92-amd64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr/pkg" include = "/usr/pkg/include/python3.9" platinclude = "/usr/pkg/include/python3.9" platlib = "/usr/pkg/lib/python3.9/site-packages" platstdlib = "/usr/pkg/lib/python3.9" purelib = "/usr/pkg/lib/python3.9/site-packages" scripts = "/usr/pkg/bin" stdlib = "/usr/pkg/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/pkg/bin" BINLIBDEST = "/usr/pkg/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "gcc -pthread -shared -L. -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64--netbsd" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include" CONFIGURE_CFLAGS_NODIST = "-std=gnu99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-g -I/usr/include -I/usr/pkg/include" CONFIGURE_LDFLAGS = "-Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--enable-shared' '--with-openssl=/usr' '--with-system-ffi' '--without-ensurepip' '--without-pymalloc' '--prefix=/usr/pkg' '--build=x86_64--netbsd' '--host=x86_64--netbsd' '--mandir=/usr/pkg/man' '--enable-option-checking=yes' 'build_alias=x86_64--netbsd' 'host_alias=x86_64--netbsd' 'CC=gcc' 'CFLAGS=-O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include' 'LDFLAGS=-Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib' 'LIBS=' 'CPPFLAGS=-g -I/usr/include -I/usr/pkg/include' 'PKG_CONFIG=/scratch/lang/python39/work/.tools/bin/pkg-config' 'PKG_CONFIG_PATH=' 'PKG_CONFIG_LIBDIR=/scratch/lang/python39/work/.buildlink/lib/pkgconfig:/scratch/lang/python39/work/.buildlink/share/pkgconfig'" CONFINCLUDEDIR = "/usr/pkg/include" CONFINCLUDEPY = "/usr/pkg/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/scratch/lang/python39/work/Python-3.9.9/coverage.info" COVERAGE_REPORT = "/scratch/lang/python39/work/Python-3.9.9/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -g -I/usr/include -I/usr/pkg/include -g -I/usr/include -I/usr/pkg/include" CXX = "c++ -pthread" DESTDIRS = "/usr/pkg /usr/pkg/lib /usr/pkg/lib/python3.9 /usr/pkg/lib/python3.9/lib-dynload" DESTLIB = "/usr/pkg/lib/python3.9" DESTPATH = "" DESTSHARED = "/usr/pkg/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "1" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "1" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LIBUUID = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "0" HAVE_NDIR_H = "0" HAVE_NETCAN_CAN_H = "1" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64--netbsd" INCLDIRSTOMAKE = "/usr/pkg/include /usr/pkg/include /usr/pkg/include/python3.9 /usr/pkg/include/python3.9" INCLUDEDIR = "/usr/pkg/include" INCLUDEPY = "/usr/pkg/include/python3.9" INSTALL = "/usr/bin/install -c -o pbulk -g builder" INSTALL_DATA = "/usr/bin/install -c -o pbulk -g builder -m 644" INSTALL_PROGRAM = "/usr/bin/install -c -o pbulk -g builder -m 755" INSTALL_SCRIPT = "/usr/bin/install -c -o pbulk -g builder -m 755" INSTALL_SHARED = "/usr/bin/install -c -o pbulk -g builder -m 755" INSTSONAME = "libpython3.9.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared" LDFLAGS = "-L. -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared -L. -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" LDVERSION = "3.9" LIBC = "" LIBDEST = "/usr/pkg/lib/python3.9" LIBDIR = "/usr/pkg/lib" LIBFFI_INCLUDEDIR = "/usr/pkg/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/pkg/lib/pkgconfig" LIBPL = "/usr/pkg/lib/python3.9/config-3.9" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lintl -lpthread -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "/bin/ln" LOCALMODLIBS = "" MACHDEP = "netbsd9" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/pkg/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/pkg/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/include" OPENSSL_LDFLAGS = "-L/usr/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -std=gnu99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -I/usr/include -I/usr/pkg/include -g -I/usr/include -I/usr/pkg/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include" PY_CFLAGS_NODIST = "-std=gnu99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -std=gnu99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -I/usr/include -I/usr/pkg/include -g -I/usr/include -I/usr/pkg/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L. -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" PY_CPPFLAGS = "-I. -I./Include -g -I/usr/include -I/usr/pkg/include -g -I/usr/include -I/usr/pkg/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L. -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -Wl,-zrelro -Wl,-znow -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -O2 -g -fPIC -D_FORTIFY_SOURCE=2 -fstack-check -I/usr/include -I/usr/pkg/include -std=gnu99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -I/usr/include -I/usr/pkg/include -g -I/usr/include -I/usr/pkg/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/scratch/lang/python39/work/Python-3.9.9" SCRIPTDIR = "/usr/pkg/lib" SETPGRP_HAVE_ARG = "1" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lintl -lpthread -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "264" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".so" SOABI = "cpython-39" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/scratch/lang/python39/work/Python-3.9.9 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/scratch/lang/python39/work/Python-3.9.9 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.9" WINDOW_HAS_FLAGS = "0" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "0" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/scratch/lang/python39/work/Python-3.9.9" abs_srcdir = "/scratch/lang/python39/work/Python-3.9.9" base = "/usr/pkg" datarootdir = "/usr/pkg/share" exec_prefix = "/usr/pkg" installed_base = "/usr/pkg" installed_platbase = "/usr/pkg" platbase = "/usr/pkg" platlibdir = "lib" prefix = "/usr/pkg" projectbase = "/usr/pkg/bin" py_version = "3.9.9" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/pkg/lib/python3.9/config-3.9" userbase = "/home/wiz/.local" maturin-1.7.4/sysconfig/cpython-omnios-3.9.txt000066400000000000000000000660351467514767100213000ustar00rootroot00000000000000Platform: "solaris-2.11-i86pc.64bit" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr" include = "/usr/include/python3.9" platinclude = "/usr/include/python3.9" platlib = "/usr/lib/python3.9/site-packages" platstdlib = "/usr/lib/python3.9" purelib = "/usr/lib/python3.9/site-packages" scripts = "/usr/bin" stdlib = "/usr/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/bin" BINLIBDEST = "/usr/lib/amd64/python3.9" BLDLIBRARY = "-Wl,-R,/usr/lib/amd64 -L. -lpython3.9" BLDSHARED = "gcc -m64 -shared -m64" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-solaris2.11" BYTESTR_DEPS = "\" CC = "gcc -m64" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH" CONFIGURE_LDFLAGS = "-m64" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/usr' '--sysconfdir=/etc' '--includedir=/usr/include' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--libdir=/usr/lib/amd64' '--libexecdir=/usr/libexec/amd64' '--enable-shared' '--with-dtrace' '--with-system-ffi' '--with-system-expat' '--enable-ipv6' '--without-ensurepip' '--enable-optimizations' 'ac_cv_func_getentropy=no' 'CC=gcc -m64' 'CFLAGS=-O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64' 'LDFLAGS= -m64' 'CPPFLAGS= -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH ' 'PKG_CONFIG_PATH='" CONFINCLUDEDIR = "/usr/include" CONFINCLUDEPY = "/usr/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8/coverage.info" COVERAGE_REPORT = "/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH" CXX = "g++" DESTDIRS = "/usr /usr/lib/amd64 /usr/lib/amd64/python3.9 /usr/lib/amd64/python3.9/lib-dynload" DESTLIB = "/usr/lib/python3.9" DESTPATH = "" DESTSHARED = "/usr/lib/amd64/python3.9/lib-dynload" DFLAGS = "-64" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "/usr/sbin/dtrace" DTRACE_DEPS = "\" DTRACE_HEADERS = "Include/pydtrace_probes.h" DTRACE_OBJS = "Python/pydtrace.o" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-39.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "no" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "1" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "1" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "0" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "1" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "0" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "1" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "0" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "1" HAVE_LIBUTIL_H = "0" HAVE_LIBUUID = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMRCHR = "1" HAVE_MINIX_CONFIG_H = "0" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "0" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "1" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDIO_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "0" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "1" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "1" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "1" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "1" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "0" HAVE_TRUNCATE = "1" HAVE_TZNAME = "1" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-solaris2.11" INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.9 /usr/include/python3.9" INCLUDEDIR = "/usr/include" INCLUDEPY = "/usr/include/python3.9" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.9.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -shared" LDFLAGS = "-m64" LDLIBRARY = "libpython3.9.so" LDLIBRARYDIR = "" LDSHARED = "gcc -m64 -shared -m64" LDVERSION = "3.9" LIBC = "" LIBDEST = "/usr/lib/python3.9" LIBDIR = "/usr/lib/amd64" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/lib/amd64/pkgconfig" LIBPL = "/usr/lib/python3.9/config-3.9" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lsocket -lnsl -lintl -ldl -lsendfile -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -m64" LINKFORSHARED = "" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "sunos5" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/lib/amd64/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -m64" MAJOR_IN_MKDEV = "1" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/share/man" MKDIR_P = "/usr/gnu/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/usr/ssl-1.1/include" OPENSSL_LDFLAGS = "-L/usr/ssl-1.1/lib/amd64" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-m64" PY_CPPFLAGS = "-I. -I./Include -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-m64" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -fno-aggressive-loop-optimizations -fstack-protector-strong -gdwarf-2 -gstrict-dwarf -m64 -D_REENTRANT -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -I/usr/include/ncurses -D_LARGEFILE64_SOURCE -DSKIP_ZIP_PATH -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8" SCRIPTDIR = "/usr/lib" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-lsocket -lnsl -lintl -ldl -lsendfile -lm" SHLIB_FLAGS = "-shared -fpic" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "4" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-39.so" SOABI = "cpython-39" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "1" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8" abs_srcdir = "/data/omnios-build/omniosorg/r151040/_build/Python-3.9.8/Python-3.9.8" base = "/usr" datarootdir = "/usr/share" exec_prefix = "/usr" installed_base = "/usr" installed_platbase = "/usr" platbase = "/usr" platlibdir = "lib" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.9.8" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/lib/python3.9/config-3.9" userbase = "/root/.local"maturin-1.7.4/sysconfig/cpython-openbsd-3.8-aarch64.txt000066400000000000000000000522241467514767100226460ustar00rootroot00000000000000Platform: "openbsd-6.9-arm64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "cc -pthread -shared -fPIC -L/usr/local/lib/ -L/usr/obj/ports/Python-3.8.8/Python-3.8.8 -L/usr/local/lib/" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "aarch64-unknown-openbsd6.9" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-O2 -pipe -g" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-I/usr/local/include" CONFIGURE_LDFLAGS = "-L/usr/local/lib/" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--with-ensurepip=no' '--enable-loadable-sqlite-extensions' '--enable-shared' '--srcdir=/usr/obj/ports/Python-3.8.8/Python-3.8.8' '--with-fpectl' '--with-threads' '--enable-ipv6' '--with-system-expat' '--with-system-ffi' '--prefix=/usr/local' '--sysconfdir=/etc' '--mandir=/usr/local/man' '--infodir=/usr/local/info' '--localstatedir=/var' '--disable-silent-rules' '--disable-gtk-doc' 'CC=cc' 'CFLAGS=-O2 -pipe -g' 'LDFLAGS=-L/usr/local/lib/' 'CPPFLAGS=-I/usr/local/include'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/usr/obj/ports/Python-3.8.8/Python-3.8.8/coverage.info" COVERAGE_REPORT = "/usr/obj/ports/Python-3.8.8/Python-3.8.8/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-38.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "0" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "0" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "0" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "0" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "aarch64-unknown-openbsd6.9" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/usr/obj/ports/Python-3.8.8/bin/install -c" INSTALL_DATA = "/usr/obj/ports/Python-3.8.8/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/obj/ports/Python-3.8.8/bin/install -c -m 755" INSTALL_SCRIPT = "/usr/obj/ports/Python-3.8.8/bin/install -c -m 755" INSTALL_SHARED = "/usr/obj/ports/Python-3.8.8/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.0.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared -fPIC" LDFLAGS = "-L/usr/local/lib/ -L/usr/obj/ports/Python-3.8.8/Python-3.8.8 -L/usr/local/lib/" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -fPIC -L/usr/local/lib/ -L/usr/obj/ports/Python-3.8.8/Python-3.8.8 -L/usr/local/lib/" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/lib/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lintl -lpthread -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "openbsd6" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -O2 -pipe -g -fPIC" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib/ -L/usr/obj/ports/Python-3.8.8/Python-3.8.8 -L/usr/local/lib/" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib/ -L/usr/obj/ports/Python-3.8.8/Python-3.8.8 -L/usr/local/lib/" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/usr/obj/ports/Python-3.8.8/Python-3.8.8" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lintl -lpthread -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".cpython-38.so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/usr/obj/ports/Python-3.8.8/Python-3.8.8 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/usr/obj/ports/Python-3.8.8/Python-3.8.8 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/usr/obj/ports/Python-3.8.8/Python-3.8.8" abs_srcdir = "/usr/obj/ports/Python-3.8.8/Python-3.8.8" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.8" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8" userbase = "/root/.local" maturin-1.7.4/sysconfig/cpython-openbsd-3.8.txt000066400000000000000000000522261467514767100214220ustar00rootroot00000000000000Platform: "openbsd-6.8-amd64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.8" platinclude = "/usr/local/include/python3.8" platlib = "/usr/local/lib/python3.8/site-packages" platstdlib = "/usr/local/lib/python3.8" purelib = "/usr/local/lib/python3.8/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.8" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.8" BLDLIBRARY = "-L. -lpython3.8" BLDSHARED = "cc -pthread -shared -fPIC -L/usr/local/lib/ -L/build/tmp/pobj//Python-3.8.6/Python-3.8.6 -L/usr/local/lib/" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-unknown-openbsd6.8" BYTESTR_DEPS = "\" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-O2 -pipe -g" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-I/usr/local/include" CONFIGURE_LDFLAGS = "-L/usr/local/lib/" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--with-ensurepip=no' '--enable-loadable-sqlite-extensions' '--enable-shared' '--srcdir=/build/tmp/pobj//Python-3.8.6/Python-3.8.6' '--with-fpectl' '--with-threads' '--enable-ipv6' '--with-system-expat' '--with-system-ffi' '--prefix=/usr/local' '--sysconfdir=/etc' '--mandir=/usr/local/man' '--infodir=/usr/local/info' '--localstatedir=/var' '--disable-silent-rules' '--disable-gtk-doc' 'CC=cc' 'CFLAGS=-O2 -pipe -g' 'LDFLAGS=-L/usr/local/lib/' 'CPPFLAGS=-I/usr/local/include'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.8" COREPYTHONPATH = "" COVERAGE_INFO = "/build/tmp/pobj/Python-3.8.6/Python-3.8.6/coverage.info" COVERAGE_REPORT = "/build/tmp/pobj/Python-3.8.6/Python-3.8.6/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include -I/usr/local/include" CXX = "c++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.8 /usr/local/lib/python3.8/lib-dynload" DESTLIB = "/usr/local/lib/python3.8" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.8/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "no" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "0" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "0" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "0" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "0" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "0" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "0" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "1" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "1" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "1" HAVE_UUID_ENC_BE = "1" HAVE_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "0" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-unknown-openbsd6.8" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.8 /usr/local/include/python3.8" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.8" INSTALL = "/build/tmp/pobj//Python-3.8.6/bin/install -c" INSTALL_DATA = "/build/tmp/pobj//Python-3.8.6/bin/install -c -m 644" INSTALL_PROGRAM = "/build/tmp/pobj//Python-3.8.6/bin/install -c -m 755" INSTALL_SCRIPT = "/build/tmp/pobj//Python-3.8.6/bin/install -c -m 755" INSTALL_SHARED = "/build/tmp/pobj//Python-3.8.6/bin/install -c -m 755" INSTSONAME = "libpython3.8.so.0.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "c++ -pthread -shared -fPIC" LDFLAGS = "-L/usr/local/lib/ -L/build/tmp/pobj//Python-3.8.6/Python-3.8.6 -L/usr/local/lib/" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8.so" LDLIBRARYDIR = "" LDSHARED = "cc -pthread -shared -fPIC -L/usr/local/lib/ -L/build/tmp/pobj//Python-3.8.6/Python-3.8.6 -L/usr/local/lib/" LDVERSION = "3.8" LIBC = "" LIBDEST = "/usr/local/lib/python3.8" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "/usr/local/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/lib/pkgconfig" LIBPL = "/usr/local/lib/python3.8/config-3.8" LIBPYTHON = "" LIBRARY = "libpython3.8.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lintl -lpthread -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "cc -pthread" LINKFORSHARED = "-Wl,--export-dynamic" LIPO_32BIT_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "" LN = "ln" LOCALMODLIBS = "" MACHDEP = "openbsd6" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.8" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "cc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/man" MKDIR_P = "mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -O2 -pipe -g -fPIC" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "" PGO_PROF_USE_FLAG = "" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-L/usr/local/lib/ -L/build/tmp/pobj//Python-3.8.6/Python-3.8.6 -L/usr/local/lib/" PY_CPPFLAGS = "-I. -I./Include -I/usr/local/include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-L/usr/local/lib/ -L/build/tmp/pobj//Python-3.8.6/Python-3.8.6 -L/usr/local/lib/" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -g -fPIC -O2 -pipe -g -O2 -pipe -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I. -I./Include -I/usr/local/include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/build/tmp/pobj/Python-3.8.6/Python-3.8.6" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "1" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lintl -lpthread -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".so" SOABI = "cpython-38" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/build/tmp/pobj/Python-3.8.6/Python-3.8.6 ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/build/tmp/pobj/Python-3.8.6/Python-3.8.6 ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.8" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "1" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/build/tmp/pobj/Python-3.8.6/Python-3.8.6" abs_srcdir = "/build/tmp/pobj/Python-3.8.6/Python-3.8.6" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.8.6" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/local/lib/python3.8/config-3.8" userbase = "/root/.local"maturin-1.7.4/sysconfig/cpython-wasi-3.12.txt000066400000000000000000001354111467514767100210040ustar00rootroot00000000000000Platform: "wasi-0.0.0-wasm32" Python version: "3.12" Current installation scheme: "posix_prefix" Paths: data = "/root/code/python-wasi/opt/wasi-python" include = "/root/code/python-wasi/opt/wasi-python/include/python3.12" platinclude = "/root/code/python-wasi/opt/wasi-python/include/python3.12" platlib = "/root/code/python-wasi/opt/wasi-python/lib/python3.12/site-packages" platstdlib = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" purelib = "/root/code/python-wasi/opt/wasi-python/lib/python3.12/site-packages" scripts = "/root/code/python-wasi/opt/wasi-python/bin" stdlib = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "4" ALIGNOF_SIZE_T = "4" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/root/code/python-wasi/opt/wasi-python/bin" BINLIBDEST = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" BLDLIBRARY = "libpython3.12.a" BLDSHARED = "" BOOTSTRAP_HEADERS = "\" BUILDEXE = ".wasm" BUILDPYTHON = "python.wasm" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BUILD_SCRIPTS_DIR = "build/scripts-3.12" BYTESTR_DEPS = "\" CC = "clang --target=wasm32-wasi" CCSHARED = "" CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "-fno-strict-aliasing" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" CONFIGURE_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" CONFIGURE_LDFLAGS = "" CONFIGURE_LDFLAGS_NODIST = "-z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760" CONFIGURE_LDFLAGS_NOLTO = "" CONFIG_ARGS = "'--host=wasm32-wasi' '--build=x86_64-pc-linux-gnu' '--with-build-python=/root/code/python-wasi/cpython/inst/3.12/bin/python3.12' '--with-ensurepip=no' '--disable-ipv6' '--enable-big-digits=30' '--with-suffix=.wasm' '--with-freeze-module=./build/Programs/_freeze_module' '--prefix=/root/code/python-wasi/opt/wasi-python' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=wasm32-wasi' 'CC=clang --target=wasm32-wasi' 'CFLAGS=-g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot' 'LIBS= -L/opt/lib -L/root/code/python-wasi/wasix -lwasix -L/opt/wasi-sdk/share/wasi-sysroot/lib/wasm32-wasi -lwasi-emulated-signal -L/root/code/python-wasi/docker/lib --sysroot=/opt/wasi-sdk/share/wasi-sysroot' 'CPPFLAGS=-g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot'" CONFINCLUDEDIR = "/root/code/python-wasi/opt/wasi-python/include" CONFINCLUDEPY = "/root/code/python-wasi/opt/wasi-python/include/python3.12" COREPYTHONPATH = "" COVERAGE_INFO = "/root/code/python-wasi/cpython/coverage.info" COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1" COVERAGE_REPORT = "/root/code/python-wasi/cpython/lcov-report" COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.12 LCOV report [commit $(shell git --git-dir ./.git rev-parse --short HEAD)]"" CPPFLAGS = "-I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" CXX = "c++" DEEPFREEZE_DEPS = "./Tools/scripts/deepfreeze.py ./Programs/_freeze_module.py \" DEEPFREEZE_OBJS = "Python/deepfreeze/deepfreeze.o" DESTDIRS = "/root/code/python-wasi/opt/wasi-python /root/code/python-wasi/opt/wasi-python/lib /root/code/python-wasi/opt/wasi-python/lib/python3.12 /root/code/python-wasi/opt/wasi-python/lib/python3.12/lib-dynload" DESTLIB = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" DESTPATH = "" DESTSHARED = "/root/code/python-wasi/opt/wasi-python/lib/python3.12/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_stub.o" ENABLE_IPV6 = "0" ENSUREPIP = "no" EXE = ".wasm" EXEMODE = "755" EXENAME = "/root/code/python-wasi/opt/wasi-python/bin/python3.12.wasm" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-312-wasm32-wasi.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FREEZE_MODULE = "/root/code/python-wasi/cpython/inst/3.12/bin/python3.12 ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP = "/root/code/python-wasi/cpython/inst/3.12/bin/python3.12 ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP_DEPS = "./Programs/_freeze_module.py" FREEZE_MODULE_DEPS = "./Programs/_freeze_module.py" FROZEN_FILES_IN = "\" FROZEN_FILES_OUT = "\" GETPGRP_HAVE_ARG = "0" GITBRANCH = "git --git-dir ./.git name-rev --name-only HEAD" GITTAG = "git --git-dir ./.git describe --all --always --dirty" GITVERSION = "git --git-dir ./.git rev-parse --short HEAD" GNULD = "no" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "0" HAVE_ALARM = "0" HAVE_ALIGNED_REQUIRED = "1" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "1" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_BZLIB_H = "1" HAVE_CHFLAGS = "0" HAVE_CHMOD = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "0" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_NANOSLEEP = "1" HAVE_CLOCK_SETTIME = "0" HAVE_CLOSE_RANGE = "0" HAVE_COMPUTED_GOTOS = "0" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "0" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "0" HAVE_CURSES_H = "0" HAVE_CURSES_HAS_KEY = "0" HAVE_CURSES_IMMEDOK = "0" HAVE_CURSES_IS_PAD = "0" HAVE_CURSES_IS_TERM_RESIZED = "0" HAVE_CURSES_RESIZETERM = "0" HAVE_CURSES_RESIZE_TERM = "0" HAVE_CURSES_SYNCOK = "0" HAVE_CURSES_TYPEAHEAD = "0" HAVE_CURSES_USE_ENV = "0" HAVE_CURSES_WCHGAT = "0" HAVE_DB_H = "0" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "0" HAVE_DECL_RTLD_LAZY = "0" HAVE_DECL_RTLD_LOCAL = "0" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "0" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "0" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "0" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "0" HAVE_DLOPEN = "0" HAVE_DUP2 = "0" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "0" HAVE_EDITLINE_READLINE_H = "0" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "0" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "0" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "0" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "0" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FFI_CLOSURE_ALLOC = "0" HAVE_FFI_PREP_CIF_VAR = "0" HAVE_FFI_PREP_CLOSURE_LOC = "0" HAVE_FLOCK = "0" HAVE_FORK = "1" HAVE_FORK1 = "0" HAVE_FORKPTY = "0" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "0" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "0" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "0" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GDBM_DASH_NDBM_H = "0" HAVE_GDBM_H = "0" HAVE_GDBM_NDBM_H = "0" HAVE_GETADDRINFO = "0" HAVE_GETC_UNLOCKED = "0" HAVE_GETEGID = "1" HAVE_GETENTROPY = "1" HAVE_GETEUID = "1" HAVE_GETGID = "1" HAVE_GETGRGID = "0" HAVE_GETGRGID_R = "0" HAVE_GETGRNAM_R = "0" HAVE_GETGROUPLIST = "0" HAVE_GETGROUPS = "0" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "0" HAVE_GETLOADAVG = "0" HAVE_GETLOGIN = "0" HAVE_GETNAMEINFO = "0" HAVE_GETPAGESIZE = "0" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "0" HAVE_GETPGRP = "0" HAVE_GETPID = "1" HAVE_GETPPID = "1" HAVE_GETPRIORITY = "0" HAVE_GETPWENT = "0" HAVE_GETPWNAM_R = "0" HAVE_GETPWUID = "1" HAVE_GETPWUID_R = "0" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETRUSAGE = "1" HAVE_GETSID = "0" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETUID = "1" HAVE_GETWD = "0" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "0" HAVE_HSTRERROR = "0" HAVE_HTOLE64 = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "0" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "0" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "0" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "1" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "0" HAVE_LIBB2 = "0" HAVE_LIBDB = "0" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "0" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBSQLITE3 = "1" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "0" HAVE_LINUX_AUXVEC_H = "0" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_FS_H = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_SOUNDCARD_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "0" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LOGIN_TTY = "0" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "0" HAVE_LZMA_H = "1" HAVE_MADVISE = "0" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "0" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "0" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "0" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "0" HAVE_MREMAP = "0" HAVE_NANOSLEEP = "1" HAVE_NCURSESW = "0" HAVE_NCURSES_H = "0" HAVE_NDBM_H = "0" HAVE_NDIR_H = "0" HAVE_NETCAN_CAN_H = "0" HAVE_NETINET_IN_H = "1" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "0" HAVE_NICE = "0" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "0" HAVE_OPENDIR = "1" HAVE_OPENPTY = "0" HAVE_PANEL_H = "0" HAVE_PATHCONF = "1" HAVE_PAUSE = "0" HAVE_PIPE = "1" HAVE_PIPE2 = "0" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "0" HAVE_POSIX_SPAWNP = "0" HAVE_PREAD = "1" HAVE_PREADV = "0" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "0" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "0" HAVE_PTHREAD_SIGMASK = "0" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "0" HAVE_PWRITEV2 = "0" HAVE_READLINE_READLINE_H = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "0" HAVE_READV = "1" HAVE_REALPATH = "0" HAVE_RENAMEAT = "0" HAVE_RL_APPEND_HISTORY = "0" HAVE_RL_CATCH_SIGNAL = "0" HAVE_RL_COMPLETION_APPEND_CHARACTER = "0" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "0" HAVE_RL_COMPLETION_MATCHES = "0" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "0" HAVE_RL_PRE_INPUT_HOOK = "0" HAVE_RL_RESIZE_TERMINAL = "0" HAVE_RPC_RPC_H = "0" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "0" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "0" HAVE_SEM_OPEN = "0" HAVE_SEM_TIMEDWAIT = "0" HAVE_SEM_UNLINK = "0" HAVE_SENDFILE = "0" HAVE_SETEGID = "0" HAVE_SETEUID = "0" HAVE_SETGID = "0" HAVE_SETGROUPS = "0" HAVE_SETHOSTNAME = "0" HAVE_SETITIMER = "0" HAVE_SETJMP_H = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "0" HAVE_SETPGRP = "0" HAVE_SETPRIORITY = "0" HAVE_SETREGID = "0" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "0" HAVE_SETSID = "0" HAVE_SETUID = "0" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "0" HAVE_SHM_UNLINK = "0" HAVE_SHUTDOWN = "0" HAVE_SIGACTION = "0" HAVE_SIGALTSTACK = "0" HAVE_SIGFILLSET = "0" HAVE_SIGINFO_T_SI_BAND = "0" HAVE_SIGINTERRUPT = "0" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "0" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "0" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "0" HAVE_SPLICE = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "0" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "0" HAVE_SYNC = "0" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYSLOG_H = "0" HAVE_SYSTEM = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENTFD_H = "0" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "0" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "0" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "0" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_SOUNDCARD_H = "0" HAVE_SYS_STATVFS_H = "0" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "0" HAVE_TCSETPGRP = "0" HAVE_TEMPNAM = "0" HAVE_TERMIOS_H = "0" HAVE_TERM_H = "0" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "0" HAVE_TMPNAM = "0" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TTYNAME = "1" HAVE_TZNAME = "0" HAVE_UMASK = "1" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "0" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UTMP_H = "0" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "1" HAVE_UUID_UUID_H = "0" HAVE_VFORK = "0" HAVE_WAIT = "1" HAVE_WAIT3 = "0" HAVE_WAIT4 = "0" HAVE_WAITID = "0" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "0" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE_ZLIB_H = "1" HAVE__GETPTY = "0" HOSTRUNNER = "wasmtime run --env PYTHONPATH=/$(shell realpath --relative-to /root/code/python-wasi/cpython /root/code/python-wasi/cpython)/$(shell cat pybuilddir.txt):/Lib --mapdir /::. --" HOST_GNU_TYPE = "wasm32-unknown-wasi" INCLDIRSTOMAKE = "/root/code/python-wasi/opt/wasi-python/include /root/code/python-wasi/opt/wasi-python/include /root/code/python-wasi/opt/wasi-python/include/python3.12 /root/code/python-wasi/opt/wasi-python/include/python3.12" INCLUDEDIR = "/root/code/python-wasi/opt/wasi-python/include" INCLUDEPY = "/root/code/python-wasi/opt/wasi-python/include/python3.12" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.12.a" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "" LDFLAGS = "" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.12.a" LDLIBRARYDIR = "" LDSHARED = "" LDVERSION = "3.12" LIBC = "" LIBDEST = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" LIBDIR = "/root/code/python-wasi/opt/wasi-python/lib" LIBEXPAT_A = "Modules/expat/libexpat.a" LIBEXPAT_CFLAGS = "-I./Modules/expat -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" LIBEXPAT_HEADERS = "\" LIBEXPAT_OBJS = "\" LIBM = "-lm" LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a" LIBMPDEC_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_32=1 -DANSI=1 -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" LIBMPDEC_HEADERS = "\" LIBMPDEC_OBJS = "\" LIBOBJDIR = "Python/" LIBOBJS = "Python/dup2$U.o" LIBPC = "/root/code/python-wasi/opt/wasi-python/lib/pkgconfig" LIBPL = "/root/code/python-wasi/opt/wasi-python/lib/python3.12/config-3.12-wasm32-wasi" LIBPYTHON = "" LIBRARY = "libpython3.12.a" LIBRARY_DEPS = "libpython3.12.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-L/opt/lib -L/root/code/python-wasi/wasix -lwasix -L/opt/wasi-sdk/share/wasi-sysroot/lib/wasm32-wasi -lwasi-emulated-signal -L/root/code/python-wasi/docker/lib --sysroot=/opt/wasi-sdk/share/wasi-sysroot -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks -lpthread" LIBSUBDIRS = "asyncio \" LINKCC = "clang --target=wasm32-wasi" LINKFORSHARED = "" LINK_PYTHON_DEPS = "libpython3.12.a" LINK_PYTHON_OBJS = "\" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "yes" LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr"" LLVM_PROF_MERGER = "'' merge -output=code.profclangd *.profclangr" LN = "ln" LOCALMODLIBS = "-lm -lm -lm -lm -lm -lm Modules/_decimal/libmpdec/libmpdec.a -lz -lbz2 -llzma -lz -lm Modules/expat/libexpat.a -lsqlite3" MACHDEP = "wasi" MACHDEP_OBJS = "" MACHDESTLIB = "/root/code/python-wasi/opt/wasi-python/lib/python3.12" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "clang --target=wasm32-wasi" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/root/code/python-wasi/opt/wasi-python/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "array _asyncio _bisect _contextvars _csv _heapq _json _lsprof _opcode _pickle _queue _random _struct _typing _zoneinfo audioop math cmath _statistics _datetime _decimal binascii _bz2 _lzma zlib _md5 _sha1 _sha256 _sha512 _sha3 _blake2 pyexpat _elementtree _codecs_cn _codecs_hk _codecs_iso2022 _codecs_jp _codecs_kr _codecs_tw _multibytecodec unicodedata _crypt select _socket _sqlite3 xxsubtype _xxtestfuzz _testbuffer _testinternalcapi _testcapi atexit faulthandler posix _signal _tracemalloc _codecs _collections errno _io itertools _sre _thread time _weakref _abc _functools _locale _operator _stat _symtable" MODDISABLED_NAMES = "" MODLIBS = "-lm -lm -lm -lm -lm -lm Modules/_decimal/libmpdec/libmpdec.a -lz -lbz2 -llzma -lz -lm Modules/expat/libexpat.a -lsqlite3" MODOBJS = "Modules/arraymodule.o Modules/_asynciomodule.o Modules/_bisectmodule.o Modules/_contextvarsmodule.o Modules/_csv.o Modules/_heapqmodule.o Modules/_json.o Modules/_lsprof.o Modules/rotatingtree.o Modules/_opcode.o Modules/_pickle.o Modules/_queuemodule.o Modules/_randommodule.o Modules/_struct.o Modules/_typingmodule.o Modules/_zoneinfo.o Modules/audioop.o Modules/mathmodule.o Modules/cmathmodule.o Modules/_statisticsmodule.o Modules/_datetimemodule.o Modules/_decimal/_decimal.o Modules/binascii.o Modules/_bz2module.o Modules/_lzmamodule.o Modules/zlibmodule.o Modules/md5module.o Modules/sha1module.o Modules/sha256module.o Modules/sha512module.o Modules/_sha3/sha3module.o Modules/_blake2/blake2module.o Modules/_blake2/blake2b_impl.o Modules/_blake2/blake2s_impl.o Modules/pyexpat.o Modules/_elementtree.o Modules/cjkcodecs/_codecs_cn.o Modules/cjkcodecs/_codecs_hk.o Modules/cjkcodecs/_codecs_iso2022.o Modules/cjkcodecs/_codecs_jp.o Modules/cjkcodecs/_codecs_kr.o Modules/cjkcodecs/_codecs_tw.o Modules/cjkcodecs/multibytecodec.o Modules/unicodedata.o Modules/_cryptmodule.o Modules/selectmodule.o Modules/socketmodule.o Modules/_sqlite/blob.o Modules/_sqlite/connection.o Modules/_sqlite/cursor.o Modules/_sqlite/microprotocols.o Modules/_sqlite/module.o Modules/_sqlite/prepare_protocol.o Modules/_sqlite/row.o Modules/_sqlite/statement.o Modules/_sqlite/util.o Modules/xxsubtype.o Modules/_xxtestfuzz/_xxtestfuzz.o Modules/_xxtestfuzz/fuzzer.o Modules/_testbuffer.o Modules/_testinternalcapi.o Modules/_testcapimodule.o Modules/_testcapi/vectorcall.o Modules/atexitmodule.o Modules/faulthandler.o Modules/posixmodule.o Modules/signalmodule.o Modules/_tracemalloc.o Modules/_codecsmodule.o Modules/_collectionsmodule.o Modules/errnomodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/itertoolsmodule.o Modules/_sre/sre.o Modules/_threadmodule.o Modules/timemodule.o Modules/_weakref.o Modules/_abc.o Modules/_functoolsmodule.o Modules/_localemodule.o Modules/_operator.o Modules/_stat.o Modules/symtablemodule.o" MODSHARED_NAMES = "" MODULE_ARRAY_LDFLAGS = "" MODULE_ARRAY_STATE = "yes" MODULE_ATEXIT_LDFLAGS = "" MODULE_AUDIOOP_LDFLAGS = "-lm" MODULE_AUDIOOP_STATE = "yes" MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32" MODULE_BINASCII_LDFLAGS = "-lz" MODULE_BINASCII_STATE = "yes" MODULE_CMATH_DEPS = "./Modules/_math.h" MODULE_CMATH_LDFLAGS = "-lm" MODULE_CMATH_STATE = "yes" MODULE_ERRNO_LDFLAGS = "" MODULE_FAULTHANDLER_LDFLAGS = "" MODULE_FCNTL_STATE = "n/a" MODULE_GRP_STATE = "n/a" MODULE_ITERTOOLS_LDFLAGS = "" MODULE_MATH_DEPS = "./Modules/_math.h" MODULE_MATH_LDFLAGS = "-lm" MODULE_MATH_STATE = "yes" MODULE_MMAP_STATE = "n/a" MODULE_NIS_STATE = "n/a" MODULE_OBJS = "\" MODULE_OSSAUDIODEV_STATE = "n/a" MODULE_POSIX_LDFLAGS = "" MODULE_PWD_STATE = "n/a" MODULE_PYEXPAT_CFLAGS = "-I./Modules/expat" MODULE_PYEXPAT_DEPS = "\ Modules/expat/libexpat.a" MODULE_PYEXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a" MODULE_PYEXPAT_STATE = "yes" MODULE_READLINE_STATE = "missing" MODULE_RESOURCE_STATE = "n/a" MODULE_SELECT_LDFLAGS = "" MODULE_SELECT_STATE = "yes" MODULE_SPWD_STATE = "n/a" MODULE_SYSLOG_STATE = "n/a" MODULE_TERMIOS_STATE = "n/a" MODULE_TIME_LDFLAGS = "" MODULE_TIME_STATE = "yes" MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h" MODULE_UNICODEDATA_LDFLAGS = "" MODULE_UNICODEDATA_STATE = "yes" MODULE_XXLIMITED_35_STATE = "missing" MODULE_XXLIMITED_STATE = "missing" MODULE_XXSUBTYPE_LDFLAGS = "" MODULE_XXSUBTYPE_STATE = "yes" MODULE_ZLIB_CFLAGS = "" MODULE_ZLIB_LDFLAGS = "-lz" MODULE_ZLIB_STATE = "yes" MODULE__ABC_LDFLAGS = "" MODULE__ASYNCIO_LDFLAGS = "" MODULE__ASYNCIO_STATE = "yes" MODULE__BISECT_LDFLAGS = "" MODULE__BISECT_STATE = "yes" MODULE__BLAKE2_CFLAGS = "" MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h" MODULE__BLAKE2_LDFLAGS = "" MODULE__BLAKE2_STATE = "yes" MODULE__BZ2_CFLAGS = "" MODULE__BZ2_LDFLAGS = "-lbz2" MODULE__BZ2_STATE = "yes" MODULE__CODECS_CN_LDFLAGS = "" MODULE__CODECS_CN_STATE = "yes" MODULE__CODECS_HK_LDFLAGS = "" MODULE__CODECS_HK_STATE = "yes" MODULE__CODECS_ISO2022_LDFLAGS = "" MODULE__CODECS_ISO2022_STATE = "yes" MODULE__CODECS_JP_LDFLAGS = "" MODULE__CODECS_JP_STATE = "yes" MODULE__CODECS_KR_LDFLAGS = "" MODULE__CODECS_KR_STATE = "yes" MODULE__CODECS_LDFLAGS = "" MODULE__CODECS_TW_LDFLAGS = "" MODULE__CODECS_TW_STATE = "yes" MODULE__COLLECTIONS_LDFLAGS = "" MODULE__CONTEXTVARS_LDFLAGS = "" MODULE__CONTEXTVARS_STATE = "yes" MODULE__CRYPT_CFLAGS = "" MODULE__CRYPT_LDFLAGS = "" MODULE__CRYPT_STATE = "yes" MODULE__CSV_LDFLAGS = "" MODULE__CSV_STATE = "yes" MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h ./Modules/_ctypes/darwin/dlfcn.h" MODULE__CTYPES_MALLOC_CLOSURE = "" MODULE__CTYPES_STATE = "missing" MODULE__CTYPES_TEST_STATE = "n/a" MODULE__CURSES_PANEL_STATE = "n/a" MODULE__CURSES_STATE = "n/a" MODULE__DATETIME_LDFLAGS = "-lm" MODULE__DATETIME_STATE = "yes" MODULE__DBM_STATE = "n/a" MODULE__DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DCONFIG_32=1 -DANSI=1" MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \ Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_STATE = "yes" MODULE__ELEMENTTREE_CFLAGS = "-I./Modules/expat" MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c \ Modules/expat/libexpat.a" MODULE__ELEMENTTREE_LDFLAGS = "" MODULE__ELEMENTTREE_STATE = "yes" MODULE__FUNCTOOLS_LDFLAGS = "" MODULE__GDBM_STATE = "n/a" MODULE__HASHLIB_DEPS = "./Modules/hashlib.h" MODULE__HASHLIB_STATE = "missing" MODULE__HEAPQ_LDFLAGS = "" MODULE__HEAPQ_STATE = "yes" MODULE__IO_CFLAGS = "-I./Modules/_io" MODULE__IO_DEPS = "./Modules/_io/_iomodule.h" MODULE__IO_LDFLAGS = "" MODULE__IO_STATE = "yes" MODULE__JSON_LDFLAGS = "" MODULE__JSON_STATE = "yes" MODULE__LOCALE_LDFLAGS = "" MODULE__LSPROF_LDFLAGS = "" MODULE__LSPROF_STATE = "yes" MODULE__LZMA_CFLAGS = "" MODULE__LZMA_LDFLAGS = "-llzma" MODULE__LZMA_STATE = "yes" MODULE__MD5_DEPS = "./Modules/hashlib.h" MODULE__MD5_LDFLAGS = "" MODULE__MD5_STATE = "yes" MODULE__MULTIBYTECODEC_LDFLAGS = "" MODULE__MULTIBYTECODEC_STATE = "yes" MODULE__MULTIPROCESSING_STATE = "n/a" MODULE__OPCODE_LDFLAGS = "" MODULE__OPCODE_STATE = "yes" MODULE__OPERATOR_LDFLAGS = "" MODULE__PICKLE_LDFLAGS = "" MODULE__PICKLE_STATE = "yes" MODULE__POSIXSHMEM_STATE = "n/a" MODULE__POSIXSUBPROCESS_STATE = "n/a" MODULE__QUEUE_LDFLAGS = "" MODULE__QUEUE_STATE = "yes" MODULE__RANDOM_LDFLAGS = "" MODULE__RANDOM_STATE = "yes" MODULE__SCPROXY_STATE = "n/a" MODULE__SHA1_DEPS = "./Modules/hashlib.h" MODULE__SHA1_LDFLAGS = "" MODULE__SHA1_STATE = "yes" MODULE__SHA256_DEPS = "./Modules/hashlib.h" MODULE__SHA256_LDFLAGS = "" MODULE__SHA256_STATE = "yes" MODULE__SHA3_DEPS = "./Modules/_sha3/sha3.c ./Modules/_sha3/sha3.h ./Modules/hashlib.h" MODULE__SHA3_LDFLAGS = "" MODULE__SHA3_STATE = "yes" MODULE__SHA512_DEPS = "./Modules/hashlib.h" MODULE__SHA512_LDFLAGS = "" MODULE__SHA512_STATE = "yes" MODULE__SIGNAL_LDFLAGS = "" MODULE__SOCKET_DEPS = "./Modules/socketmodule.h" MODULE__SOCKET_LDFLAGS = "" MODULE__SOCKET_STATE = "yes" MODULE__SQLITE3_CFLAGS = "-I./Modules/_sqlite" MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h" MODULE__SQLITE3_LDFLAGS = "-lsqlite3" MODULE__SQLITE3_STATE = "yes" MODULE__SRE_LDFLAGS = "" MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h" MODULE__SSL_STATE = "missing" MODULE__STATISTICS_LDFLAGS = "-lm" MODULE__STATISTICS_STATE = "yes" MODULE__STAT_LDFLAGS = "" MODULE__STRUCT_LDFLAGS = "" MODULE__STRUCT_STATE = "yes" MODULE__SYMTABLE_LDFLAGS = "" MODULE__TESTBUFFER_LDFLAGS = "" MODULE__TESTBUFFER_STATE = "yes" MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h ./Modules/_testcapi/parts.h" MODULE__TESTCAPI_LDFLAGS = "" MODULE__TESTCAPI_STATE = "yes" MODULE__TESTIMPORTMULTIPLE_STATE = "missing" MODULE__TESTINTERNALCAPI_LDFLAGS = "" MODULE__TESTINTERNALCAPI_STATE = "yes" MODULE__TESTMULTIPHASE_STATE = "missing" MODULE__THREAD_LDFLAGS = "" MODULE__TKINTER_STATE = "n/a" MODULE__TRACEMALLOC_LDFLAGS = "" MODULE__TYPING_LDFLAGS = "" MODULE__TYPING_STATE = "yes" MODULE__UUID_STATE = "missing" MODULE__WEAKREF_LDFLAGS = "" MODULE__XXSUBINTERPRETERS_STATE = "n/a" MODULE__XXTESTFUZZ_LDFLAGS = "" MODULE__XXTESTFUZZ_STATE = "yes" MODULE__ZONEINFO_LDFLAGS = "" MODULE__ZONEINFO_STATE = "yes" MULTIARCH = "wasm32-wasi" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"wasm32-wasi\"" MVWDELCH_IS_EXPRESSION = "0" NO_AS_NEEDED = "" OBJECT_OBJS = "\" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-instr-generate" PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo --timeout=1200" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "0" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "30" PYTHON = "python.wasm" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "_PYTHON_HOSTRUNNER='wasmtime run --env PYTHONPATH=/$(shell realpath --relative-to /root/code/python-wasi/cpython /root/code/python-wasi/cpython)/$(shell cat pybuilddir.txt):/Lib --mapdir /::. --' _PYTHON_PROJECT_BASE=/root/code/python-wasi/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /root/code/python-wasi/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__wasi_wasm32-wasi /root/code/python-wasi/cpython/inst/3.12/bin/python3.12" PYTHON_FOR_BUILD_DEPS = "" PYTHON_FOR_FREEZE = "/root/code/python-wasi/cpython/inst/3.12/bin/python3.12" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" PY_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760" PY_CPPFLAGS = "-I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" PY_ENABLE_SHARED = "0" PY_LDFLAGS = "" PY_LDFLAGS_NODIST = "-z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760" PY_LDFLAGS_NOLTO = "" PY_SQLITE_ENABLE_LOAD_EXTENSION = "0" PY_SQLITE_HAVE_SERIALIZE = "1" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot -g -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -I/opt/include -I/root/code/python-wasi/wasix/include -isystem /root/code/python-wasi/wasix/include -I/opt/wasi-sdk/share/wasi-sysroot/include -I/root/code/python-wasi/docker/include --sysroot=/opt/wasi-sdk/share/wasi-sysroot" PY_SUPPORT_TIER = "0" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" Py_HASH_ALGORITHM = "0" Py_STATS = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "wasm32-wasi-readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "" SCRIPTDIR = "/root/code/python-wasi/opt/wasi-python/lib" SCRIPT_2TO3 = "build/scripts-3.12/2to3-3.12" SCRIPT_IDLE = "build/scripts-3.12/idle3.12" SCRIPT_PYDOC = "build/scripts-3.12/pydoc3.12" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-L/opt/lib -L/root/code/python-wasi/wasix -lwasix -L/opt/wasi-sdk/share/wasi-sysroot/lib/wasm32-wasi -lwasi-emulated-signal -L/root/code/python-wasi/docker/lib --sysroot=/opt/wasi-sdk/share/wasi-sysroot -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks -lpthread" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "4" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "4" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "4" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "4" SIZEOF_VOID_P = "4" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SOABI = "cpython-312-wasm32-wasi" SRCDIRS = "Modules Modules/_blake2 Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_io Modules/_multiprocessing Modules/_sha3 Modules/_sqlite Modules/_sre Modules/_testcapi Modules/_xxtestfuzz Modules/cjkcodecs Modules/expat Objects Parser Programs Python Python/frozen_modules Python/deepfreeze" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STATIC_LIBPYTHON = "1" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "_PYTHON_HOSTRUNNER='wasmtime run --env PYTHONPATH=/$(shell realpath --relative-to /root/code/python-wasi/cpython /root/code/python-wasi/cpython)/$(shell cat pybuilddir.txt):/Lib --mapdir /::. --' _PYTHON_PROJECT_BASE=/root/code/python-wasi/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /root/code/python-wasi/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__wasi_wasm32-wasi /root/code/python-wasi/cpython/inst/3.12/bin/python3.12" TESTPYTHONOPTS = "" TESTRUNNER = "_PYTHON_HOSTRUNNER='wasmtime run --env PYTHONPATH=/$(shell realpath --relative-to /root/code/python-wasi/cpython /root/code/python-wasi/cpython)/$(shell cat pybuilddir.txt):/Lib --mapdir /::. --' _PYTHON_PROJECT_BASE=/root/code/python-wasi/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /root/code/python-wasi/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__wasi_wasm32-wasi /root/code/python-wasi/cpython/inst/3.12/bin/python3.12 ./Tools/scripts/run_tests.py" TESTSUBDIRS = "distutils/tests \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.12" WASM_ASSETS_DIR = "./root/code/python-wasi/opt/wasi-python" WASM_STDLIB = "./root/code/python-wasi/opt/wasi-python/lib/python3.12/os.py" WHEEL_PKG_DIR = "" WINDOW_HAS_FLAGS = "0" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_EDITLINE = "0" WITH_FREELISTS = "1" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "0" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/root/code/python-wasi/cpython" abs_srcdir = "/root/code/python-wasi/cpython" base = "/root/code/python-wasi/opt/wasi-python" datarootdir = "/root/code/python-wasi/opt/wasi-python/share" exec_prefix = "/root/code/python-wasi/opt/wasi-python" installed_base = "/root/code/python-wasi/opt/wasi-python" installed_platbase = "/root/code/python-wasi/opt/wasi-python" platbase = "/root/code/python-wasi/opt/wasi-python" platlibdir = "lib" prefix = "/root/code/python-wasi/opt/wasi-python" projectbase = "/" py_version = "3.12.0a0" py_version_nodot = "312" py_version_nodot_plat = "" py_version_short = "3.12" srcdir = "/root/code/python-wasi/opt/wasi-python/lib/python3.12/config-3.12-wasm32-wasi"maturin-1.7.4/sysconfig/cpython-win-3.7.txt000066400000000000000000000035521467514767100205620ustar00rootroot00000000000000Platform: "win-amd64" Python version: "3.7" Current installation scheme: "nt" Paths: data = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" include = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Include" platinclude = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Include" platlib = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib\site-packages" platstdlib = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib" purelib = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib\site-packages" scripts = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Scripts" stdlib = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib" Variables: BINDIR = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" BINLIBDEST = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib" EXE = ".exe" EXT_SUFFIX = ".pyd" INCLUDEPY = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Include" LIBDEST = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37\Lib" SO = ".pyd" VERSION = "37" abiflags = "" base = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" exec_prefix = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" installed_base = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" installed_platbase = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" platbase = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" prefix = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" projectbase = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" py_version = "3.7.0" py_version_nodot = "37" py_version_short = "3.7" srcdir = "C:\Users\Konstantin\AppData\Local\Programs\Python\Python37" userbase = "C:\Users\Konstantin\AppData\Roaming\Python" maturin-1.7.4/sysconfig/cpython-win-3.9-aarch64.txt000066400000000000000000000031601467514767100220050ustar00rootroot00000000000000Platform: "win-arm64" Python version: "3.9" Current installation scheme: "nt" Paths: data = "C:\Program Files (Arm)\Python-3.9.1" include = "C:\Program Files (Arm)\Python-3.9.1\Include" platinclude = "C:\Program Files (Arm)\Python-3.9.1\Include" platlib = "C:\Program Files (Arm)\Python-3.9.1\Lib\site-packages" platstdlib = "C:\Program Files (Arm)\Python-3.9.1\Lib" purelib = "C:\Program Files (Arm)\Python-3.9.1\Lib\site-packages" scripts = "C:\Program Files (Arm)\Python-3.9.1\Scripts" stdlib = "C:\Program Files (Arm)\Python-3.9.1\Lib" Variables: BINDIR = "C:\Program Files (Arm)\Python-3.9.1" BINLIBDEST = "C:\Program Files (Arm)\Python-3.9.1\Lib" EXE = ".exe" EXT_SUFFIX = ".pyd" INCLUDEPY = "C:\Program Files (Arm)\Python-3.9.1\Include" LIBDEST = "C:\Program Files (Arm)\Python-3.9.1\Lib" SO = ".pyd" TZPATH = "" VERSION = "39" abiflags = "" base = "C:\Program Files (Arm)\Python-3.9.1" exec_prefix = "C:\Program Files (Arm)\Python-3.9.1" installed_base = "C:\Program Files (Arm)\Python-3.9.1" installed_platbase = "C:\Program Files (Arm)\Python-3.9.1" platbase = "C:\Program Files (Arm)\Python-3.9.1" platlibdir = "lib" prefix = "C:\Program Files (Arm)\Python-3.9.1" projectbase = "C:\Program Files (Arm)\Python-3.9.1" py_version = "3.9.1" py_version_nodot = "39" py_version_short = "3.9" srcdir = "C:\Program Files (Arm)\Python-3.9.1" userbase = "C:\Users\messense\AppData\Roaming\Python" maturin-1.7.4/sysconfig/cpython-win-mingw64-3.9.txt000066400000000000000000000726271467514767100220660ustar00rootroot00000000000000Platform: "mingw_x86_64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "C:/msys64/mingw64" include = "C:/msys64/mingw64/include/python3.9" platinclude = "C:/msys64/mingw64/include/python3.9" platlib = "C:/msys64/mingw64/lib/python3.9/site-packages" platstdlib = "C:/msys64/mingw64/lib/python3.9" purelib = "C:/msys64/mingw64/lib/python3.9/site-packages" scripts = "C:/msys64/mingw64/bin" stdlib = "C:/msys64/mingw64/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "-IObjects -IInclude -IPython" BASEMODLIBS = "" BINDIR = "C:/msys64/mingw64/bin" BINLIBDEST = "C:/msys64/mingw64/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "gcc -shared -Wl,--enable-auto-image-base -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" BUILDEXE = ".exe" BUILDPYTHON = "python.exe" BUILDPYTHONW = "pythonw.exe" BUILDVENVLAUNCHER = "venvlauncher.exe" BUILDVENVWLAUNCHER = "venvwlauncher.exe" BUILD_GNU_TYPE = "x86_64-w64-mingw32" BYTESTR_DEPS = "\" CC = "gcc" CCSHARED = "" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-march=x86-64 -mtune=generic -O2 -pipe" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -D_WIN32_WINNT=0x0601 -DMS_DLL_ID='"3.9"'" CONFIGURE_CPPFLAGS = "-I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I." CONFIGURE_LDFLAGS = "-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--prefix=/mingw64' '--host=x86_64-w64-mingw32' '--build=x86_64-w64-mingw32' '--enable-shared' '--with-system-expat' '--with-system-ffi' '--with-system-libmpdec' '--without-ensurepip' '--without-c-locale-coercion' '--enable-loadable-sqlite-extensions' '--with-tzpath=/mingw64/share/zoneinfo' '--enable-optimizations' 'build_alias=x86_64-w64-mingw32' 'host_alias=x86_64-w64-mingw32' 'CC=gcc' 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe' 'LDFLAGS=-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high' 'CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1' 'PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig'" CONFINCLUDEDIR = "C:/msys64/mingw64/include" CONFINCLUDEPY = "C:/msys64/mingw64/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/c/M/mingw-w64-python/src/build-x86_64/coverage.info" COVERAGE_REPORT = "/c/M/mingw-w64-python/src/build-x86_64/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Python-3.9.7/Include -I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I. -D__USE_MINGW_ANSI_STDIO=1" CXX = "g++" DESTDIR = "" DESTDIRFINAL = "/" DESTDIRS = "C:/msys64/mingw64 C:/msys64/mingw64/lib C:/msys64/mingw64/lib/python3.9 C:/msys64/mingw64/lib/python3.9/lib-dynload" DESTLIB = "C:/msys64/mingw64/lib/python3.9" DESTPATH = "" DESTSHARED = "C:/msys64/mingw64/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "libpython3.9.dll" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_win.o" ENABLE_IPV6 = "0" ENSUREPIP = "no" EXE = ".exe" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cp39-mingw_x86_64.pyd" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "0" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "0" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "0" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "0" HAVE_CHROOT = "0" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "0" HAVE_CLOCK_GETTIME = "0" HAVE_CLOCK_SETTIME = "0" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "0" HAVE_CONIO_H = "1" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "0" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "0" HAVE_DECL_RTLD_LAZY = "0" HAVE_DECL_RTLD_LOCAL = "0" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "0" HAVE_DECL_RTLD_NOLOAD = "0" HAVE_DECL_RTLD_NOW = "0" HAVE_DECL_TZNAME = "1" HAVE_DEVICE_MACROS = "0" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "1" HAVE_DIRENT_D_TYPE = "0" HAVE_DIRENT_H = "1" HAVE_DIRFD = "0" HAVE_DLFCN_H = "0" HAVE_DLOPEN = "0" HAVE_DUP2 = "1" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "0" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "0" HAVE_FCHDIR = "0" HAVE_FCHMOD = "0" HAVE_FCHMODAT = "0" HAVE_FCHOWN = "0" HAVE_FCHOWNAT = "0" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "0" HAVE_FDOPENDIR = "0" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FINITE = "1" HAVE_FLOCK = "0" HAVE_FORK = "0" HAVE_FORKPTY = "0" HAVE_FPATHCONF = "0" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "0" HAVE_FSTATVFS = "0" HAVE_FSYNC = "0" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "0" HAVE_FUTIMENS = "0" HAVE_FUTIMES = "0" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "0" HAVE_GAMMA = "0" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "0" HAVE_GETC_UNLOCKED = "0" HAVE_GETENTROPY = "0" HAVE_GETGRGID_R = "0" HAVE_GETGRNAM_R = "0" HAVE_GETGROUPLIST = "0" HAVE_GETGROUPS = "0" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETITIMER = "0" HAVE_GETLOADAVG = "0" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "0" HAVE_GETPAGESIZE = "0" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "0" HAVE_GETPGRP = "0" HAVE_GETPID = "1" HAVE_GETPRIORITY = "0" HAVE_GETPWENT = "0" HAVE_GETPWNAM_R = "0" HAVE_GETPWUID_R = "0" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETSID = "0" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETWD = "0" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "0" HAVE_HSTRERROR = "0" HAVE_HTOLE64 = "0" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "1" HAVE_IF_NAMEINDEX = "0" HAVE_INET_ATON = "0" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "0" HAVE_INTTYPES_H = "1" HAVE_IO_H = "1" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "0" HAVE_KILLPG = "0" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "0" HAVE_LARGEFILE_SUPPORT = "1" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "0" HAVE_LGAMMA = "1" HAVE_LIBDL = "0" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "0" HAVE_LINKAT = "0" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LOCKF = "0" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "0" HAVE_LUTIMES = "0" HAVE_MADVISE = "0" HAVE_MAKEDEV = "0" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMRCHR = "0" HAVE_MINIX_CONFIG_H = "0" HAVE_MKDIRAT = "0" HAVE_MKFIFO = "0" HAVE_MKFIFOAT = "0" HAVE_MKNOD = "0" HAVE_MKNODAT = "0" HAVE_MKTIME = "1" HAVE_MMAP = "0" HAVE_MREMAP = "0" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "0" HAVE_NICE = "0" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "0" HAVE_OPENPTY = "0" HAVE_PATHCONF = "0" HAVE_PAUSE = "0" HAVE_PIPE2 = "0" HAVE_PLOCK = "0" HAVE_POLL = "0" HAVE_POLL_H = "0" HAVE_POSIX_FADVISE = "0" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "0" HAVE_POSIX_SPAWNP = "0" HAVE_PREAD = "0" HAVE_PREADV = "0" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "1" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "0" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "0" HAVE_PTHREAD_SIGMASK = "0" HAVE_PTY_H = "0" HAVE_PWRITE = "0" HAVE_PWRITEV = "0" HAVE_PWRITEV2 = "0" HAVE_READLINK = "0" HAVE_READLINKAT = "0" HAVE_READV = "0" HAVE_REALPATH = "0" HAVE_RENAMEAT = "0" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "0" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "0" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SETEGID = "0" HAVE_SETEUID = "0" HAVE_SETGID = "0" HAVE_SETGROUPS = "0" HAVE_SETHOSTNAME = "0" HAVE_SETITIMER = "0" HAVE_SETLOCALE = "1" HAVE_SETPGID = "0" HAVE_SETPGRP = "0" HAVE_SETPRIORITY = "0" HAVE_SETREGID = "0" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "0" HAVE_SETSID = "0" HAVE_SETUID = "0" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "0" HAVE_SHM_UNLINK = "0" HAVE_SIGACTION = "0" HAVE_SIGALTSTACK = "0" HAVE_SIGFILLSET = "0" HAVE_SIGINFO_T_SI_BAND = "0" HAVE_SIGINTERRUPT = "0" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "0" HAVE_SIGRELSE = "0" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "0" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "0" HAVE_SPAWN_H = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "0" HAVE_STAT_TV_NSEC = "0" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDIO_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "0" HAVE_STRUCT_PASSWD_PW_GECOS = "0" HAVE_STRUCT_PASSWD_PW_PASSWD = "0" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "0" HAVE_STRUCT_STAT_ST_BLOCKS = "0" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "0" HAVE_SYMLINK = "0" HAVE_SYMLINKAT = "0" HAVE_SYNC = "0" HAVE_SYSCONF = "0" HAVE_SYSEXITS_H = "0" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "0" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "0" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "0" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "0" HAVE_SYS_SELECT_H = "0" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "0" HAVE_SYS_STATVFS_H = "0" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "0" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "0" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "0" HAVE_SYS_UN_H = "0" HAVE_SYS_UTSNAME_H = "0" HAVE_SYS_WAIT_H = "0" HAVE_SYS_XATTR_H = "0" HAVE_TCGETPGRP = "0" HAVE_TCSETPGRP = "0" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "0" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_THREAD_H = "0" HAVE_TIMEGM = "0" HAVE_TIMES = "0" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "0" HAVE_TRUNCATE = "0" HAVE_TZNAME = "1" HAVE_UCS4_TCL = "0" HAVE_UNAME = "0" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "0" HAVE_USABLE_WCHAR_T = "1" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "0" HAVE_UTIMES = "0" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "0" HAVE_WAIT4 = "0" HAVE_WAITID = "0" HAVE_WAITPID = "0" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "0" HAVE_WRITEV = "0" HAVE_WS2TCPIP_H = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-w64-mingw32" INCLDIRSTOMAKE = "C:/msys64/mingw64/include C:/msys64/mingw64/include C:/msys64/mingw64/include/python3.9 C:/msys64/mingw64/include/python3.9" INCLUDEDIR = "C:/msys64/mingw64/include" INCLUDEPY = "C:/msys64/mingw64/include/python3.9" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.9.dll.a" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -shared -Wl,--enable-auto-image-base" LDFLAGS = "-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.9.dll.a" LDLIBRARYDIR = "" LDSHARED = "gcc -shared -Wl,--enable-auto-image-base -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" LDVERSION = "3.9" LIBC = "" LIBDEST = "C:/msys64/mingw64/lib/python3.9" LIBDIR = "C:/msys64/mingw64/lib" LIBFFI_INCLUDEDIR = "C:/a/msys64/mingw64/include" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "C:/msys64/mingw64/lib/pkgconfig" LIBPL = "C:/msys64/mingw64/lib/python3.9/config-3.9" LIBPYTHON = "-lpython3.9" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lm -lversion -lshlwapi" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc" LINKFORSHARED = "-Wl,--stack,2000000" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "-lws2_32" MACHDEP = "win32" MACHDEP_OBJS = "PC/dl_nt.o" MACHDESTLIB = "C:/msys64/mingw64/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "../Python-3.9.7/Modules/makesetup" MANDIR = "C:/msys64/mingw64/share/man" MKDIR_P = "/usr/bin/mkdir -p" MODBUILT_NAMES = "nt winreg msvcrt _winapi errno _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "-lws2_32" MODOBJS = "Modules/posixmodule.o Modules/winreg.o Modules/msvcrtmodule.o Modules/_winapi.o Modules/errnomodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/winconsoleio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "" MULTIARCH_CPPFLAGS = "" MVWDELCH_IS_EXPRESSION = "1" NCURSESW_INCLUDEDIR = "C:/a/msys64/mingw64/include/ncursesw" NO_AS_NEEDED = "-Wl,--no-as-needed" NT_THREADS = "1" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-IC:/a/msys64/mingw64/include" OPENSSL_LDFLAGS = "-LC:/a/msys64/mingw64/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "1" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "0" PTHREAD_SYSTEM_SCHED_SUPPORTED = "0" PURIFY = "" PY3LIBRARY = "" PYD_PLATFORM_TAG = "mingw_x86_64" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python.exe" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python.exe -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -D_WIN32_WINNT=0x0601 -DMS_DLL_ID='"3.9"' -fprofile-use -fprofile-correction -I../Python-3.9.7/Include/internal -IObjects -IInclude -IPython -I. -I../Python-3.9.7/Include -I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I. -D__USE_MINGW_ANSI_STDIO=1 -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -D_WIN32_WINNT=0x0601 -DMS_DLL_ID='"3.9"' -fprofile-use -fprofile-correction -I../Python-3.9.7/Include/internal" PY_COERCE_C_LOCALE = "0" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -D_WIN32_WINNT=0x0601 -DMS_DLL_ID='"3.9"' -fprofile-use -fprofile-correction -I../Python-3.9.7/Include/internal -IObjects -IInclude -IPython -I. -I../Python-3.9.7/Include -I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I. -D__USE_MINGW_ANSI_STDIO=1 -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Python-3.9.7/Include -I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I. -D__USE_MINGW_ANSI_STDIO=1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -D_WIN32_WINNT=0x0601 -DMS_DLL_ID='"3.9"' -fprofile-use -fprofile-correction -I../Python-3.9.7/Include/internal -IObjects -IInclude -IPython -I. -I../Python-3.9.7/Include -I../Python-3.9.7/PC -D__USE_MINGW_ANSI_STDIO=1 -I. -D__USE_MINGW_ANSI_STDIO=1" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" RCFLAGS = "-DFIELD3=7150 -O COFF --target=pe-x86-64" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "" SCRIPTDIR = "C:/msys64/mingw64/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lm -lversion -lshlwapi" SHLIB_SUFFIX = ".pyd" SHM_NEEDS_LIBRT = "0" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "4" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "8" SIZEOF_PTHREAD_KEY_T = "0" SIZEOF_PTHREAD_T = "0" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "2" SIZEOF__BOOL = "1" SO = ".cp39-mingw_x86_64.pyd" SOABI = "cpython-39" SRCDIRS = "Parser Parser/pegen Objects Python Modules Modules/_io Programs PC" SRC_GDB_HOOKS = "../Python-3.9.7/Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "0" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "./python.exe" TESTPYTHONOPTS = "" TESTRUNNER = "./python.exe ../Python-3.9.7/Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "C:/msys64/mingw64/share/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ../Python-3.9.7/Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VENVLAUNCHERDIR = "/mingw64/lib/python3.9/venv/scripts/nt" VERSION = "3.9" VPATH = "C:/M/mingw-w64-python/src/Python-3.9.7" VPATH_b2h = "C:/M/mingw-w64-python/src/Python-3.9.7" WINDOW_HAS_FLAGS = "1" WINDRES = "windres" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "C:/M/mingw-w64-python/src/build-x86_64" abs_builddir_b2h = "C:/M/mingw-w64-python/src/build-x86_64" abs_srcdir = "C:/M/mingw-w64-python/src/Python-3.9.7" abs_srcdir_b2h = "C:/M/mingw-w64-python/src/Python-3.9.7" base = "C:/msys64/mingw64" datarootdir = "C:/msys64/mingw64/share" exec_prefix = "C:/msys64/mingw64" installed_base = "C:/msys64/mingw64" installed_platbase = "C:/msys64/mingw64" platbase = "C:/msys64/mingw64" platlibdir = "lib" prefix = "C:/a/msys64/mingw64" prefix_b2h = "C:/a/msys64/mingw64" projectbase = "C:/msys64/mingw64/bin" py_version = "3.9.7" py_version_nodot = "39" py_version_short = "3.9" srcdir = "C:/msys64/mingw64/lib/python3.9/config-3.9" srcdir_b2h = "C:/M/mingw-w64-python/src/Python-3.9.7" userbase = "C:/Users/user/.local" maturin-1.7.4/sysconfig/graalpy-macos-3.8-arm64.txt000066400000000000000000000103131467514767100217630ustar00rootroot00000000000000Platform: "darwin-22.3.0-arm64" Python version: "3.8" Current installation scheme: "graalpy" Paths: data = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" include = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/include" platinclude = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/include" platlib = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib/python3.8/site-packages" platstdlib = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib-python/3" purelib = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib/python3.8/site-packages" scripts = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/bin" stdlib = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib-python/3" Variables: ABIFLAGS = "" AR = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/ar" ARFLAGS = "rc" CC = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/graalvm-native-clang" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-command-line-argument -stdlib=libc++ -DNDEBUG -DGRAALVM_PYTHON_LLVM -D_GNU_SOURCE=1" CFLAGS_DEFAULT = "-Wno-unused-command-line-argument -stdlib=libc++ -DNDEBUG -DGRAALVM_PYTHON_LLVM" CONFINCLUDEPY = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/include" CPPFLAGS = "-I. -I/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/include" CXX = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/graalvm-native-clang++" EXE = "" EXT_SUFFIX = ".graalpy-38-native-aarch64-darwin.dylib" INCLUDEPY = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/include" LD = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/graalvm-native-ld" LDFLAGS = "-bundle -undefined dynamic_lookup" LDLIBRARY = "libpython.graalpy-38-native-aarch64-darwin.dylib" LDSHARED = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/graalvm-native-clang -bundle -undefined dynamic_lookup" LDSHARED_LINUX = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/graalvm-native-clang -shared -fPIC" LIBDIR = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib-graalpython" MULTIARCH = "aarch64-darwin" NM = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/nm" OPT = "-stdlib=libc++ -DNDEBUG" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" Py_HASH_ALGORITHM = "0" RANLIB = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/llvm/native/bin/ranlib" SHLIB_SUFFIX = ".dylib" SO = ".graalpy-38-native-aarch64-darwin.dylib" SOABI = "graalpy-38-native-aarch64-darwin" USE_GNU_SOURCE = "-D_GNU_SOURCE=1" VERSION = "3.8" abiflags = "" base = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" exec_prefix = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" installed_base = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" installed_platbase = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" platbase = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" prefix = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python" projectbase = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/bin" py_version = "3.8.5" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/Library/Java/JavaVirtualMachines/graalvm-ce-java19-22.3.1/Contents/Home/languages/python/lib-python/3/config-3.8-aarch64-darwin" userbase = "/Users/messense/.local"maturin-1.7.4/sysconfig/nogil-linux-3.9.txt000066400000000000000000000513231467514767100205510ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr/local" include = "/usr/local/include/python3.9" platinclude = "/usr/local/include/python3.9" platlib = "/usr/local/lib/python3.9/site-packages" platstdlib = "/usr/local/lib/python3.9" purelib = "/usr/local/lib/python3.9/site-packages" scripts = "/usr/local/bin" stdlib = "/usr/local/lib/python3.9" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/usr/local/bin" BINLIBDEST = "/usr/local/lib/python3.9" BLDLIBRARY = "-L. -lpython3.9" BLDSHARED = "gcc -pthread -shared" BUILDEXE = "" BUILDPYTHON = "python" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "" CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "" CONFIGURE_LDFLAGS = "" CONFIGURE_LDFLAGS_NODIST = "" CONFIG_ARGS = "'--build=x86_64-linux-gnu' '--enable-loadable-sqlite-extensions' '--enable-optimizations' '--enable-option-checking=fatal' '--enable-shared' '--with-system-expat' '--with-system-ffi' 'build_alias=x86_64-linux-gnu'" CONFINCLUDEDIR = "/usr/local/include" CONFINCLUDEPY = "/usr/local/include/python3.9" COREPYTHONPATH = "" COVERAGE_INFO = "/usr/src/python/coverage.info" COVERAGE_REPORT = "/usr/src/python/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-I. -I./Include" CXX = "g++ -pthread" DESTDIRS = "/usr/local /usr/local/lib /usr/local/lib/python3.9 /usr/local/lib/python3.9/lib-dynload" DESTLIB = "/usr/local/lib/python3.9" DESTPATH = "" DESTSHARED = "/usr/local/lib/python3.9/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".nogil-39b-x86_64-linux-gnu.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GITBRANCH = "" GITTAG = "" GITVERSION = "" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LIBUUID = "1" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_J1939_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LINUX_WAIT_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_CLOCKWAIT = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "1" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-linux-gnu" INCLDIRSTOMAKE = "/usr/local/include /usr/local/include /usr/local/include/python3.9 /usr/local/include/python3.9" INCLUDEDIR = "/usr/local/include" INCLUDEPY = "/usr/local/include/python3.9" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.9.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared" LDFLAGS = "" LDLIBRARY = "libpython3.9.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared" LDVERSION = "3.9" LIBC = "" LIBDEST = "/usr/local/lib/python3.9" LIBDIR = "/usr/local/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/local/lib/pkgconfig" LIBPL = "/usr/local/lib/python3.9/config-3.9-x86_64-linux-gnu" LIBPYTHON = "" LIBRARY = "libpython3.9.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/local/lib/python3.9" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "1" MAKESETUP = "./Modules/makesetup" MANDIR = "/usr/local/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _peg_parser _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/_peg_parser.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "x86_64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpython3.so" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./python -E" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -std=gnu11 -I./Include/internal -I./Include/mimalloc -I. -I./Include -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall" PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -std=gnu11 -I./Include/internal -I./Include/mimalloc" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -std=gnu11 -I./Include/internal -I./Include/mimalloc -I. -I./Include -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "" PY_CPPFLAGS = "-I. -I./Include" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "" PY_LDFLAGS_NODIST = "" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-use -fprofile-correction -std=gnu11 -I./Include/internal -I./Include/mimalloc -I. -I./Include -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/usr/src/python" SCRIPTDIR = "/usr/local/lib" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".nogil-39b-x86_64-linux-gnu.so" SOABI = "nogil-39b-x86_64-linux-gnu" SRCDIRS = "Parser Parser/pegen Objects Objects/mimalloc Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/usr/src/python ./python" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/usr/src/python ./python ./Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3.9 ./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.9" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/usr/src/python" abs_srcdir = "/usr/src/python" base = "/usr/local" datarootdir = "/usr/local/share" exec_prefix = "/usr/local" installed_base = "/usr/local" installed_platbase = "/usr/local" platbase = "/usr/local" platlibdir = "lib" prefix = "/usr/local" projectbase = "/usr/local/bin" py_version = "3.9.10" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/local/lib/python3.9/config-3.9-x86_64-linux-gnu" userbase = "/root/.local" maturin-1.7.4/sysconfig/pypy-linux-3.7-7.3.txt000066400000000000000000000040621467514767100207430ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.7" Current installation scheme: "pypy" Paths: data = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" include = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/include" platinclude = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/include" platlib = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/site-packages" platstdlib = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/lib-pypy" purelib = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/site-packages" scripts = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/bin" stdlib = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/lib-pypy" Variables: AR = "ar" ARFLAGS = "rc" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "g++ -pthread" EXE = "" EXT_SUFFIX = ".pypy37-pp73-x86_64-linux-gnu.so" GNULD = "yes" INCLUDEPY = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/include" LDSHARED = "gcc -pthread -shared" LIBDIR = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/bin" LIBRARY = "" OPT = "-DNDEBUG -O2" SHLIB_SUFFIX = ".so" SO = ".pypy37-pp73-x86_64-linux-gnu.so" SOABI = "pypy37-pp73" abiflags = "" base = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" exec_prefix = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" installed_platbase = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" platbase = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" prefix = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3" projectbase = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/bin" py_version = "3.7.9" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/home/konsti/.pyenv/versions/pypy3.7-7.3.3/lib-pypy/config-3.7" userbase = "/home/konsti/.local" User: data = "/home/konsti/.local" include = "/home/konsti/.local/include/pypy3.7" platlib = "/home/konsti/.local/lib/pypy3.7/site-packages" platstdlib = "/home/konsti/.local/lib/pypy3.7" purelib = "/home/konsti/.local/lib/pypy3.7/site-packages" scripts = "/home/konsti/.local/bin" stdlib = "/home/konsti/.local/lib/pypy3.7" maturin-1.7.4/sysconfig/pypy-linux-ppc64le-3.7-7.3.txt000066400000000000000000000033711467514767100222200ustar00rootroot00000000000000Platform: "linux-ppc64le" Python version: "3.7" Current installation scheme: "pypy" Paths: data = "/usr/lib64/pypy3.7" include = "/usr/lib64/pypy3.7/include" platinclude = "/usr/lib64/pypy3.7/include" platlib = "/usr/lib64/pypy3.7/site-packages" platstdlib = "/usr/lib64/pypy3.7/lib_pypy" purelib = "/usr/lib64/pypy3.7/site-packages" scripts = "/usr/lib64/pypy3.7/bin" stdlib = "/usr/lib64/pypy3.7/lib_pypy" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy37-pp73-ppc_64-linux-gnu.so" INCLUDEPY = "/usr/lib64/pypy3.7/include" LDLIBRARY = "libpypy3-c.so" LDSHARED = "cc -pthread -shared" LDVERSION = "3.7" LIBDIR = "/usr/lib64/pypy3.7/bin" LIBRARY = "" MULTIARCH = "ppc_64-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy37-pp73-ppc_64-linux-gnu.so" SOABI = "pypy37-pp73" VERSION = "3.7" abiflags = "" base = "/usr/lib64/pypy3.7" exec_prefix = "/usr/lib64/pypy3.7" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr/lib64/pypy3.7" installed_platbase = "/usr/lib64/pypy3.7" platbase = "/usr/lib64/pypy3.7" prefix = "/usr/lib64/pypy3.7" projectbase = "/usr/lib64/pypy3.7/bin" py_version = "3.7.13" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/usr/lib64/pypy3.7/lib_pypy/config-3.7-ppc_64-linux-gnu" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.7" platlib = "/root/.local/lib/pypy3.7/site-packages" platstdlib = "/root/.local/lib/pypy3.7" purelib = "/root/.local/lib/pypy3.7/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib/pypy3.7" maturin-1.7.4/sysconfig/pypy-linux-ppc64le-3.8-7.3.txt000066400000000000000000000035251467514767100222220ustar00rootroot00000000000000Platform: "linux-ppc64le" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/lib64/pypy3.8" include = "/usr/lib64/pypy3.8/include/pypy3.8" platinclude = "/usr/lib64/pypy3.8/include/pypy3.8" platlib = "/usr/lib64/pypy3.8/lib/pypy3.8/site-packages" platstdlib = "/usr/lib64/pypy3.8/lib/pypy3.8" purelib = "/usr/lib64/pypy3.8/lib/pypy3.8/site-packages" scripts = "/usr/lib64/pypy3.8/bin" stdlib = "/usr/lib64/pypy3.8/lib/pypy3.8" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy38-pp73-ppc_64-linux-gnu.so" INCLUDEPY = "/usr/lib64/pypy3.8/include/pypy3.8" LDFLAGS = "-Wl,-Bsymbolic-functions" LDLIBRARY = "libpypy3-c.so" LDSHARED = "cc -pthread -shared -Wl,-Bsymbolic-functions" LDVERSION = "3.8" LIBDIR = "/usr/lib64/pypy3.8/bin" LIBRARY = "" MULTIARCH = "ppc_64-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy38-pp73-ppc_64-linux-gnu.so" SOABI = "pypy38-pp73" VERSION = "3.8" abiflags = "" base = "/usr/lib64/pypy3.8" exec_prefix = "/usr/lib64/pypy3.8" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr/lib64/pypy3.8" installed_platbase = "/usr/lib64/pypy3.8" platbase = "/usr/lib64/pypy3.8" prefix = "/usr/lib64/pypy3.8" projectbase = "/usr/lib64/pypy3.8/bin" py_version = "3.8.13" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/lib64/pypy3.8/bin" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.8" platlib = "/root/.local/lib/pypy3.8/site-packages" platstdlib = "/root/.local/lib/pypy3.8" purelib = "/root/.local/lib/pypy3.8/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib/pypy3.8" maturin-1.7.4/sysconfig/pypy-linux-ppc64le-3.9-7.3.txt000066400000000000000000000033341467514767100222210ustar00rootroot00000000000000Platform: "linux-ppc64le" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr" include = "/usr/include/pypy3.9" platinclude = "/usr/include/pypy3.9" platlib = "/usr/lib64/pypy3.9/site-packages" platstdlib = "/usr/lib64/pypy3.9" purelib = "/usr/lib/pypy3.9/site-packages" scripts = "/usr/bin" stdlib = "/usr/lib64/pypy3.9" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy39-pp73-ppc_64-linux-gnu.so" INCLUDEPY = "/usr/include/pypy3.9" LDFLAGS = "-Wl,-Bsymbolic-functions" LDLIBRARY = "libpypy3.9-c.so" LDSHARED = "cc -pthread -shared -Wl,-Bsymbolic-functions" LDVERSION = "3.9" LIBDIR = "/usr/bin" LIBRARY = "" MULTIARCH = "ppc_64-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy39-pp73-ppc_64-linux-gnu.so" SOABI = "pypy39-pp73" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/usr/../etc/zoneinfo" VERSION = "3.9" abiflags = "" base = "/usr" exec_prefix = "/usr" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr" installed_platbase = "/usr" platbase = "/usr" platlibdir = "lib64" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.9.12" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/bin" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.9" platlib = "/root/.local/lib64/pypy3.9/site-packages" platstdlib = "/root/.local/lib64/pypy3.9" purelib = "/root/.local/lib/pypy3.9/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib64/pypy3.9" maturin-1.7.4/sysconfig/pypy-linux-s390x-3.7-7.3.txt000066400000000000000000000033631467514767100216320ustar00rootroot00000000000000Platform: "linux-s390x" Python version: "3.7" Current installation scheme: "pypy" Paths: data = "/usr/lib64/pypy3.7" include = "/usr/lib64/pypy3.7/include" platinclude = "/usr/lib64/pypy3.7/include" platlib = "/usr/lib64/pypy3.7/site-packages" platstdlib = "/usr/lib64/pypy3.7/lib_pypy" purelib = "/usr/lib64/pypy3.7/site-packages" scripts = "/usr/lib64/pypy3.7/bin" stdlib = "/usr/lib64/pypy3.7/lib_pypy" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy37-pp73-s390x-linux-gnu.so" INCLUDEPY = "/usr/lib64/pypy3.7/include" LDLIBRARY = "libpypy3-c.so" LDSHARED = "cc -pthread -shared" LDVERSION = "3.7" LIBDIR = "/usr/lib64/pypy3.7/bin" LIBRARY = "" MULTIARCH = "s390x-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy37-pp73-s390x-linux-gnu.so" SOABI = "pypy37-pp73" VERSION = "3.7" abiflags = "" base = "/usr/lib64/pypy3.7" exec_prefix = "/usr/lib64/pypy3.7" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr/lib64/pypy3.7" installed_platbase = "/usr/lib64/pypy3.7" platbase = "/usr/lib64/pypy3.7" prefix = "/usr/lib64/pypy3.7" projectbase = "/usr/lib64/pypy3.7/bin" py_version = "3.7.13" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/usr/lib64/pypy3.7/lib_pypy/config-3.7-s390x-linux-gnu" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.7" platlib = "/root/.local/lib/pypy3.7/site-packages" platstdlib = "/root/.local/lib/pypy3.7" purelib = "/root/.local/lib/pypy3.7/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib/pypy3.7" maturin-1.7.4/sysconfig/pypy-linux-s390x-3.8-7.3.txt000066400000000000000000000035201467514767100216260ustar00rootroot00000000000000Platform: "linux-s390x" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/usr/lib64/pypy3.8" include = "/usr/lib64/pypy3.8/include/pypy3.8" platinclude = "/usr/lib64/pypy3.8/include/pypy3.8" platlib = "/usr/lib64/pypy3.8/lib/pypy3.8/site-packages" platstdlib = "/usr/lib64/pypy3.8/lib/pypy3.8" purelib = "/usr/lib64/pypy3.8/lib/pypy3.8/site-packages" scripts = "/usr/lib64/pypy3.8/bin" stdlib = "/usr/lib64/pypy3.8/lib/pypy3.8" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy38-pp73-s390x-linux-gnu.so" INCLUDEPY = "/usr/lib64/pypy3.8/include/pypy3.8" LDFLAGS = "-Wl,-Bsymbolic-functions" LDLIBRARY = "libpypy3-c.so" LDSHARED = "cc -pthread -shared -Wl,-Bsymbolic-functions" LDVERSION = "3.8" LIBDIR = "/usr/lib64/pypy3.8/bin" LIBRARY = "" MULTIARCH = "s390x-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy38-pp73-s390x-linux-gnu.so" SOABI = "pypy38-pp73" VERSION = "3.8" abiflags = "" base = "/usr/lib64/pypy3.8" exec_prefix = "/usr/lib64/pypy3.8" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr/lib64/pypy3.8" installed_platbase = "/usr/lib64/pypy3.8" platbase = "/usr/lib64/pypy3.8" prefix = "/usr/lib64/pypy3.8" projectbase = "/usr/lib64/pypy3.8/bin" py_version = "3.8.13" py_version_nodot = "38" py_version_short = "3.8" srcdir = "/usr/lib64/pypy3.8/bin" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.8" platlib = "/root/.local/lib/pypy3.8/site-packages" platstdlib = "/root/.local/lib/pypy3.8" purelib = "/root/.local/lib/pypy3.8/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib/pypy3.8" maturin-1.7.4/sysconfig/pypy-linux-s390x-3.9-7.3.txt000066400000000000000000000033261467514767100216330ustar00rootroot00000000000000Platform: "linux-s390" Python version: "3.9" Current installation scheme: "posix_prefix" Paths: data = "/usr" include = "/usr/include/pypy3.9" platinclude = "/usr/include/pypy3.9" platlib = "/usr/lib64/pypy3.9/site-packages" platstdlib = "/usr/lib64/pypy3.9" purelib = "/usr/lib/pypy3.9/site-packages" scripts = "/usr/bin" stdlib = "/usr/lib64/pypy3.9" Variables: ABIFLAGS = "" AR = "ar" ARFLAGS = "rc" CC = "cc -pthread" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "c++ -pthread" EXE = "" EXT_SUFFIX = ".pypy39-pp73-s390x-linux-gnu.so" INCLUDEPY = "/usr/include/pypy3.9" LDFLAGS = "-Wl,-Bsymbolic-functions" LDLIBRARY = "libpypy3.9-c.so" LDSHARED = "cc -pthread -shared -Wl,-Bsymbolic-functions" LDVERSION = "3.9" LIBDIR = "/usr/bin" LIBRARY = "" MULTIARCH = "s390x-linux-gnu" OPT = "-DNDEBUG -O2" Py_DEBUG = "0" Py_ENABLE_SHARED = "0" SHLIB_SUFFIX = ".so" SIZEOF_VOID_P = "8" SO = ".pypy39-pp73-s390x-linux-gnu.so" SOABI = "pypy39-pp73" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/usr/../etc/zoneinfo" VERSION = "3.9" abiflags = "" base = "/usr" exec_prefix = "/usr" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/usr" installed_platbase = "/usr" platbase = "/usr" platlibdir = "lib64" prefix = "/usr" projectbase = "/usr/bin" py_version = "3.9.12" py_version_nodot = "39" py_version_short = "3.9" srcdir = "/usr/bin" userbase = "/root/.local" User: data = "/root/.local" include = "/root/.local/include/pypy3.9" platlib = "/root/.local/lib64/pypy3.9/site-packages" platstdlib = "/root/.local/lib64/pypy3.9" purelib = "/root/.local/lib/pypy3.9/site-packages" scripts = "/root/.local/bin" stdlib = "/root/.local/lib64/pypy3.9" maturin-1.7.4/sysconfig/pypy-macos-3.7-7.3.txt000066400000000000000000000043601467514767100207070ustar00rootroot00000000000000Platform: "macosx-10.7-x86_64" Python version: "3.7" Current installation scheme: "pypy" Paths: data = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" include = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/include" platinclude = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/include" platlib = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/site-packages" platstdlib = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/lib-pypy" purelib = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/site-packages" scripts = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/bin" stdlib = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/lib-pypy" Variables: AR = "ar" ARFLAGS = "rc" CC = "gcc -pthread -arch x86_64" CCSHARED = "-fPIC" CFLAGS = "-DNDEBUG -O2" CXX = "g++ -pthread -arch x86_64" EXE = "" EXT_SUFFIX = ".pypy37-pp73-darwin.so" GNULD = "yes" INCLUDEPY = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/include" LDLIBRARY = "libpypy3-c.so" LDSHARED = "gcc -pthread -arch x86_64 -shared -undefined dynamic_lookup" LIBDIR = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/bin" LIBRARY = "" MACOSX_DEPLOYMENT_TARGET = "10.7" OPT = "-DNDEBUG -O2" SHLIB_SUFFIX = ".so" SO = ".pypy37-pp73-darwin.so" SOABI = "pypy37-pp73" abiflags = "" base = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" exec_prefix = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" implementation = "PyPy" implementation_lower = "pypy" installed_base = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" installed_platbase = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" platbase = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" prefix = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5" projectbase = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/bin" py_version = "3.7.10" py_version_nodot = "37" py_version_short = "3.7" srcdir = "/Users/messense/.pyenv/versions/pypy3.7-7.3.5/lib-pypy/config-3.7" userbase = "/Users/messense/.local" User: data = "/Users/messense/.local" include = "/Users/messense/.local/include/pypy3.7" platlib = "/Users/messense/.local/lib/pypy3.7/site-packages" platstdlib = "/Users/messense/.local/lib/pypy3.7" purelib = "/Users/messense/.local/lib/pypy3.7/site-packages" scripts = "/Users/messense/.local/bin" stdlib = "/Users/messense/.local/lib/pypy3.7"maturin-1.7.4/sysconfig/pypy-windows-3.7-7.3.txt000066400000000000000000000056261467514767100213050ustar00rootroot00000000000000Platform: "win-amd64" Python version: "3.7" Current installation scheme: "pypy_nt" Paths: data = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" include = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\include" platinclude = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\include" platlib = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\site-packages" platstdlib = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\lib-pypy" purelib = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\site-packages" scripts = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\Scripts" stdlib = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\lib-pypy" Variables: BINDIR = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" BINLIBDEST = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\lib-pypy" EXE = ".exe" EXT_SUFFIX = ".pypy37-pp73-win_amd64.pyd" INCLUDEPY = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\include" LIBDEST = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64\lib-pypy" LIBRARY = "" SO = ".pypy37-pp73-win_amd64.pyd" SOABI = "pypy37-pp73" VERSION = "37" abiflags = "" base = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" exec_prefix = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" implementation = "PyPy" implementation_lower = "pypy" installed_base = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" installed_platbase = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" platbase = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" prefix = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" projectbase = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" py_version = "3.7.10" py_version_nodot = "37" py_version_short = "3.7" srcdir = "C:\Users\messense\Downloads\pypy3.7-v7.3.5-win64\pypy3.7-v7.3.5-win64" userbase = "C:\Users\messense\AppData\Roaming\PyPy" User: data = "C:\Users\messense\AppData\Roaming\PyPy" include = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37\Include" platlib = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37\site-packages" platstdlib = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37" purelib = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37\site-packages" scripts = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37\Scripts" stdlib = "C:\Users\messense\AppData\Roaming\PyPy\PyPy37" maturin-1.7.4/sysconfig/pyston-3.8.txt000066400000000000000000000640721467514767100176440ustar00rootroot00000000000000Platform: "linux-x86_64" Python version: "3.8" Current installation scheme: "posix_prefix" Paths: data = "/root/pyston_2.3.5" include = "/root/pyston_2.3.5/include/python3.8-pyston2.3" platinclude = "/root/pyston_2.3.5/include/python3.8-pyston2.3" platlib = "/root/pyston_2.3.5/lib/python3.8-pyston2.3/site-packages" platstdlib = "/root/pyston_2.3.5/lib/python3.8-pyston2.3" purelib = "/root/pyston_2.3.5/lib/python3.8-pyston2.3/site-packages" scripts = "/root/pyston_2.3.5/bin" stdlib = "/root/pyston_2.3.5/lib/python3.8-pyston2.3" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_GENUINE_CPLUSPLUS = "0" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AOT_DIR = "../aot_pic" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wno-unused-result -Wsign-compare" BASECPPFLAGS = "-IObjects -IInclude -IPython" BASEMODLIBS = "" BINDIR = "/usr/bin" BINLIBDEST = "/usr/lib/python3.8-pyston2.3" BLDLIBRARY = "-L. -lpython3.8-pyston2.3" BLDSHARED = "gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro" BUILDEXE = "" BUILDPYTHON = "pyston" BUILD_GNU_TYPE = "x86_64-pc-linux-gnu" BYTESTR_DEPS = "\" CC = "gcc -pthread" CCSHARED = "-fPIC" CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security" CFLAGSFORSHARED = "-fPIC" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CLANG_RT_PROFILE = "$(shell /src/build/build/Release/llvm/bin/clang --print-resource-dir)/lib/linux/libclang_rt.profile-$(shell uname -m).a" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT" CONFIGURE_CFLAGS_NODIST = "-fstack-protector -specs=/src/build/pyston/tools/no-pie-compile.specs -D_FORTIFY_SOURCE=2 -fno-reorder-blocks-and-partition -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration" CONFIGURE_CPPFLAGS = "-Wdate-time -D_FORTIFY_SOURCE=2" CONFIGURE_LDFLAGS = "-Wl,-Bsymbolic-functions -Wl,-z,relro" CONFIGURE_LDFLAGS_NODIST = "-specs=/src/build/pyston/tools/no-pie-link.specs -Wl,-z,relro -Wl,--emit-relocs -fno-semantic-interposition -fsemantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" CONFIG_ARGS = "'--prefix=/usr' '--enable-optimizations' '--with-lto' '--disable-debugging-features' '--enable-shared' '--enable-configure' 'CFLAGS=-g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'PROFILE_TASK=../../Lib/test/regrtest.py -j 0 -unone,decimal -x test_posix test_asyncio test_cmd_line_script test_compiler test_concurrent_futures test_ctypes test_dbm_dumb test_dbm_ndbm test_distutils test_ensurepip test_ftplib test_gdb test_httplib test_imaplib test_ioctl test_linuxaudiodev test_multiprocessing test_nntplib test_ossaudiodev test_poplib test_pydoc test_signal test_socket test_socketserver test_ssl test_subprocess test_sundry test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_venv test_zipimport_support || true'" CONFINCLUDEDIR = "/usr/include" CONFINCLUDEPY = "/usr/include/python3.8-pyston2.3" COREPYTHONPATH = "" COVERAGE_INFO = "/src/build/build/releaseshared_build/coverage.info" COVERAGE_REPORT = "/src/build/build/releaseshared_build/lcov-report" COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report"" CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../../Include -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2" CXX = "g++ -pthread" DESTDIRS = "/usr /usr/lib /usr/lib/python3.8-pyston2.3 /usr/lib/python3.8-pyston2.3/lib-dynload" DESTLIB = "/usr/lib/python3.8-pyston2.3" DESTPATH = "" DESTSHARED = "/usr/lib/python3.8-pyston2.3/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".pyston-23-x86_64-linux-gnu.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FLOCK_NEEDS_LIBBSD = "0" GETPGRP_HAVE_ARG = "0" GETTIMEOFDAY_NO_TZ = "0" GITBRANCH = "git --git-dir ../../.git name-rev --name-only HEAD" GITTAG = "git --git-dir ../../.git describe --all --always" GITVERSION = "git --git-dir ../../.git rev-parse --short HEAD" GNULD = "yes" HAVE_ACCEPT4 = "1" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "0" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "1" HAVE_ATANH = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "1" HAVE_BLUETOOTH_BLUETOOTH_H = "1" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "0" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_CHFLAGS = "0" HAVE_CHOWN = "1" HAVE_CHROOT = "1" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_SETTIME = "1" HAVE_COMPUTED_GOTOS = "1" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_COPYSIGN = "1" HAVE_COPY_FILE_RANGE = "1" HAVE_CRYPT_H = "1" HAVE_CRYPT_R = "1" HAVE_CTERMID = "1" HAVE_CTERMID_R = "0" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "1" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DECL_ISFINITE = "1" HAVE_DECL_ISINF = "1" HAVE_DECL_ISNAN = "1" HAVE_DECL_RTLD_DEEPBIND = "1" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "1" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "1" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "1" HAVE_EPOLL_CREATE1 = "1" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "1" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "1" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "1" HAVE_FINITE = "1" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "1" HAVE_GAI_STRERROR = "1" HAVE_GAMMA = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "1" HAVE_GCC_ASM_FOR_X87 = "1" HAVE_GCC_UINT128_T = "1" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETENTROPY = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYNAME = "0" HAVE_GETHOSTBYNAME_R = "1" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "1" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "1" HAVE_GETRANDOM_SYSCALL = "1" HAVE_GETRESGID = "1" HAVE_GETRESUID = "1" HAVE_GETSID = "1" HAVE_GETSPENT = "1" HAVE_GETSPNAM = "1" HAVE_GETTIMEOFDAY = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "1" HAVE_HYPOT = "1" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "0" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "0" HAVE_LCHMOD = "0" HAVE_LCHOWN = "1" HAVE_LGAMMA = "1" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "1" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_CAN_BCM_H = "1" HAVE_LINUX_CAN_H = "1" HAVE_LINUX_CAN_RAW_FD_FRAMES = "1" HAVE_LINUX_CAN_RAW_H = "1" HAVE_LINUX_MEMFD_H = "1" HAVE_LINUX_NETLINK_H = "1" HAVE_LINUX_QRTR_H = "1" HAVE_LINUX_RANDOM_H = "1" HAVE_LINUX_TIPC_H = "1" HAVE_LINUX_VM_SOCKETS_H = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "1" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "1" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "1" HAVE_NCURSES_H = "1" HAVE_NDIR_H = "0" HAVE_NETPACKET_PACKET_H = "1" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_OPENAT = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE2 = "1" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "1" HAVE_POSIX_FALLOCATE = "1" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "1" HAVE_PRLIMIT = "1" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "1" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "1" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTY_H = "1" HAVE_PUTENV = "1" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "1" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "1" HAVE_RL_CATCH_SIGNAL = "1" HAVE_RL_COMPLETION_APPEND_CHARACTER = "1" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "1" HAVE_ROUND = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "1" HAVE_SCHED_SETAFFINITY = "1" HAVE_SCHED_SETPARAM = "1" HAVE_SCHED_SETSCHEDULER = "1" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "1" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "1" HAVE_SETPGRP = "1" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "1" HAVE_SETRESGID = "1" HAVE_SETRESUID = "1" HAVE_SETREUID = "1" HAVE_SETSID = "1" HAVE_SETUID = "1" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "1" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "1" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "1" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "1" HAVE_SOCKADDR_SA_LEN = "0" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "1" HAVE_STAT_TV_NSEC2 = "0" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRDUP = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "0" HAVE_STROPTS_H = "1" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "0" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "0" HAVE_STRUCT_STAT_ST_GEN = "0" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "1" HAVE_SYS_EVENT_H = "0" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "0" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "1" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "1" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "1" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "1" HAVE_TGAMMA = "1" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "1" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TZNAME = "0" HAVE_UCS4_TCL = "0" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_UNSETENV = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "0" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "0" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "1" HAVE_WRITEV = "1" HAVE_X509_VERIFY_PARAM_SET1_HOST = "1" HAVE_ZLIB_COPY = "1" HAVE__GETPTY = "0" HOST_GNU_TYPE = "x86_64-pc-linux-gnu" IMPLEMENTATION_NAME = ""pyston"" INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.8-pyston2.3 /usr/include/python3.8-pyston2.3" INCLUDEDIR = "/usr/include" INCLUDEPY = "/usr/include/python3.8-pyston2.3" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.8-pyston2.3.so.1.0" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions" LDFLAGS = "-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.8-pyston2.3.so" LDLIBRARYDIR = "" LDSHARED = "gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro" LDVERSION = "3.8-pyston2.3" LIBC = "" LIBDEST = "/usr/lib/python3.8-pyston2.3" LIBDIR = "/root/pyston_2.3.5/lib" LIBFFI_INCLUDEDIR = "" LIBM = "-lm" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/usr/lib/pkgconfig" LIBPL = "/usr/lib/python3.8-pyston2.3/config-3.8-pyston2.3-x86_64-linux-gnu" LIBPYTHON = "" LIBRARY = "libpython3.8-pyston2.3.a" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-lcrypt -lpthread -ldl -lutil -lm" LIBSUBDIRS = "tkinter tkinter/test tkinter/test/test_tkinter \" LINKCC = "gcc -pthread" LINKFORSHARED = "-Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "" LLVM_PROF_MERGER = "true" LN = "ln" LOCALMODLIBS = "" MACHDEP = "linux" MACHDEP_OBJS = "" MACHDESTLIB = "/usr/lib/python3.8-pyston2.3" MACOSX_DEPLOYMENT_TARGET = "" MAINCC = "gcc -pthread" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "../../Modules/makesetup" MANDIR = "/usr/share/man" MKDIR_P = "/bin/mkdir -p" MODBUILT_NAMES = "posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "" MODOBJS = "Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o" MODULE_OBJS = "\" MULTIARCH = "x86_64-linux-gnu" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "" OPENSSL_LDFLAGS = "" OPENSSL_LIBS = "-lssl -lcrypto" OPT = "-DNDEBUG -g -fwrapv -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o" PGO_PROF_GEN_FLAG = "-fprofile-generate" PGO_PROF_USE_FLAG = "-fprofile-use -fprofile-correction" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "../../Lib/test/regrtest.py -j 0 -unone,decimal -x test_posix test_asyncio test_cmd_line_script test_compiler test_concurrent_futures test_ctypes test_dbm_dumb test_dbm_ndbm test_distutils test_ensurepip test_ftplib test_gdb test_httplib test_imaplib test_ioctl test_linuxaudiodev test_multiprocessing test_nntplib test_ossaudiodev test_poplib test_pydoc test_signal test_socket test_socketserver test_ssl test_subprocess test_sundry test_thread test_threaded_import test_threadedtempfile test_threading test_threading_local test_threadsignals test_venv test_zipimport_support || true" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1" PTHREAD_SYSTEM_SCHED_SUPPORTED = "1" PURIFY = "" PY3LIBRARY = "libpyston3.so" PYLONG_BITS_IN_DIGIT = "0" PYSTON_SPEEDUPS = "1" PYTHON = "pyston" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "./pyston -E" PYTHON_FOR_REGEN = "python3" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -fstack-protector -specs=/src/build/pyston/tools/no-pie-compile.specs -D_FORTIFY_SOURCE=2 -fno-reorder-blocks-and-partition -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I../../Include/internal -IObjects -IInclude -IPython -I. -I../../Include -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security" PY_CFLAGS_NODIST = "-fstack-protector -specs=/src/build/pyston/tools/no-pie-compile.specs -D_FORTIFY_SOURCE=2 -fno-reorder-blocks-and-partition -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I../../Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -fstack-protector -specs=/src/build/pyston/tools/no-pie-compile.specs -D_FORTIFY_SOURCE=2 -fno-reorder-blocks-and-partition -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I../../Include/internal -IObjects -IInclude -IPython -I. -I../../Include -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE" PY_CORE_LDFLAGS = "-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -specs=/src/build/pyston/tools/no-pie-link.specs -Wl,-z,relro -Wl,--emit-relocs -fno-semantic-interposition -fsemantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../../Include -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2" PY_DEBUGGING_FEATURES = "0" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = "-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro" PY_LDFLAGS_NODIST = "-specs=/src/build/pyston/tools/no-pie-link.specs -Wl,-z,relro -Wl,--emit-relocs -fno-semantic-interposition -fsemantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -DENABLE_AOT -g -O2 -fdebug-prefix-map=/src/build/pyston=. -fstack-protector-strong -Wformat -Werror=format-security -fstack-protector -specs=/src/build/pyston/tools/no-pie-compile.specs -D_FORTIFY_SOURCE=2 -fno-reorder-blocks-and-partition -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I../../Include/internal -IObjects -IInclude -IPython -I. -I../../Include -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "readelf" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "LD_LIBRARY_PATH=/src/build/build/releaseshared_build" SCRIPTDIR = "/usr/lib" SETPGRP_HAVE_ARG = "0" SGI_ABI = "@SGI_ABI@" SHELL = "/bin/sh" SHLIBS = "-lcrypt -lpthread -ldl -lutil -lm" SHLIB_SUFFIX = ".so" SHM_NEEDS_LIBRT = "1" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "16" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "16" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "4" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SO = ".pyston-23-x86_64-linux-gnu.so" SOABI = "pyston-23-x86_64-linux-gnu" SRCDIRS = "Parser Objects Python Modules Modules/_io Programs" SRC_GDB_HOOKS = "../../Tools/gdb/libpython.py" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "-lm" SYS_SELECT_WITH_SYS_TIME = "1" TCLTK_INCLUDES = "" TCLTK_LIBS = "" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "LD_LIBRARY_PATH=/src/build/build/releaseshared_build ./pyston" TESTPYTHONOPTS = "" TESTRUNNER = "LD_LIBRARY_PATH=/src/build/build/releaseshared_build ./pyston ../../Tools/scripts/run_tests.py" TESTTIMEOUT = "1200" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "python3 ../../Tools/scripts/update_file.py" USE_AOT = "true" USE_COMPUTED_GOTOS = "0" VERSION = "3.8-pyston2.3" VPATH = "../.." WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "0" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" abiflags = "" abs_builddir = "/src/build/build/releaseshared_build" abs_srcdir = "/src/build/build/releaseshared_build/../.." base = "/root/pyston_2.3.5" datarootdir = "/usr/share" exec_prefix = "/usr" installed_base = "/root/pyston_2.3.5" installed_platbase = "/root/pyston_2.3.5" platbase = "/root/pyston_2.3.5" prefix = "/usr" projectbase = "/root/pyston_2.3.5/bin" py_version = "3.8.12" py_version_nodot = "38" py_version_short = "3.8" pyston_version = "3.8-pyston2.3" srcdir = "/root/pyston_2.3.5/lib/python3.8-pyston2.3/config-3.8-pyston2.3-x86_64-linux-gnu" userbase = "/root/.local" maturin-1.7.4/test-crates/000077500000000000000000000000001467514767100154625ustar00rootroot00000000000000maturin-1.7.4/test-crates/cargo-mock/000077500000000000000000000000001467514767100175045ustar00rootroot00000000000000maturin-1.7.4/test-crates/cargo-mock/Cargo.lock000066400000000000000000000074251467514767100214210ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "anyhow" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" [[package]] name = "camino" version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ "serde", ] [[package]] name = "cargo-mock" version = "0.1.0" dependencies = [ "anyhow", "cargo_metadata", "serde_json", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "proc-macro2" version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "syn" version = "2.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "thiserror" version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" maturin-1.7.4/test-crates/cargo-mock/Cargo.toml000066400000000000000000000003541467514767100214360ustar00rootroot00000000000000[package] name = "cargo-mock" version = "0.1.0" authors = ["konstin "] edition = "2021" [[bin]] name = "cargo" path = "src/main.rs" [dependencies] anyhow = "1.0.38" cargo_metadata = "0.18.1" serde_json = "1.0.62" maturin-1.7.4/test-crates/cargo-mock/src/000077500000000000000000000000001467514767100202735ustar00rootroot00000000000000maturin-1.7.4/test-crates/cargo-mock/src/main.rs000066400000000000000000000140431467514767100215670ustar00rootroot00000000000000//! Caches cargo invocations to make maturin's tests faster //! //! For each invocation, a directory inside `target/test-cache` is created with the //! name ` ... ` with some args //! stripped for path length constrains. It contains a `cargo.stdout`, a `cargo.stderr` and all //! non-rlib artifacts. use anyhow::{bail, format_err, Context, Result}; use cargo_metadata::Message; use std::env; use std::fs; use std::fs::File; use std::io; use std::io::{BufRead, BufReader, BufWriter, Write}; use std::path::Path; use std::process::Command; fn run() -> Result<()> { let base_cache_path = Path::new("target").join("test-cache"); fs::create_dir_all(&base_cache_path).context("Couldn't create cache dir")?; let env_args_os_str = env::var_os("PYTHON_SYS_EXECUTABLE").unwrap_or_default(); let env_args = env_args_os_str .into_string() .map_err(|e| format_err!("PYTHON_SYS_EXECUTABLE is not valid unicode: {:?}", e))?; let cargo_args = env::args().skip(1).collect::>().join(" "); // Assumption: Slash is the only character in the cli args that we must not use for directory names let cwd = env::current_dir().unwrap().to_string_lossy().to_string(); let env_key = env_args.replace(" ", "-").replace("/", "-"); let cargo_key = cargo_args .replace("--message-format json", "") .replace("--target-dir test-crates/targets/", "") .replace("--quiet", "") .replace(&cwd, "") .replace(" ", "-") .replace("/", "-") .replace("-----C-link-arg=-s", ""); let cache_path = base_cache_path.join(&env_key).join(&cargo_key); let stdout_path = cache_path.join("cargo.stdout"); let stderr_path = cache_path.join("cargo.stderr"); let is_cached = stderr_path.is_file(); if is_cached { let context_message: &'static str = "Failed to read from capture file"; // Write the capture stdout and stderr back out let mut stdout_file = File::open(&stdout_path).context(context_message)?; let mut stdout = io::stdout(); io::copy(&mut stdout_file, &mut stdout).context(context_message)?; let mut stderr_file = File::open(stderr_path).context(context_message)?; let mut stderr = io::stderr(); io::copy(&mut stderr_file, &mut stderr).context(context_message)?; } else { fs::create_dir_all(&cache_path).context(format!( "Failed to create cache path {}", cache_path.display() ))?; // Unmock to run the real cargo let old_path = env::var_os("PATH").expect("PATH must be set"); let mut path_split = env::split_paths(&old_path); let first_path = path_split.next().expect("PATH must have a first entry"); if !first_path.join("cargo").is_file() && !first_path.join("cargo.exe").is_file() { bail!("The first part of PATH hasn't overwritten cargo"); } let remainder = env::join_paths(path_split).expect("Expected to be able to re-join PATH"); let output = Command::new("cargo") .args(env::args().skip(1)) .env("PATH", remainder) .output() .context("Starting cargo failed")?; if !output.status.success() { std::process::exit(output.status.code().unwrap()); } let mut stdout_writer = BufWriter::new(File::create(&stdout_path).context("Failed to create stdout path")?); for line in output.stdout.lines() { let line = line.context("Failed to read line from stdout")?; println!("{}", line); stdout_writer .write_all(line.as_bytes()) .context("Failed to write to stdout file")?; stdout_writer .write_all(b"\n") .context("Failed to write to stdout file")?; } File::create(stderr_path) .and_then(|mut file| file.write_all(&output.stderr)) .context("Failed to write to stderr file")?; } copy_artifacts(&cache_path, &stdout_path, is_cached).context("Copying the artifacts failed")?; Ok(()) } /// Copy over the compiler artifacts (binaries and .so) /// If this is a new run, copy it to the cache, otherwise copy it back to its original location fn copy_artifacts(cache_path: &Path, stdout_path: &Path, is_cached: bool) -> Result<()> { // Re-reading the file makes the code a lot easier let reader = BufReader::new(File::open(&stdout_path).context("Failed to create stdout path")?); for message in Message::parse_stream(reader) { match message.context("Failed to parse message coming from cargo")? { cargo_metadata::Message::CompilerArtifact(artifact) => { let artifacts = artifact .target .crate_types .clone() .into_iter() .zip(artifact.filenames.clone()); for (artifact_type, original_path) in artifacts { if artifact_type == "lib" { continue; } let cached_path = cache_path.join( original_path .file_name() .expect("Path from cargo should have a filename"), ); if is_cached { if !original_path.is_file() { fs::copy(cached_path, original_path) .context("Failed to copy the artifact from the cache")?; } } else { fs::copy(original_path, cached_path) .context("Failed to copy the artifact to the cache")?; }; } } _ => {} } } Ok(()) } fn main() { if let Err(e) = run() { eprintln!("💥 Cargo mock failed"); for cause in e.chain() { eprintln!(" Caused by: {}", cause); } std::process::exit(1); } } maturin-1.7.4/test-crates/cargo-update.sh000077500000000000000000000002741467514767100203770ustar00rootroot00000000000000#!/usr/bin/env bash for d in ./*; do if [ -d "$d" ]; then if [ -f "$d/Cargo.lock" ]; then cargo update --manifest-path "$d/Cargo.toml" echo "$d updated" fi fi done maturin-1.7.4/test-crates/cffi-mixed/000077500000000000000000000000001467514767100174755ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-mixed/.gitignore000066400000000000000000000000261467514767100214630ustar00rootroot00000000000000cffi_mixed/cffi_mixed maturin-1.7.4/test-crates/cffi-mixed/Cargo.lock000066400000000000000000000002151467514767100214000ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "cffi-mixed" version = "0.1.0" maturin-1.7.4/test-crates/cffi-mixed/Cargo.toml000066400000000000000000000002571467514767100214310ustar00rootroot00000000000000[package] name = "cffi-mixed" version = "0.1.0" authors = ["Armin Ronacher "] edition = "2021" [lib] name = "cffi_mixed" crate-type = ["cdylib"] maturin-1.7.4/test-crates/cffi-mixed/Readme.md000066400000000000000000000013761467514767100212230ustar00rootroot00000000000000# cffi-mixed A package for testing maturin with a cffi wrapper with a rust backend and a python wrapper. Read the [cffi guide](https://cffi.readthedocs.io/en/latest/index.html) to learn how to use the generated `ffi` and `lib` objects. The package contains a `Point` type implemented in rust and a `Line` class consisting of two points implemented in python ## Usage ```bash pip install . ``` ```python import cffi_mixed from cffi_mixed import Line point = cffi_mixed.lib.get_origin() point.x = 10 point.y = 10 assert cffi_mixed.lib.is_in_range(point, 15) assert Line(2, 5, 6, 8).length() == 5 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_cffi_mixed.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/cffi-mixed/cffi_mixed/000077500000000000000000000000001467514767100215725ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-mixed/cffi_mixed/__init__.py000066400000000000000000000001321467514767100236770ustar00rootroot00000000000000from .cffi_mixed import ffi, lib from .line import Line __all__ = ["ffi", "lib", "Line"] maturin-1.7.4/test-crates/cffi-mixed/cffi_mixed/line.py000066400000000000000000000011531467514767100230730ustar00rootroot00000000000000import math from .cffi_mixed import ffi class Line: def __init__(self, x1: float, y1: float, x2: float, y2: float): # You can pass a tuple/list or a dict as value for a public rust struct self.start = ffi.new("Point *", {"x": x1, "y": y1}) self.end = ffi.new("Point *", (x2, y2)) def length(self) -> float: """Returns the length of the line.""" return math.sqrt((self.end.x - self.start.x) ** 2 + (self.end.y - self.start.y) ** 2) def __str__(self) -> str: return "Line from ({},{}) to ({},{})".format(self.start.x, self.start.y, self.end.x, self.end.y) maturin-1.7.4/test-crates/cffi-mixed/check_installed/000077500000000000000000000000001467514767100226115ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-mixed/check_installed/check_installed.py000066400000000000000000000003541467514767100263010ustar00rootroot00000000000000#!/usr/bin/env python3 import cffi_mixed from cffi_mixed import Line point = cffi_mixed.lib.get_origin() point.x = 10 point.y = 10 assert cffi_mixed.lib.is_in_range(point, 15) assert Line(2, 5, 6, 8).length() == 5 print("SUCCESS") maturin-1.7.4/test-crates/cffi-mixed/pyproject.toml000066400000000000000000000002431467514767100224100ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "cffi-mixed" dependencies = ["cffi"] [tool.maturin] bindings = "cffi" maturin-1.7.4/test-crates/cffi-mixed/requirements_test.txt000066400000000000000000000000141467514767100240130ustar00rootroot00000000000000pytest cffi maturin-1.7.4/test-crates/cffi-mixed/src/000077500000000000000000000000001467514767100202645ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-mixed/src/lib.rs000066400000000000000000000013271467514767100214030ustar00rootroot00000000000000#[repr(C)] pub struct Point { pub x: f32, pub y: f32, } #[repr(u32)] pub enum Foo { A = 1, B, C, } #[no_mangle] pub unsafe extern "C" fn get_origin() -> Point { Point { x: 0.0, y: 0.0 } } #[no_mangle] pub unsafe extern "C" fn add_points(p1: Point, p2: Point) -> Point { Point { x: p1.x + p2.x, y: p1.y + p2.y, } } #[no_mangle] pub unsafe extern "C" fn is_in_range(point: Point, range: f32) -> bool { (point.x.powi(2) + point.y.powi(2)).sqrt() <= range } #[no_mangle] pub unsafe extern "C" fn print_foo(foo: *const Foo) { println!( "{}", match *foo { Foo::A => "a", Foo::B => "b", Foo::C => "c", } ); } maturin-1.7.4/test-crates/cffi-mixed/test_cffi_mixed.py000066400000000000000000000010171467514767100232020ustar00rootroot00000000000000#!/usr/bin/env python3 import cffi_mixed from cffi_mixed import Line def test_in_range(): point = cffi_mixed.lib.get_origin() point.x = 10 point.y = 10 assert not cffi_mixed.lib.is_in_range(point, 14) assert cffi_mixed.lib.is_in_range(point, 15) def test_ffi(): point = cffi_mixed.ffi.new("Point *", (10, 20)) assert point.x == 10 assert point.y == 20 def test_line(): line = Line(2, 5, 6, 8) assert line.length() == 5 assert str(line) == "Line from (2.0,5.0) to (6.0,8.0)" maturin-1.7.4/test-crates/cffi-mixed/tox.ini000066400000000000000000000001401467514767100210030ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest maturin-1.7.4/test-crates/cffi-pure/000077500000000000000000000000001467514767100173425ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-pure/.gitignore000066400000000000000000000000241467514767100213260ustar00rootroot00000000000000cffi_pure/cffi_pure maturin-1.7.4/test-crates/cffi-pure/Cargo.lock000066400000000000000000000002141467514767100212440ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "cffi-pure" version = "0.1.0" maturin-1.7.4/test-crates/cffi-pure/Cargo.toml000066400000000000000000000002551467514767100212740ustar00rootroot00000000000000[package] name = "cffi-pure" version = "0.1.0" authors = ["Armin Ronacher "] edition = "2021" [lib] name = "cffi_pure" crate-type = ["cdylib"] maturin-1.7.4/test-crates/cffi-pure/Readme.md000066400000000000000000000010351467514767100210600ustar00rootroot00000000000000# cffi-pure A package for testing a crate with cffi bindings with maturin. Read the [cffi guide](https://cffi.readthedocs.io/en/latest/index.html) to learn how to use the generated `ffi` and `lib` objects. ## Usage ```bash pip install . ``` ```python import cffi_pure point = cffi_pure.lib.get_origin() point.x = 10 point.y = 10 assert cffi_pure.lib.is_in_range(point, 15) ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_cffi_pure.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/cffi-pure/check_installed/000077500000000000000000000000001467514767100224565ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-pure/check_installed/check_installed.py000066400000000000000000000002451467514767100261450ustar00rootroot00000000000000#!/usr/bin/env python3 import cffi_pure point = cffi_pure.lib.get_origin() point.x = 10 point.y = 10 assert cffi_pure.lib.is_in_range(point, 15) print("SUCCESS") maturin-1.7.4/test-crates/cffi-pure/pyproject.toml000066400000000000000000000002421467514767100222540ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "cffi-pure" dependencies = ["cffi"] [tool.maturin] bindings = "cffi" maturin-1.7.4/test-crates/cffi-pure/requirements_test.txt000066400000000000000000000000141467514767100236600ustar00rootroot00000000000000pytest cffi maturin-1.7.4/test-crates/cffi-pure/src/000077500000000000000000000000001467514767100201315ustar00rootroot00000000000000maturin-1.7.4/test-crates/cffi-pure/src/lib.rs000066400000000000000000000011001467514767100212350ustar00rootroot00000000000000#[repr(C)] pub struct Point { pub x: f32, pub y: f32, } #[repr(u32)] pub enum Foo { A = 1, B, C, } #[no_mangle] pub unsafe extern "C" fn get_origin() -> Point { Point { x: 0.0, y: 0.0 } } #[no_mangle] pub unsafe extern "C" fn is_in_range(point: Point, range: f32) -> bool { (point.x.powi(2) + point.y.powi(2)).sqrt() <= range } #[no_mangle] pub unsafe extern "C" fn print_foo(foo: *const Foo) { println!( "{}", match *foo { Foo::A => "a", Foo::B => "b", Foo::C => "c", } ); } maturin-1.7.4/test-crates/cffi-pure/test_cffi_pure.py000066400000000000000000000005421467514767100227160ustar00rootroot00000000000000#!/usr/bin/env python3 import cffi_pure def test_range(): point = cffi_pure.lib.get_origin() point.x = 10 point.y = 10 assert not cffi_pure.lib.is_in_range(point, 14) assert cffi_pure.lib.is_in_range(point, 15) def test_ffi(): point = cffi_pure.ffi.new("Point *", (10, 20)) assert point.x == 10 assert point.y == 20 maturin-1.7.4/test-crates/cffi-pure/tox.ini000066400000000000000000000001401467514767100206500ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest maturin-1.7.4/test-crates/hello-world/000077500000000000000000000000001467514767100177125ustar00rootroot00000000000000maturin-1.7.4/test-crates/hello-world/Cargo.lock000066400000000000000000000002161467514767100216160ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "hello-world" version = "0.1.0" maturin-1.7.4/test-crates/hello-world/Cargo.toml000066400000000000000000000003371467514767100216450ustar00rootroot00000000000000[package] name = "hello-world" version = "0.1.0" authors = ["konstin "] edition = "2021" # Test references to out-of-project files readme = "../../README.md" default-run = "hello-world" [dependencies] maturin-1.7.4/test-crates/hello-world/check_installed/000077500000000000000000000000001467514767100230265ustar00rootroot00000000000000maturin-1.7.4/test-crates/hello-world/check_installed/check_installed.py000066400000000000000000000006041467514767100265140ustar00rootroot00000000000000from subprocess import check_output def main(): output = check_output(["hello-world"]).decode("utf-8").strip() if not output == "Hello, world!": raise Exception(output) output = check_output(["foo"]).decode("utf-8").strip() if not output == "🦀 Hello, world! 🦀": raise Exception(output) print("SUCCESS") if __name__ == "__main__": main() maturin-1.7.4/test-crates/hello-world/pyproject.toml000066400000000000000000000003221467514767100226230ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] bindings = "bin" [[tool.maturin.targets]] name = "hello-world" bindings = "bin" [[tool.maturin.targets]] name = "foo" maturin-1.7.4/test-crates/hello-world/src/000077500000000000000000000000001467514767100205015ustar00rootroot00000000000000maturin-1.7.4/test-crates/hello-world/src/bin/000077500000000000000000000000001467514767100212515ustar00rootroot00000000000000maturin-1.7.4/test-crates/hello-world/src/bin/foo.rs000066400000000000000000000000671467514767100224050ustar00rootroot00000000000000fn main() { println!("🦀 Hello, world! 🦀"); } maturin-1.7.4/test-crates/hello-world/src/main.rs000066400000000000000000000000551467514767100217730ustar00rootroot00000000000000fn main() { println!("Hello, world!"); } maturin-1.7.4/test-crates/lib_with_disallowed_lib/000077500000000000000000000000001467514767100223205ustar00rootroot00000000000000maturin-1.7.4/test-crates/lib_with_disallowed_lib/Cargo.lock000066400000000000000000000122611467514767100242270ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "cc" version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c891175c3fb232128f48de6590095e59198bbeb8620c310be349bfc3afd12c7b" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "lib_with_disallowed_lib" version = "0.1.0" dependencies = [ "libz-sys", "pyo3", ] [[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libz-sys" version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "pkg-config", "vcpkg", ] [[package]] name = "memoffset" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "pkg-config" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" maturin-1.7.4/test-crates/lib_with_disallowed_lib/Cargo.toml000066400000000000000000000004441467514767100242520ustar00rootroot00000000000000[package] name = "lib_with_disallowed_lib" version = "0.1.0" authors = ["messense "] edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] libz-sys = { version = "1.1.2", default-features = false } pyo3 = { version = "0.22.0", features = ["extension-module"] } maturin-1.7.4/test-crates/lib_with_disallowed_lib/pyproject.toml000066400000000000000000000001121467514767100252260ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/lib_with_disallowed_lib/src/000077500000000000000000000000001467514767100231075ustar00rootroot00000000000000maturin-1.7.4/test-crates/lib_with_disallowed_lib/src/lib.rs000066400000000000000000000006611467514767100242260ustar00rootroot00000000000000use std::os::raw::c_ulong; use pyo3::prelude::*; #[link(name = "z")] extern "C" { fn gzflags() -> c_ulong; } #[pyfunction] fn add(x: usize, y: usize) -> usize { let _version = unsafe { libz_sys::zlibVersion() }; let _flags = unsafe { gzflags() }; let sum = x + y; sum } #[pymodule] fn lib_with_disallowed_lib(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(add))?; Ok(()) } maturin-1.7.4/test-crates/lib_with_path_dep/000077500000000000000000000000001467514767100211275ustar00rootroot00000000000000maturin-1.7.4/test-crates/lib_with_path_dep/Cargo.toml000066400000000000000000000005561467514767100230650ustar00rootroot00000000000000[package] name = "lib_with_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] # Don't use the macros feature, which makes compilation much faster pyo3 = { version = "0.22.0", default-features = false, features = ["extension-module"] } some_path_dep = { path = "../some_path_dep" } maturin-1.7.4/test-crates/lib_with_path_dep/pyproject.toml000066400000000000000000000001121467514767100240350ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/lib_with_path_dep/src/000077500000000000000000000000001467514767100217165ustar00rootroot00000000000000maturin-1.7.4/test-crates/lib_with_path_dep/src/lib.rs000066400000000000000000000124271467514767100230400ustar00rootroot00000000000000/// We speed up compilation by using the expanded output and then deselecting the macro feature /// of pyo3, removing syn and proc macros from the dependencies use pyo3::prelude::*; fn add(x: usize, y: usize) -> usize { let sum = some_path_dep::add(x, y); debug_assert!(some_path_dep::is_sum(x, y, sum)); sum } unsafe extern "C" fn __pyo3_raw_add( _slf: *mut pyo3::ffi::PyObject, _args: *mut pyo3::ffi::PyObject, _kwargs: *mut pyo3::ffi::PyObject, ) -> *mut pyo3::ffi::PyObject { const _LOCATION: &'static str = "add()"; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, { let _args = _py.from_borrowed_ptr::(_args); let _kwargs: Option<&pyo3::types::PyDict> = _py.from_borrowed_ptr_or_opt(_kwargs); { const PARAMS: &'static [pyo3::derive_utils::ParamDescription] = &[ pyo3::derive_utils::ParamDescription { name: "x", is_optional: false, kw_only: false, }, pyo3::derive_utils::ParamDescription { name: "y", is_optional: false, kw_only: false, }, ]; let mut output = [None; 2usize]; let mut _args = _args; let mut _kwargs = _kwargs; let (_args, _kwargs) = pyo3::derive_utils::parse_fn_args( Some(_LOCATION), PARAMS, _args, _kwargs, false, false, &mut output, )?; let arg0 = match output[0usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "x", e))?, None => { panic!("Failed to extract required method argument") } }; let arg1 = match output[1usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "y", e))?, None => { panic!("Failed to extract required method argument") } }; add(arg0, arg1) } }) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } pub(crate) fn __pyo3_get_function_add<'a>( args: impl Into>, ) -> pyo3::PyResult<&'a pyo3::types::PyCFunction> { let name = "add\u{0}"; let name = std::ffi::CStr::from_bytes_with_nul(name.as_bytes()).unwrap(); let doc = std::ffi::CStr::from_bytes_with_nul(b"\x00").unwrap(); pyo3::types::PyCFunction::internal_new( name, doc, pyo3::class::PyMethodType::PyCFunctionWithKeywords(__pyo3_raw_add), pyo3::ffi::METH_VARARGS | pyo3::ffi::METH_KEYWORDS, args.into(), ) } fn pyo3_pure(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(&__pyo3_get_function_add)?; Ok(()) } #[no_mangle] #[allow(non_snake_case)] #[doc = r" This autogenerated function is called by the python interpreter when importing"] #[doc = r" the module."] pub unsafe extern "C" fn PyInit_lib_with_path_dep() -> *mut pyo3::ffi::PyObject { use pyo3::derive_utils::ModuleDef; const NAME: &'static str = "pyo3_pure\u{0}"; static MODULE_DEF: ModuleDef = unsafe { ModuleDef::new(NAME) }; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, MODULE_DEF.make_module("", pyo3_pure)) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } maturin-1.7.4/test-crates/lib_with_path_dep/test.sh000066400000000000000000000021311467514767100224370ustar00rootroot00000000000000#!/bin/bash set -ex # The problem with testing this is that we need to go through the PEP 517 so we need a wheel of maturin, # which makes everything complex and slow cd "$(git rev-parse --show-toplevel)" # Go to project root pip uninstall -y lib_with_path_dep 2> /dev/null # Make sure it's actually removed python -c "from lib_with_path_dep import add; assert add(2,2)==4" 2> /dev/null && exit 1 || true # Build maturin wheel cargo run -- build -b bin --strip --manylinux off cargo run -- pep517 write-sdist --manifest-path test-crates/lib_with_path_dep/Cargo.toml --sdist-directory test-crates/lib_with_path_dep/target/wheels # Slower alternative: cargo run -- build -m test-crates/lib_with_path_dep/Cargo.toml -i python # See https://github.com/pypa/pip/issues/6041 # First, use the maturin wheel we just build # Then install lib_with_path_dep from the sdist we build pip install \ --find-links target/wheels/ \ --force-reinstall --no-binary lib_with_path_dep --find-links test-crates/lib_with_path_dep/target/wheels lib_with_path_dep python -c "from lib_with_path_dep import add; assert add(2,2)==4" maturin-1.7.4/test-crates/license-test/000077500000000000000000000000001467514767100200615ustar00rootroot00000000000000maturin-1.7.4/test-crates/license-test/AUTHORS.txt000066400000000000000000000000101467514767100217360ustar00rootroot00000000000000AUTHORS maturin-1.7.4/test-crates/license-test/Cargo.lock000066400000000000000000000002171467514767100217660ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "license-test" version = "0.1.0" maturin-1.7.4/test-crates/license-test/Cargo.toml000066400000000000000000000002171467514767100220110ustar00rootroot00000000000000[package] name = "license-test" version = "0.1.0" authors = ["konstin "] edition = "2021" license = "MIT" [dependencies] maturin-1.7.4/test-crates/license-test/LICENCE.txt000066400000000000000000000000101467514767100216530ustar00rootroot00000000000000LICENCE maturin-1.7.4/test-crates/license-test/LICENSE000066400000000000000000000000101467514767100210550ustar00rootroot00000000000000LICENSE maturin-1.7.4/test-crates/license-test/NOTICE.md000066400000000000000000000000111467514767100213540ustar00rootroot00000000000000# NOTICE maturin-1.7.4/test-crates/license-test/_vendor/000077500000000000000000000000001467514767100215155ustar00rootroot00000000000000maturin-1.7.4/test-crates/license-test/_vendor/AUTHORS.txt000066400000000000000000000000101467514767100233720ustar00rootroot00000000000000AUTHORS maturin-1.7.4/test-crates/license-test/_vendor/COPYING.md000066400000000000000000000000121467514767100231400ustar00rootroot00000000000000# COPYING maturin-1.7.4/test-crates/license-test/_vendor/LICENCE000066400000000000000000000000101467514767100224710ustar00rootroot00000000000000LICENCE maturin-1.7.4/test-crates/license-test/_vendor/LICENSE-APACHE.txt000066400000000000000000000000171467514767100242550ustar00rootroot00000000000000LICENSE-APACHE maturin-1.7.4/test-crates/license-test/_vendor/NOTICE000066400000000000000000000000071467514767100224160ustar00rootroot00000000000000NOTICE maturin-1.7.4/test-crates/license-test/_vendor/nested/000077500000000000000000000000001467514767100227775ustar00rootroot00000000000000maturin-1.7.4/test-crates/license-test/_vendor/nested/LICENSE-BSD000066400000000000000000000000141467514767100244050ustar00rootroot00000000000000LICENSE-BSD maturin-1.7.4/test-crates/license-test/_vendor/nested/NOTICE.md000066400000000000000000000000111467514767100242720ustar00rootroot00000000000000# NOTICE maturin-1.7.4/test-crates/license-test/check_installed/000077500000000000000000000000001467514767100231755ustar00rootroot00000000000000maturin-1.7.4/test-crates/license-test/check_installed/check_installed.py000066400000000000000000000003711467514767100266640ustar00rootroot00000000000000from subprocess import check_output def main(): output = check_output(["license-test"]).decode("utf-8").strip() if not output == "Hello, world!": raise Exception(output) print("SUCCESS") if __name__ == "__main__": main() maturin-1.7.4/test-crates/license-test/pyproject.toml000066400000000000000000000002571467514767100230010ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "license-test" license = { file = "LICENCE.txt" } [tool.maturin] bindings = "bin" maturin-1.7.4/test-crates/license-test/src/000077500000000000000000000000001467514767100206505ustar00rootroot00000000000000maturin-1.7.4/test-crates/license-test/src/main.rs000066400000000000000000000000551467514767100221420ustar00rootroot00000000000000fn main() { println!("Hello, world!"); } maturin-1.7.4/test-crates/pyo3-abi3-without-version/000077500000000000000000000000001467514767100223545ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-abi3-without-version/Cargo.lock000066400000000000000000000105651467514767100242700ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-abi3-without-version" version = "0.1.0" dependencies = [ "pyo3", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-abi3-without-version/Cargo.toml000066400000000000000000000004251467514767100243050ustar00rootroot00000000000000[package] name = "pyo3-abi3-without-version" version = "0.1.0" authors = ["konstin "] edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["abi3", "extension-module"] } [lib] name = "pyo3_abi3_without_version" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-abi3-without-version/src/000077500000000000000000000000001467514767100231435ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-abi3-without-version/src/lib.rs000066400000000000000000000000001467514767100242450ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-bin/000077500000000000000000000000001467514767100171225ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-bin/Cargo.lock000066400000000000000000000105441467514767100210330ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-bin" version = "0.1.0" dependencies = [ "pyo3", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-bin/Cargo.toml000066400000000000000000000003571467514767100210570ustar00rootroot00000000000000[package] name = "pyo3-bin" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] pyo3 = { version = "0.22.0", features = ["auto-initialize"] } maturin-1.7.4/test-crates/pyo3-bin/check_installed/000077500000000000000000000000001467514767100222365ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-bin/check_installed/check_installed.py000066400000000000000000000011141467514767100257210ustar00rootroot00000000000000import os import platform import sys from subprocess import check_output def main(): if platform.system().lower() == "windows": # Add sys.base_prefix which contains python3y.dll to PATH # otherwise running `pyo3-bin` might return exit code 3221225781 path = os.environ["PATH"] path = path + os.pathsep + sys.base_prefix os.environ["PATH"] = path output = check_output(["pyo3-bin"]).decode("utf-8").strip() if not output == "Hello, world!": raise Exception(output) print("SUCCESS") if __name__ == "__main__": main() maturin-1.7.4/test-crates/pyo3-bin/src/000077500000000000000000000000001467514767100177115ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-bin/src/main.rs000066400000000000000000000004641467514767100212070ustar00rootroot00000000000000use pyo3::prelude::*; fn main() -> PyResult<()> { Python::with_gil(|py| { let builtins = py.import_bound("builtins")?; let total: i32 = builtins.getattr("sum")?.call1((vec![1, 2, 3],))?.extract()?; assert_eq!(total, 6); println!("Hello, world!"); Ok(()) }) } maturin-1.7.4/test-crates/pyo3-feature/000077500000000000000000000000001467514767100200055ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-feature/Cargo.lock000066400000000000000000000105501467514767100217130ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-feature" version = "0.7.3" dependencies = [ "pyo3", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-feature/Cargo.toml000066400000000000000000000002561467514767100217400ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-feature" version = "0.7.3" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", optional = true } maturin-1.7.4/test-crates/pyo3-feature/Readme.md000066400000000000000000000000521467514767100215210ustar00rootroot00000000000000A crate where pyo3 is an optional feature maturin-1.7.4/test-crates/pyo3-feature/src/000077500000000000000000000000001467514767100205745ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-feature/src/lib.rs000066400000000000000000000000001467514767100216760ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-ffi-pure/000077500000000000000000000000001467514767100200675ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-ffi-pure/Cargo.lock000066400000000000000000000023661467514767100220030ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "pyo3-build-config" version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cb946f5ac61bb61a5014924910d936ebd2b23b705f7a4a3c40b05c720b079a3" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd4d7c5337821916ea2a1d21d1092e8443cf34879e53a0ac653fbb98f44ff65c" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-ffi-pure" version = "1.0.0" dependencies = [ "pyo3-ffi", ] [[package]] name = "target-lexicon" version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" maturin-1.7.4/test-crates/pyo3-ffi-pure/Cargo.toml000066400000000000000000000003321467514767100220150ustar00rootroot00000000000000[package] name = "pyo3-ffi-pure" version = "1.0.0" edition = "2021" [dependencies] pyo3-ffi = { version = "0.18.1", features = ["abi3-py37", "extension-module"] } [lib] name = "pyo3_ffi_pure" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-ffi-pure/LICENSE000066400000000000000000000020601467514767100210720ustar00rootroot00000000000000Copyright (c) 2022-present maturin contributors 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. maturin-1.7.4/test-crates/pyo3-ffi-pure/README.md000066400000000000000000000003571467514767100213530ustar00rootroot00000000000000# pyo3-ffi-pure A package with pyo3-ffi bindings for testing maturin. ## Usage ```python import pyo3_ffi_pure assert pyo3_ffi_pure.sum(2, 40) == 42 ``` ## Testing Install `pytest` and run: ```bash pytest -v test_pyo3_ffi_pure.py ``` maturin-1.7.4/test-crates/pyo3-ffi-pure/check_installed/000077500000000000000000000000001467514767100232035ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-ffi-pure/check_installed/check_installed.py000077500000000000000000000001451467514767100266740ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_ffi_pure assert pyo3_ffi_pure.sum(2, 40) == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-ffi-pure/pyproject.toml000066400000000000000000000005441467514767100230060ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-ffi-pure" classifiers = [ "Programming Language :: Rust" ] description = "Tests compilation of packages using pyo3-ffi bindings" readme = "README.md" maintainers = [ {name = "messense", email = "messense@icloud.com"} ] license = { file = "LICENSE" } maturin-1.7.4/test-crates/pyo3-ffi-pure/src/000077500000000000000000000000001467514767100206565ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-ffi-pure/src/lib.rs000066400000000000000000000027731467514767100220030ustar00rootroot00000000000000use pyo3_ffi::*; use std::os::raw::c_char; #[allow(non_snake_case)] #[no_mangle] pub unsafe extern "C" fn PyInit_pyo3_ffi_pure() -> *mut PyObject { let module_name = "pyo3_ffi_pure\0".as_ptr() as *const c_char; let init = PyModuleDef { m_base: PyModuleDef_HEAD_INIT, m_name: module_name, m_doc: std::ptr::null(), m_size: 0, m_methods: std::ptr::null_mut(), m_slots: std::ptr::null_mut(), m_traverse: None, m_clear: None, m_free: None, }; let mptr = PyModule_Create(Box::into_raw(Box::new(init))); let wrapped_sum = PyMethodDef { ml_name: "sum\0".as_ptr() as *const c_char, ml_meth: PyMethodDefPointer { PyCFunctionWithKeywords: sum, }, ml_flags: METH_VARARGS | METH_KEYWORDS, ml_doc: std::ptr::null_mut(), }; PyModule_AddObject( mptr, "sum\0".as_ptr() as *const c_char, PyCFunction_NewEx( Box::into_raw(Box::new(wrapped_sum)), std::ptr::null_mut(), PyUnicode_InternFromString(module_name), ), ); mptr } #[no_mangle] pub unsafe extern "C" fn sum( _self: *mut PyObject, args: *mut PyObject, _kwds: *mut PyObject, ) -> *mut PyObject { // this is a minimal test of compilation, not good example code let val_a = PyTuple_GetItem(args, 0); let val_b = PyTuple_GetItem(args, 1); let res: i64 = PyLong_AsLongLong(val_a) + PyLong_AsLongLong(val_b); PyLong_FromLongLong(res) } maturin-1.7.4/test-crates/pyo3-ffi-pure/test_pyo3_ffi_pure.py000066400000000000000000000001541467514767100242510ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_ffi_pure def test_static(): assert pyo3_ffi_pure.sum(2, 40) == 42 maturin-1.7.4/test-crates/pyo3-mixed-implicit/000077500000000000000000000000001467514767100212705ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/.gitignore000066400000000000000000000000121467514767100232510ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-implicit/Cargo.lock000066400000000000000000000105571467514767100232050ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-implicit" version = "2.1.3" dependencies = [ "pyo3", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-implicit/Cargo.toml000066400000000000000000000005541467514767100232240ustar00rootroot00000000000000[package] authors = ["Kevin Patterson "] name = "pyo3-mixed-implicit" version = "2.1.3" description = "Implements a dummy function combining rust and python" readme = "README.md" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module"] } [lib] name = "pyo3_mixed_implicit" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-implicit/README.md000066400000000000000000000006761467514767100225600ustar00rootroot00000000000000# pyo3-mixed-implicit A package for testing maturin with a mixed pyo3/python project with an implicit namespace package and Rust submodule. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_implicit assert pyo3_mixed_implicit.some_rust.get_22() == 22 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `tests/test_pyo3_mixed_implicit.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed-implicit/check_installed/000077500000000000000000000000001467514767100244045ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/check_installed/check_installed.py000066400000000000000000000002451467514767100300730ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_implicit.some_rust as some_rust assert some_rust.get_22() == 22 assert some_rust.double(lambda: 4) == 8 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-implicit/pyproject.toml000066400000000000000000000005161467514767100242060ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3_mixed_implicit" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] [tool.maturin] features = ["pyo3/extension-module"] module-name = "pyo3_mixed_implicit.some_rust.rust" python-source = "python" maturin-1.7.4/test-crates/pyo3-mixed-implicit/python/000077500000000000000000000000001467514767100226115ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/python/pyo3_mixed_implicit/000077500000000000000000000000001467514767100265635ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/python/pyo3_mixed_implicit/some_rust/000077500000000000000000000000001467514767100306035ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/python/pyo3_mixed_implicit/some_rust/__init__.py000066400000000000000000000001241467514767100327110ustar00rootroot00000000000000from .rust import get_22 from .double import double __all__ = ["get_22", "double"] maturin-1.7.4/test-crates/pyo3-mixed-implicit/python/pyo3_mixed_implicit/some_rust/double.py000066400000000000000000000001341467514767100324250ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-implicit/src/000077500000000000000000000000001467514767100220575ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/src/lib.rs000066400000000000000000000003011467514767100231650ustar00rootroot00000000000000use pyo3::prelude::*; #[pyfunction] fn get_22() -> usize { 22 } #[pymodule] fn rust(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_22))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-implicit/tests/000077500000000000000000000000001467514767100224325ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-implicit/tests/test_pyo3_mixed_implicit.py000066400000000000000000000003171467514767100300160ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_implicit.some_rust as some_rust def test_get_rust_and_python(): assert some_rust.get_22() == 22 assert some_rust.double(lambda: 4) == 8 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-implicit/tox.ini000066400000000000000000000001471467514767100226050ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/000077500000000000000000000000001467514767100225305ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/.gitignore000066400000000000000000000000121467514767100245110ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/Cargo.lock000066400000000000000000000114761467514767100244460ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-include-exclude" version = "2.1.3" dependencies = [ "pyo3", ] [[package]] name = "python3-dll-a" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/Cargo.toml000066400000000000000000000005241467514767100244610ustar00rootroot00000000000000[package] authors = [] name = "pyo3-mixed-include-exclude" version = "2.1.3" description = "Implements a dummy function combining rust and python" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = [ "extension-module", "generate-import-lib", ] } [lib] name = "pyo3_mixed_include_exclude" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/README.md000066400000000000000000000006741467514767100240160ustar00rootroot00000000000000# pyo3-mixed-include-exclude A package for testing maturin with a mixed pyo3/python project with include and exclude configurations. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_include_exclude assert pyo3_mixed_include_exclude.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_pyo3_mixed_include_exclude.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/check_installed/000077500000000000000000000000001467514767100256445ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/check_installed/check_installed.py000077500000000000000000000001761467514767100313410ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_include_exclude assert pyo3_mixed_include_exclude.get_42() == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/000077500000000000000000000000001467514767100300245ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/.gitignore000066400000000000000000000000221467514767100320060ustar00rootroot00000000000000include_this_file maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/__init__.py000066400000000000000000000002111467514767100321270ustar00rootroot00000000000000from .python_module.double import double from .pyo3_mixed_include_exclude import get_21 def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/exclude_this_file000066400000000000000000000000001467514767100334140ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/include_this_file000066400000000000000000000000001467514767100334060ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/python_module/000077500000000000000000000000001467514767100327125ustar00rootroot00000000000000__init__.py000066400000000000000000000000001467514767100347320ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/python_moduledouble.py000066400000000000000000000001341467514767100344550ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyo3_mixed_include_exclude/python_modulefrom typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/pyproject.toml000066400000000000000000000010271467514767100254440ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-include-exclude" classifiers = ["Programming Language :: Python", "Programming Language :: Rust"] requires-python = ">=3.7" [project.scripts] get_42 = "pyo3_mixed_include_exclude:get_42" [tool.maturin] include = [ "pyo3_mixed_include_exclude/include_this_file", "missing", "README.md", ] exclude = [ "pyo3_mixed_include_exclude/exclude_this_file", "pyo3_mixed_include_exclude/.gitignore", "tests/**/*", "unused", ] maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/src/000077500000000000000000000000001467514767100233175ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/src/lib.rs000066400000000000000000000003271467514767100244350ustar00rootroot00000000000000use pyo3::prelude::*; #[pyfunction] fn get_21() -> usize { 21 } #[pymodule] fn pyo3_mixed_include_exclude(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/tests/000077500000000000000000000000001467514767100236725ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/tests/test_pyo3_mixed_include_exclude.py000066400000000000000000000002041467514767100325730ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_include_exclude def test_get_42(): assert pyo3_mixed_include_exclude.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-include-exclude/tox.ini000066400000000000000000000001471467514767100240450ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/000077500000000000000000000000001467514767100213745ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/.gitignore000066400000000000000000000000121467514767100233550ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/Cargo.lock000066400000000000000000000105601467514767100233030ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-py-subdir" version = "2.1.3" dependencies = [ "pyo3", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/Cargo.toml000066400000000000000000000005361467514767100233300ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-mixed-py-subdir" version = "2.1.3" description = "Implements a dummy function combining rust and python" readme = "README.md" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module"] } [lib] name = "pyo3_mixed_py_subdir" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/README.md000066400000000000000000000006071467514767100226560ustar00rootroot00000000000000# pyo3-mixed A package for testing maturin with a mixed pyo3/python project and a non-default package name. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_py_subdir assert pyo3_mixed_py_subdir.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_pyo3_mixed.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/check_installed/000077500000000000000000000000001467514767100245105ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/check_installed/check_installed.py000077500000000000000000000001661467514767100302040ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_py_subdir as pyo3_mixed assert pyo3_mixed.get_42() == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/pyproject.toml000066400000000000000000000005741467514767100243160ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-py-subdir" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] requires-python = ">=3.6" [project.scripts] get_42 = "pyo3_mixed_py_subdir:get_42" [tool.maturin] module-name = "pyo3_mixed_py_subdir._pyo3_mixed" python-source = "python" maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/000077500000000000000000000000001467514767100227155ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/000077500000000000000000000000001467514767100270555ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/__init__.py000066400000000000000000000001721467514767100311660ustar00rootroot00000000000000from .python_module.double import double from ._pyo3_mixed import get_21 def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/python_module/000077500000000000000000000000001467514767100317435ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/python_module/__init__.py000066400000000000000000000000001467514767100340420ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/python/pyo3_mixed_py_subdir/python_module/double.py000066400000000000000000000001341467514767100335650ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/src/000077500000000000000000000000001467514767100221635ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/src/lib.rs000066400000000000000000000003101467514767100232710ustar00rootroot00000000000000use pyo3::prelude::*; #[pyfunction] fn get_21() -> usize { 21 } #[pymodule] fn _pyo3_mixed(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/test_pyo3_mixed.py000066400000000000000000000001741467514767100250670ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_py_subdir as pyo3_mixed def test_get_42(): assert pyo3_mixed.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-py-subdir/tox.ini000066400000000000000000000001401467514767100227020ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest maturin-1.7.4/test-crates/pyo3-mixed-src/000077500000000000000000000000001467514767100202455ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/.gitignore000066400000000000000000000000121467514767100222260ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-src/README.md000066400000000000000000000003231467514767100215220ustar00rootroot00000000000000# pyo3-mixed src layout A package for testing maturin with a src layout mixed pyo3/python project. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_src assert pyo3_mixed_src.get_42() == 42 ``` maturin-1.7.4/test-crates/pyo3-mixed-src/check_installed/000077500000000000000000000000001467514767100233615ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/check_installed/check_installed.py000077500000000000000000000001601467514767100270470ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_src as pyo3_mixed assert pyo3_mixed.get_42() == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-src/pyproject.toml000066400000000000000000000005241467514767100231620ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-src" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] requires-python = ">=3.7" [project.scripts] get_42 = "pyo3_mixed_src:get_42" [tool.maturin] python-packages = ["pyo3_mixed_src", "tests"] maturin-1.7.4/test-crates/pyo3-mixed-src/rust/000077500000000000000000000000001467514767100212425ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/rust/Cargo.lock000066400000000000000000000114251467514767100231520ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.134" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-src" version = "2.1.3" dependencies = [ "pyo3", ] [[package]] name = "python3-dll-a" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a915bd72824962bf190bbd3e8a044cccb695d1409f73ff5493712eda5136c7a8" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-src/rust/Cargo.toml000066400000000000000000000005241467514767100231730ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-mixed-src" version = "2.1.3" description = "Implements a dummy function combining rust and python" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module", "generate-import-lib"] } [lib] name = "pyo3_mixed_src" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-src/rust/src/000077500000000000000000000000001467514767100220315ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/rust/src/lib.rs000066400000000000000000000003131467514767100231420ustar00rootroot00000000000000use pyo3::prelude::*; #[pyfunction] fn get_21() -> usize { 21 } #[pymodule] fn pyo3_mixed_src(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-src/src/000077500000000000000000000000001467514767100210345ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/src/pyo3_mixed_src/000077500000000000000000000000001467514767100237635ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/src/pyo3_mixed_src/__init__.py000066400000000000000000000001751467514767100260770ustar00rootroot00000000000000from .python_module.double import double from .pyo3_mixed_src import get_21 def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed-src/src/pyo3_mixed_src/python_module/000077500000000000000000000000001467514767100266515ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/src/pyo3_mixed_src/python_module/__init__.py000066400000000000000000000000001467514767100307500ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/src/pyo3_mixed_src/python_module/double.py000066400000000000000000000001341467514767100304730ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-src/src/tests/000077500000000000000000000000001467514767100221765ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-src/src/tests/test_pyo3_mixed.py000066400000000000000000000001661467514767100256720ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_src as pyo3_mixed def test_get_42(): assert pyo3_mixed.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-src/tox.ini000066400000000000000000000001531467514767100215570ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest src/tests/ maturin-1.7.4/test-crates/pyo3-mixed-submodule/000077500000000000000000000000001467514767100214555ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/.gitignore000066400000000000000000000000121467514767100234360ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-submodule/Cargo.lock000066400000000000000000000105601467514767100233640ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-submodule" version = "2.1.3" dependencies = [ "pyo3", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-submodule/Cargo.toml000066400000000000000000000005361467514767100234110ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-mixed-submodule" version = "2.1.3" description = "Implements a dummy function combining rust and python" readme = "README.md" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module"] } [lib] name = "pyo3_mixed_submodule" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-submodule/README.md000066400000000000000000000006261467514767100227400ustar00rootroot00000000000000# pyo3-mixed-submodule A package for testing maturin with a mixed pyo3/python project with Rust submodule. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_submodule assert pyo3_mixed_submodule.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `tests/test_pyo3_mixed_submodule.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed-submodule/check_installed/000077500000000000000000000000001467514767100245715ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/check_installed/check_installed.py000077500000000000000000000001621467514767100302610ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_submodule assert pyo3_mixed_submodule.get_42() == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/000077500000000000000000000000001467514767100256145ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/__init__.py000066400000000000000000000001771467514767100277320ustar00rootroot00000000000000from .python_module.double import double from .rust_module.rust import get_21 def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/python_module/000077500000000000000000000000001467514767100305025ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/python_module/__init__.py000066400000000000000000000000001467514767100326010ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/python_module/double.py000066400000000000000000000001341467514767100323240ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/rust_module/000077500000000000000000000000001467514767100301565ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyo3_mixed_submodule/rust_module/__init__.py000066400000000000000000000000001467514767100322550ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/pyproject.toml000066400000000000000000000004241467514767100243710ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-submodule" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] [tool.maturin] module-name = "pyo3_mixed_submodule.rust_module.rust" maturin-1.7.4/test-crates/pyo3-mixed-submodule/src/000077500000000000000000000000001467514767100222445ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/src/lib.rs000066400000000000000000000003011467514767100233520ustar00rootroot00000000000000use pyo3::prelude::*; #[pyfunction] fn get_21() -> usize { 21 } #[pymodule] fn rust(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-submodule/tests/000077500000000000000000000000001467514767100226175ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-submodule/tests/test_pyo3_mixed_submodule.py000066400000000000000000000001701467514767100303650ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_submodule def test_get_42(): assert pyo3_mixed_submodule.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-submodule/tox.ini000066400000000000000000000001471467514767100227720ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/000077500000000000000000000000001467514767100221315ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/.gitignore000066400000000000000000000000121467514767100241120ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/Cargo.lock000066400000000000000000000117531467514767100240450ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-with-path-dep" version = "2.1.3" dependencies = [ "pyo3", "some_path_dep", ] [[package]] name = "python3-dll-a" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "some_path_dep" version = "0.1.0" dependencies = [ "transitive_path_dep", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "transitive_path_dep" version = "0.1.0" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/Cargo.toml000066400000000000000000000004611467514767100240620ustar00rootroot00000000000000[package] authors = [] name = "pyo3-mixed-with-path-dep" version = "2.1.3" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module", "generate-import-lib"] } some_path_dep = { path = "../some_path_dep" } [lib] name = "pyo3_mixed_with_path_dep" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/README.md000066400000000000000000000006041467514767100234100ustar00rootroot00000000000000# pyo3-mixed A package for testing maturin with a mixed pyo3/python project. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_with_path_dep assert pyo3_mixed_with_path_dep.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `tests/test_pyo3_mixed_with_path_dep.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/check_installed/000077500000000000000000000000001467514767100252455ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/check_installed/check_installed.py000077500000000000000000000004461467514767100307420ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_with_path_dep assert pyo3_mixed_with_path_dep.get_42() == 42, "get_42 did not return 42" assert pyo3_mixed_with_path_dep.is_half(21, 42), "21 is not half of 42" assert not pyo3_mixed_with_path_dep.is_half(21, 73), "21 is half of 63" print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/pyo3_mixed_with_path_dep/000077500000000000000000000000001467514767100271105ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/pyo3_mixed_with_path_dep/__init__.py000066400000000000000000000002461467514767100312230ustar00rootroot00000000000000from .pyo3_mixed_with_path_dep import get_21, add_21, is_half __all__ = ["get_21", "add_21", "is_half", "get_42"] def get_42() -> int: return add_21(get_21()) maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/pyproject.toml000066400000000000000000000003541467514767100250470ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-with-path-dep" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] requires-python = ">=3.7" maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/src/000077500000000000000000000000001467514767100227205ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/src/lib.rs000066400000000000000000000007541467514767100240420ustar00rootroot00000000000000use pyo3::prelude::*; use some_path_dep::{add, is_sum}; #[pyfunction] fn get_21() -> usize { 21 } #[pyfunction] fn add_21(num: usize) -> usize { add(num, get_21()) } #[pyfunction] fn is_half(a: usize, b: usize) -> bool { is_sum(a, a, b) } #[pymodule] fn pyo3_mixed_with_path_dep(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; m.add_wrapped(wrap_pyfunction!(add_21))?; m.add_wrapped(wrap_pyfunction!(is_half))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/tests/000077500000000000000000000000001467514767100232735ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/tests/test_pyo3_mixed_with_path_dep.py000066400000000000000000000002001467514767100316530ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_with_path_dep def test_get_42(): assert pyo3_mixed_with_path_dep.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-with-path-dep/tox.ini000066400000000000000000000001471467514767100234460ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/pyo3-mixed-workspace/000077500000000000000000000000001467514767100214545ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/README.md000066400000000000000000000003131467514767100227300ustar00rootroot00000000000000# pyo3-mixed src layout A package for testing maturin with a nested workspace. ## Usage ```bash pip install . ``` ```python import pyo3_mixed_workspace assert pyo3_mixed_workspace.get_42() == 42 ``` maturin-1.7.4/test-crates/pyo3-mixed-workspace/check_installed/000077500000000000000000000000001467514767100245705ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/check_installed/check_installed.py000077500000000000000000000001661467514767100302640ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_workspace as pyo3_mixed assert pyo3_mixed.get_42() == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed-workspace/pyproject.toml000066400000000000000000000007441467514767100243750ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed-workspace" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] requires-python = ">=3.7" [project.scripts] get_42 = "pyo3_mixed_workspace:get_42" [tool.maturin] python-packages = ["pyo3_mixed_workspace", "tests"] module-name = "pyo3_mixed_workspace.pyo3_mixed_workspace_py" manifest-path = "rust/python/pyo3-mixed-workspace-py/Cargo.toml" maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/000077500000000000000000000000001467514767100224515ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/Cargo.lock000066400000000000000000000116211467514767100243570ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed-workspace" version = "2.1.3" [[package]] name = "pyo3-mixed-workspace-py" version = "2.1.3" dependencies = [ "pyo3", "pyo3-mixed-workspace", ] [[package]] name = "python3-dll-a" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/Cargo.toml000066400000000000000000000001531467514767100244000ustar00rootroot00000000000000[workspace] resolver = "2" members = [ "pyo3-mixed-workspace", "python/pyo3-mixed-workspace-py", ] maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/pyo3-mixed-workspace/000077500000000000000000000000001467514767100264435ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/pyo3-mixed-workspace/Cargo.toml000066400000000000000000000002411467514767100303700ustar00rootroot00000000000000[package] name = "pyo3-mixed-workspace" version = "2.1.3" description = "Implements a dummy function combining rust and python" edition = "2021" [dependencies] maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/pyo3-mixed-workspace/src/000077500000000000000000000000001467514767100272325ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/pyo3-mixed-workspace/src/lib.rs000066400000000000000000000000501467514767100303410ustar00rootroot00000000000000pub fn get_21_lib() -> usize { 21 } maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/python/000077500000000000000000000000001467514767100237725ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/000077500000000000000000000000001467514767100304125ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/Cargo.toml000066400000000000000000000006451467514767100323470ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-mixed-workspace-py" version = "2.1.3" description = "Implements a dummy function combining rust and python" edition = "2021" [dependencies] pyo3-mixed-workspace = { path = "../../pyo3-mixed-workspace" } pyo3 = { version = "0.22.0", features = ["extension-module", "generate-import-lib"] } [lib] name = "pyo3_mixed_workspace_py" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/src/000077500000000000000000000000001467514767100312015ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py/src/lib.rs000066400000000000000000000004121467514767100323120ustar00rootroot00000000000000use pyo3::prelude::*; use pyo3_mixed_workspace::get_21_lib; #[pyfunction] fn get_21() -> usize { get_21_lib() } #[pymodule] fn pyo3_mixed_workspace_py(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(get_21, m)?)?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/000077500000000000000000000000001467514767100222435ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/pyo3_mixed_workspace/000077500000000000000000000000001467514767100264015ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/pyo3_mixed_workspace/__init__.py000066400000000000000000000002061467514767100305100ustar00rootroot00000000000000from .python_module.double import double from .pyo3_mixed_workspace_py import get_21 def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/pyo3_mixed_workspace/python_module/000077500000000000000000000000001467514767100312675ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/pyo3_mixed_workspace/python_module/__init__.py000066400000000000000000000000001467514767100333660ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/pyo3_mixed_workspace/python_module/double.py000066400000000000000000000001341467514767100331110ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/tests/000077500000000000000000000000001467514767100234055ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed-workspace/src/tests/test_pyo3_mixed.py000066400000000000000000000001741467514767100271000ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed_workspace as pyo3_mixed def test_get_42(): assert pyo3_mixed.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed-workspace/tox.ini000066400000000000000000000001531467514767100227660ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest src/tests/ maturin-1.7.4/test-crates/pyo3-mixed/000077500000000000000000000000001467514767100174605ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/.gitignore000066400000000000000000000000121467514767100214410ustar00rootroot00000000000000*.py[cdo] maturin-1.7.4/test-crates/pyo3-mixed/Cargo.lock000066400000000000000000000114561467514767100213740ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-mixed" version = "2.1.5" dependencies = [ "pyo3", ] [[package]] name = "python3-dll-a" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-mixed/Cargo.toml000066400000000000000000000005141467514767100214100ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-mixed" version = "2.1.5" description = "Implements a dummy function combining rust and python" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module", "generate-import-lib"] } [lib] name = "pyo3_mixed" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-mixed/README.md000066400000000000000000000005241467514767100207400ustar00rootroot00000000000000# pyo3-mixed A package for testing maturin with a mixed pyo3/python project. ## Usage ```bash pip install . ``` ```python import pyo3_mixed assert pyo3_mixed.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_pyo3_mixed.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-mixed/check_installed/000077500000000000000000000000001467514767100225745ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/check_installed/check_installed.py000077500000000000000000000041051467514767100262650ustar00rootroot00000000000000#!/usr/bin/env python3 import json import os.path import platform import sys from pathlib import Path from subprocess import check_output from boltons.strutils import slugify import pyo3_mixed assert pyo3_mixed.get_42() == 42 assert slugify("First post! Hi!!!!~1 ") == "first_post_hi_1" script_name = "print_cli_args" args = ["a", "b", "c"] [rust_args, python_args] = check_output([script_name, *args], text=True).splitlines() # The rust vec debug format is also valid json rust_args = json.loads(rust_args) python_args = json.loads(python_args) # On alpine/musl, rust_args is empty so we skip all tests on musl if len(rust_args) > 0: # On linux we get sys.executable, windows resolve the path and mac os gives us a third # path ( # {prefix}/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python # vs # {prefix}/Python.framework/Versions/3.10/bin/python3.10 # on cirrus ci) # On windows, cpython resolves while pypy doesn't. # The script for cpython is actually a distinct file from the system interpreter for # windows and mac if platform.system() == "Linux": assert os.path.samefile(rust_args[0], sys.executable), ( rust_args, sys.executable, os.path.realpath(rust_args[0]), os.path.realpath(sys.executable), ) # Windows can't decide if it's with or without .exe, FreeBSB just doesn't work for some reason if platform.system() in ["Darwin", "Linux"]: # Unix venv layout (and hopefully also on more exotic platforms) print_cli_args = str(Path(sys.prefix).joinpath("bin").joinpath(script_name)) assert rust_args[1] == print_cli_args, (rust_args, print_cli_args) assert python_args[0] == print_cli_args, (python_args, print_cli_args) # FreeBSB just doesn't work for some reason if platform.system() in ["Darwin", "Linux", "Windows"]: # Rust contains the python executable as first argument but python does not assert rust_args[2:] == args, rust_args assert python_args[1:] == args, python_args print("SUCCESS") maturin-1.7.4/test-crates/pyo3-mixed/pyo3-config.txt000066400000000000000000000001631467514767100223560ustar00rootroot00000000000000implementation=CPython version=3.10 shared=true abi3=false suppress_build_script_link_lines=false pointer_width=64 maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/000077500000000000000000000000001467514767100215405ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/__init__.py000066400000000000000000000002271467514767100236520ustar00rootroot00000000000000from .pyo3_mixed import get_21, print_cli_args # noqa: F401 from .python_module.double import double def get_42() -> int: return double(get_21) maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/assets/000077500000000000000000000000001467514767100230425ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/assets/asset.txt000066400000000000000000000003601467514767100247210ustar00rootroot00000000000000This file is included twice, once implicitly by in the python root and once explicitly in pyproject.toml and checks that it gets deduplicated, see https://github.com/PyO3/maturin/issues/2106 and https://github.com/PyO3/maturin/issues/2066. maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/python_module/000077500000000000000000000000001467514767100244265ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/python_module/__init__.py000066400000000000000000000000001467514767100265250ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/pyo3_mixed/python_module/double.py000066400000000000000000000001341467514767100262500ustar00rootroot00000000000000from typing import Callable def double(fn: Callable[[], int]) -> int: return 2 * fn() maturin-1.7.4/test-crates/pyo3-mixed/pyproject.toml000066400000000000000000000006101467514767100223710ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "pyo3-mixed" classifiers = [ "Programming Language :: Python", "Programming Language :: Rust" ] requires-python = ">=3.7" dependencies = ["boltons"] [project.scripts] get_42 = "pyo3_mixed:get_42" print_cli_args = "pyo3_mixed:print_cli_args" [tool.maturin] include = ["pyo3_mixed/assets/*"] maturin-1.7.4/test-crates/pyo3-mixed/src/000077500000000000000000000000001467514767100202475ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/src/lib.rs000066400000000000000000000016731467514767100213720ustar00rootroot00000000000000use pyo3::prelude::*; use std::env; #[pyfunction] fn get_21() -> usize { 21 } /// Prints the CLI arguments, once from Rust's point of view and once from Python's point of view. #[pyfunction] fn print_cli_args(py: Python) -> PyResult<()> { // This one includes Python and the name of the wrapper script itself, e.g. // `["/home/ferris/.venv/bin/python", "/home/ferris/.venv/bin/print_cli_args", "a", "b", "c"]` println!("{:?}", env::args().collect::>()); // This one includes only the name of the wrapper script itself, e.g. // `["/home/ferris/.venv/bin/print_cli_args", "a", "b", "c"])` println!( "{:?}", py.import_bound("sys")? .getattr("argv")? .extract::>()? ); Ok(()) } #[pymodule] fn pyo3_mixed(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(get_21))?; m.add_wrapped(wrap_pyfunction!(print_cli_args))?; Ok(()) } maturin-1.7.4/test-crates/pyo3-mixed/tests/000077500000000000000000000000001467514767100206225ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-mixed/tests/test_pyo3_mixed.py000066400000000000000000000001441467514767100243120ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_mixed def test_get_42(): assert pyo3_mixed.get_42() == 42 maturin-1.7.4/test-crates/pyo3-mixed/tox.ini000066400000000000000000000001471467514767100207750ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/pyo3-no-extension-module/000077500000000000000000000000001467514767100222635ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-no-extension-module/Cargo.lock000066400000000000000000000045301467514767100241720ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "memoffset" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-no-extension-module" version = "2.1.0" dependencies = [ "pyo3", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" maturin-1.7.4/test-crates/pyo3-no-extension-module/Cargo.toml000066400000000000000000000005421467514767100242140ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-no-extension-module" version = "2.1.0" description = "Does not use the extension-module feature, thus erroneously linking libpython" edition = "2021" [dependencies] pyo3 = { version = "0.22.0", default-features = false } [lib] name = "pyo3_no_extension_module" crate-type = ["cdylib"] maturin-1.7.4/test-crates/pyo3-no-extension-module/src/000077500000000000000000000000001467514767100230525ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-no-extension-module/src/lib.rs000066400000000000000000000003051467514767100241640ustar00rootroot00000000000000use pyo3::ffi::{PyDict_New, PyObject}; #[no_mangle] #[allow(non_snake_case)] pub unsafe extern "C" fn PyInit_pyo3_pure() -> *mut PyObject { PyDict_New() // Make sure an ffi function is used } maturin-1.7.4/test-crates/pyo3-pure/000077500000000000000000000000001467514767100173255ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/Cargo.lock000066400000000000000000000115401467514767100212330ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cc" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c6b2562119bf28c3439f7f02db99faf0aa1a8cdfe5772a2ee155d32227239f0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "local-test" version = "0.1.0" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "python3-dll-a", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "pyo3-pure" version = "2.1.2" dependencies = [ "pyo3", ] [[package]] name = "python3-dll-a" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f07cd4412be8fa09a721d40007c483981bbe072cd6a21f2e83e04ec8f8343f" dependencies = [ "cc", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/pyo3-pure/Cargo.toml000066400000000000000000000006431467514767100212600ustar00rootroot00000000000000[package] authors = ["konstin "] name = "pyo3-pure" version = "2.1.2" edition = "2021" description = "Implements a dummy function (get_fortytwo.DummyClass.get_42()) in rust" license = "MIT" [dependencies] pyo3 = { version = "0.22.0", features = ["abi3-py37", "extension-module", "generate-import-lib"] } [lib] name = "pyo3_pure" crate-type = ["cdylib"] [workspace] members = [".", "local-test"] maturin-1.7.4/test-crates/pyo3-pure/LICENSE000066400000000000000000000020431467514767100203310ustar00rootroot00000000000000Copyright (c) 2018-present konstin 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. maturin-1.7.4/test-crates/pyo3-pure/README.md000066400000000000000000000005211467514767100206020ustar00rootroot00000000000000# Get fourtytwo A package with pyo3 bindings for testing maturin. ## Usage ```bash pip install . ``` ```python import pyo3_pure assert pyo3_pure.DummyClass.get_42() == 42 ``` ## Testing Install tox: ```bash pip install tox ``` Run it: ```bash tox ``` The tests are in `test_pyo3_pure.py`, while the configuration is in tox.ini maturin-1.7.4/test-crates/pyo3-pure/check_installed/000077500000000000000000000000001467514767100224415ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/check_installed/check_installed.py000077500000000000000000000006371467514767100261400ustar00rootroot00000000000000#!/usr/bin/env python3 import os import subprocess import pyo3_pure assert pyo3_pure.DummyClass.get_42() == 42 # Check type stub install_path = os.path.join(os.path.dirname(pyo3_pure.__file__)) assert os.path.exists(os.path.join(install_path, "__init__.pyi")) assert os.path.exists(os.path.join(install_path, "py.typed")) # Check entrypoints assert subprocess.run(["get_42"]).returncode == 42 print("SUCCESS") maturin-1.7.4/test-crates/pyo3-pure/local-test/000077500000000000000000000000001467514767100213745ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/local-test/Cargo.toml000066400000000000000000000002631467514767100233250ustar00rootroot00000000000000[package] name = "local-test" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] maturin-1.7.4/test-crates/pyo3-pure/local-test/src/000077500000000000000000000000001467514767100221635ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/local-test/src/lib.rs000066400000000000000000000003301467514767100232730ustar00rootroot00000000000000pub fn add(left: usize, right: usize) -> usize { left + right } #[cfg(test)] mod tests { use super::*; #[test] fn it_works() { let result = add(2, 2); assert_eq!(result, 4); } } maturin-1.7.4/test-crates/pyo3-pure/pyo3_pure.pyi000066400000000000000000000001211467514767100217670ustar00rootroot00000000000000class DummyClass: @staticmethod def get_42() -> int: ... fourtytwo: int maturin-1.7.4/test-crates/pyo3-pure/pyproject.toml000066400000000000000000000015661467514767100222510ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] bindings = "pyo3" [tool.maturin.target."x86_64-apple-darwin"] macos-deployment-target = "10.12" [tool.maturin.target."aarch64-apple-darwin"] macos-deployment-target = "11.0" [project] # The name pyo3_pure instead of pyo3-pure is intentional, # it's used as a crate name resolution regression test name = "pyo3_pure" version = "0.1.0+abc123de" classifiers = [ "Programming Language :: Rust" ] description = "Implements a dummy function in Rust" readme = "README.md" maintainers = [ {name = "messense", email = "messense@icloud.com"} ] license = { file = "LICENSE" } [project.optional-dependencies] test = [ "attrs", "boltons; sys_platform == 'win32'" ] [project.scripts] get_42 = "pyo3_pure:DummyClass.get_42" [project.gui-scripts] get_42_gui = "pyo3_pure:DummyClass.get_42" maturin-1.7.4/test-crates/pyo3-pure/src/000077500000000000000000000000001467514767100201145ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/src/lib.rs000066400000000000000000000005251467514767100212320ustar00rootroot00000000000000use pyo3::prelude::*; #[pyclass] struct DummyClass {} #[pymethods] impl DummyClass { #[staticmethod] fn get_42() -> PyResult { Ok(42) } } /// module level doc string #[pymodule] fn pyo3_pure(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add("fourtytwo", 42)?; Ok(()) } maturin-1.7.4/test-crates/pyo3-pure/tests/000077500000000000000000000000001467514767100204675ustar00rootroot00000000000000maturin-1.7.4/test-crates/pyo3-pure/tests/test_pyo3_pure.py000066400000000000000000000004361467514767100240300ustar00rootroot00000000000000#!/usr/bin/env python3 import pyo3_pure import pytest def test_static(): assert pyo3_pure.fourtytwo == 42 def test_class(): assert pyo3_pure.DummyClass.get_42() == 42 def test_function(): with pytest.raises(AssertionError): assert pyo3_pure.DummyClass == 42 maturin-1.7.4/test-crates/pyo3-pure/tox.ini000066400000000000000000000001471467514767100206420ustar00rootroot00000000000000[tox] envlist = py36,py37,py38 isolated_build = True [testenv] deps = pytest commands = pytest tests/ maturin-1.7.4/test-crates/readme-duplication/000077500000000000000000000000001467514767100212305ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/Cargo.lock000066400000000000000000000106451467514767100231430ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "memoffset" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "portable-atomic" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831e8e819a138c36e212f3af3fd9eeffed6bf1510a805af35b0edee5ffa59433" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e97e919d2df92eb88ca80a037969f44e5e70356559654962cbb3316d00300c6" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb57983022ad41f9e683a599f2fd13c3664d7063a3ac5714cae4b7bee7d3f206" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec480c0c51ddec81019531705acac51bcdbeae563557c982aa8263bb96880372" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "readme-rs" version = "0.2.0" [[package]] name = "readme_py" version = "0.2.0" dependencies = [ "pyo3", "readme-rs", ] [[package]] name = "syn" version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" maturin-1.7.4/test-crates/readme-duplication/Cargo.toml000066400000000000000000000001521467514767100231560ustar00rootroot00000000000000[workspace] resolver = "2" members = ["readme-py", "readme-rs"] [workspace.package] readme = "README.md" maturin-1.7.4/test-crates/readme-duplication/README.md000066400000000000000000000000501467514767100225020ustar00rootroot00000000000000Readme duplication test case - Readme 1 maturin-1.7.4/test-crates/readme-duplication/check_installed/000077500000000000000000000000001467514767100243445ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/check_installed/check_installed.py000077500000000000000000000001211467514767100300270ustar00rootroot00000000000000#!/usr/bin/env python3 import readme assert readme.value == 1 print("SUCCESS") maturin-1.7.4/test-crates/readme-duplication/readme-py/000077500000000000000000000000001467514767100231135ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/readme-py/Cargo.toml000066400000000000000000000003321467514767100250410ustar00rootroot00000000000000[package] name = "readme_py" version = "0.2.0" edition = "2021" readme = "README.md" publish = false [lib] name = "readme" crate-type = ["cdylib"] [dependencies] readme-rs = { path = "../readme-rs" } pyo3 = "0.22.2" maturin-1.7.4/test-crates/readme-duplication/readme-py/README.md000066400000000000000000000000501467514767100243650ustar00rootroot00000000000000Readme duplication test case - Readme 2 maturin-1.7.4/test-crates/readme-duplication/readme-py/pyproject.toml000066400000000000000000000002611467514767100260260ustar00rootroot00000000000000[build-system] requires = ["maturin==1.6.0,<2.0"] build-backend = "maturin" [project] name = "readme-py" version = "0.2.0" [tool.maturin] features = ["pyo3/extension-module"] maturin-1.7.4/test-crates/readme-duplication/readme-py/src/000077500000000000000000000000001467514767100237025ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/readme-py/src/lib.rs000066400000000000000000000002701467514767100250150ustar00rootroot00000000000000use pyo3::{pymodule, Bound, PyResult}; use pyo3::types::{PyModule, PyModuleMethods}; #[pymodule] fn readme(m: &Bound) -> PyResult<()> { m.add("value", 1)?; Ok(()) } maturin-1.7.4/test-crates/readme-duplication/readme-rs/000077500000000000000000000000001467514767100231075ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/readme-rs/Cargo.lock000066400000000000000000000242401467514767100250160ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "ahash" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", "zerocopy", ] [[package]] name = "anstream" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", "utf8parse", ] [[package]] name = "anstyle" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", "windows-sys", ] [[package]] name = "anyhow" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "cc" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" dependencies = [ "clap_builder", "clap_derive", ] [[package]] name = "clap_builder" version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", ] [[package]] name = "clap_derive" version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" dependencies = [ "heck", "proc-macro2", "quote", "syn", ] [[package]] name = "clap_lex" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "getrandom" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", "wasi", ] [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "jemalloc-sys" version = "0.5.4+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" dependencies = [ "cc", "libc", ] [[package]] name = "jemallocator" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc" dependencies = [ "jemalloc-sys", "libc", ] [[package]] name = "libc" version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "poppy" version = "0.1.0" dependencies = [ "ahash", "anyhow", "clap", "jemallocator", "rand", "thiserror", ] [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "strsim" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "syn" version = "2.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "thiserror" version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "utf8parse" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "zerocopy" version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", "syn", ] maturin-1.7.4/test-crates/readme-duplication/readme-rs/Cargo.toml000066400000000000000000000001301467514767100250310ustar00rootroot00000000000000[package] name = "readme-rs" version = "0.2.0" edition = "2021" readme.workspace = true maturin-1.7.4/test-crates/readme-duplication/readme-rs/src/000077500000000000000000000000001467514767100236765ustar00rootroot00000000000000maturin-1.7.4/test-crates/readme-duplication/readme-rs/src/lib.rs000066400000000000000000000000001467514767100250000ustar00rootroot00000000000000maturin-1.7.4/test-crates/sdist_with_path_dep/000077500000000000000000000000001467514767100215075ustar00rootroot00000000000000maturin-1.7.4/test-crates/sdist_with_path_dep/Cargo.lock000066400000000000000000000050021467514767100234110ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "sdist_with_path_dep" version = "0.1.0" dependencies = [ "pyo3", "some_path_dep", ] [[package]] name = "some_path_dep" version = "0.1.0" dependencies = [ "transitive_path_dep", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "transitive_path_dep" version = "0.1.0" maturin-1.7.4/test-crates/sdist_with_path_dep/Cargo.toml000066400000000000000000000005601467514767100234400ustar00rootroot00000000000000[package] name = "sdist_with_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] # Don't use the macros feature, which makes compilation much faster pyo3 = { version = "0.22.0", default-features = false, features = ["extension-module"] } some_path_dep = { path = "../some_path_dep" } maturin-1.7.4/test-crates/sdist_with_path_dep/pyproject.toml000066400000000000000000000001121467514767100244150ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/sdist_with_path_dep/src/000077500000000000000000000000001467514767100222765ustar00rootroot00000000000000maturin-1.7.4/test-crates/sdist_with_path_dep/src/lib.rs000066400000000000000000000124311467514767100234130ustar00rootroot00000000000000/// We speed up compilation by using the expanded output and then deselecting the macro feature /// of pyo3, removing syn and proc macros from the dependencies use pyo3::prelude::*; fn add(x: usize, y: usize) -> usize { let sum = some_path_dep::add(x, y); debug_assert!(some_path_dep::is_sum(x, y, sum)); sum } unsafe extern "C" fn __pyo3_raw_add( _slf: *mut pyo3::ffi::PyObject, _args: *mut pyo3::ffi::PyObject, _kwargs: *mut pyo3::ffi::PyObject, ) -> *mut pyo3::ffi::PyObject { const _LOCATION: &'static str = "add()"; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, { let _args = _py.from_borrowed_ptr::(_args); let _kwargs: Option<&pyo3::types::PyDict> = _py.from_borrowed_ptr_or_opt(_kwargs); { const PARAMS: &'static [pyo3::derive_utils::ParamDescription] = &[ pyo3::derive_utils::ParamDescription { name: "x", is_optional: false, kw_only: false, }, pyo3::derive_utils::ParamDescription { name: "y", is_optional: false, kw_only: false, }, ]; let mut output = [None; 2usize]; let mut _args = _args; let mut _kwargs = _kwargs; let (_args, _kwargs) = pyo3::derive_utils::parse_fn_args( Some(_LOCATION), PARAMS, _args, _kwargs, false, false, &mut output, )?; let arg0 = match output[0usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "x", e))?, None => { panic!("Failed to extract required method argument") } }; let arg1 = match output[1usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "y", e))?, None => { panic!("Failed to extract required method argument") } }; add(arg0, arg1) } }) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } pub(crate) fn __pyo3_get_function_add<'a>( args: impl Into>, ) -> pyo3::PyResult<&'a pyo3::types::PyCFunction> { let name = "add\u{0}"; let name = std::ffi::CStr::from_bytes_with_nul(name.as_bytes()).unwrap(); let doc = std::ffi::CStr::from_bytes_with_nul(b"\x00").unwrap(); pyo3::types::PyCFunction::internal_new( name, doc, pyo3::class::PyMethodType::PyCFunctionWithKeywords(__pyo3_raw_add), pyo3::ffi::METH_VARARGS | pyo3::ffi::METH_KEYWORDS, args.into(), ) } fn pyo3_pure(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(&__pyo3_get_function_add)?; Ok(()) } #[no_mangle] #[allow(non_snake_case)] #[doc = r" This autogenerated function is called by the python interpreter when importing"] #[doc = r" the module."] pub unsafe extern "C" fn PyInit_sdist_with_path_dep() -> *mut pyo3::ffi::PyObject { use pyo3::derive_utils::ModuleDef; const NAME: &'static str = "pyo3_pure\u{0}"; static MODULE_DEF: ModuleDef = unsafe { ModuleDef::new(NAME) }; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, MODULE_DEF.make_module("", pyo3_pure)) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } maturin-1.7.4/test-crates/sdist_with_target_path_dep/000077500000000000000000000000001467514767100230555ustar00rootroot00000000000000maturin-1.7.4/test-crates/sdist_with_target_path_dep/Cargo.lock000066400000000000000000000050111467514767100247570ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "sdist_with_target_path_dep" version = "0.1.0" dependencies = [ "pyo3", "some_path_dep", ] [[package]] name = "some_path_dep" version = "0.1.0" dependencies = [ "transitive_path_dep", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "transitive_path_dep" version = "0.1.0" maturin-1.7.4/test-crates/sdist_with_target_path_dep/Cargo.toml000066400000000000000000000006771467514767100250170ustar00rootroot00000000000000[package] name = "sdist_with_target_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] # Don't use the macros feature, which makes compilation much faster pyo3 = { version = "0.22.0", default-features = false, features = ["extension-module"] } [target.'cfg(not(target_endian = "all-over-the-place"))'.dependencies] some_path_dep = { path = "../some_path_dep" } maturin-1.7.4/test-crates/sdist_with_target_path_dep/pyproject.toml000066400000000000000000000001121467514767100257630ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/sdist_with_target_path_dep/src/000077500000000000000000000000001467514767100236445ustar00rootroot00000000000000maturin-1.7.4/test-crates/sdist_with_target_path_dep/src/lib.rs000066400000000000000000000124311467514767100247610ustar00rootroot00000000000000/// We speed up compilation by using the expanded output and then deselecting the macro feature /// of pyo3, removing syn and proc macros from the dependencies use pyo3::prelude::*; fn add(x: usize, y: usize) -> usize { let sum = some_path_dep::add(x, y); debug_assert!(some_path_dep::is_sum(x, y, sum)); sum } unsafe extern "C" fn __pyo3_raw_add( _slf: *mut pyo3::ffi::PyObject, _args: *mut pyo3::ffi::PyObject, _kwargs: *mut pyo3::ffi::PyObject, ) -> *mut pyo3::ffi::PyObject { const _LOCATION: &'static str = "add()"; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, { let _args = _py.from_borrowed_ptr::(_args); let _kwargs: Option<&pyo3::types::PyDict> = _py.from_borrowed_ptr_or_opt(_kwargs); { const PARAMS: &'static [pyo3::derive_utils::ParamDescription] = &[ pyo3::derive_utils::ParamDescription { name: "x", is_optional: false, kw_only: false, }, pyo3::derive_utils::ParamDescription { name: "y", is_optional: false, kw_only: false, }, ]; let mut output = [None; 2usize]; let mut _args = _args; let mut _kwargs = _kwargs; let (_args, _kwargs) = pyo3::derive_utils::parse_fn_args( Some(_LOCATION), PARAMS, _args, _kwargs, false, false, &mut output, )?; let arg0 = match output[0usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "x", e))?, None => { panic!("Failed to extract required method argument") } }; let arg1 = match output[1usize] { Some(_obj) => _obj .extract() .map_err(|e| pyo3::derive_utils::argument_extraction_error(_py, "y", e))?, None => { panic!("Failed to extract required method argument") } }; add(arg0, arg1) } }) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } pub(crate) fn __pyo3_get_function_add<'a>( args: impl Into>, ) -> pyo3::PyResult<&'a pyo3::types::PyCFunction> { let name = "add\u{0}"; let name = std::ffi::CStr::from_bytes_with_nul(name.as_bytes()).unwrap(); let doc = std::ffi::CStr::from_bytes_with_nul(b"\x00").unwrap(); pyo3::types::PyCFunction::internal_new( name, doc, pyo3::class::PyMethodType::PyCFunctionWithKeywords(__pyo3_raw_add), pyo3::ffi::METH_VARARGS | pyo3::ffi::METH_KEYWORDS, args.into(), ) } fn pyo3_pure(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_wrapped(&__pyo3_get_function_add)?; Ok(()) } #[no_mangle] #[allow(non_snake_case)] #[doc = r" This autogenerated function is called by the python interpreter when importing"] #[doc = r" the module."] pub unsafe extern "C" fn PyInit_sdist_with_path_dep() -> *mut pyo3::ffi::PyObject { use pyo3::derive_utils::ModuleDef; const NAME: &'static str = "pyo3_pure\u{0}"; static MODULE_DEF: ModuleDef = unsafe { ModuleDef::new(NAME) }; let pool = ::pyo3::GILPool::new(); let unwind_safe_py = std::panic::AssertUnwindSafe(pool.python()); let result = match std::panic::catch_unwind(move || -> ::pyo3::PyResult<_> { let _py = *unwind_safe_py; ::pyo3::callback::convert(_py, MODULE_DEF.make_module("", pyo3_pure)) }) { Ok(result) => result, Err(e) => { if let Some(string) = e.downcast_ref::() { Err(::pyo3::panic::PanicException::new_err((string.clone(),))) } else if let Some(s) = e.downcast_ref::<&str>() { Err(::pyo3::panic::PanicException::new_err((s.to_string(),))) } else { Err(::pyo3::panic::PanicException::new_err(( "panic from Rust code", ))) } } }; result.unwrap_or_else(|e| { e.restore(pool.python()); ::pyo3::callback::callback_error() }) } maturin-1.7.4/test-crates/some_path_dep/000077500000000000000000000000001467514767100202715ustar00rootroot00000000000000maturin-1.7.4/test-crates/some_path_dep/Cargo.toml000066400000000000000000000004341467514767100222220ustar00rootroot00000000000000[package] name = "some_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] transitive_path_dep = { path = "../transitive_path_dep" } maturin-1.7.4/test-crates/some_path_dep/src/000077500000000000000000000000001467514767100210605ustar00rootroot00000000000000maturin-1.7.4/test-crates/some_path_dep/src/lib.rs000066400000000000000000000003001467514767100221650ustar00rootroot00000000000000pub use transitive_path_dep::is_sum; pub fn add(x: usize, y: usize) -> usize { x + y } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(add(2, 2), 4); } } maturin-1.7.4/test-crates/transitive_path_dep/000077500000000000000000000000001467514767100215165ustar00rootroot00000000000000maturin-1.7.4/test-crates/transitive_path_dep/Cargo.toml000066400000000000000000000003501467514767100234440ustar00rootroot00000000000000[package] name = "transitive_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] maturin-1.7.4/test-crates/transitive_path_dep/src/000077500000000000000000000000001467514767100223055ustar00rootroot00000000000000maturin-1.7.4/test-crates/transitive_path_dep/src/lib.rs000066400000000000000000000002531467514767100234210ustar00rootroot00000000000000pub fn is_sum(x: usize, y: usize, sum: usize) -> bool { x + y == sum } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } } maturin-1.7.4/test-crates/uniffi-mixed/000077500000000000000000000000001467514767100200465ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-mixed/.gitignore000066400000000000000000000000321467514767100220310ustar00rootroot00000000000000uniffi_mixed/uniffi_mixed maturin-1.7.4/test-crates/uniffi-mixed/Cargo.lock000066400000000000000000000314541467514767100217620ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "anyhow" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "askama" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" dependencies = [ "askama_derive", "askama_escape", ] [[package]] name = "askama_derive" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" dependencies = [ "askama_parser", "basic-toml", "mime", "mime_guess", "proc-macro2", "quote", "serde", "syn", ] [[package]] name = "askama_escape" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "askama_parser" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" dependencies = [ "nom", ] [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "basic-toml" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" dependencies = [ "serde", ] [[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bytes" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "camino" version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", "scroll", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smawk" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "textwrap" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", ] [[package]] name = "thiserror" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "unicase" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "uniffi" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" dependencies = [ "anyhow", "uniffi_build", "uniffi_core", "uniffi_macros", ] [[package]] name = "uniffi-mixed" version = "0.1.0" dependencies = [ "uniffi", ] [[package]] name = "uniffi_bindgen" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" dependencies = [ "anyhow", "askama", "camino", "cargo_metadata", "fs-err", "glob", "goblin", "heck", "once_cell", "paste", "serde", "textwrap", "toml", "uniffi_meta", "uniffi_testing", "uniffi_udl", ] [[package]] name = "uniffi_build" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" dependencies = [ "anyhow", "camino", "uniffi_bindgen", ] [[package]] name = "uniffi_checksum_derive" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" dependencies = [ "quote", "syn", ] [[package]] name = "uniffi_core" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" dependencies = [ "anyhow", "bytes", "camino", "log", "once_cell", "paste", "static_assertions", ] [[package]] name = "uniffi_macros" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" dependencies = [ "bincode", "camino", "fs-err", "once_cell", "proc-macro2", "quote", "serde", "syn", "toml", "uniffi_meta", ] [[package]] name = "uniffi_meta" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" dependencies = [ "anyhow", "bytes", "siphasher", "uniffi_checksum_derive", ] [[package]] name = "uniffi_testing" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" dependencies = [ "anyhow", "camino", "cargo_metadata", "fs-err", "once_cell", ] [[package]] name = "uniffi_udl" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" dependencies = [ "anyhow", "textwrap", "uniffi_meta", "uniffi_testing", "weedle2", ] [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "weedle2" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" dependencies = [ "nom", ] maturin-1.7.4/test-crates/uniffi-mixed/Cargo.toml000066400000000000000000000005101467514767100217720ustar00rootroot00000000000000[package] name = "uniffi-mixed" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "uniffi_mixed" crate-type = ["cdylib"] [dependencies] uniffi = "0.28.0" [build-dependencies] uniffi = { version = "0.28.0", features = ["build"] } maturin-1.7.4/test-crates/uniffi-mixed/build.rs000066400000000000000000000001131467514767100215060ustar00rootroot00000000000000fn main() { uniffi::generate_scaffolding("./src/math.udl").unwrap(); } maturin-1.7.4/test-crates/uniffi-mixed/check_installed/000077500000000000000000000000001467514767100231625ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-mixed/check_installed/check_installed.py000066400000000000000000000001421467514767100266450ustar00rootroot00000000000000#!/usr/bin/env python3 import uniffi_mixed assert uniffi_mixed.add(1, 2) == 3 print("SUCCESS") maturin-1.7.4/test-crates/uniffi-mixed/pyproject.toml000066400000000000000000000001121467514767100227540ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/uniffi-mixed/src/000077500000000000000000000000001467514767100206355ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-mixed/src/lib.rs000066400000000000000000000001231467514767100217450ustar00rootroot00000000000000fn add(a: u32, b: u32) -> u32 { a + b } uniffi::include_scaffolding!("math"); maturin-1.7.4/test-crates/uniffi-mixed/src/math.udl000066400000000000000000000000551467514767100222740ustar00rootroot00000000000000namespace math { u32 add(u32 a, u32 b); }; maturin-1.7.4/test-crates/uniffi-mixed/test_uniffi_mixed.py000066400000000000000000000001151467514767100241220ustar00rootroot00000000000000import uniffi_mixed def test_add(): assert uniffi_mixed.add(1, 2) == 3 maturin-1.7.4/test-crates/uniffi-mixed/uniffi_mixed/000077500000000000000000000000001467514767100225145ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-mixed/uniffi_mixed/__init__.py000066400000000000000000000000441467514767100246230ustar00rootroot00000000000000from .uniffi_mixed import * # NOQA maturin-1.7.4/test-crates/uniffi-multiple-binding-files/000077500000000000000000000000001467514767100233035ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-multiple-binding-files/Cargo.lock000066400000000000000000000441151467514767100252150ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "anstream" version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys", ] [[package]] name = "anyhow" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "askama" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" dependencies = [ "askama_derive", "askama_escape", ] [[package]] name = "askama_derive" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" dependencies = [ "askama_parser", "basic-toml", "mime", "mime_guess", "proc-macro2", "quote", "serde", "syn", ] [[package]] name = "askama_escape" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "askama_parser" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" dependencies = [ "nom", ] [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "basic-toml" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" dependencies = [ "serde", ] [[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bytes" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "camino" version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "clap" version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", "clap_derive", ] [[package]] name = "clap_builder" version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", ] [[package]] name = "clap_derive" version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", "proc-macro2", "quote", "syn", ] [[package]] name = "clap_lex" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", "scroll", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "is_terminal_polyfill" version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mylib" version = "0.1.0" dependencies = [ "uniffi", ] [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ "itoa", "memchr", "ryu", "serde", ] [[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smawk" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[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.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "textwrap" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", ] [[package]] name = "thiserror" version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "unicase" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "uniffi" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2db87def739fe4183947f8419d572d1849a4a09355eba4e988a2105cfd0ac6a7" dependencies = [ "anyhow", "camino", "cargo_metadata", "clap", "uniffi_bindgen", "uniffi_build", "uniffi_core", "uniffi_macros", ] [[package]] name = "uniffi-multiple-binding-files" version = "0.1.0" dependencies = [ "mylib", "uniffi", ] [[package]] name = "uniffi_bindgen" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a112599c9556d1581e4a3d72019a74c2c3e122cc27f4af12577a429c4d5e614" dependencies = [ "anyhow", "askama", "camino", "cargo_metadata", "fs-err", "glob", "goblin", "heck", "once_cell", "paste", "serde", "textwrap", "toml", "uniffi_meta", "uniffi_udl", ] [[package]] name = "uniffi_build" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2b12684401d2a8508ca9c72a95bbc45906417e42fc80942abaf033bbf01aa33" dependencies = [ "anyhow", "camino", "uniffi_bindgen", ] [[package]] name = "uniffi_checksum_derive" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a22dbe67c1c957ac6e7611bdf605a6218aa86b0eebeb8be58b70ae85ad7d73dc" dependencies = [ "quote", "syn", ] [[package]] name = "uniffi_core" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a0c35aaad30e3a9e6d4fe34e358d64dbc92ee09045b48591b05fc9f12e0905b" dependencies = [ "anyhow", "bytes", "camino", "log", "once_cell", "paste", "static_assertions", ] [[package]] name = "uniffi_macros" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db66474c5c61b0f7afc3b4995fecf9b72b340daa5ca0ef3da7778d75eb5482ea" dependencies = [ "bincode", "camino", "fs-err", "once_cell", "proc-macro2", "quote", "serde", "syn", "toml", "uniffi_meta", ] [[package]] name = "uniffi_meta" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d898893f102e0e39b8bcb7e3d2188f4156ba280db32db9e8af1f122d057e9526" dependencies = [ "anyhow", "bytes", "siphasher", "uniffi_checksum_derive", ] [[package]] name = "uniffi_testing" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c6aa4f0cf9d12172d84fc00a35a6c1f3522b526daad05ae739f709f6941b9b6" dependencies = [ "anyhow", "camino", "cargo_metadata", "fs-err", "once_cell", ] [[package]] name = "uniffi_udl" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b044e9c519e0bb51e516ab6f6d8f4f4dcf900ce30d5ad07c03f924e2824f28e" dependencies = [ "anyhow", "textwrap", "uniffi_meta", "uniffi_testing", "weedle2", ] [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "weedle2" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" dependencies = [ "nom", ] [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 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" maturin-1.7.4/test-crates/uniffi-multiple-binding-files/Cargo.toml000066400000000000000000000006471467514767100252420ustar00rootroot00000000000000[package] name = "uniffi-multiple-binding-files" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "uniffi_multiple_binding_files" crate-type = ["cdylib"] [dependencies] uniffi = { version = "0.28.0", features = ["cli"] } mylib = { path = "mylib" } [build-dependencies] uniffi = { version = "0.28.0", features = ["build"] } maturin-1.7.4/test-crates/uniffi-multiple-binding-files/check_installed/000077500000000000000000000000001467514767100264175ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-multiple-binding-files/check_installed/check_installed.py000066400000000000000000000002711467514767100321050ustar00rootroot00000000000000#!/usr/bin/env python3 import uniffi_multiple_binding_files assert uniffi_multiple_binding_files.get_status() == uniffi_multiple_binding_files.mylib.Status.COMPLETE print("SUCCESS") maturin-1.7.4/test-crates/uniffi-multiple-binding-files/mylib/000077500000000000000000000000001467514767100244175ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-multiple-binding-files/mylib/Cargo.toml000066400000000000000000000003161467514767100263470ustar00rootroot00000000000000[package] name = "mylib" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] uniffi = { version = "0.28.0" } maturin-1.7.4/test-crates/uniffi-multiple-binding-files/mylib/src/000077500000000000000000000000001467514767100252065ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-multiple-binding-files/mylib/src/lib.rs000066400000000000000000000002361467514767100263230ustar00rootroot00000000000000#[derive(uniffi::Enum)] pub enum Status { Running, Complete, } pub fn get_status() -> Status { Status::Complete } uniffi::setup_scaffolding!(); maturin-1.7.4/test-crates/uniffi-multiple-binding-files/src/000077500000000000000000000000001467514767100240725ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-multiple-binding-files/src/lib.rs000066400000000000000000000001621467514767100252050ustar00rootroot00000000000000#[uniffi::export] pub fn get_status() -> mylib::Status { mylib::get_status() } uniffi::setup_scaffolding!(); maturin-1.7.4/test-crates/uniffi-multiple-binding-files/uniffi.toml000066400000000000000000000001001467514767100254470ustar00rootroot00000000000000[bindings.python] cdylib_name = "uniffi_multiple_binding_files" maturin-1.7.4/test-crates/uniffi-pure-proc-macro/000077500000000000000000000000001467514767100217535ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure-proc-macro/Cargo.lock000066400000000000000000000437421467514767100236720ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "anstream" version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys", ] [[package]] name = "anyhow" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "askama" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" dependencies = [ "askama_derive", "askama_escape", ] [[package]] name = "askama_derive" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" dependencies = [ "askama_parser", "basic-toml", "mime", "mime_guess", "proc-macro2", "quote", "serde", "syn", ] [[package]] name = "askama_escape" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "askama_parser" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" dependencies = [ "nom", ] [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "basic-toml" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" dependencies = [ "serde", ] [[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bytes" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "camino" version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "clap" version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", ] [[package]] name = "clap_builder" version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", ] [[package]] name = "clap_derive" version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck", "proc-macro2", "quote", "syn", ] [[package]] name = "clap_lex" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "colorchoice" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", "scroll", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "is_terminal_polyfill" version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smawk" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[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.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "textwrap" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", ] [[package]] name = "thiserror" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "unicase" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "uniffi" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" dependencies = [ "anyhow", "camino", "clap", "uniffi_bindgen", "uniffi_build", "uniffi_core", "uniffi_macros", ] [[package]] name = "uniffi-pure-proc-macro" version = "0.1.0" dependencies = [ "uniffi", ] [[package]] name = "uniffi_bindgen" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" dependencies = [ "anyhow", "askama", "camino", "cargo_metadata", "fs-err", "glob", "goblin", "heck", "once_cell", "paste", "serde", "textwrap", "toml", "uniffi_meta", "uniffi_testing", "uniffi_udl", ] [[package]] name = "uniffi_build" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" dependencies = [ "anyhow", "camino", "uniffi_bindgen", ] [[package]] name = "uniffi_checksum_derive" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" dependencies = [ "quote", "syn", ] [[package]] name = "uniffi_core" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" dependencies = [ "anyhow", "bytes", "camino", "log", "once_cell", "paste", "static_assertions", ] [[package]] name = "uniffi_macros" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" dependencies = [ "bincode", "camino", "fs-err", "once_cell", "proc-macro2", "quote", "serde", "syn", "toml", "uniffi_meta", ] [[package]] name = "uniffi_meta" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" dependencies = [ "anyhow", "bytes", "siphasher", "uniffi_checksum_derive", ] [[package]] name = "uniffi_testing" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" dependencies = [ "anyhow", "camino", "cargo_metadata", "fs-err", "once_cell", ] [[package]] name = "uniffi_udl" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" dependencies = [ "anyhow", "textwrap", "uniffi_meta", "uniffi_testing", "weedle2", ] [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "weedle2" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" dependencies = [ "nom", ] [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 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.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" [[package]] name = "windows_i686_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" maturin-1.7.4/test-crates/uniffi-pure-proc-macro/Cargo.toml000066400000000000000000000006721467514767100237100ustar00rootroot00000000000000[package] name = "uniffi-pure-proc-macro" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "uniffi_pure_proc_macro" crate-type = ["cdylib"] [[bin]] name = "uniffi-bindgen" path = "uniffi-bindgen.rs" [dependencies] uniffi = { version = "0.28.0", features = ["cli"] } [build-dependencies] uniffi = { version = "0.28.0", features = ["build"] } maturin-1.7.4/test-crates/uniffi-pure-proc-macro/check_installed/000077500000000000000000000000001467514767100250675ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure-proc-macro/check_installed/check_installed.py000066400000000000000000000001721467514767100305550ustar00rootroot00000000000000#!/usr/bin/env python3 import uniffi_pure_proc_macro as uniffi_pure assert uniffi_pure.add(1, 2) == 3 print("SUCCESS") maturin-1.7.4/test-crates/uniffi-pure-proc-macro/pyproject.toml000066400000000000000000000001121467514767100246610ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/uniffi-pure-proc-macro/src/000077500000000000000000000000001467514767100225425ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure-proc-macro/src/lib.rs000066400000000000000000000001351467514767100236550ustar00rootroot00000000000000#[uniffi::export] fn add(a: u32, b: u32) -> u32 { a + b } uniffi::setup_scaffolding!(); maturin-1.7.4/test-crates/uniffi-pure-proc-macro/test_uniffi_pure.py000066400000000000000000000001451467514767100256770ustar00rootroot00000000000000import uniffi_pure_proc_macro as uniffi_pure def test_add(): assert uniffi_pure.add(1, 2) == 3 maturin-1.7.4/test-crates/uniffi-pure-proc-macro/uniffi-bindgen.rs000066400000000000000000000000601467514767100252010ustar00rootroot00000000000000fn main() { uniffi::uniffi_bindgen_main() } maturin-1.7.4/test-crates/uniffi-pure-proc-macro/uniffi.toml000066400000000000000000000000521467514767100241250ustar00rootroot00000000000000[bindings.python] cdylib_name = "example" maturin-1.7.4/test-crates/uniffi-pure/000077500000000000000000000000001467514767100177135ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure/Cargo.lock000066400000000000000000000314531467514767100216260ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "anyhow" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "askama" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" dependencies = [ "askama_derive", "askama_escape", ] [[package]] name = "askama_derive" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" dependencies = [ "askama_parser", "basic-toml", "mime", "mime_guess", "proc-macro2", "quote", "serde", "syn", ] [[package]] name = "askama_escape" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "askama_parser" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" dependencies = [ "nom", ] [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "basic-toml" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" dependencies = [ "serde", ] [[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bytes" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "camino" version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] [[package]] name = "cargo-platform" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "goblin" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", "scroll", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", ] [[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" dependencies = [ "scroll_derive", ] [[package]] name = "scroll_derive" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "serde_json" version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", "serde", ] [[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smawk" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "textwrap" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", ] [[package]] name = "thiserror" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "toml" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "unicase" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "uniffi" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" dependencies = [ "anyhow", "uniffi_build", "uniffi_core", "uniffi_macros", ] [[package]] name = "uniffi-pure" version = "0.1.0" dependencies = [ "uniffi", ] [[package]] name = "uniffi_bindgen" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" dependencies = [ "anyhow", "askama", "camino", "cargo_metadata", "fs-err", "glob", "goblin", "heck", "once_cell", "paste", "serde", "textwrap", "toml", "uniffi_meta", "uniffi_testing", "uniffi_udl", ] [[package]] name = "uniffi_build" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" dependencies = [ "anyhow", "camino", "uniffi_bindgen", ] [[package]] name = "uniffi_checksum_derive" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" dependencies = [ "quote", "syn", ] [[package]] name = "uniffi_core" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" dependencies = [ "anyhow", "bytes", "camino", "log", "once_cell", "paste", "static_assertions", ] [[package]] name = "uniffi_macros" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" dependencies = [ "bincode", "camino", "fs-err", "once_cell", "proc-macro2", "quote", "serde", "syn", "toml", "uniffi_meta", ] [[package]] name = "uniffi_meta" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" dependencies = [ "anyhow", "bytes", "siphasher", "uniffi_checksum_derive", ] [[package]] name = "uniffi_testing" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" dependencies = [ "anyhow", "camino", "cargo_metadata", "fs-err", "once_cell", ] [[package]] name = "uniffi_udl" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" dependencies = [ "anyhow", "textwrap", "uniffi_meta", "uniffi_testing", "weedle2", ] [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "weedle2" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" dependencies = [ "nom", ] maturin-1.7.4/test-crates/uniffi-pure/Cargo.toml000066400000000000000000000005061467514767100216440ustar00rootroot00000000000000[package] name = "uniffi-pure" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "uniffi_pure" crate-type = ["cdylib"] [dependencies] uniffi = "0.28.0" [build-dependencies] uniffi = { version = "0.28.0", features = ["build"] } maturin-1.7.4/test-crates/uniffi-pure/build.rs000066400000000000000000000001131467514767100213530ustar00rootroot00000000000000fn main() { uniffi::generate_scaffolding("./src/math.udl").unwrap(); } maturin-1.7.4/test-crates/uniffi-pure/check_installed/000077500000000000000000000000001467514767100230275ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure/check_installed/check_installed.py000066400000000000000000000001401467514767100265100ustar00rootroot00000000000000#!/usr/bin/env python3 import uniffi_pure assert uniffi_pure.add(1, 2) == 3 print("SUCCESS") maturin-1.7.4/test-crates/uniffi-pure/pyproject.toml000066400000000000000000000001121467514767100226210ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/uniffi-pure/src/000077500000000000000000000000001467514767100205025ustar00rootroot00000000000000maturin-1.7.4/test-crates/uniffi-pure/src/lib.rs000066400000000000000000000001231467514767100216120ustar00rootroot00000000000000fn add(a: u32, b: u32) -> u32 { a + b } uniffi::include_scaffolding!("math"); maturin-1.7.4/test-crates/uniffi-pure/src/math.udl000066400000000000000000000000551467514767100221410ustar00rootroot00000000000000namespace math { u32 add(u32 a, u32 b); }; maturin-1.7.4/test-crates/uniffi-pure/test_uniffi_pure.py000066400000000000000000000001131467514767100236320ustar00rootroot00000000000000import uniffi_pure def test_add(): assert uniffi_pure.add(1, 2) == 3 maturin-1.7.4/test-crates/uniffi-pure/uniffi.toml000066400000000000000000000000521467514767100220650ustar00rootroot00000000000000[bindings.python] cdylib_name = "example" maturin-1.7.4/test-crates/update_readme.py000066400000000000000000000021331467514767100206320ustar00rootroot00000000000000#!/usr/bin/env python3 import re import subprocess from pathlib import Path FILES = [ "README.md", "guide/src/local_development.md", "guide/src/tutorial.md", "guide/src/distribution.md", ] def main(): root = Path(subprocess.check_output(["git", "rev-parse", "--show-toplevel"], text=True).strip()) for path in FILES: content = root.joinpath(path).read_text() matcher = re.compile(r"```\nUsage: maturin (\w+) (.*?)```", re.MULTILINE | re.DOTALL) replaces = {} for command, old in matcher.findall(content): command_output = subprocess.check_output(["cargo", "run", "--", command.lower(), "--help"], text=True) new = "Usage:" + command_output.strip().split("Usage:")[1] + "\n" # Remove trailing whitespace new = re.sub(" +\n", "\n", new) old = "Usage: maturin " + command + " " + old replaces[old] = new for old, new in replaces.items(): content = content.replace(old, new) root.joinpath(path).write_text(content) if __name__ == "__main__": main() maturin-1.7.4/test-crates/with-data/000077500000000000000000000000001467514767100173445ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/Cargo.lock000066400000000000000000000002311467514767100212450ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "with-data" version = "0.1.0" maturin-1.7.4/test-crates/with-data/Cargo.toml000066400000000000000000000002361467514767100212750ustar00rootroot00000000000000[package] name = "with-data" version = "0.1.0" authors = ["konstin "] edition = "2021" [lib] name = "with_data" crate-type = ["cdylib"] maturin-1.7.4/test-crates/with-data/check_installed/000077500000000000000000000000001467514767100224605ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/check_installed/check_installed.py000066400000000000000000000014361467514767100261520ustar00rootroot00000000000000import locale import sys from pathlib import Path import with_data assert with_data.lib.one() == 1 assert with_data.ffi.string(with_data.lib.say_hello()).decode() == "hello" venv_root = Path(sys.prefix) installed_data = ( venv_root.joinpath("data_subdir") .joinpath("hello.txt") # With the default encoding, python under windows fails to read the file correctly .read_text(encoding="utf-8") .strip() ) assert installed_data == "Hi! 😊", ( installed_data, "Hi! 😊", locale.getpreferredencoding(), ) header_file = ( venv_root.joinpath("include") .joinpath("site") .joinpath(f"python{sys.version_info.major}.{sys.version_info.minor}") .joinpath("with-data") .joinpath("empty.h") ) assert header_file.is_file(), header_file print("SUCCESS") maturin-1.7.4/test-crates/with-data/pyproject.toml000066400000000000000000000002001467514767100222500ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [project] name = "with-data" dependencies = ["cffi"] maturin-1.7.4/test-crates/with-data/src/000077500000000000000000000000001467514767100201335ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/src/lib.rs000066400000000000000000000003601467514767100212460ustar00rootroot00000000000000use std::ffi::CString; use std::os::raw::{c_char, c_int}; #[no_mangle] pub unsafe extern "C" fn say_hello() -> *const c_char { CString::new("hello").unwrap().into_raw() } #[no_mangle] pub unsafe extern "C" fn one() -> c_int { 1 } maturin-1.7.4/test-crates/with-data/with_data.data/000077500000000000000000000000001467514767100222205ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/with_data.data/data/000077500000000000000000000000001467514767100231315ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/with_data.data/data/data_subdir/000077500000000000000000000000001467514767100254125ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/with_data.data/data/data_subdir/hello.txt000066400000000000000000000000111467514767100272460ustar00rootroot00000000000000Hi! 😊 maturin-1.7.4/test-crates/with-data/with_data.data/headers/000077500000000000000000000000001467514767100236335ustar00rootroot00000000000000maturin-1.7.4/test-crates/with-data/with_data.data/headers/empty.h000066400000000000000000000000001467514767100251300ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/000077500000000000000000000000001467514767100217475ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/Cargo.lock000066400000000000000000000134461467514767100236640ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "generic_lib" version = "0.1.0" [[package]] name = "getrandom" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", "wasi", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "workspace-inheritance" version = "0.1.0" dependencies = [ "cfg-if", "generic_lib", "libc", "pyo3", "rand", ] maturin-1.7.4/test-crates/workspace-inheritance/Cargo.toml000066400000000000000000000003531467514767100237000ustar00rootroot00000000000000[workspace] members = [ "generic_lib", "python" ] [workspace.package] version = "0.1.0" [workspace.dependencies] cfg-if = "1.0.0" libc = { version = "0.2", features = ["std"] } rand = "0.8" generic_lib = { path = "generic_lib" } maturin-1.7.4/test-crates/workspace-inheritance/generic_lib/000077500000000000000000000000001467514767100242115ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/generic_lib/Cargo.toml000066400000000000000000000002641467514767100261430ustar00rootroot00000000000000[package] name = "generic_lib" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] maturin-1.7.4/test-crates/workspace-inheritance/generic_lib/src/000077500000000000000000000000001467514767100250005ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/generic_lib/src/lib.rs000066400000000000000000000000531467514767100261120ustar00rootroot00000000000000pub fn foo() -> &'static str { "foo" } maturin-1.7.4/test-crates/workspace-inheritance/python/000077500000000000000000000000001467514767100232705ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/python/Cargo.toml000066400000000000000000000012011467514767100252120ustar00rootroot00000000000000[package] name = "workspace-inheritance" version.workspace = true edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "workspace_inheritance" crate-type = ["cdylib"] [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module"] } generic_lib.workspace = true [dependencies.libc] workspace = true optional = true features = ["extra_traits"] [build-dependencies] cfg-if.workspace = true [dev-dependencies] cfg-if.workspace = true [dependencies.cfg-if] workspace = true optional = true [dependencies.rand] workspace = true features = ["small_rng"] maturin-1.7.4/test-crates/workspace-inheritance/python/pyproject.toml000066400000000000000000000001141467514767100262000ustar00rootroot00000000000000[build-system] requires = ["maturin>=0.15,<0.16"] build-backend = "maturin" maturin-1.7.4/test-crates/workspace-inheritance/python/src/000077500000000000000000000000001467514767100240575ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace-inheritance/python/src/lib.rs000066400000000000000000000005571467514767100252020ustar00rootroot00000000000000use pyo3::prelude::*; /// Formats the sum of two numbers as string. #[pyfunction] fn sum_as_string(a: usize, b: usize) -> PyResult { Ok((a + b).to_string()) } /// A Python module implemented in Rust. #[pymodule] fn workspace_with_path_dep(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(sum_as_string, m)?)?; Ok(()) } maturin-1.7.4/test-crates/workspace/000077500000000000000000000000001467514767100174605ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace/Cargo.lock000066400000000000000000000002051467514767100213620ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "py" version = "0.1.0" maturin-1.7.4/test-crates/workspace/Cargo.toml000066400000000000000000000000431467514767100214050ustar00rootroot00000000000000[workspace] members = [ "py" ] maturin-1.7.4/test-crates/workspace/Readme.md000066400000000000000000000003751467514767100212040ustar00rootroot00000000000000This tests that we ignore non-existent Cargo.lock file listed by `cargo package --list`, which seems to only occur with workspaces. See https://github.com/rust-lang/cargo/issues/7938#issuecomment-593280660 and https://github.com/PyO3/maturin/issues/449 maturin-1.7.4/test-crates/workspace/py/000077500000000000000000000000001467514767100201105ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace/py/Cargo.toml000066400000000000000000000001651467514767100220420ustar00rootroot00000000000000[package] name = "py" version = "0.1.0" authors = ["konstin "] edition = "2021" [dependencies] maturin-1.7.4/test-crates/workspace/py/pyproject.toml000066400000000000000000000001141467514767100230200ustar00rootroot00000000000000[build-system] requires = ["maturin>=0.15,<0.16"] build-backend = "maturin" maturin-1.7.4/test-crates/workspace/py/src/000077500000000000000000000000001467514767100206775ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace/py/src/main.rs000066400000000000000000000000551467514767100221710ustar00rootroot00000000000000fn main() { println!("Hello, world!"); } maturin-1.7.4/test-crates/workspace_with_path_dep/000077500000000000000000000000001467514767100223575ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/Cargo.lock000066400000000000000000000111221467514767100242610ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "dont_include_in_sdist" version = "0.1.0" [[package]] name = "generic_lib" version = "0.1.0" dependencies = [ "transitive_lib", ] [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indoc" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "portable-atomic" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" [[package]] name = "proc-macro2" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1962a33ed2a201c637fc14a4e0fd4e06e6edfdeee6a5fede0dab55507ad74cf7" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", "unindent", ] [[package]] name = "pyo3-build-config" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7164b2202753bd33afc7f90a10355a719aa973d1f94502c50d06f3488bc420" dependencies = [ "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6424906ca49013c0829c5c1ed405e20e2da2dc78b82d198564880a704e6a7b7" dependencies = [ "libc", "pyo3-build-config", ] [[package]] name = "pyo3-macros" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b2f19e153122d64afd8ce7aaa72f06a00f52e34e1d1e74b6d71baea396460a" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", "syn", ] [[package]] name = "pyo3-macros-backend" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd698c04cac17cf0fe63d47790ab311b8b25542f5cb976b65c374035c50f1eef" dependencies = [ "heck", "proc-macro2", "pyo3-build-config", "quote", "syn", ] [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "syn" version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "target-lexicon" version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "transitive_lib" version = "0.1.0" [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unindent" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "workspace_with_path_dep" version = "0.1.0" dependencies = [ "generic_lib", "pyo3", ] maturin-1.7.4/test-crates/workspace_with_path_dep/Cargo.toml000066400000000000000000000001451467514767100243070ustar00rootroot00000000000000[workspace] members = [ "generic_lib", "transitive_lib", "dont_include_in_sdist", "python" ] maturin-1.7.4/test-crates/workspace_with_path_dep/dont_include_in_sdist/000077500000000000000000000000001467514767100267225ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/dont_include_in_sdist/Cargo.toml000066400000000000000000000002761467514767100306570ustar00rootroot00000000000000[package] name = "dont_include_in_sdist" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] maturin-1.7.4/test-crates/workspace_with_path_dep/dont_include_in_sdist/src/000077500000000000000000000000001467514767100275115ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/dont_include_in_sdist/src/main.rs000066400000000000000000000000551467514767100310030ustar00rootroot00000000000000fn main() { println!("Hello, world!"); } maturin-1.7.4/test-crates/workspace_with_path_dep/generic_lib/000077500000000000000000000000001467514767100246215ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/generic_lib/Cargo.toml000066400000000000000000000003441467514767100265520ustar00rootroot00000000000000[package] name = "generic_lib" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] transitive_lib = { path = "../transitive_lib" } maturin-1.7.4/test-crates/workspace_with_path_dep/generic_lib/src/000077500000000000000000000000001467514767100254105ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/generic_lib/src/lib.rs000066400000000000000000000000531467514767100265220ustar00rootroot00000000000000pub fn foo() -> &'static str { "foo" } maturin-1.7.4/test-crates/workspace_with_path_dep/python/000077500000000000000000000000001467514767100237005ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/python/Cargo.toml000066400000000000000000000005071467514767100256320ustar00rootroot00000000000000[package] name = "workspace_with_path_dep" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] crate-type = ["cdylib"] [dependencies] pyo3 = { version = "0.22.0", features = ["extension-module"] } generic_lib = { path = "../generic_lib" } maturin-1.7.4/test-crates/workspace_with_path_dep/python/pyproject.toml000066400000000000000000000001121467514767100266060ustar00rootroot00000000000000[build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/workspace_with_path_dep/python/src/000077500000000000000000000000001467514767100244675ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/python/src/lib.rs000066400000000000000000000005571467514767100256120ustar00rootroot00000000000000use pyo3::prelude::*; /// Formats the sum of two numbers as string. #[pyfunction] fn sum_as_string(a: usize, b: usize) -> PyResult { Ok((a + b).to_string()) } /// A Python module implemented in Rust. #[pymodule] fn workspace_with_path_dep(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(sum_as_string, m)?)?; Ok(()) } maturin-1.7.4/test-crates/workspace_with_path_dep/transitive_lib/000077500000000000000000000000001467514767100253755ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/transitive_lib/Cargo.toml000066400000000000000000000002671467514767100273320ustar00rootroot00000000000000[package] name = "transitive_lib" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] maturin-1.7.4/test-crates/workspace_with_path_dep/transitive_lib/src/000077500000000000000000000000001467514767100261645ustar00rootroot00000000000000maturin-1.7.4/test-crates/workspace_with_path_dep/transitive_lib/src/lib.rs000066400000000000000000000000531467514767100272760ustar00rootroot00000000000000pub fn bar() -> &'static str { "bar" } maturin-1.7.4/test-crates/wrong-python-source/000077500000000000000000000000001467514767100214335ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/Cargo.lock000066400000000000000000000002431467514767100233370ustar00rootroot00000000000000# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "wrong-python-source" version = "0.1.0" maturin-1.7.4/test-crates/wrong-python-source/Cargo.toml000066400000000000000000000001651467514767100233650ustar00rootroot00000000000000[package] name = "wrong-python-source" version = "0.1.0" edition = "2021" [[bin]] name = "run_this" [dependencies] maturin-1.7.4/test-crates/wrong-python-source/pyproject.toml000066400000000000000000000002041467514767100243430ustar00rootroot00000000000000[tool.maturin] bindings = "bin" python-source = "python" [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" maturin-1.7.4/test-crates/wrong-python-source/python/000077500000000000000000000000001467514767100227545ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/python/run_this/000077500000000000000000000000001467514767100246075ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/python/run_this/__init__.py000066400000000000000000000000001467514767100267060ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/src/000077500000000000000000000000001467514767100222225ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/src/bin/000077500000000000000000000000001467514767100227725ustar00rootroot00000000000000maturin-1.7.4/test-crates/wrong-python-source/src/bin/run_this.rs000066400000000000000000000000151467514767100251670ustar00rootroot00000000000000fn main() {} maturin-1.7.4/test-crates/wrong-python-source/src/lib.rs000066400000000000000000000000001467514767100233240ustar00rootroot00000000000000maturin-1.7.4/test-data/000077500000000000000000000000001467514767100151125ustar00rootroot00000000000000maturin-1.7.4/test-data/Readme.md000066400000000000000000000001101467514767100166210ustar00rootroot00000000000000 * `py.exe`: Mock for the windows python launcher we can insert in path maturin-1.7.4/test-data/py.exe000077500000000000000000004250001467514767100162510ustar00rootroot00000000000000MZ@ !L!This program cannot be run in DOS mode. $|ߑ|ߑ|ߘRߝ|ޓ|ބ|ޘ|ޓ|ޘ|ߑ||ߑ|ߘ|ސ|Rich|PEdF\" P@p`@`LT`(`p.text؆ `.rdata4@@.datah0@.pdata@@@.relocL`&@BH(1H(HXHHD$(HD$0HD$8HHD$HHD$PHL$(UHXH(ILcHHD$ HcHL$ H( kAVVWSH(LIHHQHYHH)L9s(HrgHH9HBHtHAIH HqHHt1HH_H_H3HGHLIH([_^A^lz H% AVVWSH(HHAHYHH)H9sKHrmHH9HB1HHIIrO@HHt'HAMHt!HH^H([_^A^LHHuLH!%  UVWH0Hl$0HEHH9HGHtHWHtHOARH}HO0u HEHH@A-HHhuHPAH0_^]H0_^]f.fHT$UVWH Hj0HMH@#H _^]VWH(HH9HO HO(AH H HHhuHPAH(_^dH(_^H6&+tBHk8ݡqHdpٔH6hVWH(HH9H \tHHH(_^kH[HHt H(_^kH(_^nVWH(HH9H[tHHH(_^lH[HHt H(_^mH(_^pIHHHP\AWAVVWSH@HH0HxHL$0[Ht9L5ŐL|$0H\$(f.Ht$(HLHMGHuHL$0GH@[_^A^A_H H&IHHQH_UVHXHl$PHEHEwUAЁw$ E?ʀUA^w' $ E$? E?ʀUA/ E $? E$? E?ʀUAHHMLEU}u1,E)E~HFHEt HM(EHEHX^]HT$UVH(HjP(EHEH(^]UVHXHl$PHEHEwUAЁw$ E?ʀUA^w' $ E$? E?ʀUA/ E $? E$? E?ʀUAHHMLE]W}u1,E)E~HFHEt HM(EHEHX^]HT$UVH(HjP(EHEH(^]HhHL$(JR )T$P)L$@)D$0H&HL$(LD$0IHhHhHL$(JR )T$P)L$@)D$0HFHL$(LD$0HHhH(HHD$ HL$ zvH(HH HtHPHt AaHAHHQHAH)DHtLBLAHHzLuHQHtH HÀyuleH%XHHu&eH%XHHt2H@)eH%XHHǀHǀHHHQHtH AYH A=UH0Hl$0HEHH HEH@HMHAHPHtH L@H0]H0]DHT$UH Hj0HEHHPH ]H AHHtH(uUH0Hl$0HE9t4HHIHEH@HMHAHPHtHIL@H0]H0]f.@HT$UH Hj0HEHHHPH ]HHtH(uUVH8Hl$0HEHHAH;AtBHHHNHHt2H@HMHEHEHPHt L@HMXHFH;FuHVHtHHAH8^]-H8^]DHT$UVH(Hj0HMHUH(^]̀yuH0H9t H!UH0Hl$0HEHH Ht,HEH@HMHAHPHtH L@H0]H0]HT$UH Hj0HEHHP2H ]H HH(uǹ9ueHQHtHH AH ixHHtHQHtH AUH@Hl$@HE9wH@]HMHAHHEH@HMHAHPHt H L@aHEHHAH@]D@HT$UH Hj@HEHHPHEHHH ]HHIHtHPHt AUVWH0Hl$0HEHH1HHtZHt1H}H 71HHH SHH}u#H6HtHv(AHOHAH0_^]5DHT$UVWH Hj0HMH _^]̀yul$eH%XHHu&eH%XHHt2H@8)eH%XHHǀHǀHH vUVHHHl$@HEIȀythA@u`HMLEL5E<w<uAHEHHEH@HuHFHPHt HL@AHLEIPHtIAHH^]HH^]HT$UVH(Hj@HMHH(^]HT$UVH(Hj@HuHHVaH9H(^]HH(u{tHQHtHIA8UH0Hl$0HEHH HEPHEHH0H0]tf.DHT$UH Hj0HMH0H ]H(HHALHRLHALL- UAWAVAUATVWSHhHl$`HEIL"LrrBfEBEfE1LL)HHHHHH@HCH<HH?f0HEH]HELeLufDm؋EEEfEHMHUHEIGEALHh[_^A\A]A^A_]M9tIL$A$@xIBIWAGL9tAD$I?L1IL@rL9t;H?I  91L rL9tH?I 1҃ Љ= AHA f.DHT$UAWAVAUATVWSH(Hj`HM~H([_^A\A]A^A_]UAWAVAUATVWSHXHl$PHEH:HBDrfE_HME1HHIH)HH<HHHH8HfD0HEH]HEHNHMAMIfE(f.fIL9IPADEyH9tAHI?L1IHDArH9tDHA?I (E1HD рrH9t"H?I AAvv'1ۃ ÁAvMAD AAEAM9t)fF,pILuEfEE1M9uIHuL)HHLK H9HB1HHHHLE@HMt"AHIQHu ^HHHCHEHuILELEHEHMHAEHHX[_^A\A]A^A_]H9HwDEEHMxHH9tWH?I1HIDArI9tAI?L (1I ArI9tTAI?LF AAAD AAEHA1ۃ AցuHWA  HHN H? f.HT$UAWAVAUATVWSH(HjPHM~H([_^A\A]A^A_]UAWAVAUATVWSHhHl$`HEHH2HZDbzJAAt+uBfaHEED}DM1EE18fEMHEEfE.HEEEH]HIH)HXHHH?HBAH;H4HHyHL;IfD HELUHEAL]ED}uA)1AE1A1DM9@ftE1DE1M9M9I^EA@xIL9tAVI?L1ILۉ@rEL9tD HA?I  TE1LD ArL9t)DHA?I ʉED"E1E D ‰ց E1fDAfM9INA@xIL9tAVI?M1IM؉@rDM9tEIA?M  BE1MD ʀrM9tAI?M A1A ډցf.E1DM9LL)HQHHH?HBAHH}LAKH9HB1HHHHDEDM@HMtAHI HHHL]DMDEHEH]D}< ADM9f.LfB4`ILeIDAA AfAHMHEHHEHh[_^A\A]A^A_]H9tHNDEEHEx=HAHW@H9}HNDEEHExHH9t%VH?IH9tDVH?I<1HIDArI9tOEIA?LD 1HIDArI9tJEIA?L? E1ID ArI9tGEIA?L9 @E1ID ArI9tlEIA?L^ eE1 D AԁwEEEAD AAGE1 D AԁMAD AAEED}A% HHb  HS  HT$UAWAVAUATVWSH(Hj`HMH([_^A\A]A^A_]UHH$HEHuHEHE+HMUHEHEHHEHEHEHHEHyHEHEHxHEHEHEHEHEHyHM" HT$UH HHMH ]HHtHD$(HD$0HD$(HD$8HHD$@HD$ HD$HHHD$PHxHD$XHD$`HxHD$hHD$pHD$8HD$xHDŽ$HxHL$XW  HH tHD$(HD$0HD$(HD$8HSHD$@HD$ HD$HHHD$PHYxHD$XHD$`HdwHD$hHD$pHD$8HD$xHDŽ$HQxHL$X  HHsHD$(HD$0+HD$(HD$8HHD$@HL$HHRKHD$PHwHD$XHD$`HvHD$hHD$pHD$8HD$xHDŽ$HwHL$X  HHexHD$(HD$09HD$(HD$8HHD$@HD$ HD$HHm HD$PHwHD$XHD$`H$vHD$hHD$pHD$8HD$xHDŽ$HwHL$Xw  UHH$HEHMHUHEHEHqHELELEHHEH{vHEHEHuHEHEHEHEHEH}vHM  fHT$UH HHMFH ]H (H VWSH0H1sRHVH;VuzHH"HH9HBHHAI HHH^HV5D$,s.$ D$,@?@π@|$-AyH@<HFxw- $ D$,$? D$-@?@π@|$.A6 D$, $? D$-$? D$.@?@π@|$/AHT$,Hb1H0[_^úHHH > HhHHD$(JR )T$P)L$@)D$0HqHL$(LD$0,HhHhHHD$(JR )T$P)L$@)D$0HqHL$(LD$0,HhHhHHD$(JR )T$P)L$@)D$0HpHL$(LD$0D,HhUVHXHl$PHEMIH1HHM9}u1,E)E~HFHEt HM(EHEHX^]f.HT$UVH(HjP(EHEH(^]H(H 1H(UVHXHl$PHEMIH1HHM6}u1,E)E~HFHEt HMO(EHEHX^]f.HT$UVH(HjP(EHEH(^]UVWH@Hl$@HEHMH1HH~HFHH}HH(u HMAHMKAHMH@_^]0HT$UVWH Hj@HMH _^]f.@HT$UVWH Hj@HMH _^]AVVWUSH0HHHLrjPH8NPtNPH>uHFHNPHHD$(HL$(HIHLvnPH0[]_^A^̺A@A0HHRHt L@IHHQH^=AWAVATVWUSH HL"LzjI@f#,f.fIL$A$@x I1L9tAD$I?L1IL@rL9t/H?I  91L rL9tH?I 1҃ Љ=vp f.@H^H;^u"LL)HPHHHIBHHf,XHH^ft1f.M9H []_^A\A^A_UAWAVATVWSHH$HDžIƅIxHHH{uNE1Hu1A(HO\EEXH HDžLHIS QApE1Le1A(L[EEXH HDžLd$ LHAS ubHEH9rVMHtHH9sFH}H[HHHILHLE1HHM|<w<uJHHHH@HHFHPHt HL@AHHHLHĀ[_^A\A^A_]E1gH1 HT$UAWAVATVWSH0HHHHV#HH0[_^A\A^A_]VH0LmHt$ A HA4HIH0^UVWSHXHl$PHEHϋeH %XH eH %XHu-eH %XH4HH$ƆeH %XHHeH %XHfofoW)fHnffH~Ht8fH~Ht.fpNfH~HMHEHEHPHHMt L@H7H_HHuH]eH %XHHeH %XHHǀHHHUHMHHtrHuH]eH%XHHjeH %XHHHPHH]Hut# ?eH<%XH HL@eH %XHHHH1HX[_^] HT$UVWSH(HjPeH %XH4HHIHEHHEHHM H([_^]HT$UVWSH(HjPHMfH([_^]f.fHT$UVWSH(HjPHMHUH([_^]UH0Hl$0HEA!H9t9HHIHt-HEH@HMHAHPHtHIL@H0]H0]@HT$UH Hj0HEHHHPAH ]f.HT$UH Hj0  UH0Hl$0HEAH9tHAHtH(u HxH0]ÐHT$UH Hj0  UAWAVATVWSHH$HEheH %XHa;eH %XH`u-eH %XH4HHH"Ɔ`eH %XHHHt(ceH %XHHǀHWP;eH %XHHPbHHEX1ҸHQ(%HuXHN0;eH %XHHueH %XHH+eH %XHHǀHǀ1HN0eH%XHHV8HHMHEP1HN(E1L5zL%f.DHMXHEHUPHEU H81HyHt H9NHY@H5Hu!LʦHHIDHHAE1HHHMAU HMHUPHMXLy(e5HHEX1HH(HMHEHEHgHEHHEH}Pui NeH%XH Hu# 1eH%XH Ht/@) eH%XH HǁHǁHSHEXH(u HMX H[_^A\A^A_]H BlL#l6q Eg HEH !f^HEgH fLrf HfHEHE HE(H_HE8HE@HEHEH1HEHHMHEHEHEHHEHdHEHEHbHEHEHEHEHEEgH.fHMՙ HT$UAWAVATVWSH HHMH [_^A\A^A_]f.HT$UAWAVATVWSH HEgHMEgH [_^A\A^A_]fDHT$UAWAVATVWSH HHMXMH [_^A\A^A_]f.HT$UAWAVATVWSH H}gtHMHH [_^A\A^A_]H [_^A\A^A_]UAWAVVWSHH$HEHA)EHt]HE(EEHMHUXHuLEE1HHHEHEE)EEHM IIE1L}LuH=H*H}H5HHFHH .oHHH@EEEfEԋEEй5HHHEֈEEfEEЉEPHHH@LxLpHp H@(HX0@8MH?MfH=MH9Hx@H@HHĈ[_^A^A_]H cLc7蓚  P E)EHUHu(EEH cLE/ HT$UAWAVVWSH(H}t HMH([_^A^A_]f.HT$UAWAVVWSH(HHMH([_^A^A_]ÐHT$UAWAVVWSH(HHMH([_^A^A_]VH HHB(HtUHtOHH1HN0ުeH %XHHu"{eH %XHH1H ^ËYeH %XHHǀHǀ1 .eH%XH HN8ugHN0zHv@HHu)H sɟHHHEHH HH ^HH /bLb~ HH0H UAWAVAUATVWSHH$HDžHE1HM1ATLHDžWAHE1MIrtLL)LL)H9ssLLLH9HB1HHHH@HMtJAHIHuDf.fAH]:@MMH'HH6HdIMMHH1JDHJƅu JI9utJzI9IHHLLI9HHImHH)HHHF(FHMtMAHLPHHĈ[_^A\A]A^A_]HHLLIHFF HMuHHLL  HHN HLf.DHT$UAWAVAUATVWSH(HHxH([_^A\A]A^A_]UAWAVAUATVWSHH$HDž@HHLH]HٶH}HCHC)1H1AH$IHDžWAH0HHE1DMIrtLL)HHL)H9slLH H9HB1HHHH@HHtEAH0IQHu?AICDMML0+HHHpHMMH0IH]1hGHLEbGƅu 9G8I9u%GzI9IH0HL HHI9HLIDf<>LL1HHtHAH0HHt5>E<fEEW)@D<f>L L(HDž1xH0HL HHE1EH/BDEfEL HDžHHtHAHHuvH(HHHH[_^A\A]A^A_]H0HL H HH CHDž)HHH>HHHHHHZHEHEHVHEHEHHEHEHZHM;GHL7fDHT$UAWAVAUATVWSH(HHH|H([_^A\A]A^A_]f.HT$UAWAVAUATVWSH(HHH([_^A\A]A^A_]1HcUAVVWSH`Hl$`HEHHyHqH9u:HHdHH AHIϾHHH{H9uGHH4L46L9LCHH AHM腾HHLsHH~0H{HHEHCHEHsHuHUH9u HEHtrHMAIHHEHuHuH۽H,HU L趽HQL0 HtHMA蚽HEHE1H`[_^A^]H]EH]EH]H WQ H fHT$UAVVWSH Hj`}t HMH [_^A^]fHT$UAVVWSH Hj`HMtEH [_^A^]AVVWSH8IHι!袼HHÊ9XC XCXiHHHH@!H@!;HtlH8H lWHH@ L$7HL$5fHL$1HL$0NL$.fNL$*NHFIVHtINAHH8[_^A^ùK !: UAWAVAUATVWSHxHl$pHEHILbELm1L}L9r(HL9GG<THWHH)R<u HuHEGHufDLIغLIڧH}u}u }tE)EHEHEHEGHuuuHtzHu~HE@<u~@?HEHHEH@HuHFHPHt HL@~AHkL9HuH-E<t M蜫<tAE)EH!H@INJUAG UAGUAƹHHL8H@!H@!蘹HH0H THH@MHMfHMHMMMfMMMEMMMfMՊMMHEHt(HwH)rdHGtHHHIO>Hw(EALHx[_^A\A]A^A_]H IL4H Y H K ߹!: HT$UAWAVAUATVWSH(HjpHMnH([_^A\A]A^A_]f.fHT$UAWAVAUATVWSH(HjpHuHHVHH([_^A\A]A^A_]AVVWSH8LMHHHJLHBH9vHL$ H>|$ ueHCH9vHLIH~HlCC<t2<tjHL$ MIoHD$ Hu$|$(u|$,u1D$ FHH|$(HL$0CHH~HNHH8[_^A^H J~ UVWSHH$HEHHtHuNHAHH@HP8%AHHHGHcHHSQU H}HSH}HHEHE HEH(HEHSHEHEHMHEHEHEHEHEHUHHUHjHMA!VHRHRHRH{RH]R H>RHRHQ |HQnHQ`HQRHwQ DH`Q 6HHQ (H%QH Q HPHEHMHEHEHnHEHQHEHEHNHEHEHEHEHEHUHÉHĘ[_^]HT$UVWSH(HHM#H([_^]Ðx-;IWVH HκHH ^HUAVVWSH`Hl$`HEH5JHZHuHGHH譳HH0HBXH":Aƹ耳HHEfE̋EEȊEEEfE܋EEع(CHaHH7EfEԋEȉEЋE؉EEfEEވEEEEfEEEPHHHH@HXH@Hx H@(H@0f@8EfF>EЉF:F@EfFEEFGEFAFHEFOEfFMEFIEt;H~nMHtSH0H1 H0H~=H ϕHuHtHH`[_^A^]H IO$w !  k (PS HT$UAVVWSH Hj`HMdH [_^A^]HT$UAVVWSH Hj`HM贻H [_^A^]UAVVWSHH$HELIHHsHK5geH %XHHuJeH %XHH+.eH %XHHǀHǀ1 eH%XH HHCHHuEHEHEEOW )U)M)EHNHMLE}$IHHHeNHGHSNHHsHH8H@H@HEHH KHH@MHMfHMHMMMfMMMAMANMfANMANIF^AE<w<uOHEHHEH@HMHAHPHt H L@ZHMAF HEAHEЀ}ui YeH%XH Hu# <eH%XH Ht/@8) eH%XH HǁHǁHE3LHĐ[_^A^]ù   f.HT$UAVVWSH HHMaH [_^A^]DHT$UAVVWSH HHEHHPHMH [_^A^]DHT$UAVVWSH HHMH [_^A^]UAWAVAUATVWSHxHl$pHEH2H~<MMILfHFH~H}Le~0t!HMHE<ub~(F0 LMHHHHL9HMHMI H}uyEAEKM׈MMfMMщMHM؊UUUfUUUAEEAEEfAE EAE IMIE%LHMMHEHEF0HMHE<~(.F0HuH9II)HMHMM5H}I]IE}HEHHEH@HuHFHPHt HL@AHU<HurAHEHHEH@H}HGHPHt HL@軫AH訫IuIEI$LHx[_^A\A]A^A_]H]I] 'HLpH > H > fHT$UAWAVAUATVWSH(HjpHuHHVHH([_^A\A]A^A_]f.HT$UAWAVAUATVWSH(HjpHuHHVHoH([_^A\A]A^A_]f.HT$UAWAVAUATVWSH(HjpHM.H([_^A\A]A^A_]UVHH$HEpooIoQ fUfMfEHGHEHEAeH %XHAt E@ eH %XH@u-eH %XH4H HPaƆ@eH %XHH eH %XHfo0fo ff0fHnf fH~Ht8fH~Ht.fpNfH~HMhHEHEHPHHMht L@/eH %XHH(tTHHE@(EfoMfoUfU fM)EHM0HU@I@H.HM@٪eH %XHHǀ(H(H0HU@HMHH0HzeH %XHH8(EfoMfoUfU fM)EHM0IP0:eH %XHH(oE0fE@}@upHHE0foEfoMfoUfU fMfEHMHU0I;H.u HM0ةE@<<}uH^]foE@fE}t(E)E0HEHE@HHEHHE0HEPH HEXHDHEHEH=HEHEHE@HE HE(HDHRt HEHHHEhH@HuhHFHPHt HL@¦AH详}&;eH %XHHǀ(f.HT$UVH(HHM@H(^]f.HT$UVH(HHM@խH(^]f.HT$UVH(H}@t HM@ϱH(^]HT$UVH(HHM05H(^]f.HT$UVH(HHMhHUaH(^]fHT$UVH(HHM0%H(^]f.HT$UVH(HHuhHHVHH(^]UAWAVAUATVWSHXHl$PHEIMLLILeL}fDLLIIH}uHHHE@<@rAHEHHEH@HuHFHPHt HL@XAHEHlYf.HMHt^HH)"HHH<)E<rMT<`A$AALHX[_^A\A]A^A_]ù誣HHyA@ bAzHHH0H@H@LHthH8H }>HH@MHMfHMHMMMfMMMAMANMfANMANIFH ` O f.HT$UAWAVAUATVWSH(HjPHM辭H([_^A\A]A^A_]f.fHT$UAWAVAUATVWSH(HjPHuHHV'HH([_^A\A]A^A_]UAWAVATVWSH`Hl$`HEIMLLL}Lef.LII譎H}uHHHE@<@rAHEHHEH@HuHFHPHt HL@vAHcHjVHMHt[HH)HHH<(E<tMt<bAAALH`[_^A\A^A_]ù͠HH>@ >蝠HHH0H@H@oHthH8H ;HH@MHMfHMHMMMfMMMAMANMfANMANIFH  r HT$UAWAVATVWSH Hj`HMH [_^A\A^A_]HT$UAWAVATVWSH Hj`HuHHViHAH [_^A\A^A_]UVWSHH$HEHHUEAAHAP )U)M)EH!=HMLEL}H1HH=HGH=H˞HHH8H@H@蝞HHH 9HH@MHMfHMHMMMfMMMMNMfNMNHF\E<w<uNHEHHEH@HMHAHPHt H L@HMA HEHHĈ[_^]ùS B HT$UVWSH(HHM賨H([_^]fHT$UVWSH(HHEHHPfL$L;$u#HL$xH$H9HD$(HHD$(uOW _0@8#OW _0HD$(X0P HH8[]_^A\A]A^A_VWH(A:BHHHHwSH zHcHLG L;F u\HOHVH9t uFLG0L;F0u.I9tA:.u\A^°t< ‰4H@HI9t3u/A:.u"H -I9tA ..tM$ID$MT$M\$HD$@ID$@D$ L$0AL$0AD$ LHH[]_^A\A]A^A_ QnxAWAVAUATVWUSHI͊B9<u IEHLzHl$pLt$`L%f.@O:t8w<<tG<xEALH8IcLHNHDHLHHL$`HD$hEMU )D$ )L$0)T$@HU0HT$PHWHH)HH_HtOf.G98GG<r*<t&<LHxf.@G9ZG9GHFHN HQHHDH HHFHN HQHHDH HG9Hu@<PG9LHWHHw:HBHc,HHFHN HiHHDH (HH9sHNHH9Hw5H-Hc\HHFHn H]HHDHHHFHHGHHHHGIEG9IEIEHD$PIE8(D$ (L$0(T$@AU(AMAEH9C1 @HFHN HiHHDH (HH9HFHn H]HHDHHHH)LHH_HG0HD$GO!)L$p)D$`)D$ (D$p)D$0HD$HD$?IEMMIMEEHD$?IE8(D$ (L$0AM)AELHĨ[]_^A\A]A^A_HGHt:HHHGIEH L)(\ H襼 1藼 z]$AWAVATVWUSH0HIs.H|$$L$.fL$(L$*L$$ALHHH 3H9ta \\tVz:u xɉ̓߃ſsH- D| H|$$L$.fL$(L$*L$$AAM9LrMXIN<E1H,2LH)H]/A€\D Iɀ/\\2/A€\D Iɀ/\\2/A€\D Iɀ/tx\ts\2/A€\D Iɀ/tSH\ADf.DHI9jL2/A\D DI/t\uM9SIIMI)PLE1HfLH)H.@/@@\@ I@/@\n@/@@\@ I@/@\n@/@@\@ I@/ts@\tmn@/@@\@ I@/tKH@\9;HI9t7L.@/A@\D DI@/t@\uM9;MMMH|$$l$.fl$(l$*l$$OIAM9LL H 0I9A?\H 0I9tA.\.LrMHN1H<*LH)Hw1\@H\_1\@H\p_1\@H\W_1\@HH\u9LrMHIrH /I9A>UNC\N1f.@H<*LH)H1\@H\_1\@H\_1\@H\_1\@HH\uLrMXJ4E1H HH)H 1\@I\L1\@I\L1\@I\xL1\@IH\uYH)fI9H<*\HmuɃH)HuWIz:uGAx@߃ÿw0H D<)H|$$L$.fL$(L$*L$$AAI99IH|$$L$.fL$(L$*L$$E1PH)I9t)H<*\HmuɃH)I9IH|$$L$.fL$(L$*L$$AMYM94H E1I9t$L,E1@\AI@\tHI9uMM9PIIMI)MLE1HHH)Hve;1@\@I@\tn{1@\@I@\tW{1@\@I@\t@{H1@\@I@\u#HH9t&L+E1@\AI@\uM9MH|$$l$.fl$(l$*l$$IjMIDM)IAM9J4LL)Ht@/t\t1HL@D`DxWfPPLpLH HH(LP0@p8f@9H0[]_^A\A^A_LL脳 L  LLm Lc H +Mݭ IHHQH=UAWAVAUATVWSHxHl$pHEHAH5GI wI}H.d,f.fHdLI u 1HHHeHIH}HYL#HCH]L{IO4L/M HEH ^2 H QL2*M fDHT$UAWAVAUATVWSH(Hjp)uHM(uH([_^A\A]A^A_]DHT$UAWAVAUATVWSH(Hjp)uHMڋ(uH([_^A\A]A^A_]DHT$UAWAVAUATVWSH(Hjp)uHMz(uH([_^A\A]A^A_]UVWHH$HE1yH HHHHMHUHUHHUHumHtNHu@HxHHHMHt:HMرHH踲HEH(uH|HHuHĐ_^]H xc HEHEHb~HEHMHMHEHsHEHEHHEHEHEHEHEHHMH f.HT$UVWH HHMH _^]f.HT$UVWH HHMH _^]AWAVATVWSH(LLIL$IwD1HMHHtdL9IGHLIHwM1HMLM$11HMHt4HKH!HH)HHHDHu1\MF1HZHH([_^A\A^A_UAWAVAUATVWSHhHl$`HEIIHMHUEH=H[H}HHHu0 yH6HHW@HxLuL}HsH;suzHHH6H9HBE1HHIAIHHH AHMxHHH{HsH}1!HH=ҘHL40L|0HC@1ۈ]H[t'HELHEHEHPHt HML@xHh[_^A\A]A^A_]LLwHkLLc  K fHT$UAWAVAUATVWSH(Hj`HMnH([_^A\A]A^A_]f.fHT$UAWAVAUATVWSH(Hj`HMHU*H([_^A\A]A^A_]HT$UAWAVAUATVWSH(Hj`HM΂EH([_^A\A]A^A_]fHT$UAWAVAUATVWSH(Hj`Et HMH([_^A\A]A^A_]UAWAVAUATVWSzH)H$)HDžxIH0L8DsW)DžDž()0Dž@HDžX)`DžpxDž)DžDž)DžDž)Dž  Dž ) Dž0 8 DžH )P Dž` h Džx ) Dž  Dž ) Dž  Dž ) Dž  Dž ) Dž ( Dž8 )@ DžP X Džh )p Dž  Dž ) Dž  Dž ) Dž  Dž ) Dž  Dž( )0 Dž@ H DžX )` Džp x Dž ) Dž  Dž ) Dž  Dž ) Dž  Dž ) Dž0 8 DžH )P Dž` h Džx ) Dž  Dž ) Dž  Dž ) Dž  Dž ) Dž ( Dž8 )@ DžP X Džh )p Dž  Dž ) Dž  Dž ) Dž  Dž )DžDž()0Dž@HDžX)`DžpxDž)DžDž)DžDž)DžDž) Dž08DžH)PDž`hDžx)DžDž)DžDž)DžDž)Dž (Dž8)@DžPXDžh)pDžDž)DžDž)DžDž)DžDž()0Dž@HDžXHHEHHEfEEEH`HU'H`HQHtH1H HhHtHAHOoHt IHhƅwL9HMHhA bKLuH}u HuƅwLHMHhA *KH}H}u HuIƅwLHMHhA JH}LXEHDž)@ƅvƅuƅtLHMHhA JH}EHDžL@HHHHH`H@uHEH`HHDžƅvƅuƅtL^HMHhAIHELmHuH`LhHpHuzM*HEH`HHDžL$HMHhA wIHELmHuH`LhHpHuFM쀽@ssLHMHhA"ILeH}HuLHMHhAHLeH}sHu@rJHHHH`H@H`HGHPHt HL@JlAH7lMLXHHLH(E(M(UHtHI$HID$;LXHHH0HHP ))p)`Ie sH`H<KvH<HHHHE1H]HH)H_vIHI蹓Hu`LFH訓HuOLF0H藓Hu>LFHH膓H`Ht'H9tH]fHIeHu HH9uLLH)L9skHtfH0H8H 7 HMHEHEH HMHEHLEP0)t1H0H8H HMHEHEH HMHEHL}MP0)*I)IeLKvH<HHHu$Le$1I9u#6fDIH`HI9H`HpLhMuHp1A(LE EXH`HDžLLMEHEI98MHt HI9$H3HHHI LHLf.DA]1A(LE EXH`HDžHL|$ LAHLЃHEI9MHt HI9L_HYHLILLH%Laf.@E1H0HHpHHhHHsHHHB NE1H0HHpHHhHHsHHH )Hh)H@HHpuaH@HHE()EH`HD$(HsHD$ HH@ML0A_f.H@HHE()EH`HD$(HsHD$ HH@ML0AHH )hH0H8ALLP(E)/E1E1=(LXA$H`hHL(H[_^A\A]A^A_]LXA$H`h(HLXI$H ID$(mE1Y@rJHHHHxH@HxHFHPHt HL@dAHdA\HHHLH`HLLH1AHALXH]HHE11ALmLMSbLWhXH8(xHH`DžlHEhHMpHDžHDžL`t$8t$(HEHD$ dHIM`1H`HK vHHDŽIIdrIQ )U)M)EE11LHh1AHH`DžlHEhHMpHDžHDžWL`t$8t$(HEHD$ D$HdHIM`u6H`HlKvHHIIdrHHP )U)M)E1dL-dLגH1ǒH1跒 DHT$UAWAVAUATVWSHXH)Hm(HX[_^A\A]A^A_]fHT$UAWAVAUATVWSHXH)H1m(HX[_^A\A]A^A_]fHT$UAWAVAUATVWSHXH)H`p(HX[_^A\A]A^A_]fHT$UAWAVAUATVWSHXH)HQpƅw(HX[_^A\A]A^A_]fHT$UAWAVAUATVWSHXH)wt Hh8l(HX[_^A\A]A^A_]HT$UAWAVAUATVWSHXH)rt(quJƅw(HX[_^A\A]A^A_]Hjƅw(HX[_^A\A]A^A_]Hhƅw(HX[_^A\A]A^A_]fDHT$UAWAVAUATVWSHXH)HQjƅvƅuƅt(HX[_^A\A]A^A_]@HT$UAWAVAUATVWSHXH)@uvtu(r@q(HX[_^A\A]A^A_]H@hr@q(HX[_^A\A]A^A_]f.HT$UAWAVAUATVWSHXH)ƅvƅuƅtH`v*L9ILDIYM9IDـr HKL9HEL9uHEHUH HHĶHHEHH+UHHXHHHHHEPHEXHHE`HEhL}pHExHMLEPLE)E}@1HU8HtAH5P@HEHEPH}THEXHXHE`H7HEhH$HHDžHHHDžHEPHHDžHMLL׀}uLALLA EA$LHh[_^A\A]A^A_](EA$HU8HtAHIOHT$UAWAVAUATVWSH(HHM0WH([_^A\A]A^A_]fHT$UAWAVAUATVWSH(HHHHVuHyuH([_^A\A]A^A_]IH UVWHPHl$PHEHHHHH9H~H~HueHEHMۂHEH>HH}H}HuHFHtH(u HMnOHEHFHEHHH}Hu5HH}HuHFHt$H~(HHP_^]l k H x   k f.HT$UVWH HjPHMVH _^]f.@HT$UVWH HjPHEHMHHMTH _^]HT$UVWH HjPHMTH _^]UVHXHl$PHEHHMneH %XHameH %XH`uDEmeH %XHHHH5{meH %XHƀ`meH %XHHHu$cmeH %XHHPHy8F?meH %XHHǀHWP1HHH9leH %XHHXHuleH %XHaleH %XHHPHuleH %XH HXHXHǁPHPHUHMHt)H(uEleH %XHHXlLHE "leH%XH HXHEHHX^]EiTEjIEH NL/&+H.u EHMKEj Eh f.@HT$UVH(HjP}t EHMSEH(^]HT$UVH(HjPHE GkeH%XH HXHMQEH(^]f.DHT$UVH(HjP}t HMBYH(^]UVWSHhHl$`HEHH=1jH+H}HHuhH^ItoHtGIIHHHH@xHjHAH juHHt/HM,HHh[_^]H L.7HHEHEHEHTHEHEHM o f.fHT$UVWSH(Hj`HM&TH([_^]AWAVAUATVWSH IIH gHuH gHHuLHHHHW@H FgHuH :g5HHH #gHuH gHHHpH;pudHHH6H9HBE1HHIpxAIHtOHH AHMkGHtBHH{HsHHL<0Lt0HCH [_^A\A]A^A_LL GHuLLm 2g qm UAWAVVWSHXHl$PHEL5fHu4fD1҉AHMFHHH9LyHMHqHHH}L}H}HuHf.@H9t+HAHQHt!H HHEHf.HHEfH9tHHHMHxHuMtIAHLEH(eHuLHH eHLHX[_^A^A_]HT$UAWAVVWSH(HjP  HT$UAWAVVWSH(HjPHEHEHM MH([_^A^A_]f.fHT$UAWAVVWSH(HjPHMkH([_^A^A_]HxIQ )T$`)L$P)D$@HL$0HT$(LD$@N|$0t HL$0 QHxHhHL$(HHD$0HHD$8HD$@HGHD$HHD$PHD$(HD$XHD$`HL$8T) AWAVAUATVWUSHxMIHHAL貢AN4>1Ht$0L9HHHfHxxH+f.Hw$L9HDǾf.HL9u,u-L9HHD߾L9tJHCL9t?v6L9HHDHFL9HDƾrHXL9HEþL?fD$.II)L9LHt$0HD$.HD$8HGHD$@HCHD$HHD$PH~HD$XHD$`HD$8HD$hHD$pLHT$HHuMHHL9xHL t II)LLMSuHALڠADHx[]_^A\A]A^A_LHs HLs UAWAVAUATVWSHxHl$pHEIIHULELmELuEL=t)f.fMȃtLj=jHEHMH9DHxH}ڄyqH9tHxH}@?1HωރrH9tH_H]?? .1H rH9HKHM ? ùCwtIcLnC\u:蟪u蔩ބu؃ЃrEEEfEMȉuHUЉ]EEAEEfAE1Ƀ ȉ=@}t%Li=tLAi1Hx[_^A\A]A^A_]fHT$UAWAVAUATVWSH(HjprGH([_^A\A]A^A_]4/UVHH$HEHMHEHEHdHEHHEHEHHEHEHEHEHEHMHULEIE<w<uAHEHHEH@HuHFHPHt HL@>AH}>HĘ^]fHT$UVH(HHuHHVeHdH(^]H(L^MHIEй) VWSH HHw1HIH [_^HH11HIzHtHNH!H)HHHD0HH [_^VH HIw41HI%LF1HH ^VWH(LMHIw1HIIH(_^IHt$ HH(_^UVWSHH$HE@H΋ ^eH %XHHu$]eH %XHHv.]eH %XHHǀHǀH ]Ht^HtTHuWH]HMAwHMHtHMHIH}H]HM$cHMHt(HEHM(HE0HE0HPHHM(t L@71Ht=H.u3@}=HM=9$E?E>LHMHU @Hu@t1HMHt(HEHM(HE0HE0HPHHM(t L@q7H[_^]H b qWUcW1Jh HT$UVWSH(HHM(HU0]H([_^]DHT$UVWSH(HHM(HU0]E?E>H([_^]f.@HT$UVWSH(HHM(HU0o]H([_^]DHT$UVWSH(HHM?H([_^]fHT$UVWSH(HHMsAE?E>H([_^]fHT$UVWSH(H]?}>t HM>HM?]=H([_^]DHT$UVWSH(HH}tE=tHM> HM@H([_^]UAWAVVWSHH$HE LIHHHIHSHEH9HEHMHEHUH9HEHHEHEHHEHEHEHEHEIp0HMLEL֊E<w<uAHEHHEH@LuIFHPHt IL@4AL4HCuq1ɰ THHEHEHEHHEHEHMLEL֊E<w<HEHHEH@EL5TLHMLIAgLEHU<w<u=H HBHUHuHFHPHt HL@3AH3HĨ[_^A^A_]fHT$UAWAVVWSH(HHM?H([_^A^A_]ÐHT$UAWAVVWSH(HHuHHV8ZHZH([_^A^A_]fHT$UAWAVVWSH(HHuHHVYHYH([_^A^A_]fHT$UAWAVVWSH(HHuHHVYHYH([_^A^A_]VH HHHHPH ^H(w VHpHHLBDJJL$ HL$XH\HHD$(HHD$0Ht$8D$XD$@HD$hHD$PHL$( UAWAVATVWSH`Hl$`HEH]\HtHH=\HuH A,] HH\IIHQ\AHV\LuL}DeEH]HEH[HHMLMI\ f.HT$UAWAVATVWSH Hj`HM`>H [_^A\A^A_]UVWHH$HEHHyHHHEWEHMHMHP )U)M)EHNHMLEH~HEHEE)EHHtHVHt A0HEHG(EH?F)EHFWF(E)E(E)EY0HtH8(E@HHĀ_^]ùV fDHT$UVWH HHM8H _^]UVWHH$HEHqHyHHHEWEHMHMHP )U)M)EHHMLEHEHEE)EHHtHWHt Ac/HEHF(EHHHĀ_^]f.DHT$UVWH HHM7H _^]H8MHL$(HT$0HHHL$(E1 VWH(H1HyHHt$.Ht#H0HxH H/H(_^ùT H9HHHDHHEAWAVATVWSHxLLIIIMAEI@ 3OeH<%XH HuZ OeH<%XH HHHHr]HHD$0HD$8HD$@H,HD$P^ NeH<%XH HǁHǁD$ HL$`WL=߿L|$0HkHD$8H\$@D$`D$HHD$pHD$XH&NHu)H _HH#HEHH MH MH=MHuLAV HD$0HT$8HL$0#HMLAV HD$0HT$8HT$0HWHMHu)H 8HH#HEHH ~MH MHr:HHD$0HD$8HD$@L|$PHD$XHL$0!  LL HxHL$(HT$0HL$(#D$$HD$$HD$8HHD$@HGHD$HHD$PHHD$XHD$`HD$8HD$hHD$pHL$H UVHH$HEHMHUHh1NHEPH52LHu)H DHH5 HEHHLHMօu舯x*HmainHEHEHEHMi_HHEHEHEHEH HULEHuI"t=KeH %XHHu*KeH %XHHH:E؉E1_mKeH %XHHǀHǀH =KeH%XH HHEHMHEHMEHJHt%EHuEH qJL LE1菪EHMHUetut$HMHUHEHPHHMt L@o)HcHĈ^]H L#J O H 0L4 f.HT$UVH(H}t HM2H(^]HT$UVH(HHMHUOEH(^]VWHHHL H|$0A HHt$(LHT$(HqHlrHH_^VWHHHLH|$0AH譇Ht$(HvLuHT$(HpHt$(LHT$(HpHqHH_^UAWAVAUATVWSHH$HE HHHWH]AH^jHH3:H]H9]uVHuII;HI9LHBE1HHIIAMHtHMAMU'L}Lc#LL'IH L}HuHufA_LeHMHI MHuLEE1HSHHEHEE)EEHMgHIL襫HH蠫H1H@MtAHL&HUHtHHMAg&HHHĨ[_^A\A]A^A_]xF-E)EHUHu(EEH LE+F LLL f.HT$UAWAVAUATVWSH(H}t HMe.H([_^A\A]A^A_]HT$UAWAVAUATVWSH(HH1H([_^A\A]A^A_]AVVWSHxMHH$W)D$P)D$`HD$pD$P(HID$@HLD$@LL$PHSuJH|$hH_HtWL$L$`IMFA\$0L$(HD$ HL$@IR|$@uf D$@FHHx[_^A^H1U AVVWSHxMHH$W)D$P)D$`HD$pD$P(HIE@D$@HHT$PHT$(HT$@HT$ E1HSuJH|$hHnHtWL$L$`IMFA\$0L$(HD$ HL$@Ia|$@uf D$@FHHx[_^A^H1T UAVVWSHH$HEIHHMLMIH}LEE1HXPHtHE)Eи%HEHEE)EEHM$dHH1HEH]H}(EEHt6HEHME)EHEHMHMHUfEFHEIH˧HtHF1;FF HHtAHH"HHĠ[_^A^]HT$UAVVWSH H}t HM*H [_^A^]UAWAVAUATVWSHxHl$pHEMHHMMtL!Hu HEHELuHEJwE1Lu1H]fuE2f.fH]HMILHUMæIH]fuH9qD/HD%=ujA=soH9HʁfA($A H HH#f.AH fDHH1E1fft4HfEHMÌEfwFEAHH EuwJMf.ȁwUM$? EA\H&$ E?ɀMVfD M?ɀM$? EAHMHEL)L9sLHK6H9HCMt(AHLIHu%@J<>%H]HHEH]IH]H}HEILHUIXLuILufHMHEHHEHx[_^A\A]A^A_]úLoD >> HRD HT$UAWAVAUATVWSH(HjpHM>&H([_^A\A]A^A_]VWSH HHW>Ht/HtkH r1HHH '>HtBHC>Hu)H =HHcHEHH >HH [_^HH>HuI(HtqHH茡1H>t!HHB(AHHH`~u FH [_^H5H L} (B VWH(HAH$=Ht/HtjH ?1HHH <HtAH =Hu)H  HHHEHH <HH(_^HH>HuI(HtCHHZ1H>t!HH(AHHHH(_^(A UAWAVVWSH)H$HDž0IΉ(1L}1AL<t)H HtHÁ(1L|$ HD$0D$(AHA譟A=HHU<HHH)HHHƅ/ƅ.HH\H9r(HtH9tt<jH9HGHHIF(A]H(HHNjHHHHHHHDžH3HHDžHHHDžHL9H(HH7HHHHDžHزHHDžHHHDžƅ/ƅ.HL9LHĸ[_^A^A_]úLI ƅ/ƅ.H C f.HT$UAWAVVWSH8H/.t H HttH HH8[_^A^A_]HHQUVWHH$HEH89eH %XHa8eH %XH`u@8eH %XHHHH:F8eH %XHƀ`8eH %XHHHt(h8eH %XHHǀHWP@8eH %XHHPgHHEHHNHHDtHPHJHH1H HEH ,HEHMHUHEHEHHEH޺HEHEHCHEHEHEHEHEHMHULEvE<w<tH.uUHKHEHHEH@H}HGHPHt HL@AHH.t1HĠ_^]HEH ^.B1F HT$UVWH HHMH _^]f.HT$UVWH HHuHHV-HM 5 HH@ HE)EHMy. h5 fDHT$UAWAVAUATVWSH(HHMH([_^A\A]A^A_]̰~0w@H hHcH ÃOt tu/ÃPt mt!u 1Át u ððð ððððððÐUAWAVAUATVWSHhHl$`HEIIHULEfEHMHUH}HuHw1HHH)Hv)Hf:t>fzt7fzt0HfzHRuH6H9f<HIu, HH@ɷ@R HcHHH@,H@,$ H5H0H QHH@ MΈHMfHMȉHMΈMMfMMȉMAGMAOMfAO MAO IGIHUHtHAH LHh[_^A\A]A^A_]H9uuRIII9LHBE1HHIIAMHt!AHM[ HuwHILL Ht^HEH]HpfLmMoHEIGHEIGIFg1 ,V1 * LLB1 HT$UAWAVAUATVWSH(Hj`HMH([_^A\A]A^A_]H(x1H(UH0Hl$0HEH L!6 @HT$UH Hj0  UH0Hl$0HEH ǵL! @HT$UH Hj0  UH0Hl$0HEH ߵL @HT$UH Hj0  UH0Hl$0HEH LF @HT$UH Hj0  UH0Hl$0HEH ?L @HT$UH Hj0  UH0Hl$0HEH Lx @HT$UH Hj0  UHPHl$PHELMLEHH1HP]HEHMHHEHMHfHT$UH HjPHEHHMH@HEHH ]H8HHQHRHD$(HT$0HD$(HD$ H8'H )ȇ(H.')ȇ'H;')ȇ'H(HA')ȇ'HJ')ȇ'HL$ 賌H8H(LHAL E1LHE HHzHD$(HD$0+L$'HD$(HD$8Ho HD$@HD$'HD$HHYqHD$PHmHD$XHD$`HxHD$hHD$pHD$8HD$xHDŽ$HHL$X2 AWAVAUATVWUSHMIH$HD$ L HL$p8H$Lt$(KLd$0H$H$LHLd$pLD$xL$H$H(HHfL9>L$L$H$IHL$hI)MIf.A IsEL9HIBH.H9s;L9A\5HHJA:HtL1HaH1YfLf.H9HH9H4*L9ALA: 4tHl$hLfI)L9CH$4D$L$HD$pLT$xN fDIDEAHD$XLT$`L$LT$8MtM9tB<8J 8L9t8B8@y0J 8HL9tmN8A{I?`f.fVEH11MÉ@rM9tA3I?  31M rM9tA? 1҃ ׉XL9L$H$H$M4Hf.HtlHH9=J4:L99ALA: 4tILI)L9bH$Lt$(Ld$0]HH$HDŽ$I LH$Lt$(Ld$0LLt$@Ld$HLd$XHHD$8tL9t A< LK4&H9HP@xHH9t PH?1H@rH9t8H? #1H rH9tH? ډ1H ʉׁt(OT0rA:F@=-Lt$pLd$xL|$@MtM9tC C<>8 MHD$ L HL$pLM3H$[Ld$0H$L$MI)H$Ld$pLD$xH$~M9L$L$L$H$MI@C IseHHL9IFHH)K f.HtJH9p I4L9 \Hr:HtMIIHd@HMXLf.H9H9 I4L9 \Hr:HtM)Lf.MI)M9!H$sD$L$HD$pHl$x I)DEAHD$@Hl$HLL$XMtL9t B< MtTBLxZɄCrrHuDtfJ<HH9t@J4~u2H^H9t.DFDÀu#H^H9t v1#E1A 1A?A A?D ? *hLE1M9L$H$H$H$HOHL$hI JHH9smL9 \ HHrA:HtL+$@MI)M9AL$Lt$(LūE1Ld$0`L$H$L$Lt$(Ld$0ItM9tC<OMM)K&L]I?LHME@xHH9t ]H?1HՉ@rH9t}H? #1H __ZNCD&ȄxK<&WӀu0HoI9t,ou"H_I9tq_g1pk1_Z1ۃ? ? ? уEIL$Lt$@Ld$HHD$8HL$X<M^ML$A)1ۃ? ? ? уEE1MMO$ 1LLL|$hfDLH)Hv39lybyXHQHyHyBHf.@I9tI H9yEE1A L@1f.@HL9HFDEExHfDL9t FH?1LDՃArL9t>H?H '1L ArL9t;H?H A&1 A=t:f.ABЃ HIpDHHE1HW1L9HVxHL9t)nH?rkL9t H?HsR1LsF1Lr< L9t/H?H1 ft+HH9F@DH*fL1H9tE1IAE1E1AH$HL$(HHL$0HHLXLHH$HH HL$hHH(Dh8Lx0H[]_^A\A]A^A_ÁL9t!DAЄyyHFL9tFH? \1LуrL9tH?  31L Ar L9t? 1҃ ЉAH  H "yHD$XHD$@H$HD$HHD$8HD$PHL$@ HL$@HT$Xl H CH )H 1LI:HH ͢8  H עI'  H ޢH  H ͢  HD$@HD$pHD$8HD$xHD$XH$HL$p{ E1LL{2 HL$pHT$@ AWAVAUATVWUSHHЀy8^HD$`HL$xHA0H$HKHD$xHHH$H@HD$p1HD$hHD$hIL$HD$pH`IIHL$hM,L@1E1f.fC&ӄ1LM9tK<&HCt&?ՃrL9tH? 1L րr L9t? 1҃ ։O,&H<Ѓ sPLl$(H|$0HD$8H|$@HtHMC|&AIIHL9R@Lt$HHD$PLd$(L9tMtL9:C<&/L$HL$HLM+\|$HL|$PHT$pL)Ll$(H|$0L|$8H|$@ML)<u K >L9K >A< |LH$HT$pLl$HH|$PL|$(uL9K>A<yHL$`PHL$hH;$MO>MC&ʄxh1LItK,&HCD&?˃rHL)L)L9tMH? )1L ȀrHL)L)L9tM? ؉hc1Ƀ ȃhILl$(L|$0HD$8L|$@IK&H:*LHLHf.@xHf.fH HHL9t BH?1L‰@rH, HL9t*H? *1L rH, HL9t*H? &1Lƒ =1EЃ r!]r ]wŃwH HL9 fH$tAHL$`HM Iu`HL)L9tC&=_$Ll$(L|$0HD$8L|$@A} IO,&If.Ir C|&|rM A_AHL$`HcAHL$`HR AHL$`HApAHL$`H0 O/AU@j.9$I~HI9A}$SP$It A}`H[I9 A}$BP$ It A}1H1I9 A}$RF$ It A}HI9 A}$LT$ It A}HݜI9 A}$GT$ It A}HI9 A}$LP$ ItA}|yHI9t A}$RP$ucAHL$`Hp 1LIt IEAM?@rL9tH8H?A]IrgA}qA}1ZAHL$`HP 1L rL9? ك.@Ir Ll$HL|$PHD$(@uI A} HI9wAE5$CAM$f \@ItI A} 1Ll$HL|$PHD$(@u A}o HI9gAE$u7e1AM$ L@@u A} 1Ll$HL|$PHD$(@u A} HI9AE$u201AM$ u@@u A}6 1Ll$HL|$PHD$(@u A} H_I9AE$u271AM$ @@u A}1Ll$HL|$PHD$(@u A}F HI9AE$u3d1AM$ @@u A}p1Ll$HL|$PHD$(@u A}HI9AE$u5b1AM$ g@@u A} 1Ll$HL|$PHD$(@u A}HHI9JAE$u5d1AM$ /@@u A}1Ll$HL|$PHD$(@u A}HI9rAE$u7b1AM$ W@@u A}G1Ll$HL|$PHD$(@u A}HI9&AE$u7d1AM$  @@u A}1Ll$HL|$PHD$(@u A}WH1I9AE$u3b1AM$ @@u A}1Ll$HL|$PHD$(@u A}HԗI9AE$u2b1AM$ s@@u A}1Ll$HL|$PHD$(@u A}HwI9tAE$u221AM$ AHL$`HJpAHL$`HFLl$(L|$0HD$8L|$@@uIA}II<AHL$`HEULl$(L|$0HD$8L|$@I@A}l1 .I}Ll$(L|$0HD$8L|$@It ?)I[AEЄ.CAHL$`HDLl$(IL|$0HD$8L|$@ItIA}I$@р1LIt IEAm?ɀrL9tUH?Nj1LIt ImAM?ӃrL9UH? N1L ݀rL9? ̓$!1Lf.fI9HHQ@x$uf.L9tHQA?I1M@rM9tA9I?L '1M rM9t3AI?L% ǃ$t6HH)HHу.L1ۃ ؉=ILLl$HL|$PHl$(HLH)uI9A|-HL$`LIBtLl$(L|$0Hl$8L|$@uI9A|-I AHL$`HD1 Ń$b1L HEHD$(HD$0<HD$ /HL A(ErAwWHHD$(HD$0}HD$ HL WA!D?uqDȃ`AwA= rA= rA^1rD%=tA)Y)rAH vDVHNDvFD$GFD$EfFHHH[_^A^ÐHʋ Ht9Ht=HutJHHwfHHc HB}ËB\DJLBDAAAI0DȃWA BMt'ILBB{BuB\BÆHHQHAHAHȋL$(HL@DHH̋A̋AHHL$(HALAH eNHL$0HD$8HdHHD$@LD$HHD$PHJ HR(HHD$XHD$`HHD$hHD$pHD$(HD$xHDŽ$LD$X$HĈHxIHA D$PHL$PHL$ HD$(HD$0H yHL$@HD$HL$`HD$pHL$ HT$` HHHT$(LD$0HL$0HL$8H HHL$@HT$(HT$HHL$PH pHL$XHD$`H HL$hHD$pHL$8HL$xHDŽ$HL$XH  HXHBHHT$(HrHT$0HL$8D$@HD$PHL$( HxHL$(HT$0HD$(HD$8HLHD$@H=HD$HHD$PHȅHD$XHD$`HD$8HD$hHD$pHHL$HN AVVWSH(ЃE1HAI)M9MGN1HE1@LH)HvYH418@I8tp^18@I8t]^18@I8tJ^18@IHH8u-L)I9t'H8 H@uDAI)3MIr|MpM9wsHHIIf.J<H1HHLH!J\H1HHLH!H Lu IM9vM9J4NE1LАLH)HvYH418@I8tu^18@I8tb^18@I8tO^18@IHH8u2II9t7I8 H@uL)HIMLH([_^A^I1LL AWAVVWSH ЃAI)HLDDD)E1M9MGLFMM)N< JIM)JH1DL)Hv'8L3tD8L3tG8L3tJH3H~8 3HuI8 0HvuIIIIIIIMʸLH [_^A^A_HHIIMM9v4MKJ\H1HHLH!JtH1HHLH!H LtM9f.IvJ8Ht=8Ht>8Ht?I8Hu81f.MIt1HHA8LuII IIM 1LL LL HHL$(HT$0HD$(HD$8HCHD$@HL$0HL$HHD$PHHD$XHD$`HHD$hHD$pHD$8HD$xHDŽ$HۄHL$X HHL$(HT$0HD$(HD$8HBHD$@HL$0HL$HHD$PH˄HD$XHD$`HHD$hHD$pHD$8HD$xHDŽ$HHL$X  H(H Մ AWAVAUATVWUSHhf)|$Pft$@MIHL$MtIu;1MLE1BLL@LxfWf@H@(L@0f@811۾1AH+L9AA8?sH.HII)15fDuHL9HHDHEHHHHVA1HH<*HL9rE1E11f.@J/L9qAA8/vH>HHL)14fDuHH9HIDIEHHHHV1IH,:HL9rL9LFLGM9&LLLT$0LD$8HD$(L9K'MtBLHMQt0MM)M9MBI1LHD$(Ht$8LT$0E11E1ɐH9L9HHLH)HL9bHHLL)L9VHiAA8sH,HHL)1/DuHH9HIDIEHHH 1IHL9jE11E1H1L9HHLH)HL9HHLL)L9HyAA8vH<HHL)1/DuHH9HIDIEHHH 1IHL9jM9MBM9bMM)MtIHt$8LT$0e1LZ1L1E1HD$(Ht$8LT$0[LHHkHHQHHD$(Ht$8LT$0HjH)fW1fo~{ff{fo~{fWf.A|fHnA<fHnflA|fHnA|fHnflfffoffpNfoffVfoffpNfoffVA|fHnA|fHnflA|fHnA|fHnffofflfpNfofffoffVfpNfoffVHHHATfHnATfHnflfoI]H1LMf.fHWDA@xHHf.L9tGH?I1HM̉@rM9tA4$I?L )1M ArM9t#A4$I?L ЉHu4M1 =zfHL)HII9PE1MMMt IGEAHs1LMut1LL)1Lf.fA1@H$1<HA$1<HAH$1<HHuMt+1f.1@HHI9uLH)MEL9{MtVIOEAHsL1LM=HtL9tL9A<L 1LL)1L@Z$1<@H1HZ1@HBH$1<@HHuMt$1f $1<HHI9uL)AUXtLDŽt t E1I1HHHHIHD$,AETwD$,=wL$,$? D$-g=w+ L$,?ɀL$-$? D$.5L$, ?ɀL$-?ɀL$.$? D$/HHH9sIM IE(HT$,IPtLIM IE(LMPu7HH|$,f.HL9s'IM IE(HIPtH0[_^A\A]A^A_11HLELEMIM IE(H@LMH0[_^A\A]A^A_HHA HI(LIHIHXHA LI(JR )T$@)L$0)D$ LD$ HL*HX̊AP$̊AP$̊AP$ VWH(HHHJ HB(LMPH7GG HH(_^VWSH LHHHJ HB(LMPHH;CHCCHH [_^VWHXHHHJ HR(H=]HD$(HD$0HD$8HQHD$HHD$PLD$(H7GG HHX_^HA HI(LA HIAWAVAUATVWUSHLHIIH I@("P EHHt$8H\$0I1ME1Lt$(H\$@LIL$A$@x I@IH9tAD$I?L1IHމ@rH9t.H?I &1H rH9t H?I ȉLt$(L&1Lt$(Lƃ Љ= fHL$PD|$PIIHt$hL$HD$0H$H|$pLl$xMI)MHtH9t=A<>2MtI9t"C<.LHD$8HH HH@(HP|$THt$XD$`D$LDt$dAth\AtMAAAAAH HcHA}E1+f.@AE1tcHK HC(P rAuމD$LH0ƒW< BHFHHEAA(A{rrHLLt$(H\$@Ht$hD$dHD$XH1H\$@I)ML98HH\$0H9Ht$8tsA<>LHII 1IH)HN HF(LIPtHĨ[]_^A\A]A^A_HN HF(H@ "HĨ[]_^A\A]A^A_HHt$8H\$0H$H$HD$pH$HD$xH$H$ ,yaHHLI_AWAVATVWUSH@HHHJ HB('P tH@[]_^A\A^A_ËHL$(l$(|$,Ld$0Dt$8\$__rust_begin_short_backtraceRUST_BACKTRACE0full - DZ@0@ɱ@  DZ@0@   2@   at .@@@ @\ at ̳@ @PoisonError { inner: .. }src\libstd\sys_common\thread_info.rs@$%assertion failed: c.borrow().is_none()assertion failed: key != 0v@fatal runtime error: @1@ thread '' has overflowed its stack ش@ @\u{} @#@P@6@memory allocation of bytes failedh@}@ BoxP@p\@\@n@0q@thread '' panicked at '', @@@1@note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace. h@O@ `@@@@p@P@@P@P@@P@@thread panicked while processing panic. aborting. x@2thread panicked while panicking. aborting. @+failed to initiate panic, error @ StringErrorNulErrorP@@SymFromInlineContextSymGetLineFromInlineContextSymFromAddrSymGetLineFromAddr64dbghelp.dllSymInitializeSymCleanupStackWalkExStackWalk64src\libstd\sys\windows\mutex.rs@Ccannot recursively lock a mutexkernel32AcquireSRWLockExclusiveNTDLL.DLLOS Error (FormatMessageW() returned error z@ @"@ (FormatMessageW() returned invalid UTF-16)z@ ع@+\\?\UNC\src\libstd\sys\windows\path.rs0@1*.\src\libstd\sys\windows\stack_overflow.rsj@(failed to reserve stack space for exception handlingj@($ failed to install exception handlersrc\libstd\sys\windows\thread_local.rs#@&3assertion failed: key != c::TLS_OUT_OF_INDEXESsrc\libstd\sys\windows\stdio.rs@Ptext was not valid unicodestrings passed to WinAPI cannot contain NULsSetThreadStackGuaranteeSleepConditionVariableSRWsrc\libstd\sys\windows\c.rsF@ condition variables not availableWakeConditionVariableF@! F@( rwlocks not availableAcquireSRWLockSharedF@+ ReleaseSRWLockExclusiveF@. ReleaseSRWLockSharedF@1 called `Option::unwrap()` on a `None` valuesrc\libcore\option.rs@+@Ycalled `Result::unwrap()` on an `Err` value/rustc/ceb2512144d1fc26330e85fb9d41c22ba1866259\src\libcore\str\pattern.rs0@J|!0@J0@J!0@J0@J!0@J0@J!: (@(@  src\libcore\result.rsп@.llvm.E._ZNZN__ZN::_$.$SP$@$BP$*$RF$&$LT$<$GT$>$LP$($RP$)$C$,$u7e$~$u20$ $u27$'$u3d$=$u5b$[$u5d$]$u7b${$u7d$}$u3b$;$u2b$+$u22$"P@0@P0@p0@/rustc/ceb2512144d1fc26330e85fb9d41c22ba1866259\src\libcore\fmt\mod.rs@FZ: @@  src\libcore\result.rs@src\liballoc\raw_vec.rscapacity overflow@@a formatting trait implementation returned an error??`     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~..@h@BorrowErrorBorrowMutError   P@`@:@@@index out of bounds: the len is but the index is @ @called `Option::unwrap()` on a `None` valuesrc\libcore\option.rs @+K@Y@K@: src\libcore\slice\mod.rsindex out of range for slice of length @@"@% slice index starts at but ends at 0@F@ @+ attempted to index slice up to maximum usize@,@1 src\libcore\str\pattern.rs@@8@9src\libcore\str\mod.rs[...]byte index is out of bounds of `s@ ~@@X@% begin <= end ( <= ) when slicing `@@@@    X@) is not a char boundary; it is inside (bytes ) of `s@ `@&@@@     X@60xP@T@]@]@ , { @@@ } }(), , [@P@p@]P@^@ ^@^@src\libcore\fmt\mod.rs0@((0@4src\libcore\unicode\bool_trie.rs@ '@ ( @ *@ +@ , @ :0       +,- .012 xy0WXKL./?\]_ℍ)147:;=IJ] )14:;EFIJ^de )EIWde EIde񃅆HINOWY^_[\ mqno_}~FGNOXZ\^~rstu/_&./ߚ@0NOZ['/no7=?BESgu _"D5/4 PU   :V PC- :% L mj%Y    j Y+F , 1 ,  AL-t<<8*/- ! /; 1t  $ 07 \=5 8F t ZY   F  1& mx(*L    $jk   ';>NO 6=>V67VW5 )14:EFIJNOdeZ\ 7 ;>fio_Zb'(U :?EQ͠"% #%&(38:HJLPSUVXZ\^`cefksx}?qr{^"{-e/.1$ +D*$$(4 7  9c 0!@8K/  @ ' 6: PI73 3. &(*NC G ' u ?A*; Q_!H ^"E  8 6,! P @9#!  @ =` D0` X \?@fd  ?@ 8` @<;@!?D`0? ~f0@ !@  !"#$%&'()*+,-./0123455556 n`x@X\@ <0(y~m~`< = H@J@@7   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI;> P@0@kindEmptyParseIntErrorP@@@UnderflowOverflowInvalidDigitSomeNoneUtf8Errorvalid_up_toerror_lenP@@00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899Error@Ԍ@F\wF\ ttF\ 0@p@x@@@1@@`00@RSDSqcD C:\Users\Konstantin\pyo3-pack\hello-world\target\release\deps\hello_world-b4e388f3530cd88b.pdb y.text .text$mn.text$mn$006.text$xp.idata$5p.00cfg.CRT$XCA.CRT$XCAA.CRT$XCZ.CRT$XIA.CRT$XIAA.CRT$XIAC.CRT$XIZ.CRT$XLA.CRT$XLBȢ.CRT$XLZТ.CRT$XPAآ.CRT$XPZ.CRT$XTA.CRT$XTZpA.rdata`(.rdata$Tt.rdata$r.rdata$zzzdbg.rtc$IAA.rtc$IZZ.rtc$TAA .rtc$TZZ .tls.tls$.tls$ZZZt2.xdata.idata$2.idata$3p.idata$4 .idata$60.data0(.data$r0x.bss@.pdataB  B0p` 5 Rp`Pӕ 2p`P"( glBp`  r0p` U `PӕP B`P"xP00 U `Pӕ B`P"P``DM 5 RPӕ$ 2P"LT( 5 RPӕ 2P"(Pwy 5 b`Pӕ B`P" 05? 5 RPӕT 2P"|(0 E rPӕ 2P"8p13 5 Rp`Pӕ$ 2p`P"LT(# E `Pӕ B`P B`P"@ 0U 5 RPӕ  2P"4<(  e 0 p ` Pӕ B0p` P"`# !!! U 0 p ` Pӕ  B0p` P"4<P'@#&& e 0 p ` Pӕ B0p` P"`-@'--Pӕ 2P" . ...Pӕ\ 2P"2p111R0p` U `Pӕ B`P"P5444 U `Pӕ8 B`P"`hP5`555 E rp`Pӕ 2p`P 2p`P"86666I6R6  R0Pp`2 0 Pp`  0 p`Pӕ`R0p ` P"x0;@9::R` U 0p`Pӕ B 0p`P B 0p`P B 0p`P" 8P>>`>;<o=== 5 RPӕ 2P 2Pӕ"( ?@P?8>>>P? 5 RPӕ8 2Pӕ8"`p(@?8p????  0 p`Pӕ(20p ` P20p ` P20p ` P20p ` P"P p@DDED?@ABB(CFCUCnCyCmemset_CxxThrowException__C_specific_handlerVCRUNTIME140.dllstrlen@_seh_filter_exeB_set_app_type __setusermatherr_configure_narrow_argv3_initialize_narrow_environment(_get_initial_narrow_environment6_initterm7_initterm_eUexit#_exitT_set_fmode__p___argc__p___argv_cexit_c_exit=_register_thread_local_exe_atexit_callback_configthreadlocale_set_new_mode__p__commode4_initialize_onexit_table<_register_onexit_function_crt_atexitgterminatefreeapi-ms-win-crt-string-l1-1-0.dllapi-ms-win-crt-runtime-l1-1-0.dllapi-ms-win-crt-math-l1-1-0.dllapi-ms-win-crt-stdio-l1-1-0.dllapi-ms-win-crt-locale-l1-1-0.dllapi-ms-win-crt-heap-l1-1-0.dll@@.PEA_K@.PEAXh@/ ] f2-+@.?AVtype_info@@  gpw TR 0000QD```,Pl080ULlp{0l  /    ! !"T#4#t@#&'4'@'-T-.t ...../8/+0800080k18p11@2!2TP23334B4P4445515@5S5`5555,6666666T7789@9);,0;u;L;;;=>`>`>>>>>?` ?F?tP?b?|p????(?@D@DsDDDDDEHEPEmGpGGGGGHHHIPIKL:L@LPP6Q<@QzQTQwSSSSSST`UWpX4X@XXXtY`Y[(\l\Dp\\\^^__8_@_%b80b[bT`bbdbbtbnepeeeffDf4Pf3j@jcjpjjjjjjk'k 0kSk`kk$kmm$n0nsn(npppp/q0qr8rsT sWsd`sssstet4pttHtvvxwwyy{ {0~0~uАА(H@PX KP˔,Д%0U`*H0\$|0hp LWt`NPJPE8PTвp dpf0pH i`p # 0R$`0<BP}` DxP 9 @t 0  ep  l p>| @r   U`x   0  G@ P~P ` p P p  ^ `   tH &P 0`p `z  q8PA  LHPHTx&0)0a4p F PJ`&0<%0dpV`ux`$0EP|| 4 2@lhp|   "0wThB P n p  8 //K08P0c0p00000012(22D2M4P4445666&707;7@77 8 :P;;8;P< P<<8<= == =??A,AIB8PBB8BBCK<LL\LNhNNOZStST TVVXX>Y@YZZH[P[e\p\\\ ]]]]^ ^^^"_0_{````ddujjNopooop pap pppqu0uvv}wwxxy yz{{H{|H|~~z,, ,Z,`,كKp,'\4ъԊP<PbьԌ49<4`` 4 K4L4`ܐ&0̒̒DLtؖpx0pȤ(08@X`hp(8Hا 8HpШ0P`8ȫ ȭح 0Xخ Xȯ0xHpС𡈢@أ8Ȥ(8H`ȥ(8HXȦ(08PXp H`ȩPPhЬHxЭୀȮ0@(С pp`pXhxЧ(@ȩ(8Hȫث(H`hpȭح (H`ЮP`p(Xp𢸣Уأ`hpx0XpȠmaturin-1.7.4/test-dockerfile.sh000077500000000000000000000017421467514767100166530ustar00rootroot00000000000000#!/usr/bin/env bash # Builds all 6 test crates using the docker container, # installs the wheel and checks that the installed package is functional set -e rm -rf venv-docker python3.11 -m venv venv-docker venv-docker/bin/pip install -U pip cffi # FIXME: Can we run the tests without activate? Currently hello-world fails because then the binary is not in PATH source venv-docker/bin/activate for test_crate in hello-world cffi-pure cffi-mixed pyo3-pure pyo3-mixed pyo3-mixed-submodule pyo3-mixed-implicit do echo "Testing $test_crate" docker run -e RUST_BACKTRACE=1 --rm -v "$(pwd):/io" -w /io/test-crates/$test_crate maturin build -i python3.11 # --only-binary=:all: stops pip from picking a local already compiled sdist venv-docker/bin/pip install $test_crate --only-binary=:all: --find-links test-crates/$test_crate/target/wheels/ if [[ $(venv-docker/bin/python test-crates/$test_crate/check_installed/check_installed.py) != 'SUCCESS' ]]; then exit 1 fi done deactivate maturin-1.7.4/tests/000077500000000000000000000000001467514767100143665ustar00rootroot00000000000000maturin-1.7.4/tests/cli.rs000066400000000000000000000012311467514767100155000ustar00rootroot00000000000000#[test] fn cli_tests() { let t = trycmd::TestCases::new(); t.default_bin_name("maturin"); t.case("tests/cmd/*.toml"); #[cfg(not(feature = "upload"))] { t.skip("tests/cmd/upload.toml"); t.skip("tests/cmd/publish.toml"); } #[cfg(not(feature = "zig"))] { t.skip("tests/cmd/build.toml"); } #[cfg(not(feature = "scaffolding"))] { t.skip("tests/cmd/new.toml"); t.skip("tests/cmd/init.toml"); t.skip("tests/cmd/generate-ci.toml"); } #[cfg(not(all(feature = "upload", feature = "zig", feature = "scaffolding")))] { t.skip("tests/cmd/maturin.toml"); } } maturin-1.7.4/tests/cmd/000077500000000000000000000000001467514767100151315ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/build.stderr000066400000000000000000000000001467514767100174430ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/build.stdout000066400000000000000000000073751467514767100175100ustar00rootroot00000000000000Build the crate into python packages Usage: maturin[EXE] build [OPTIONS] [ARGS]... Arguments: [ARGS]... Rustc flags Options: --strip Strip the library for minimum file size --sdist Build a source distribution --compatibility [...] Control the platform tag on linux. Options are `manylinux` tags (for example `manylinux2014`/`manylinux_2_24`) or `musllinux` tags (for example `musllinux_1_2`) and `linux` for the native linux tag. Note that `manylinux1` and `manylinux2010` is unsupported by the rust compiler. Wheels with the native `linux` tag will be rejected by pypi, unless they are separately validated by `auditwheel`. The default is the lowest compatible `manylinux` tag, or plain `linux` if nothing matched This option is ignored on all non-linux platforms -i, --interpreter [...] The python versions to build wheels for, given as the executables of interpreters such as `python3.9` or `/usr/bin/python3.8` -f, --find-interpreter Find interpreters from the host machine -b, --bindings Which kind of bindings to use [possible values: pyo3, pyo3-ffi, cffi, uniffi, bin] -o, --out The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target directory --auditwheel Audit wheel for manylinux compliance Possible values: - repair: Audit and repair wheel for manylinux compliance - check: Check wheel for manylinux compliance, but do not repair - skip: Don't check for manylinux compliance --zig For manylinux targets, use zig to ensure compliance for the chosen manylinux version Default to manylinux2014/manylinux_2_17 if you do not specify an `--compatibility` Make sure you installed zig with `pip install maturin[zig]` -q, --quiet Do not print cargo log messages --ignore-rust-version Ignore `rust-version` specification in packages -v, --verbose... Use verbose output (-vv very verbose/build.rs output) --color Coloring: auto, always, never --config Override a configuration value (unstable) -Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details --future-incompat-report Outputs a future incompatibility report at the end of the build (unstable) -h, --help Print help (see a summary with '-h') Compilation Options: -r, --release Build artifacts in release mode, with optimizations -j, --jobs Number of parallel jobs, defaults to # of CPUs --profile Build artifacts with the specified Cargo profile --target Build for the target triple [env: CARGO_BUILD_TARGET=] --target-dir Directory for all generated artifacts --timings= Timing output formats (unstable) (comma separated): html, json Feature Selection: -F, --features Space or comma separated list of features to activate --all-features Activate all available features --no-default-features Do not activate the `default` feature Manifest Options: -m, --manifest-path Path to Cargo.toml --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network maturin-1.7.4/tests/cmd/build.toml000066400000000000000000000000531467514767100171230ustar00rootroot00000000000000bin.name = "maturin" args = "build --help" maturin-1.7.4/tests/cmd/develop.stderr000066400000000000000000000000001467514767100200020ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/develop.stdout000066400000000000000000000051421467514767100200350ustar00rootroot00000000000000Install the crate as module in the current virtualenv Usage: maturin[EXE] develop [OPTIONS] [ARGS]... Arguments: [ARGS]... Rustc flags Options: -b, --bindings Which kind of bindings to use [possible values: pyo3, pyo3-ffi, cffi, uniffi, bin] --strip Strip the library for minimum file size -E, --extras Install extra requires aka. optional dependencies Use as `--extras=extra1,extra2` --skip-install Skip installation, only build the extension module inplace Only works with mixed Rust/Python project layout --pip-path Use a specific pip installation instead of the default one. This can be used to supply the path to a pip executable when the current virtualenv does not provide one. -q, --quiet Do not print cargo log messages --ignore-rust-version Ignore `rust-version` specification in packages -v, --verbose... Use verbose output (-vv very verbose/build.rs output) --color Coloring: auto, always, never --config Override a configuration value (unstable) -Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details --future-incompat-report Outputs a future incompatibility report at the end of the build (unstable) --uv Use `uv` to install packages instead of `pip` -h, --help Print help (see a summary with '-h') Compilation Options: -r, --release Pass --release to cargo -j, --jobs Number of parallel jobs, defaults to # of CPUs --profile Build artifacts with the specified Cargo profile --target Build for the target triple [env: CARGO_BUILD_TARGET=] --target-dir Directory for all generated artifacts --timings= Timing output formats (unstable) (comma separated): html, json Feature Selection: -F, --features Space or comma separated list of features to activate --all-features Activate all available features --no-default-features Do not activate the `default` feature Manifest Options: -m, --manifest-path Path to Cargo.toml --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network maturin-1.7.4/tests/cmd/develop.toml000066400000000000000000000000551467514767100174640ustar00rootroot00000000000000bin.name = "maturin" args = "develop --help" maturin-1.7.4/tests/cmd/generate-ci.stderr000066400000000000000000000000001467514767100205270ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/generate-ci.stdout000066400000000000000000000024111467514767100205560ustar00rootroot00000000000000Generate CI configuration Usage: maturin[EXE] generate-ci [OPTIONS] Arguments: CI provider Possible values: - github: GitHub Options: -m, --manifest-path Path to Cargo.toml -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () -o, --output Output path [default: -] --platform ... Platform support [default: linux musllinux windows macos] Possible values: - all: All - manylinux: Manylinux - musllinux: Musllinux - windows: Windows - macos: macOS - emscripten: Emscripten --pytest Enable pytest --zig Use zig to do cross compilation -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/generate-ci.toml000066400000000000000000000000611467514767100202060ustar00rootroot00000000000000bin.name = "maturin" args = "generate-ci --help" maturin-1.7.4/tests/cmd/init.stderr000066400000000000000000000000001467514767100173070ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/init.stdout000066400000000000000000000020351467514767100173400ustar00rootroot00000000000000Create a new cargo project in an existing directory Usage: maturin[EXE] init [OPTIONS] [PATH] Arguments: [PATH] Project path Options: --name Set the resulting package name, defaults to the directory name -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () --mixed Use mixed Rust/Python project layout --src Use Python first src layout for mixed Rust/Python project -b, --bindings Which kind of bindings to use [possible values: pyo3, cffi, uniffi, bin] -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/init.toml000066400000000000000000000000521467514767100167660ustar00rootroot00000000000000bin.name = "maturin" args = "init --help" maturin-1.7.4/tests/cmd/list-python.stderr000066400000000000000000000000001467514767100206360ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/list-python.stdout000066400000000000000000000012421467514767100206660ustar00rootroot00000000000000Search and list the available python installations Usage: maturin[EXE] list-python [OPTIONS] Options: --target -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/list-python.toml000066400000000000000000000000611467514767100203150ustar00rootroot00000000000000bin.name = "maturin" args = "list-python --help" maturin-1.7.4/tests/cmd/maturin.stderr000066400000000000000000000000001467514767100200230ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/maturin.stdout000066400000000000000000000025651467514767100200640ustar00rootroot00000000000000Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages Usage: maturin[EXE] [OPTIONS] Commands: build Build the crate into python packages publish Build and publish the crate as python packages to pypi list-python Search and list the available python installations develop Install the crate as module in the current virtualenv sdist Build only a source distribution (sdist) without compiling init Create a new cargo project in an existing directory new Create a new cargo project generate-ci Generate CI configuration upload Upload python packages to pypi help Print this message or the help of the given subcommand(s) Options: -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () -h, --help Print help (see a summary with '-h') -V, --version Print version Visit https://maturin.rs to learn more about maturin. maturin-1.7.4/tests/cmd/maturin.toml000066400000000000000000000000451467514767100175040ustar00rootroot00000000000000bin.name = "maturin" args = "--help" maturin-1.7.4/tests/cmd/new.stderr000066400000000000000000000000001467514767100171350ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/new.stdout000066400000000000000000000020031467514767100171610ustar00rootroot00000000000000Create a new cargo project Usage: maturin[EXE] new [OPTIONS] Arguments: Project path Options: --name Set the resulting package name, defaults to the directory name -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () --mixed Use mixed Rust/Python project layout --src Use Python first src layout for mixed Rust/Python project -b, --bindings Which kind of bindings to use [possible values: pyo3, cffi, uniffi, bin] -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/new.toml000066400000000000000000000000511467514767100166130ustar00rootroot00000000000000bin.name = "maturin" args = "new --help" maturin-1.7.4/tests/cmd/publish.stderr000066400000000000000000000000001467514767100200120ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/publish.stdout000066400000000000000000000124071467514767100200470ustar00rootroot00000000000000Build and publish the crate as python packages to pypi Usage: maturin[EXE] publish [OPTIONS] [ARGS]... Arguments: [ARGS]... Rustc flags Options: --debug Do not pass --release to cargo --no-strip Do not strip the library for minimum file size --no-sdist Don't build a source distribution -r, --repository The repository (package index) to upload the package to. Should be a section in the config file. Can also be set via MATURIN_REPOSITORY environment variable. [env: MATURIN_REPOSITORY=] [default: pypi] --repository-url The URL of the registry where the wheels are uploaded to. This overrides --repository. Can also be set via MATURIN_REPOSITORY_URL environment variable. [env: MATURIN_REPOSITORY_URL=] -u, --username Username for pypi or your custom registry. Can also be set via MATURIN_USERNAME environment variable. Set MATURIN_PYPI_TOKEN variable to use token-based authentication instead [env: MATURIN_USERNAME=] -p, --password Password for pypi or your custom registry. Can also be set via MATURIN_PASSWORD environment variable. [env: MATURIN_PASSWORD] --skip-existing Continue uploading files if one already exists. (Only valid when uploading to PyPI. Other implementations may not support this.) --non-interactive Do not interactively prompt for username/password if the required credentials are missing. Can also be set via MATURIN_NON_INTERACTIVE environment variable. [env: MATURIN_NON_INTERACTIVE=] --compatibility [...] Control the platform tag on linux. Options are `manylinux` tags (for example `manylinux2014`/`manylinux_2_24`) or `musllinux` tags (for example `musllinux_1_2`) and `linux` for the native linux tag. Note that `manylinux1` and `manylinux2010` is unsupported by the rust compiler. Wheels with the native `linux` tag will be rejected by pypi, unless they are separately validated by `auditwheel`. The default is the lowest compatible `manylinux` tag, or plain `linux` if nothing matched This option is ignored on all non-linux platforms -i, --interpreter [...] The python versions to build wheels for, given as the executables of interpreters such as `python3.9` or `/usr/bin/python3.8` -f, --find-interpreter Find interpreters from the host machine -b, --bindings Which kind of bindings to use [possible values: pyo3, pyo3-ffi, cffi, uniffi, bin] -o, --out The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target directory --auditwheel Audit wheel for manylinux compliance Possible values: - repair: Audit and repair wheel for manylinux compliance - check: Check wheel for manylinux compliance, but do not repair - skip: Don't check for manylinux compliance --zig For manylinux targets, use zig to ensure compliance for the chosen manylinux version Default to manylinux2014/manylinux_2_17 if you do not specify an `--compatibility` Make sure you installed zig with `pip install maturin[zig]` -q, --quiet Do not print cargo log messages --ignore-rust-version Ignore `rust-version` specification in packages -v, --verbose... Use verbose output (-vv very verbose/build.rs output) --color Coloring: auto, always, never --config Override a configuration value (unstable) -Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details --future-incompat-report Outputs a future incompatibility report at the end of the build (unstable) -h, --help Print help (see a summary with '-h') Compilation Options: -j, --jobs Number of parallel jobs, defaults to # of CPUs --profile Build artifacts with the specified Cargo profile --target Build for the target triple [env: CARGO_BUILD_TARGET=] --target-dir Directory for all generated artifacts --timings= Timing output formats (unstable) (comma separated): html, json Feature Selection: -F, --features Space or comma separated list of features to activate --all-features Activate all available features --no-default-features Do not activate the `default` feature Manifest Options: -m, --manifest-path Path to Cargo.toml --frozen Require Cargo.lock and cache are up to date --locked Require Cargo.lock is up to date --offline Run without accessing the network maturin-1.7.4/tests/cmd/publish.toml000066400000000000000000000000551467514767100174740ustar00rootroot00000000000000bin.name = "maturin" args = "publish --help" maturin-1.7.4/tests/cmd/sdist.stderr000066400000000000000000000000001467514767100174720ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/sdist.stdout000066400000000000000000000020331467514767100175210ustar00rootroot00000000000000Build only a source distribution (sdist) without compiling. Building a source distribution requires a pyproject.toml with a `[build-system]` table. This command is a workaround for [pypa/pip#6041](https://github.com/pypa/pip/issues/6041) Usage: maturin[EXE] sdist [OPTIONS] Options: -m, --manifest-path The path to the Cargo.toml -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () -o, --out The directory to store the built wheels in. Defaults to a new "wheels" directory in the project's target directory -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/sdist.toml000066400000000000000000000000531467514767100171520ustar00rootroot00000000000000bin.name = "maturin" args = "sdist --help" maturin-1.7.4/tests/cmd/upload.stderr000066400000000000000000000000001467514767100176300ustar00rootroot00000000000000maturin-1.7.4/tests/cmd/upload.stdout000066400000000000000000000044161467514767100176660ustar00rootroot00000000000000Upload python packages to pypi It is mostly similar to `twine upload`, but can only upload python wheels and source distributions. Usage: maturin[EXE] upload [OPTIONS] [FILE]... Arguments: [FILE]... The python packages to upload Options: -r, --repository The repository (package index) to upload the package to. Should be a section in the config file. Can also be set via MATURIN_REPOSITORY environment variable. [env: MATURIN_REPOSITORY=] [default: pypi] -v, --verbose... Use verbose output. * Default: Show build information and `cargo build` output. * `-v`: Use `cargo build -v`. * `-vv`: Show debug logging and use `cargo build -vv`. * `-vvv`: Show trace logging. You can configure fine-grained logging using the `RUST_LOG` environment variable. () --repository-url The URL of the registry where the wheels are uploaded to. This overrides --repository. Can also be set via MATURIN_REPOSITORY_URL environment variable. [env: MATURIN_REPOSITORY_URL=] -u, --username Username for pypi or your custom registry. Can also be set via MATURIN_USERNAME environment variable. Set MATURIN_PYPI_TOKEN variable to use token-based authentication instead [env: MATURIN_USERNAME=] -p, --password Password for pypi or your custom registry. Can also be set via MATURIN_PASSWORD environment variable. [env: MATURIN_PASSWORD] --skip-existing Continue uploading files if one already exists. (Only valid when uploading to PyPI. Other implementations may not support this.) --non-interactive Do not interactively prompt for username/password if the required credentials are missing. Can also be set via MATURIN_NON_INTERACTIVE environment variable. [env: MATURIN_NON_INTERACTIVE=] -h, --help Print help (see a summary with '-h') maturin-1.7.4/tests/cmd/upload.toml000066400000000000000000000000541467514767100173110ustar00rootroot00000000000000bin.name = "maturin" args = "upload --help" maturin-1.7.4/tests/common/000077500000000000000000000000001467514767100156565ustar00rootroot00000000000000maturin-1.7.4/tests/common/develop.rs000066400000000000000000000045241467514767100176670ustar00rootroot00000000000000use crate::common::{ check_installed, create_conda_env, create_virtualenv, maybe_mock_cargo, TestInstallBackend, }; use anyhow::Result; use maturin::{develop, CargoOptions, DevelopOptions}; use std::path::{Path, PathBuf}; use std::process::Command; use std::str; /// Creates a virtualenv and activates it, checks that the package isn't installed, uses /// "maturin develop" to install it and checks it is working pub fn test_develop( package: impl AsRef, bindings: Option, unique_name: &str, conda: bool, test_backend: TestInstallBackend, ) -> Result<()> { maybe_mock_cargo(); let package = package.as_ref(); let (venv_dir, python) = if conda { create_conda_env(&format!("maturin-{unique_name}"), 3, 10)? } else { create_virtualenv(unique_name, None)? }; // Ensure the test doesn't wrongly pass check_installed(package, &python).unwrap_err(); let uv = matches!(test_backend, TestInstallBackend::Uv); let mut pip_packages = Vec::new(); if unique_name.contains("cffi") { pip_packages.push("cffi"); } if cfg!(any( target_os = "linux", target_os = "macos", target_os = "windows" )) && uv { pip_packages.push("uv"); } if !pip_packages.is_empty() { let mut cmd = Command::new(&python); cmd.args(["-m", "pip", "install", "--disable-pip-version-check"]) .args(pip_packages); let output = cmd.output()?; if !output.status.success() { panic!( "Failed to install cffi: {}\n---stdout:\n{}---stderr:\n{}", output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)? ); } } let manifest_file = package.join("Cargo.toml"); let develop_options = DevelopOptions { bindings, release: false, strip: false, extras: Vec::new(), skip_install: false, pip_path: None, cargo_options: CargoOptions { manifest_path: Some(manifest_file), quiet: true, target_dir: Some(PathBuf::from(format!("test-crates/targets/{unique_name}"))), ..Default::default() }, uv, }; develop(develop_options, &venv_dir)?; check_installed(package, &python)?; Ok(()) } maturin-1.7.4/tests/common/errors.rs000066400000000000000000000115571467514767100175510ustar00rootroot00000000000000use anyhow::format_err; use anyhow::{bail, Result}; use clap::Parser; use maturin::BuildOptions; use pretty_assertions::assert_eq; use std::path::Path; use std::process::Command; use std::str; pub fn abi3_without_version() -> Result<()> { // The first argument is ignored by clap let cli = vec![ "build", "--manifest-path", "test-crates/pyo3-abi3-without-version/Cargo.toml", "--quiet", "--target-dir", "test-targets/wheels/abi3_without_version", ]; let options = BuildOptions::try_parse_from(cli)?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); if let Err(err) = result { assert_eq!(err.to_string(), "You have selected the `abi3` feature but not a minimum version (e.g. the `abi3-py36` feature). \ maturin needs a minimum version feature to build abi3 wheels." ); } else { bail!("Should have errored"); } Ok(()) } /// Check that you get a good error message if you forgot to set the extension-module feature pub fn pyo3_no_extension_module() -> Result<()> { // The first argument is ignored by clap let cli = vec![ "build", "--manifest-path", "test-crates/pyo3-no-extension-module/Cargo.toml", "--quiet", "--target-dir", "test-crates/targets/pyo3_no_extension_module", "--out", "test-crates/targets/pyo3_no_extension_module", ]; let options = BuildOptions::try_parse_from(cli)?; let result = options .into_build_context(false, cfg!(feature = "faster-tests"), false)? .build_wheels(); if let Err(err) = result { if !(err .source() .ok_or_else(|| format_err!("{}", err))? .to_string() .starts_with("Your library links libpython")) { return Err(err); } } else { bail!("Should have errored"); } Ok(()) } /// Make sure cargo metadata doesn't create a lock file when --locked was passed /// /// https://github.com/PyO3/maturin/issues/472 pub fn locked_doesnt_build_without_cargo_lock() -> Result<()> { // The first argument is ignored by clap let cli = vec![ "build", "--manifest-path", "test-crates/lib_with_path_dep/Cargo.toml", "--locked", "-itargetspython", "--target-dir", "test-crates/targets/locked_doesnt_build_without_cargo_lock", ]; let options = BuildOptions::try_parse_from(cli)?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); if let Err(err) = result { let err_string = err .source() .ok_or_else(|| format_err!("{}", err))? .to_string(); if !err_string.starts_with("`cargo metadata` exited with an error:") { bail!("{:?}", err_string); } } else { bail!("Should have errored"); } Ok(()) } /// Don't panic if the manylinux version doesn't exit /// /// https://github.com/PyO3/maturin/issues/739 pub fn invalid_manylinux_does_not_panic() -> Result<()> { // The first argument is ignored by clap let cli = vec![ "build", "-m", "test-crates/pyo3-mixed/Cargo.toml", "--compatibility", "manylinux_2_99", "--target-dir", "test-crates/targets/invalid_manylinux_does_not_panic", "--out", "test-crates/targets/invalid_manylinux_does_not_panic", ]; let options: BuildOptions = BuildOptions::try_parse_from(cli)?; let result = options .into_build_context(false, cfg!(feature = "faster-tests"), false)? .build_wheels(); if let Err(err) = result { assert_eq!(err.to_string(), "Error ensuring manylinux_2_99 compliance"); let err_string = err .source() .ok_or_else(|| format_err!("{}", err))? .to_string(); assert_eq!(err_string, "manylinux_2_99 compatibility policy is not defined by auditwheel yet, pass `--auditwheel=skip` to proceed anyway"); } else { bail!("Should have errored"); } Ok(()) } /// The user set `python-source` in pyproject.toml, but there is no python module in there pub fn warn_on_missing_python_source() -> Result<()> { let output = Command::new(env!("CARGO_BIN_EXE_maturin")) .arg("build") .arg("-m") .arg( Path::new("test-crates") .join("wrong-python-source") .join("Cargo.toml"), ) .output() .unwrap(); if !output.status.success() { bail!( "Failed to run: {}\n---stdout:\n{}---stderr:\n{}", output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)? ); } assert!(str::from_utf8(&output.stderr)?.contains("Warning: You specified the python source as")); Ok(()) } maturin-1.7.4/tests/common/integration.rs000066400000000000000000000203571467514767100205560ustar00rootroot00000000000000use crate::common::{check_installed, create_virtualenv, maybe_mock_cargo, test_python_path}; use anyhow::{bail, Context, Result}; #[cfg(feature = "zig")] use cargo_zigbuild::Zig; use clap::Parser; use fs_err::File; use maturin::{BuildOptions, PlatformTag, PythonInterpreter}; use std::collections::HashSet; use std::env; use std::path::Path; use std::process::Command; use std::str; /// For each installed python version, this builds a wheel, creates a virtualenv if it /// doesn't exist, installs the package and runs check_installed.py pub fn test_integration( package: impl AsRef, bindings: Option, unique_name: &str, zig: bool, target: Option<&str>, ) -> Result<()> { maybe_mock_cargo(); // Pass CARGO_BIN_EXE_maturin for testing purpose env::set_var( "CARGO_BIN_EXE_cargo-zigbuild", env!("CARGO_BIN_EXE_maturin"), ); let package_string = package.as_ref().join("Cargo.toml").display().to_string(); // The first argument is ignored by clap let shed = format!("test-crates/wheels/{unique_name}"); let target_dir = format!("test-crates/targets/{unique_name}"); let python_interp = test_python_path(); let mut cli = vec![ "build", "--quiet", "--manifest-path", &package_string, "--target-dir", &target_dir, "--out", &shed, ]; if let Some(ref bindings) = bindings { cli.push("--bindings"); cli.push(bindings); } if let Some(target) = target { cli.push("--target"); cli.push(target) } #[cfg(feature = "zig")] let zig_found = Zig::find_zig().is_ok(); #[cfg(not(feature = "zig"))] let zig_found = false; let test_zig = if zig && (env::var("GITHUB_ACTIONS").is_ok() || zig_found) { cli.push("--zig"); true } else { cli.push("--compatibility"); cli.push("linux"); false }; if let Some(interp) = python_interp.as_ref() { cli.push("--interpreter"); cli.push(interp); } let options: BuildOptions = BuildOptions::try_parse_from(cli)?; let build_context = options.into_build_context(false, cfg!(feature = "faster-tests"), false)?; let wheels = build_context.build_wheels()?; // For abi3 on unix, we didn't use a python interpreter, but we need one here let interpreter = if build_context.interpreter.is_empty() { let error_message = "python3 should be a python interpreter"; let venv_interpreter = PythonInterpreter::check_executable( python_interp.as_deref().unwrap_or("python3"), &build_context.target, build_context.bridge(), ) .context(error_message)? .context(error_message)?; vec![venv_interpreter] } else { build_context.interpreter }; // We can do this since we know that wheels are built and returned in the // order they are in the build context for ((filename, supported_version), python_interpreter) in wheels.iter().zip(interpreter) { check_for_duplicates(filename)?; if test_zig && build_context.target.is_linux() && !build_context.target.is_musl_libc() && build_context.target.get_minimum_manylinux_tag() != PlatformTag::Linux { let rustc_ver = rustc_version::version()?; let python_arch = build_context.target.get_python_arch(); let file_suffix = if rustc_ver >= semver::Version::new(1, 64, 0) { format!("manylinux_2_17_{python_arch}.manylinux2014_{python_arch}.whl") } else { format!("manylinux_2_12_{python_arch}.manylinux2010_{python_arch}.whl") }; assert!(filename.to_string_lossy().ends_with(&file_suffix)) } let mut venv_name = if supported_version == "py3" { format!("{unique_name}-py3") } else { format!( "{}-py{}.{}", unique_name, python_interpreter.major, python_interpreter.minor, ) }; if let Some(target) = target { venv_name = format!("{venv_name}-{target}"); } let (venv_dir, python) = create_virtualenv(&venv_name, Some(python_interpreter.executable.clone()))?; let command = [ "-m", "pip", "--disable-pip-version-check", "--no-cache-dir", "install", "--force-reinstall", ]; let output = Command::new(&python) .args(command) .arg(dunce::simplified(filename)) .output() .context(format!("pip install failed with {python:?}"))?; if !output.status.success() { let full_command = format!("{} {}", python.display(), command.join(" ")); bail!( "pip install in {} failed running {:?}: {}\n--- Stdout:\n{}\n--- Stderr:\n{}\n---\n", venv_dir.display(), full_command, output.status, str::from_utf8(&output.stdout)?.trim(), str::from_utf8(&output.stderr)?.trim(), ); } if !output.stderr.is_empty() { bail!( "pip raised a warning running {:?}: {}\n--- Stdout:\n{}\n--- Stderr:\n{}\n---\n", &command, output.status, str::from_utf8(&output.stdout)?.trim(), str::from_utf8(&output.stderr)?.trim(), ); } check_installed(package.as_ref(), &python)?; } Ok(()) } pub fn test_integration_conda(package: impl AsRef, bindings: Option) -> Result<()> { use crate::common::create_conda_env; use std::path::PathBuf; use std::process::Stdio; let package_string = package.as_ref().join("Cargo.toml").display().to_string(); // Create environments to build against, prepended with "A" to ensure that integration // tests are executed with these environments let mut interpreters = Vec::new(); for minor in 7..=10 { let (_, venv_python) = create_conda_env(&format!("A-maturin-env-3{minor}"), 3, minor)?; interpreters.push(venv_python); } // The first argument is ignored by clap let mut cli = vec![ "build", "--manifest-path", &package_string, "--quiet", "--interpreter", ]; for interp in &interpreters { cli.push(interp.to_str().unwrap()); } if let Some(ref bindings) = bindings { cli.push("--bindings"); cli.push(bindings); } let options = BuildOptions::try_parse_from(cli)?; let build_context = options.into_build_context(false, cfg!(feature = "faster-tests"), false)?; let wheels = build_context.build_wheels()?; let mut conda_wheels: Vec<(PathBuf, PathBuf)> = vec![]; for ((filename, _), python_interpreter) in wheels.iter().zip(build_context.interpreter) { let executable = python_interpreter.executable; if executable.to_str().unwrap().contains("maturin-env-") { conda_wheels.push((filename.clone(), executable)) } } assert_eq!( interpreters.len(), conda_wheels.len(), "Error creating or detecting conda environments." ); for (wheel_file, executable) in conda_wheels { let output = Command::new(&executable) .args([ "-m", "pip", "--disable-pip-version-check", "install", "--force-reinstall", ]) .arg(dunce::simplified(&wheel_file)) .stderr(Stdio::inherit()) .output()?; if !output.status.success() { panic!(); } check_installed(package.as_ref(), &executable)?; } Ok(()) } /// See and /// . fn check_for_duplicates(wheel: &Path) -> Result<()> { let mut seen = HashSet::new(); let mut reader = File::open(wheel)?; // We have to use this API since `ZipArchive` deduplicates names. while let Some(file) = zip::read::read_zipfile_from_stream(&mut reader)? { if !seen.insert(file.name().to_string()) { bail!("Duplicate file: {}", file.name()); } } Ok(()) } maturin-1.7.4/tests/common/mod.rs000066400000000000000000000142771467514767100170160ustar00rootroot00000000000000use anyhow::{bail, Result}; use fs_err as fs; use maturin::Target; use normpath::PathExt as _; use std::path::Path; use std::path::PathBuf; use std::process::{Command, Stdio}; use std::{env, io, str}; pub mod develop; pub mod errors; pub mod integration; pub mod other; #[derive(Clone, Copy, PartialEq, Eq)] pub enum TestInstallBackend { Pip, Uv, } /// Check that the package is either not installed or works correctly pub fn check_installed(package: &Path, python: &Path) -> Result<()> { let path = if cfg!(windows) { // on Windows, also add Scripts to PATH let python_dir = python.parent().unwrap(); env::join_paths([&python_dir.join("Scripts"), python_dir])?.into() } else { python.parent().unwrap().to_path_buf() }; let mut check_installed = Path::new(package) .join("check_installed") .join("check_installed.py"); if !check_installed.is_file() { check_installed = Path::new(package) .parent() .unwrap() .join("check_installed") .join("check_installed.py"); } let output = Command::new(python) .arg(check_installed) .env("PATH", path) .output() .unwrap(); if !output.status.success() { bail!( "Check install fail: {} \n--- Stdout:\n{}\n--- Stderr:\n{}", output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)? ); } let message = str::from_utf8(&output.stdout).unwrap().trim(); if message != "SUCCESS" { panic!("Not SUCCESS: {message}"); } Ok(()) } /// Replaces the real cargo with cargo-mock if the mock crate has been compiled /// /// If the mock crate hasn't been compile this does nothing pub fn maybe_mock_cargo() { // libtest spawns multiple threads to run the tests in parallel, but all of those threads share // the same environment variables, so this uses the also global stdout lock to // make this region exclusive let stdout = io::stdout(); let handle = stdout.lock(); let mock_cargo_path = PathBuf::from("test-crates/cargo-mock/target/release/"); if mock_cargo_path.join("cargo").is_file() || mock_cargo_path.join("cargo.exe").is_file() { let old_path = env::var_os("PATH").expect("PATH must be set"); let mut path_split: Vec = env::split_paths(&old_path).collect(); // Another thread might have already modified the path if mock_cargo_path != path_split[0] { path_split.insert(0, mock_cargo_path); let new_path = env::join_paths(path_split).expect("Expected to be able to re-join PATH"); env::set_var("PATH", new_path); } } drop(handle); } /// Better error formatting pub fn handle_result(result: Result) -> T { match result { Err(e) => { for cause in e.chain().rev() { eprintln!("Cause: {cause}"); } panic!("{}", e); } Ok(result) => result, } } /// Get Python implementation pub fn get_python_implementation(python_interp: &Path) -> Result { let code = "import sys; print(sys.implementation.name, end='')"; let output = Command::new(python_interp).arg("-c").arg(code).output()?; let python_impl = String::from_utf8(output.stdout).unwrap(); Ok(python_impl) } /// Get the current tested Python implementation pub fn test_python_implementation() -> Result { let python = test_python_path().map(PathBuf::from).unwrap_or_else(|| { let target = Target::from_target_triple(None).unwrap(); target.get_python() }); get_python_implementation(&python) } /// Create virtualenv pub fn create_virtualenv(name: &str, python_interp: Option) -> Result<(PathBuf, PathBuf)> { let interp = python_interp.or_else(|| test_python_path().map(PathBuf::from)); let venv_interp = interp.clone().unwrap_or_else(|| { let target = Target::from_target_triple(None).unwrap(); target.get_python() }); let venv_name = match get_python_implementation(&venv_interp) { Ok(python_impl) => format!("{name}-{python_impl}"), Err(_) => name.to_string(), }; let venv_dir = PathBuf::from("test-crates") .normalize()? .into_path_buf() .join("venvs") .join(venv_name); let target = Target::from_target_triple(None)?; if venv_dir.is_dir() { fs::remove_dir_all(&venv_dir)?; } let mut cmd = Command::new("virtualenv"); if let Some(interp) = interp { cmd.arg("-p").arg(interp); } let output = cmd .arg(dunce::simplified(&venv_dir)) .stderr(Stdio::inherit()) .output() .expect("Failed to create a virtualenv"); if !output.status.success() { panic!( "Failed to run virtualenv: {}\n---stdout:\n{}---stderr:\n{}", output.status, str::from_utf8(&output.stdout)?, str::from_utf8(&output.stderr)? ); } let python = target.get_venv_python(&venv_dir); Ok((venv_dir, python)) } /// Creates conda environments pub fn create_conda_env(name: &str, major: usize, minor: usize) -> Result<(PathBuf, PathBuf)> { use serde::Deserialize; #[derive(Deserialize)] struct CondaCreateResult { prefix: PathBuf, success: bool, } let mut cmd = if cfg!(windows) { let mut cmd = Command::new("cmd.exe"); cmd.arg("/c").arg("conda"); cmd } else { Command::new("conda") }; let output = cmd .arg("create") .arg("-n") .arg(name) .arg(format!("python={major}.{minor}")) .arg("-q") .arg("-y") .arg("--json") .output() .expect("Conda not available."); let result: CondaCreateResult = serde_json::from_slice(&output.stdout)?; if !result.success { bail!("Failed to create conda environment {}.", name); } let target = Target::from_target_triple(None)?; let python = target.get_venv_python(&result.prefix); Ok((result.prefix, python)) } /// Path to the python interpreter for testing pub fn test_python_path() -> Option { env::var("MATURIN_TEST_PYTHON").ok() } maturin-1.7.4/tests/common/other.rs000066400000000000000000000241051467514767100173470ustar00rootroot00000000000000use anyhow::{Context, Result}; use clap::Parser; use expect_test::Expect; use flate2::read::GzDecoder; use fs_err::File; use maturin::pyproject_toml::{SdistGenerator, ToolMaturin}; use maturin::{BuildOptions, CargoOptions, PlatformTag}; use pretty_assertions::assert_eq; use std::collections::BTreeSet; use std::io::Read; use std::path::{Path, PathBuf}; use tar::Archive; use time::OffsetDateTime; use zip::ZipArchive; /// Tries to compile a sample crate (pyo3-pure) for musl, /// given that rustup and the the musl target are installed /// /// The bool in the Ok() response says whether the test was actually run pub fn test_musl() -> Result { use anyhow::bail; use fs_err as fs; use fs_err::File; use goblin::elf::Elf; use std::io::ErrorKind; use std::process::Command; let get_target_list = Command::new("rustup") .args(["target", "list", "--installed"]) .output(); match get_target_list { Ok(output) => { if output.status.success() { let has_musl = String::from_utf8_lossy(&output.stdout) .lines() .any(|line| line.trim() == "x86_64-unknown-linux-musl"); if !has_musl { return Ok(false); } } else { bail!( "`rustup target list --installed` failed with status {}", output.status ) } } // Ignore installations without rustup Err(err) if err.kind() == ErrorKind::NotFound => return Ok(false), Err(err) => return Err(err.into()), }; // The first arg gets ignored let options: BuildOptions = BuildOptions::try_parse_from([ "build", "--manifest-path", "test-crates/hello-world/Cargo.toml", "--interpreter", "python3", "--target", "x86_64-unknown-linux-musl", "--compatibility", "linux", "--quiet", "--target-dir", "test-crates/targets/test_musl", "--out", "test-crates/wheels/test_musl", ])?; let build_context = options.into_build_context(false, cfg!(feature = "faster-tests"), false)?; let built_lib = PathBuf::from("test-crates/targets/test_musl/x86_64-unknown-linux-musl/debug/hello-world"); if built_lib.is_file() { fs::remove_file(&built_lib)?; } let wheels = build_context.build_wheels()?; assert_eq!(wheels.len(), 1); // Ensure that we've actually built for musl assert!(built_lib.is_file()); let mut file = File::open(built_lib)?; let mut buffer = Vec::new(); file.read_to_end(&mut buffer)?; let elf = Elf::parse(&buffer)?; assert_eq!(elf.libraries, Vec::<&str>::new()); Ok(true) } /// Test that we ignore non-existent Cargo.lock file listed by `cargo package --list`, /// which seems to only occur with workspaces. /// See https://github.com/rust-lang/cargo/issues/7938#issuecomment-593280660 and /// https://github.com/PyO3/maturin/issues/449 pub fn test_workspace_cargo_lock() -> Result<()> { // The first arg gets ignored let options: BuildOptions = BuildOptions::try_parse_from([ "build", "--manifest-path", "test-crates/workspace/py/Cargo.toml", "--compatibility", "linux", "--quiet", "--target-dir", "test-crates/targets/test_workspace_cargo_lock", "--out", "test-crates/wheels/test_workspace_cargo_lock", ])?; let build_context = options.into_build_context(false, false, false)?; let source_distribution = build_context.build_source_distribution()?; assert!(source_distribution.is_some()); Ok(()) } pub fn test_source_distribution( package: impl AsRef, sdist_generator: SdistGenerator, expected_files: Expect, expected_cargo_toml: Option<(&Path, Expect)>, unique_name: &str, ) -> Result<()> { let manifest_path = package.as_ref().join("Cargo.toml"); let sdist_directory = Path::new("test-crates").join("wheels").join(unique_name); let build_options = BuildOptions { out: Some(sdist_directory), cargo: CargoOptions { manifest_path: Some(manifest_path), quiet: true, target_dir: Some(PathBuf::from( "test-crates/targets/test_workspace_cargo_lock", )), ..Default::default() }, ..Default::default() }; let mut build_context = build_options.into_build_context(false, false, false)?; // Override the sdist generator for testing let mut pyproject_toml = build_context.pyproject_toml.take().unwrap(); let mut tool = pyproject_toml.tool.clone().unwrap_or_default(); if let Some(ref mut tool_maturin) = tool.maturin { tool_maturin.sdist_generator = sdist_generator; } else { tool.maturin = Some(ToolMaturin { sdist_generator, ..Default::default() }); } pyproject_toml.tool = Some(tool); build_context.pyproject_toml = Some(pyproject_toml); let (path, _) = build_context .build_source_distribution()? .context("Failed to build source distribution")?; let tar_gz = fs_err::File::open(path)?; let tar = GzDecoder::new(tar_gz); let mut archive = Archive::new(tar); let mut files = BTreeSet::new(); let mut file_count = 0; let mut cargo_toml = None; for entry in archive.entries()? { let mut entry = entry?; files.insert(format!("{}", entry.path()?.display())); file_count += 1; if let Some(cargo_toml_path) = expected_cargo_toml.as_ref().map(|(p, _)| *p) { if entry.path()? == cargo_toml_path { let mut contents = String::new(); entry.read_to_string(&mut contents)?; cargo_toml = Some(contents); } } } expected_files.assert_debug_eq(&files); assert_eq!( file_count, files.len(), "duplicated files found in sdist: {:?}", files ); if let Some((cargo_toml_path, expected)) = expected_cargo_toml { let cargo_toml = cargo_toml .with_context(|| format!("{} not found in sdist", cargo_toml_path.display()))?; expected.assert_eq(&cargo_toml.replace("\r\n", "\n")); } Ok(()) } fn build_wheel_files(package: impl AsRef, unique_name: &str) -> Result> { let manifest_path = package.as_ref().join("Cargo.toml"); let wheel_directory = Path::new("test-crates").join("wheels").join(unique_name); let build_options = BuildOptions { out: Some(wheel_directory), cargo: CargoOptions { manifest_path: Some(manifest_path), quiet: true, target_dir: Some(PathBuf::from(format!("test-crates/targets/{unique_name}"))), ..Default::default() }, platform_tag: vec![PlatformTag::Linux], ..Default::default() }; let build_context = build_options.into_build_context(false, false, false)?; let wheels = build_context .build_wheels() .context("Failed to build wheels")?; assert!(!wheels.is_empty()); let (wheel_path, _) = &wheels[0]; let wheel = ZipArchive::new(File::open(wheel_path)?)?; Ok(wheel) } pub fn check_wheel_mtimes( package: impl AsRef, expected_mtime: Vec, unique_name: &str, ) -> Result<()> { let mut wheel = build_wheel_files(package, unique_name)?; let mut mtimes = BTreeSet::::new(); for idx in 0..wheel.len() { let mtime = wheel.by_index(idx)?.last_modified().to_time()?; mtimes.insert(mtime); } assert_eq!(mtimes, expected_mtime.into_iter().collect::>()); Ok(()) } pub fn check_wheel_files( package: impl AsRef, expected_files: Vec<&str>, unique_name: &str, ) -> Result<()> { let wheel = build_wheel_files(package, unique_name)?; let drop_platform_specific_files = |file: &&str| -> bool { !matches!(Path::new(file).extension(), Some(ext) if ext == "pyc" || ext == "pyd" || ext == "so") }; assert_eq!( wheel .file_names() .filter(drop_platform_specific_files) .collect::>(), expected_files.into_iter().collect::>() ); Ok(()) } pub fn abi3_python_interpreter_args() -> Result<()> { // Case 1: maturin build without `-i`, should work let options = BuildOptions::try_parse_from(vec![ "build", "--manifest-path", "test-crates/pyo3-pure/Cargo.toml", "--quiet", ])?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); assert!(result.is_ok()); // Case 2: maturin build -i python3.10, should work because python3.10 is in bundled sysconfigs let options = BuildOptions::try_parse_from(vec![ "build", "--manifest-path", "test-crates/pyo3-pure/Cargo.toml", "--quiet", "-i", "python3.10", ])?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); assert!(result.is_ok()); // Windows is a bit different so we exclude it from case 3 & 4 // Case 3: maturin build -i python2.7, errors because python2.7 is supported #[cfg(not(windows))] { let options = BuildOptions::try_parse_from(vec![ "build", "--manifest-path", "test-crates/pyo3-pure/Cargo.toml", "--quiet", "-i", "python2.7", ])?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); assert!(result.is_err()); // Case 4: maturin build -i python-does-not-exists, errors because python executable is not found let options = BuildOptions::try_parse_from(vec![ "build", "--manifest-path", "test-crates/pyo3-pure/Cargo.toml", "--quiet", "-i", "python-does-not-exists", ])?; let result = options.into_build_context(false, cfg!(feature = "faster-tests"), false); assert!(result.is_err()); } Ok(()) } maturin-1.7.4/tests/emscripten_runner.js000066400000000000000000000056441467514767100204770ustar00rootroot00000000000000const { opendir } = require("node:fs/promises"); const { loadPyodide } = require("pyodide"); async function findWheel(distDir) { const dir = await opendir(distDir); for await (const dirent of dir) { if (dirent.name.includes("emscripten") && dirent.name.endsWith("whl")) { return dirent.name; } } } function make_tty_ops(stream){ return { // get_char has 3 particular return values: // a.) the next character represented as an integer // b.) undefined to signal that no data is currently available // c.) null to signal an EOF get_char(tty) { if (!tty.input.length) { var result = null; var BUFSIZE = 256; var buf = Buffer.alloc(BUFSIZE); var bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1); if (bytesRead === 0) { return null; } result = buf.slice(0, bytesRead); tty.input = Array.from(result); } return tty.input.shift(); }, put_char(tty, val) { try { if(val !== null){ tty.output.push(val); } if (val === null || val === 10) { process.stdout.write(Buffer.from(tty.output)); tty.output = []; } } catch(e){ console.warn(e); } }, fsync(tty) { if (!tty.output || tty.output.length === 0) { return; } stream.write(Buffer.from(tty.output)); tty.output = []; } }; } function setupStreams(FS, TTY){ let mytty = FS.makedev(FS.createDevice.major++, 0); let myttyerr = FS.makedev(FS.createDevice.major++, 0); TTY.register(mytty, make_tty_ops(process.stdout)) TTY.register(myttyerr, make_tty_ops(process.stderr)) FS.mkdev('/dev/mytty', mytty); FS.mkdev('/dev/myttyerr', myttyerr); FS.unlink('/dev/stdin'); FS.unlink('/dev/stdout'); FS.unlink('/dev/stderr'); FS.symlink('/dev/mytty', '/dev/stdin'); FS.symlink('/dev/mytty', '/dev/stdout'); FS.symlink('/dev/myttyerr', '/dev/stderr'); FS.closeStream(0); FS.closeStream(1); FS.closeStream(2); var stdin = FS.open('/dev/stdin', 0); var stdout = FS.open('/dev/stdout', 1); var stderr = FS.open('/dev/stderr', 1); } const pkgDir = process.argv[2]; const distDir = pkgDir + "/target/wheels"; const testDir = pkgDir + "/tests"; async function main() { const wheelName = await findWheel(distDir); const wheelURL = `file:${distDir}/${wheelName}`; try { pyodide = await loadPyodide(); const FS = pyodide.FS; setupStreams(FS, pyodide._module.TTY); const NODEFS = FS.filesystems.NODEFS; FS.mkdir("/test_dir"); FS.mount(NODEFS, { root: testDir }, "/test_dir"); await pyodide.loadPackage(["micropip", "pytest", "tomli"]); const micropip = pyodide.pyimport("micropip"); await micropip.install(wheelURL); const pytest = pyodide.pyimport("pytest"); FS.chdir("/test_dir"); errcode = pytest.main(); } catch (e) { console.error(e); process.exit(1); } } main(); maturin-1.7.4/tests/manylinux_compliant.sh000077500000000000000000000004521467514767100210200ustar00rootroot00000000000000#!/bin/bash set -e which cargo > /dev/null 2>&1 || curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal for PYBIN in /opt/python/cp3[89]*/bin; do cargo run -- build -m test-crates/pyo3-mixed/Cargo.toml --target-dir test-crates/targets -i "${PYBIN}/python" --manylinux $1 -o dist done maturin-1.7.4/tests/manylinux_incompliant.sh000077500000000000000000000017661467514767100213600ustar00rootroot00000000000000#!/bin/bash set -e which cargo > /dev/null || curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal # Fail because we're running in manylinux2_28, which can't build for manylinux 2010 for PYBIN in /opt/python/cp3[9]*/bin; do if cargo run -- build -m test-crates/pyo3-mixed/Cargo.toml --target-dir test-crates/targets -i "${PYBIN}/python" --manylinux 2010 -o dist; then echo "maturin build unexpectedly succeeded" exit 1 else echo "maturin build failed as expected" fi done # Fail because we're linking zlib with black-listed symbols(gzflags), which is not allowed in manylinux apt-get -v &> /dev/null && apt-get install -y zlib1g-dev || yum install -y zlib-devel for PYBIN in /opt/python/cp3[9]*/bin; do if cargo run -- build -m test-crates/lib_with_disallowed_lib/Cargo.toml --target-dir test-crates/targets -i "${PYBIN}/python" --manylinux 2014 -o dist; then echo "maturin build unexpectedly succeeded" exit 1 else echo "maturin build failed as expected" fi done maturin-1.7.4/tests/run.rs000066400000000000000000000657101467514767100155510ustar00rootroot00000000000000//! To speed up the tests, they are tests all collected in a single module use common::{ develop, errors, handle_result, integration, other, test_python_implementation, TestInstallBackend, }; use expect_test::expect; use maturin::pyproject_toml::SdistGenerator; use rstest::rstest; use std::env; use std::path::Path; use time::macros::datetime; use which::which; mod common; #[test] fn develop_pyo3_pure() { handle_result(develop::test_develop( "test-crates/pyo3-pure", None, "develop-pyo3-pure", false, TestInstallBackend::Pip, )); } #[test] #[ignore] fn develop_pyo3_pure_conda() { // Only run on GitHub Actions for now if env::var("GITHUB_ACTIONS").is_ok() { handle_result(develop::test_develop( "test-crates/pyo3-pure", None, "develop-pyo3-pure-conda", true, TestInstallBackend::Pip, )); } } #[test] fn develop_pyo3_mixed() { handle_result(develop::test_develop( "test-crates/pyo3-mixed", None, "develop-pyo3-mixed", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_include_exclude() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-include-exclude", None, "develop-pyo3-mixed-include-exclude", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_submodule() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-submodule", None, "develop-pyo3-mixed-submodule", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_with_path_dep() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-with-path-dep", None, "develop-pyo3-mixed-with-path-dep", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_implicit() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-implicit", None, "develop-pyo3-mixed-implicit", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_py_subdir() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-py-subdir", None, "develop-pyo3-mixed-py-subdir", false, TestInstallBackend::Pip, )); } #[test] fn develop_pyo3_mixed_src_layout() { handle_result(develop::test_develop( "test-crates/pyo3-mixed-src/rust", None, "develop-pyo3-mixed-src", false, TestInstallBackend::Pip, )); } #[test] fn develop_cffi_pure() { let python_implementation = test_python_implementation().unwrap(); if cfg!(windows) && env::var("GITHUB_ACTIONS").is_ok() && python_implementation == "pypy" { // PyPy on Windows hangs on cffi test sometimes return; } handle_result(develop::test_develop( "test-crates/cffi-pure", None, "develop-cffi-pure", false, TestInstallBackend::Pip, )); } #[test] fn develop_cffi_mixed() { let python_implementation = test_python_implementation().unwrap(); if cfg!(windows) && env::var("GITHUB_ACTIONS").is_ok() && python_implementation == "pypy" { // PyPy on Windows hangs on cffi test sometimes return; } handle_result(develop::test_develop( "test-crates/cffi-mixed", None, "develop-cffi-mixed", false, TestInstallBackend::Pip, )); } #[test] fn develop_uniffi_pure() { if env::var("GITHUB_ACTIONS").is_ok() || which("uniffi-bindgen").is_ok() { handle_result(develop::test_develop( "test-crates/uniffi-pure", None, "develop-uniffi-pure", false, TestInstallBackend::Pip, )); } } #[test] fn develop_uniffi_pure_proc_macro() { handle_result(develop::test_develop( "test-crates/uniffi-pure-proc-macro", None, "develop-uniffi-pure-proc-macro", false, TestInstallBackend::Pip, )); } #[test] fn develop_uniffi_mixed() { if env::var("GITHUB_ACTIONS").is_ok() || which("uniffi-bindgen").is_ok() { handle_result(develop::test_develop( "test-crates/uniffi-mixed", None, "develop-uniffi-mixed", false, TestInstallBackend::Pip, )); } } #[test] fn develop_uniffi_multiple_binding_files() { if env::var("GITHUB_ACTIONS").is_ok() || which("uniffi-bindgen").is_ok() { handle_result(develop::test_develop( "test-crates/uniffi-multiple-binding-files", None, "develop-uniffi-multiple-binding-files", false, TestInstallBackend::Pip, )); } } #[rstest] #[case(TestInstallBackend::Pip, "pip")] #[case(TestInstallBackend::Uv, "uv")] #[test] fn develop_hello_world(#[case] backend: TestInstallBackend, #[case] name: &str) { // Only run uv tests on platforms that has wheel on PyPI or when uv binary is found if matches!(backend, TestInstallBackend::Uv) && !cfg!(any( target_os = "linux", target_os = "macos", target_os = "windows" )) && which("uv").is_err() { return; } handle_result(develop::test_develop( "test-crates/hello-world", None, format!("develop-hello-world-{}", name).as_str(), false, backend, )); } #[rstest] #[case(TestInstallBackend::Pip, "pip")] #[case(TestInstallBackend::Uv, "uv")] #[test] fn develop_pyo3_ffi_pure(#[case] backend: TestInstallBackend, #[case] name: &str) { // Only run uv tests on platforms that has wheel on PyPI or when uv binary is found if matches!(backend, TestInstallBackend::Uv) && !cfg!(any( target_os = "linux", target_os = "macos", target_os = "windows" )) && which("uv").is_err() { return; } handle_result(develop::test_develop( "test-crates/pyo3-ffi-pure", None, format!("develop-pyo3-ffi-pure-{}", name).as_str(), false, backend, )); } #[test] fn integration_pyo3_bin() { let python_implementation = test_python_implementation().unwrap(); if python_implementation == "pypy" || python_implementation == "graalpy" { // PyPy & GraalPy do not support the 'auto-initialize' feature of pyo3 return; } handle_result(integration::test_integration( "test-crates/pyo3-bin", None, "integration-pyo3-bin", false, None, )); } #[test] fn integration_pyo3_pure() { handle_result(integration::test_integration( "test-crates/pyo3-pure", None, "integration-pyo3-pure", false, None, )); } #[test] fn integration_pyo3_mixed() { handle_result(integration::test_integration( "test-crates/pyo3-mixed", None, "integration-pyo3-mixed", false, None, )); } #[test] fn integration_pyo3_mixed_include_exclude() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-include-exclude", None, "integration-pyo3-mixed-include-exclude", false, None, )); } #[test] fn integration_pyo3_mixed_submodule() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-submodule", None, "integration-pyo3-mixed-submodule", false, None, )); } #[test] fn integration_pyo3_mixed_with_path_dep() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-with-path-dep", None, "integration-pyo3-mixed-with-path-dep", false, None, )); } #[test] fn integration_pyo3_mixed_implicit() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-implicit", None, "integration-pyo3-mixed-implicit", false, None, )); } #[test] fn integration_pyo3_mixed_py_subdir() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-py-subdir", None, "integration-pyo3-mixed-py-subdir", cfg!(unix), None, )); } #[test] fn integration_pyo3_mixed_src_layout() { handle_result(integration::test_integration( "test-crates/pyo3-mixed-src/rust", None, "integration-pyo3-mixed-src", false, None, )); } #[test] #[cfg_attr(target_os = "macos", ignore)] // Don't run it on macOS, too slow fn integration_pyo3_pure_conda() { // Only run on GitHub Actions for now if env::var("GITHUB_ACTIONS").is_ok() { handle_result(integration::test_integration_conda( "test-crates/pyo3-mixed", None, )); } } #[test] fn integration_cffi_pure() { let python_implementation = test_python_implementation().unwrap(); if cfg!(windows) && env::var("GITHUB_ACTIONS").is_ok() && python_implementation == "pypy" { // PyPy on Windows hangs on cffi test sometimes return; } handle_result(integration::test_integration( "test-crates/cffi-pure", None, "integration-cffi-pure", false, None, )); } #[test] fn integration_cffi_mixed() { let python_implementation = test_python_implementation().unwrap(); if cfg!(windows) && env::var("GITHUB_ACTIONS").is_ok() && python_implementation == "pypy" { // PyPy on Windows hangs on cffi test sometimes return; } handle_result(integration::test_integration( "test-crates/cffi-mixed", None, "integration-cffi-mixed", false, None, )); } #[test] fn integration_uniffi_pure() { if env::var("GITHUB_ACTIONS").is_ok() || which("uniffi-bindgen").is_ok() { handle_result(integration::test_integration( "test-crates/uniffi-pure", None, "integration-uniffi-pure", false, None, )); } } #[test] fn integration_uniffi_pure_proc_macro() { handle_result(integration::test_integration( "test-crates/uniffi-pure-proc-macro", None, "integration-uniffi-pure-proc-macro", false, None, )); } #[test] fn integration_uniffi_mixed() { if env::var("GITHUB_ACTIONS").is_ok() || which("uniffi-bindgen").is_ok() { handle_result(integration::test_integration( "test-crates/uniffi-mixed", None, "integration-uniffi-mixed", false, None, )); } } #[test] fn integration_hello_world() { handle_result(integration::test_integration( "test-crates/hello-world", None, "integration-hello-world", false, None, )); } #[test] fn integration_pyo3_ffi_pure() { handle_result(integration::test_integration( "test-crates/pyo3-ffi-pure", None, "integration-pyo3-ffi-pure", false, None, )); } #[test] fn integration_with_data() { handle_result(integration::test_integration( "test-crates/with-data", None, "integration-with-data", false, None, )); } #[test] fn integration_readme_duplication() { handle_result(integration::test_integration( "test-crates/readme-duplication/readme-py", None, "integration-readme-duplication", false, None, )); } #[test] // Sourced from https://pypi.org/project/wasmtime/11.0.0/#files // update with wasmtime updates #[cfg(any( all(target_os = "windows", target_arch = "x86_64"), all( target_os = "linux", any(target_arch = "x86_64", target_arch = "aarch64"), target_env = "gnu", ), all( target_os = "macos", any(target_arch = "x86_64", target_arch = "aarch64") ), ))] fn integration_wasm_hello_world() { use std::path::Path; handle_result(integration::test_integration( "test-crates/hello-world", None, "integration-wasm-hello-world", false, Some("wasm32-wasi"), )); let python_implementation = test_python_implementation().unwrap(); let venv_name = format!("integration-wasm-hello-world-py3-wasm32-wasi-{python_implementation}"); // Make sure we're actually running wasm assert!(Path::new("test-crates") .join("venvs") .join(venv_name) .join(if cfg!(target_os = "windows") { "Scripts" } else { "bin" }) .join("hello-world.wasm") .is_file()) } #[test] fn abi3_without_version() { handle_result(errors::abi3_without_version()) } #[test] // Only run this test on platforms that has manylinux support #[cfg_attr( not(all( target_os = "linux", target_env = "gnu", any( target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "s390x", target_arch = "arm" ) )), ignore )] fn pyo3_no_extension_module() { let python_implementation = test_python_implementation().unwrap(); if python_implementation == "cpython" { handle_result(errors::pyo3_no_extension_module()) } } #[test] fn locked_doesnt_build_without_cargo_lock() { handle_result(errors::locked_doesnt_build_without_cargo_lock()) } #[test] #[cfg_attr(not(all(target_os = "linux", target_env = "gnu")), ignore)] fn invalid_manylinux_does_not_panic() { handle_result(errors::invalid_manylinux_does_not_panic()) } #[test] fn warn_on_missing_python_source() { handle_result(errors::warn_on_missing_python_source()) } #[test] #[cfg_attr(not(target_os = "linux"), ignore)] fn musl() { let ran = handle_result(other::test_musl()); if !ran { eprintln!("⚠️ Warning: rustup and/or musl target not installed, test didn't run"); } } #[test] fn workspace_cargo_lock() { handle_result(other::test_workspace_cargo_lock()) } #[test] fn workspace_members_beneath_pyproject_sdist() { let cargo_toml = expect![[r#" [workspace] resolver = "2" members = ["pyo3-mixed-workspace", "python/pyo3-mixed-workspace-py"] "#]]; handle_result(other::test_source_distribution( "test-crates/pyo3-mixed-workspace/rust/python/pyo3-mixed-workspace-py", SdistGenerator::Cargo, expect![[r#" { "pyo3_mixed_workspace-2.1.3/PKG-INFO", "pyo3_mixed_workspace-2.1.3/pyproject.toml", "pyo3_mixed_workspace-2.1.3/rust/Cargo.lock", "pyo3_mixed_workspace-2.1.3/rust/Cargo.toml", "pyo3_mixed_workspace-2.1.3/rust/pyo3-mixed-workspace/Cargo.toml", "pyo3_mixed_workspace-2.1.3/rust/pyo3-mixed-workspace/src/lib.rs", "pyo3_mixed_workspace-2.1.3/rust/python/pyo3-mixed-workspace-py/Cargo.toml", "pyo3_mixed_workspace-2.1.3/rust/python/pyo3-mixed-workspace-py/src/lib.rs", "pyo3_mixed_workspace-2.1.3/src/pyo3_mixed_workspace/__init__.py", "pyo3_mixed_workspace-2.1.3/src/pyo3_mixed_workspace/python_module/__init__.py", "pyo3_mixed_workspace-2.1.3/src/pyo3_mixed_workspace/python_module/double.py", "pyo3_mixed_workspace-2.1.3/src/tests/test_pyo3_mixed.py", } "#]], Some(( Path::new("pyo3_mixed_workspace-2.1.3/rust/Cargo.toml"), cargo_toml, )), "sdist-workspace-members-beneath_pyproject", )) } #[test] fn workspace_members_non_local_dep_sdist() { let cargo_toml = expect![[r#" [package] authors = ["konstin "] name = "pyo3-pure" version = "2.1.2" edition = "2021" description = "Implements a dummy function (get_fortytwo.DummyClass.get_42()) in rust" license = "MIT" [dependencies] pyo3 = { version = "0.22.0", features = ["abi3-py37", "extension-module", "generate-import-lib"] } [lib] name = "pyo3_pure" crate-type = ["cdylib"] "#]]; handle_result(other::test_source_distribution( "test-crates/pyo3-pure", SdistGenerator::Cargo, expect![[r#" { "pyo3_pure-0.1.0+abc123de/Cargo.lock", "pyo3_pure-0.1.0+abc123de/Cargo.toml", "pyo3_pure-0.1.0+abc123de/LICENSE", "pyo3_pure-0.1.0+abc123de/PKG-INFO", "pyo3_pure-0.1.0+abc123de/README.md", "pyo3_pure-0.1.0+abc123de/check_installed/check_installed.py", "pyo3_pure-0.1.0+abc123de/pyo3_pure.pyi", "pyo3_pure-0.1.0+abc123de/pyproject.toml", "pyo3_pure-0.1.0+abc123de/src/lib.rs", "pyo3_pure-0.1.0+abc123de/tests/test_pyo3_pure.py", "pyo3_pure-0.1.0+abc123de/tox.ini", } "#]], Some((Path::new("pyo3_pure-0.1.0+abc123de/Cargo.toml"), cargo_toml)), "sdist-workspace-members-non-local-dep", )) } #[test] fn lib_with_path_dep_sdist() { handle_result(other::test_source_distribution( "test-crates/sdist_with_path_dep", SdistGenerator::Cargo, expect![[r#" { "sdist_with_path_dep-0.1.0/PKG-INFO", "sdist_with_path_dep-0.1.0/pyproject.toml", "sdist_with_path_dep-0.1.0/sdist_with_path_dep/Cargo.lock", "sdist_with_path_dep-0.1.0/sdist_with_path_dep/Cargo.toml", "sdist_with_path_dep-0.1.0/sdist_with_path_dep/src/lib.rs", "sdist_with_path_dep-0.1.0/some_path_dep/Cargo.toml", "sdist_with_path_dep-0.1.0/some_path_dep/src/lib.rs", "sdist_with_path_dep-0.1.0/transitive_path_dep/Cargo.toml", "sdist_with_path_dep-0.1.0/transitive_path_dep/src/lib.rs", } "#]], None, "sdist-lib-with-path-dep", )) } #[test] fn lib_with_target_path_dep_sdist() { let cargo_toml = expect![[r#" [package] name = "sdist_with_target_path_dep" version = "0.1.0" authors = ["konstin "] edition = "2021" [lib] crate-type = ["cdylib"] [dependencies] # Don't use the macros feature, which makes compilation much faster pyo3 = { version = "0.22.0", default-features = false, features = ["extension-module"] } [target.'cfg(not(target_endian = "all-over-the-place"))'.dependencies] some_path_dep = { path = "../some_path_dep" } "#]]; handle_result(other::test_source_distribution( "test-crates/sdist_with_target_path_dep", SdistGenerator::Cargo, expect![[r#" { "sdist_with_target_path_dep-0.1.0/PKG-INFO", "sdist_with_target_path_dep-0.1.0/pyproject.toml", "sdist_with_target_path_dep-0.1.0/sdist_with_target_path_dep/Cargo.lock", "sdist_with_target_path_dep-0.1.0/sdist_with_target_path_dep/Cargo.toml", "sdist_with_target_path_dep-0.1.0/sdist_with_target_path_dep/src/lib.rs", "sdist_with_target_path_dep-0.1.0/some_path_dep/Cargo.toml", "sdist_with_target_path_dep-0.1.0/some_path_dep/src/lib.rs", "sdist_with_target_path_dep-0.1.0/transitive_path_dep/Cargo.toml", "sdist_with_target_path_dep-0.1.0/transitive_path_dep/src/lib.rs", } "#]], Some(( Path::new("sdist_with_target_path_dep-0.1.0/sdist_with_target_path_dep/Cargo.toml"), cargo_toml, )), "sdist-lib-with-target-path-dep", )) } #[test] fn pyo3_mixed_src_layout_sdist() { handle_result(other::test_source_distribution( "test-crates/pyo3-mixed-src/rust", SdistGenerator::Cargo, expect![[r#" { "pyo3_mixed_src-2.1.3/PKG-INFO", "pyo3_mixed_src-2.1.3/pyproject.toml", "pyo3_mixed_src-2.1.3/rust/Cargo.lock", "pyo3_mixed_src-2.1.3/rust/Cargo.toml", "pyo3_mixed_src-2.1.3/rust/src/lib.rs", "pyo3_mixed_src-2.1.3/src/pyo3_mixed_src/__init__.py", "pyo3_mixed_src-2.1.3/src/pyo3_mixed_src/python_module/__init__.py", "pyo3_mixed_src-2.1.3/src/pyo3_mixed_src/python_module/double.py", "pyo3_mixed_src-2.1.3/src/tests/test_pyo3_mixed.py", } "#]], None, "sdist-pyo3-mixed-src-layout", )) } #[test] fn pyo3_mixed_include_exclude_sdist() { handle_result(other::test_source_distribution( "test-crates/pyo3-mixed-include-exclude", SdistGenerator::Cargo, expect![[r#" { "pyo3_mixed_include_exclude-2.1.3/.gitignore", "pyo3_mixed_include_exclude-2.1.3/Cargo.lock", "pyo3_mixed_include_exclude-2.1.3/Cargo.toml", "pyo3_mixed_include_exclude-2.1.3/PKG-INFO", "pyo3_mixed_include_exclude-2.1.3/README.md", "pyo3_mixed_include_exclude-2.1.3/check_installed/check_installed.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/__init__.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/include_this_file", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/python_module/__init__.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/python_module/double.py", "pyo3_mixed_include_exclude-2.1.3/pyproject.toml", "pyo3_mixed_include_exclude-2.1.3/src/lib.rs", "pyo3_mixed_include_exclude-2.1.3/tox.ini", } "#]], None, "sdist-pyo3-mixed-include-exclude", )) } #[test] fn pyo3_mixed_include_exclude_git_sdist_generator() { if !Path::new(".git").exists() { return; } handle_result(other::test_source_distribution( "test-crates/pyo3-mixed-include-exclude", SdistGenerator::Git, expect![[r#" { "pyo3_mixed_include_exclude-2.1.3/.gitignore", "pyo3_mixed_include_exclude-2.1.3/Cargo.lock", "pyo3_mixed_include_exclude-2.1.3/Cargo.toml", "pyo3_mixed_include_exclude-2.1.3/PKG-INFO", "pyo3_mixed_include_exclude-2.1.3/README.md", "pyo3_mixed_include_exclude-2.1.3/check_installed/check_installed.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/__init__.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/include_this_file", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/python_module/__init__.py", "pyo3_mixed_include_exclude-2.1.3/pyo3_mixed_include_exclude/python_module/double.py", "pyo3_mixed_include_exclude-2.1.3/pyproject.toml", "pyo3_mixed_include_exclude-2.1.3/src/lib.rs", "pyo3_mixed_include_exclude-2.1.3/tox.ini", } "#]], None, "sdist-pyo3-mixed-include-exclude-git", )) } #[test] fn pyo3_mixed_include_exclude_wheel_files() { handle_result(other::check_wheel_files( "test-crates/pyo3-mixed-include-exclude", vec![ "pyo3_mixed_include_exclude-2.1.3.dist-info/METADATA", "pyo3_mixed_include_exclude-2.1.3.dist-info/RECORD", "pyo3_mixed_include_exclude-2.1.3.dist-info/WHEEL", "pyo3_mixed_include_exclude-2.1.3.dist-info/entry_points.txt", "pyo3_mixed_include_exclude/__init__.py", "pyo3_mixed_include_exclude/include_this_file", "pyo3_mixed_include_exclude/python_module/__init__.py", "pyo3_mixed_include_exclude/python_module/double.py", "README.md", ], "wheel-files-pyo3-mixed-include-exclude", )) } #[test] fn workspace_sdist() { handle_result(other::test_source_distribution( "test-crates/workspace/py", SdistGenerator::Cargo, expect![[r#" { "py-0.1.0/Cargo.lock", "py-0.1.0/Cargo.toml", "py-0.1.0/PKG-INFO", "py-0.1.0/py/Cargo.toml", "py-0.1.0/py/src/main.rs", "py-0.1.0/pyproject.toml", } "#]], None, "sdist-workspace", )) } #[test] fn workspace_with_path_dep_sdist() { handle_result(other::test_source_distribution( "test-crates/workspace_with_path_dep/python", SdistGenerator::Cargo, expect![[r#" { "workspace_with_path_dep-0.1.0/Cargo.lock", "workspace_with_path_dep-0.1.0/Cargo.toml", "workspace_with_path_dep-0.1.0/PKG-INFO", "workspace_with_path_dep-0.1.0/generic_lib/Cargo.toml", "workspace_with_path_dep-0.1.0/generic_lib/src/lib.rs", "workspace_with_path_dep-0.1.0/pyproject.toml", "workspace_with_path_dep-0.1.0/python/Cargo.toml", "workspace_with_path_dep-0.1.0/python/src/lib.rs", "workspace_with_path_dep-0.1.0/transitive_lib/Cargo.toml", "workspace_with_path_dep-0.1.0/transitive_lib/src/lib.rs", } "#]], None, "sdist-workspace-with-path-dep", )) } #[test] fn workspace_with_path_dep_git_sdist_generator() { if !Path::new(".git").exists() { return; } handle_result(other::test_source_distribution( "test-crates/workspace_with_path_dep/python", SdistGenerator::Git, expect![[r#" { "workspace_with_path_dep-0.1.0/Cargo.toml", "workspace_with_path_dep-0.1.0/PKG-INFO", "workspace_with_path_dep-0.1.0/pyproject.toml", "workspace_with_path_dep-0.1.0/src/lib.rs", } "#]], None, "sdist-workspace-with-path-dep-git", )) } #[rustversion::since(1.64)] #[test] fn workspace_inheritance_sdist() { handle_result(other::test_source_distribution( "test-crates/workspace-inheritance/python", SdistGenerator::Cargo, expect![[r#" { "workspace_inheritance-0.1.0/Cargo.lock", "workspace_inheritance-0.1.0/Cargo.toml", "workspace_inheritance-0.1.0/PKG-INFO", "workspace_inheritance-0.1.0/generic_lib/Cargo.toml", "workspace_inheritance-0.1.0/generic_lib/src/lib.rs", "workspace_inheritance-0.1.0/pyproject.toml", "workspace_inheritance-0.1.0/python/Cargo.toml", "workspace_inheritance-0.1.0/python/src/lib.rs", } "#]], None, "sdist-workspace-inheritance", )) } #[test] fn abi3_python_interpreter_args() { handle_result(other::abi3_python_interpreter_args()); } #[test] fn pyo3_source_date_epoch() { env::set_var("SOURCE_DATE_EPOCH", "0"); handle_result(other::check_wheel_mtimes( "test-crates/pyo3-mixed-include-exclude", vec![datetime!(1980-01-01 0:00 UTC)], "pyo3_source_date_epoch", )) }