# Copyright 2019-2022 Tauri Programme within The Commons Conservancy # SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: MIT name: Udeps on: push: branches: - dev - next env: RUST_BACKTRACE: 1 CARGO_INCREMENTAL: 0 # This is set to 0 by the https://github.com/Swatinem/rust-cache CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency. concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: changes: runs-on: ubuntu-latest outputs: tauri: ${{ steps.filter.outputs.tauri }} build: ${{ steps.filter.outputs.build }} codegen: ${{ steps.filter.outputs.codegen }} macros: ${{ steps.filter.outputs.macros }} runtime: ${{ steps.filter.outputs.runtime }} wry: ${{ steps.filter.outputs.wry }} utils: ${{ steps.filter.outputs.utils }} bundler: ${{ steps.filter.outputs.bundler }} cli: ${{ steps.filter.outputs.cli }} steps: - uses: actions/checkout@v2 - uses: dorny/paths-filter@v2 id: filter with: filters: | tauri: - 'core/tauri/**' - '!core/tauri/scripts/**' build: - 'core/tauri-build/**' codegen: - 'core/tauri-codegen/**' macros: - 'core/tauri-macros/**' runtime: - 'core/tauri-runtime/**' wry: - 'core/tauri-runtime-wry/**' utils: - 'core/tauri-utils/**' bundler: - 'tooling/bundler/**' cli: - 'tooling/cli/**' setup: runs-on: ubuntu-latest needs: changes if: | needs.changes.outputs.tauri == 'true' || needs.changes.outputs.build == 'true' || needs.changes.outputs.codegen == 'true' || needs.changes.outputs.macros == 'true' || needs.changes.outputs.runtime == 'true' || needs.changes.outputs.wry == 'true' || needs.changes.outputs.utils == 'true' || needs.changes.outputs.bundler == 'true' || needs.changes.outputs.cli == 'true' steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true - uses: actions-rs/cargo@v1 with: command: install args: cargo-udeps --locked --force - name: Upload udeps uses: actions/upload-artifact@v3 with: name: udeps path: '~/.cargo/bin/cargo-udeps' if-no-files-found: error - name: Create udeps matrix id: create-matrix env: TAURI: ${{ needs.changes.outputs.tauri == 'true' }} BUILD: ${{ needs.changes.outputs.build == 'true' }} CODEGEN: ${{ needs.changes.outputs.codegen == 'true' }} MACROS: ${{ needs.changes.outputs.macros == 'true' }} RUNTIME: ${{ needs.changes.outputs.runtime == 'true' }} WRY: ${{ needs.changes.outputs.wry == 'true' }} UTILS: ${{ needs.changes.outputs.utils == 'true' }} BUNDLER: ${{ needs.changes.outputs.bundler == 'true' }} CLI: ${{ needs.changes.outputs.cli == 'true' }} run: | crates=() if [ "${TAURI}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri\""; fi if [ "${BUILD}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-build\""; fi if [ "${CODEGEN}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-codegen\""; fi if [ "${MACROS}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-macros\""; fi if [ "${RUNTIME}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-runtime\""; fi if [ "${WRY}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-runtime-wry\""; fi if [ "${UTILS}" == "true" ]; then crates[${#crates[@]}]="\"./core/tauri-utils\""; fi if [ "${BUNDLER}" == "true" ]; then crates[${#crates[@]}]="\"./tooling/bundler\""; fi if [ "${CLI}" == "true" ]; then crates[${#crates[@]}]="\"./tooling/cli\""; fi echo ::set-output name=matrix::[$crates] outputs: matrix: ${{ steps.create-matrix.outputs.matrix }} udeps: runs-on: ubuntu-latest needs: setup strategy: matrix: path: ${{ fromJson(needs.setup.outputs.matrix) }} steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true - name: install Linux dependencies run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev - name: Get current date run: echo "CURRENT_DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV - name: Cache cargo state uses: actions/cache@v2 env: cache-name: cargo_state with: path: | ~/.cargo/registry ~/.cargo/git ~/.cargo/bin key: ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('**/Cargo.toml') }}-${{ env.CURRENT_DATE }} restore-keys: | ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('**/Cargo.toml') }}- ubuntu-latest-nightly-${{ env.cache-name }}- ubuntu-latest-nightly- ubuntu-latest- - name: Cache core cargo target uses: actions/cache@v2 env: cache-name: cargo-core with: path: target # Add date to the cache to keep it up to date key: ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('core/**/Cargo.toml') }}-${{ env.CURRENT_DATE }} # Restore from outdated cache for speed restore-keys: | ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('core/**/Cargo.toml') }} ubuntu-latest-nightly-${{ env.cache-name }}- ubuntu-latest-nightly- ubuntu-latest- - name: Cache bundler cargo target uses: actions/cache@v2 env: cache-name: cargo_bundler with: path: tooling/bundler/target # Add date to the cache to keep it up to date key: ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('tooling/bundler/Cargo.lock') }}-${{ env.CURRENT_DATE }} # Restore from outdated cache for speed restore-keys: | ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('tooling/bundler/Cargo.lock') }} ubuntu-latest-nightly-${{ env.cache-name }}- ubuntu-latest-nightly- ubuntu-latest- - name: Cache CLI cargo target uses: actions/cache@v2 env: cache-name: cargo_cli with: path: tooling/cli/target # Add date to the cache to keep it up to date key: ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('tooling/cli/Cargo.lock') }}-${{ env.CURRENT_DATE }} # Restore from outdated cache for speed restore-keys: | ubuntu-latest-nightly-${{ env.cache-name }}-${{ hashFiles('tooling/cli/Cargo.lock') }} ubuntu-latest-nightly-${{ env.cache-name }}- ubuntu-latest-nightly- ubuntu-latest- - name: Download udeps uses: actions/download-artifact@v3 with: name: udeps path: '~/.cargo/bin' - run: chmod +x $HOME/.cargo/bin/cargo-udeps - name: Install required packages run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libayatana-appindicator3-dev librsvg2-dev patchelf - uses: actions-rs/cargo@v1 with: command: udeps args: --manifest-path ${{ matrix.path }}/Cargo.toml --all-targets --all-features