Skip to content

Failing to analyze - with Cargo failed to resolve dependencies for path 'rust-client/Cargo.toml': NoSuchElementException: Collection contains no element matching the predicate.  #8480

@avifenesh

Description

@avifenesh

When running analyze on our project with githubactions we get 07:49:06.333 [DefaultDispatcher-worker-2] ERROR org.ossreviewtoolkit.analyzer.PackageManager - Cargo failed to resolve dependencies for path 'rust-client/Cargo.toml': NoSuchElementException: Collection contains no element matching the predicate. Error.

The error doesn't indicate which dependency exactly it fails on, but even when trying to remove each dependency at a time and also all of the dependencies the error keep occurring, even with an empty file.
Iv'e tried to both use ORT from source and both using gradlew, both are failing the same.
The issue started about a week+ ago without any changes to the relevant files from our side.
Our project: glide-for-redis
Cargo.toml:

[package]
name = "glide-rs"
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
authors = ["Amazon Web Services"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lib]
crate-type = ["cdylib"]

[dependencies]
redis = { path = "../../submodules/redis-rs/redis", features = ["aio", "tokio-comp", "tokio-rustls-comp"] }
glide-core = { path = "../../glide-core", features = ["socket-layer"] }
tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread", "time"] }
napi = {version = "2.14", features = ["napi4", "napi6"] }
napi-derive = "2.14"
logger_core = {path = "../../logger_core"}
byteorder = "1.4.3"
num-traits = "0.2.17"
num-bigint = { version = "0.4.4", optional = true }
[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = {version = "0.5.4", features = ["disable_initial_exec_tls"] }

[build-dependencies]
napi-build = "2.0.1"

[profile.release]
lto = true
debug = true

[features]
testing_utilities = ["num-bigint"]

The actions:

name: The OSS Review Toolkit (ORT)

on:
    schedule:
      - cron: "0 0 * * *"
    pull_request:
      paths:
        - .github/workflows/ort.yml
        - .github/workflows/run-ort-tools/action.yml
        - utils/get_licenses_from_ort.py
    workflow_dispatch:
      inputs:
        branch:
          description: 'The branch to run against the ORT tool'     
          required: true
        version:
          description: 'The release version of GLIDE'
          required: true
jobs:
    run-ort:
        if: github.repository_owner == 'aws'
        name: Create attribution files
        runs-on: ubuntu-latest
        strategy:
          fail-fast: false
        env: 
          PYTHON_ATTRIBUTIONS: "python/THIRD_PARTY_LICENSES_PYTHON"
          NODE_ATTRIBUTIONS: "node/THIRD_PARTY_LICENSES_NODE"
          RUST_ATTRIBUTIONS: "glide-core/THIRD_PARTY_LICENSES_RUST"
        steps:
            - name: Set the release version
              shell: bash
              run: |
                  export version=`if [ "$EVENT_NAME" == 'schedule' ] || [ "$EVENT_NAME" == 'pull_request' ]; then echo '255.255.255'; else echo "$INPUT_VERSION"; fi`
                  echo "RELEASE_VERSION=${version}" >> $GITHUB_ENV
              env:
                EVENT_NAME: ${{ github.event_name }}
                INPUT_VERSION: ${{ github.event.inputs.version }}
              
            - name: Set the base branch
              run: |
                export BASE_BRANCH=`if [ "$EVENT_NAME" == 'schedule' ]; then echo 'main'; elif [ "$EVENT_NAME" == 'workflow_dispatch' ]; then echo "$INPUT_BRANCH"; else echo ""; fi`
                echo "Base branch is: ${BASE_BRANCH}"
                echo "BASE_BRANCH=${BASE_BRANCH}" >> $GITHUB_ENV
              env:
                EVENT_NAME: ${{ github.event_name }}
                INPUT_BRANCH: ${{ github.event.inputs.branch }}

            - name: Checkout
              uses: actions/checkout@v4
              with:
                  submodules: "true"
                  ref: ${{ env.BASE_BRANCH }}

            - name: Set up JDK 11 for the ORT package
              uses: actions/setup-java@v4
              with:
                  distribution: "temurin"
                  java-version: 11

            - name: Cache ORT and Gradle packages
              uses: actions/cache@v4
              id: cache-ort
              with:
                path: |
                  ./ort
                  ~/.gradle/caches
                  ~/.gradle/wrapper
                key: ${{ runner.os }}-ort

            - name: Checkout ORT Repository
              if: steps.cache-ort.outputs.cache-hit != 'true'
              uses: actions/checkout@v4
              with: 
                  repository: "oss-review-toolkit/ort"
                  path: "./ort"
                  ref: main
                  submodules: recursive

            - name: Checkout ORT latest release tag
              if: steps.cache-ort.outputs.cache-hit != 'true'
              working-directory: ./ort/
              run: |
                # Get new tags from remote
                git fetch --tags
                # Get latest tag name
                LATEST_TAG=$(git describe --tags "$(git rev-list --tags --max-count=1)")
                # Checkout latest tag
                git checkout $LATEST_TAG

            - name: Install ORT
              if: steps.cache-ort.outputs.cache-hit != 'true'
              working-directory: ./ort/
              run: |
                export JAVA_OPTS="$JAVA_OPTS -Xmx8g"
                ./gradlew installDist

            - name: Create ORT config file
              run: |
                mkdir -p ~/.ort/config
                cat << EOF > ~/.ort/config/config.yml
                ort:
                  analyzer:
                    allowDynamicVersions: true
                    enabledPackageManagers: [Cargo, NPM, PIP]
                EOF
                cat ~/.ort/config/config.yml

          ### NodeJS ###

            - name: Set up Node.js 16.x
              uses: actions/setup-node@v4
              with:
                  node-version: 16.x

            - name: Create package.json file for the Node wrapper 
              uses: ./.github/workflows/node-create-package-file
              with:
                release_version: ${{ env.RELEASE_VERSION }}
                os: "ubuntu-latest"

            - name: Fix Node base NPM package.json file for ORT
              working-directory: ./node/npm/glide
              run: |
                # Remove the glide-rs dependency to avoid duplication 
                sed -i '/ "glide-rs":/d' ../../package.json
                export pkg_name=glide-for-redis-base
                export package_version="${{ env.RELEASE_VERSION }}"
                export scope=`if [ "$NPM_SCOPE" != ''  ]; then echo "$NPM_SCOPE/"; fi`
                mv package.json package.json.tmpl
                envsubst < package.json.tmpl > "package.json"
                cat package.json
            
            - name: Run ORT tools for Node
              uses: ./.github/workflows/run-ort-tools
              with:
                folder_path: "${{ github.workspace }}/node"
         And:
name: Run the OSS review tool

inputs:
    folder_path:
        description: "The root folder to run the ORT tool from"
        required: true
        type: string

runs:
    using: "composite"
    steps:
        - name: Run ORT tools
          working-directory: ./ort/
          shell: bash
          run: |
            echo "Running ORT tools for ${{ inputs.folder_path }}"
            FOLDER=${{ inputs.folder_path }}
            mkdir $FOLDER/ort_results
            # Analyzer (analyzer-result.json)
            ./gradlew cli:run --args="analyze -i $FOLDER -o $FOLDER/ort_results -f JSON"
            
            # NOTICE DEFAULT
            ./gradlew cli:run --args="report -i $FOLDER/ort_results/analyzer-result.json -o $FOLDER/ort_results/ -f PlainTextTemplate"

Iv'e tried:
Make sure that locale lang is fine.
Generating cargo.lock before analyzing.
Removing any comments from cargo file.
Sync submuodoles.
Deleting each dependencies at a time, and all of them together.
And more..

Any help or hint will be great.
Thanks!

Metadata

Metadata

Assignees

Labels

analyzerAbout the analyzer tool

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions