diff --git a/.actrc b/.actrc new file mode 100644 index 0000000..9e0a64f --- /dev/null +++ b/.actrc @@ -0,0 +1,19 @@ +# Linux runners (catthehacker = optimized images for act) +-P ubuntu-latest=catthehacker/ubuntu:act-latest +-P ubuntu-22.04=catthehacker/ubuntu:act-latest +-P ubuntu-24.04=catthehacker/ubuntu:act-latest + +# ARM64: same runner image, act uses --container-architecture linux/arm64 + QEMU +-P ubuntu-22.04-arm=catthehacker/ubuntu:act-latest + +# Windows: act cannot run Windows containers on Linux, +# so a Linux image is used to validate the workflow logic +-P windows-latest=catthehacker/ubuntu:act-latest + +# macOS: act cannot run macOS containers on Linux, +# so a Linux image is used to validate the workflow logic +-P macos-13=catthehacker/ubuntu:act-latest +-P macos-14=catthehacker/ubuntu:act-latest + +# Windows ARM64: same approach as Windows x64 and macOS +-P windows-11-arm=catthehacker/ubuntu:act-latest diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index b80b2dc..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,153 +0,0 @@ -name: build - -on: - workflow_dispatch: - push: - tags: ['*/v*'] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - include: - - runner: ubuntu-22.04 - arch: x86_64 - os_label: linux - lib_ext: so - - runner: ubuntu-22.04-arm - arch: aarch64 - os_label: linux - lib_ext: so - - runner: macos-15-intel - arch: x86_64 - os_label: macos - lib_ext: dylib - - runner: macos-14 - arch: arm64 - os_label: macos - lib_ext: dylib - - runner: windows-latest - arch: x64 - os_label: windows - lib_ext: dll - - runner: windows-11-arm - arch: arm64 - os_label: windows - lib_ext: dll - - steps: - - name: Checkout - uses: actions/checkout@v4 - - # cmake and conan installed via pip — available on all 6 runners. - # Compilers are provided by each runner image (gcc/clang/MSVC). - - name: Install cmake, ninja and conan - run: pip install cmake ninja "conan>=2.0,<3" - - # Ninja + MSVC requires the MSVC developer environment to be activated. - # ilammy/msvc-dev-cmd sets up cl.exe, link.exe and Windows SDK headers/libs. - - name: Set up MSVC environment (Windows) - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Cache conan packages (Linux/macOS) - if: runner.os != 'Windows' - uses: actions/cache@v4 - with: - path: ~/.conan2/p - key: conan-${{ matrix.os_label }}-${{ matrix.arch }}-${{ hashFiles('conanfile.py') }} - restore-keys: conan-${{ matrix.os_label }}-${{ matrix.arch }}- - - - name: Cache conan packages (Windows) - if: runner.os == 'Windows' - uses: actions/cache@v4 - with: - path: ~\AppData\Local\conan\p - key: conan-${{ matrix.os_label }}-${{ matrix.arch }}-${{ hashFiles('conanfile.py') }} - restore-keys: conan-${{ matrix.os_label }}-${{ matrix.arch }}- - - - name: Build & Test - shell: bash - run: | - conan profile detect --force - conan install . --output-folder=build --build=missing -s build_type=Release \ - -c tools.cmake.cmaketoolchain:generator=Ninja - cmake -S . -B build/Release -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ - -DCMAKE_PREFIX_PATH=build \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTS=ON - cmake --build build/Release --config Release - ctest --test-dir build/Release -V --output-on-failure - - - name: Package artifacts - if: startsWith(github.ref, 'refs/tags/') - shell: bash - run: | - EXT_NAME="${{ github.ref_name }}" - EXT_NAME="${EXT_NAME%/*}" - VERSION="${{ github.ref_name }}" - VERSION="${VERSION##*/}" - VERSION="${VERSION#v}" - ZIP_NAME="${EXT_NAME}-${VERSION}-${{ matrix.os_label }}-${{ matrix.arch }}.zip" - mkdir -p "dist/${EXT_NAME}" - find build/Release -name "${EXT_NAME}.${{ matrix.lib_ext }}" -exec cp {} "dist/${EXT_NAME}/" \; 2>/dev/null || true - cp "extensions/${EXT_NAME}/manifest.json" "dist/${EXT_NAME}/" 2>/dev/null || true - ls -la "dist/${EXT_NAME}/" - echo "ZIP_NAME=${ZIP_NAME}" >> $GITHUB_ENV - - - name: Compress artifacts (Linux/macOS) - if: startsWith(github.ref, 'refs/tags/') && runner.os != 'Windows' - shell: bash - run: cd dist && zip -r "../${{ env.ZIP_NAME }}" . - - - name: Compress artifacts (Windows) - if: startsWith(github.ref, 'refs/tags/') && runner.os == 'Windows' - shell: pwsh - run: | - Compress-Archive -Path dist\* -DestinationPath "$env:ZIP_NAME" - Write-Host "Package created: $env:ZIP_NAME" - - - name: Generate checksum (Linux/macOS) - if: startsWith(github.ref, 'refs/tags/') && runner.os != 'Windows' - shell: bash - run: | - if command -v sha256sum &> /dev/null; then - sha256sum "${{ env.ZIP_NAME }}" > "${{ env.ZIP_NAME }}.sha256" - else - shasum -a 256 "${{ env.ZIP_NAME }}" > "${{ env.ZIP_NAME }}.sha256" - fi - cat "${{ env.ZIP_NAME }}.sha256" - - - name: Generate checksum (Windows) - if: startsWith(github.ref, 'refs/tags/') && runner.os == 'Windows' - shell: pwsh - run: | - $hash = (Get-FileHash -Algorithm SHA256 "$env:ZIP_NAME").Hash.ToLower() - "$hash $env:ZIP_NAME" | Out-File -Encoding ascii "$env:ZIP_NAME.sha256" - Get-Content "$env:ZIP_NAME.sha256" - - - name: Upload artifact - if: startsWith(github.ref, 'refs/tags/') - uses: actions/upload-artifact@v4 - with: - name: ${{ env.ZIP_NAME }} - path: ${{ env.ZIP_NAME }} - - - name: Upload to Release - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v2 - with: - files: | - ${{ env.ZIP_NAME }} - ${{ env.ZIP_NAME }}.sha256 - generate_release_notes: ${{ matrix.runner == 'ubuntu-22.04' }} - fail_on_unmatched_files: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..7c9b580 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,86 @@ +name: macos + +on: + workflow_dispatch: + push: + branches: [main] + tags: ['[0-9]+.[0-9]+.[0-9]+'] + pull_request: + types: [opened, synchronize] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + macos-build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: macos-13 + arch: x86_64 + - os: macos-14 + arch: arm64 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 + with: + pixi-version: latest + cache: true + # locked: false because pixi.lock does not yet include osx platforms; + # the lock file will be updated once macOS is added to the CI baseline + locked: false + cache-write: ${{ github.event_name != 'pull_request' }} + + - name: Cache conan packages + uses: actions/cache@v4 + with: + path: ~/.conan2/p + key: conan-macos-${{ matrix.arch }}-${{ hashFiles('conanfile.py') }} + restore-keys: conan-macos-${{ matrix.arch }}- + + - name: Cache ccache + uses: actions/cache@v4 + with: + path: ~/.ccache + key: ccache-macos-${{ matrix.arch }}-${{ github.sha }} + restore-keys: ccache-macos-${{ matrix.arch }}- + + - name: Build & Test + run: pixi run all + + - name: Package artifacts + if: startsWith(github.ref, 'refs/tags/') + run: | + mkdir -p dist + for ext_dir in extensions/*/; do + name=$(basename "$ext_dir") + mkdir -p "dist/$name" + find build/Release -name "${name}.dylib" -exec cp {} "dist/$name/" \; 2>/dev/null || true + cp "${ext_dir}manifest.json" "dist/$name/" 2>/dev/null || true + done + ls -la dist/*/ + cd dist && zip -r ../pj-test-dummy-plugins-${{ github.ref_name }}-macos-${{ matrix.arch }}.zip . + + - name: Upload artifact + if: startsWith(github.ref, 'refs/tags/') + uses: actions/upload-artifact@v4 + with: + name: pj-test-dummy-plugins-${{ github.ref_name }}-macos-${{ matrix.arch }} + path: pj-test-dummy-plugins-${{ github.ref_name }}-macos-${{ matrix.arch }}.zip + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + files: pj-test-dummy-plugins-${{ github.ref_name }}-macos-${{ matrix.arch }}.zip + generate_release_notes: false + fail_on_unmatched_files: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml new file mode 100644 index 0000000..0d14921 --- /dev/null +++ b/.github/workflows/ubuntu.yml @@ -0,0 +1,84 @@ +name: ubuntu + +on: + workflow_dispatch: + push: + branches: [main] + tags: ['[0-9]+.[0-9]+.[0-9]+'] + pull_request: + types: [opened, synchronize] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + ubuntu-build: + runs-on: ${{ matrix.ubuntu-runner }} + strategy: + fail-fast: false + matrix: + include: + - ubuntu-runner: ubuntu-22.04 + arch: x86_64 + - ubuntu-runner: ubuntu-22.04-arm + arch: aarch64 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 + with: + pixi-version: latest + cache: true + locked: false + cache-write: ${{ github.event_name != 'pull_request' }} + + - name: Cache conan packages + uses: actions/cache@v4 + with: + path: ~/.conan2/p + key: conan-ubuntu-${{ matrix.arch }}-${{ hashFiles('conanfile.py') }} + restore-keys: conan-ubuntu-${{ matrix.arch }}- + + - name: Cache ccache + uses: actions/cache@v4 + with: + path: ~/.ccache + key: ccache-ubuntu-${{ matrix.arch }}-${{ github.sha }} + restore-keys: ccache-ubuntu-${{ matrix.arch }}- + + - name: Build & Test + run: pixi run all + + - name: Package artifacts + if: startsWith(github.ref, 'refs/tags/') + run: | + mkdir -p dist + for ext_dir in extensions/*/; do + name=$(basename "$ext_dir") + mkdir -p "dist/$name" + find build/Release -name "${name}.so" -exec cp {} "dist/$name/" \; 2>/dev/null || true + cp "${ext_dir}manifest.json" "dist/$name/" 2>/dev/null || true + done + ls -la dist/*/ + cd dist && zip -r ../pj-test-dummy-plugins-${{ github.ref_name }}-linux-${{ matrix.arch }}.zip . + + - name: Upload artifact + if: startsWith(github.ref, 'refs/tags/') + uses: actions/upload-artifact@v4 + with: + name: pj-test-dummy-plugins-${{ github.ref_name }}-linux-${{ matrix.arch }} + path: pj-test-dummy-plugins-${{ github.ref_name }}-linux-${{ matrix.arch }}.zip + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + files: pj-test-dummy-plugins-${{ github.ref_name }}-linux-${{ matrix.arch }}.zip + generate_release_notes: true + fail_on_unmatched_files: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..c10be11 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,115 @@ +name: windows + +on: + workflow_dispatch: + push: + branches: [main] + tags: ['[0-9]+.[0-9]+.[0-9]+'] + pull_request: + types: [opened, synchronize] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + windows-build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: windows-latest + arch: x64 + - os: windows-11-arm + arch: arm64 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + # x64: full toolchain via pixi (cmake, ninja, conan, ccache) + - name: Setup pixi + if: matrix.arch == 'x64' + uses: prefix-dev/setup-pixi@v0.8.1 + with: + pixi-version: latest + cache: true + locked: false + cache-write: ${{ github.event_name != 'pull_request' }} + + # arm64: conda-forge does not ship cmake/ninja for win-arm64, + # so we rely on MSVC + cmake pre-installed on the runner and install conan via pip + - name: Install conan (arm64) + if: matrix.arch == 'arm64' + run: pip install conan + + - name: Cache conan packages + uses: actions/cache@v4 + with: + path: ~\AppData\Local\conan\p + key: conan-windows-${{ matrix.arch }}-${{ hashFiles('conanfile.py') }} + restore-keys: conan-windows-${{ matrix.arch }}- + + - name: Cache ccache + if: matrix.arch == 'x64' + uses: actions/cache@v4 + with: + path: ~\AppData\Local\ccache + key: ccache-windows-x64-${{ github.sha }} + restore-keys: ccache-windows-x64- + + - name: Build & Test (x64 via pixi) + if: matrix.arch == 'x64' + run: pixi run all + + - name: Build & Test (arm64 native) + if: matrix.arch == 'arm64' + shell: bash + run: | + conan profile detect --force + conan install . --output-folder=build --build=missing -s build_type=Release + cmake -S . -B build/Release \ + -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ + -DCMAKE_PREFIX_PATH=build \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTS=ON + cmake --build build/Release --config Release + ctest --test-dir build/Release -V --output-on-failure + + - name: Package artifacts + if: startsWith(github.ref, 'refs/tags/') + shell: bash + run: | + mkdir -p dist + for ext_dir in extensions/*/; do + name=$(basename "$ext_dir") + mkdir -p "dist/$name" + find build/Release -name "${name}.dll" -exec cp {} "dist/$name/" \; 2>/dev/null || true + cp "${ext_dir}manifest.json" "dist/$name/" 2>/dev/null || true + done + ls -la dist/*/ + + - name: Compress artifacts + if: startsWith(github.ref, 'refs/tags/') + shell: pwsh + run: | + Compress-Archive -Path dist\* -DestinationPath "pj-test-dummy-plugins-${{ github.ref_name }}-windows-${{ matrix.arch }}.zip" + Write-Host "Package created: pj-test-dummy-plugins-${{ github.ref_name }}-windows-${{ matrix.arch }}.zip" + + - name: Upload artifact + if: startsWith(github.ref, 'refs/tags/') + uses: actions/upload-artifact@v4 + with: + name: pj-test-dummy-plugins-${{ github.ref_name }}-windows-${{ matrix.arch }} + path: pj-test-dummy-plugins-${{ github.ref_name }}-windows-${{ matrix.arch }}.zip + + - name: Upload to Release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + files: pj-test-dummy-plugins-${{ github.ref_name }}-windows-${{ matrix.arch }}.zip + generate_release_notes: false + fail_on_unmatched_files: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 567609b..1d2e276 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ build/ +.pixi/ +.claude/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..36a0e8a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,157 @@ +stages: + - build + - release + +# Run pipeline on: branch pushes, merge requests, and tags. +# Avoids duplicate pipelines when a branch has an open MR (branch pipeline is skipped, +# MR pipeline takes over). +workflow: + rules: + - if: $CI_COMMIT_TAG # tag → full pipeline (build + release) + - if: $CI_PIPELINE_SOURCE == "merge_request_event" # MR opened/updated → build only + - if: $CI_COMMIT_BRANCH # branch push (no open MR) → build only + +variables: + BUILD_TYPE: Release + +# ─── Linux x86_64 ───────────────────────────────────────────────────────────── +# Runner: #33 (CocoSet) — tags: self-hosted, linux, amd64 +# Shell executor. Builds inside a Docker container via docker build + extract. +build-linux-x86_64: + stage: build + tags: + - self-hosted + - linux + - amd64 + script: + - docker build --load -t pj-plugins-x86_64:${CI_COMMIT_SHORT_SHA} -f docker/linux-x86_64/Dockerfile.build . + - docker create --name extract-x86_64 pj-plugins-x86_64:${CI_COMMIT_SHORT_SHA} + - mkdir -p dist-x86_64 + - docker cp extract-x86_64:/workspace/dist/. ./dist-x86_64/ + - docker rm extract-x86_64 + - docker rmi pj-plugins-x86_64:${CI_COMMIT_SHORT_SHA} || true + - VERSION="${CI_COMMIT_TAG:-${CI_COMMIT_SHORT_SHA}}" + - cd dist-x86_64 && zip -r "../pj-test-dummy-plugins-${VERSION}-linux-x86_64.zip" . && cd .. + - | + if [ -n "$CI_COMMIT_TAG" ]; then + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --upload-file "pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-x86_64.zip" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/pj-test-dummy-plugins/${CI_COMMIT_TAG}/pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-x86_64.zip" + fi + artifacts: + paths: + - "pj-test-dummy-plugins-*-linux-x86_64.zip" + expire_in: 1 week + interruptible: true + +# ─── Linux aarch64 ──────────────────────────────────────────────────────────── +# Runner: #33 (CocoSet) — same amd64 runner, cross-compiles via docker buildx + QEMU. +# docker/linux-aarch64/Dockerfile.build compiles the full project inside the container. +build-linux-aarch64: + stage: build + tags: + - self-hosted + - linux + - amd64 + script: + - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + - docker buildx build --platform linux/arm64 --load -t pj-plugins-aarch64:${CI_COMMIT_SHORT_SHA} -f docker/linux-aarch64/Dockerfile.build . + - docker create --name extract-aarch64 pj-plugins-aarch64:${CI_COMMIT_SHORT_SHA} + - mkdir -p dist-aarch64 + - docker cp extract-aarch64:/workspace/dist/. ./dist-aarch64/ + - docker rm extract-aarch64 + - docker rmi pj-plugins-aarch64:${CI_COMMIT_SHORT_SHA} || true + - VERSION="${CI_COMMIT_TAG:-${CI_COMMIT_SHORT_SHA}}" + - cd dist-aarch64 && zip -r "../pj-test-dummy-plugins-${VERSION}-linux-aarch64.zip" . && cd .. + - | + if [ -n "$CI_COMMIT_TAG" ]; then + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --upload-file "pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-aarch64.zip" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/pj-test-dummy-plugins/${CI_COMMIT_TAG}/pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-aarch64.zip" + fi + artifacts: + paths: + - "pj-test-dummy-plugins-*-linux-aarch64.zip" + expire_in: 1 week + interruptible: true + +# ─── Windows x64 ────────────────────────────────────────────────────────────── +# Runner: #26 (PC portatil jlinigo) — tag: win64 +# Shell executor (PowerShell). Requires cmake + MSVC + pip pre-installed on the machine. +build-windows-x64: + stage: build + tags: + - win64 + script: + - | + $ErrorActionPreference = "Stop" + # Add cmake to PATH (bundled with Visual Studio 2022) + $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $vsInstallPath = & $vswhere -latest -property installationPath + $cmakePath = "$vsInstallPath\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" + $env:PATH = "$cmakePath;$env:PATH" + pip install "conan>=2.0,<3" + conan profile detect --force + conan install . --output-folder=build --build=missing -s build_type=Release + cmake -S . -B build/Release -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_PREFIX_PATH=build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON + cmake --build build/Release --config Release + ctest --test-dir build/Release -V --output-on-failure -C Release + foreach ($ext_dir in Get-ChildItem -Path extensions -Directory) { + $name = $ext_dir.Name + New-Item -ItemType Directory -Force -Path "dist\$name" | Out-Null + Get-ChildItem -Path build/Release -Recurse -Filter "${name}.dll" | ForEach-Object { Copy-Item $_.FullName -Destination "dist\$name\" } + $manifest = "extensions\$name\manifest.json" + if (Test-Path $manifest) { Copy-Item $manifest -Destination "dist\$name\" } + } + $zipName = "pj-test-dummy-plugins-" + $(if ($env:CI_COMMIT_TAG) { $env:CI_COMMIT_TAG } else { $env:CI_COMMIT_SHORT_SHA }) + "-windows-x64.zip" + Compress-Archive -Path dist\* -DestinationPath $zipName -Force + if ($env:CI_COMMIT_TAG) { + $headers = @{ "JOB-TOKEN" = $env:CI_JOB_TOKEN } + $uri = "$env:CI_API_V4_URL/projects/$env:CI_PROJECT_ID/packages/generic/pj-test-dummy-plugins/$env:CI_COMMIT_TAG/pj-test-dummy-plugins-$env:CI_COMMIT_TAG-windows-x64.zip" + Invoke-RestMethod -Method PUT -Headers $headers -InFile $zipName -Uri $uri + } + artifacts: + paths: + - "pj-test-dummy-plugins-*-windows-x64.zip" + expire_in: 1 week + interruptible: true + +# ─── Release ────────────────────────────────────────────────────────────────── +# Creates a GitLab Release with links to the Package Registry via curl API. +# No release-cli image needed — works with shell executor. +# Only runs on version tags (e.g. 1.0.0, v1.2.3). +# aarch64 and windows are optional — release is created even if they failed. +release: + stage: release + tags: + - self-hosted + - linux + - amd64 + rules: + - if: $CI_COMMIT_TAG + needs: + - job: build-linux-x86_64 + optional: false + - job: build-linux-aarch64 + optional: true + - job: build-windows-x64 + optional: true + script: + - | + PKG_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/pj-test-dummy-plugins/${CI_COMMIT_TAG}" + curl --fail --request POST \ + --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --header "Content-Type: application/json" \ + --data "{ + \"name\": \"Release ${CI_COMMIT_TAG}\", + \"tag_name\": \"${CI_COMMIT_TAG}\", + \"description\": \"Automated release for version ${CI_COMMIT_TAG}.\", + \"assets\": { + \"links\": [ + {\"name\": \"pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-x86_64.zip\", \"url\": \"${PKG_URL}/pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-x86_64.zip\", \"link_type\": \"package\"}, + {\"name\": \"pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-aarch64.zip\", \"url\": \"${PKG_URL}/pj-test-dummy-plugins-${CI_COMMIT_TAG}-linux-aarch64.zip\", \"link_type\": \"package\"}, + {\"name\": \"pj-test-dummy-plugins-${CI_COMMIT_TAG}-windows-x64.zip\", \"url\": \"${PKG_URL}/pj-test-dummy-plugins-${CI_COMMIT_TAG}-windows-x64.zip\", \"link_type\": \"package\"} + ] + } + }" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases" diff --git a/CMakeLists.txt b/CMakeLists.txt index fa3a6f0..34ba856 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25) +cmake_minimum_required(VERSION 3.22) project(plotjuggler-plugins VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) diff --git a/GITLAB-CI-RUNNERS.md b/GITLAB-CI-RUNNERS.md new file mode 100644 index 0000000..41e8231 --- /dev/null +++ b/GITLAB-CI-RUNNERS.md @@ -0,0 +1,180 @@ +# GitLab CI — Runners & Pipeline Design Notes + +This document explains the runner setup used in `.gitlab-ci.yml` and the reasons behind +specific implementation choices, to avoid confusion when maintaining or extending the pipeline. + +--- + +## Runners + +### Runner #33 — CocoSet (`self-hosted`, `linux`, `amd64`) + +- **Executor:** Shell +- **OS:** Linux x86_64 +- **Docker:** Available (used as a build tool, not as the executor) + +This runner uses a **shell executor**, meaning GitLab Runner executes commands directly in +a shell on the host machine. There is no `image:` directive in the jobs that use this runner +— if you add one, it will be silently ignored. + +Because Docker is available on the host, the Linux build jobs use it as a build tool: +they build a Docker image containing the full toolchain, compile the project inside it, +then extract the compiled artifacts using `docker cp`. This pattern isolates the build +environment without requiring a Docker executor. + +``` +docker build → docker create → docker cp → docker rm +``` + +### Runner #26 — PCRiskooPortatil (`win64`) + +- **Executor:** Shell (PowerShell) +- **OS:** Windows x64 +- **Tools pre-installed:** Python 3.12, conan 2.x, Visual Studio 2022 (MSVC 194) + +This runner also uses a shell executor. The `build-windows-x64` job runs PowerShell +commands directly on the machine. + +--- + +## Why certain things are configured the way they are + +### `$ErrorActionPreference = "Stop"` (Windows job) + +PowerShell does **not** stop on errors by default. Without this setting, if `cmake` or +`ctest` fails, PowerShell prints the error and continues to the next command. The job +then exits with code 0 (success) even though the build failed. Setting +`$ErrorActionPreference = "Stop"` makes the job fail immediately when any command errors. + +### cmake PATH on Windows (vswhere) + +cmake is bundled with Visual Studio 2022 but is **not** added to the system PATH. The +GitLab Runner service runs under a different user (SYSTEM), so user-level PATH entries +don't apply. The fix is to locate the Visual Studio install path at runtime using +`vswhere.exe` and prepend the bundled cmake binary directory to `$env:PATH`: + +```powershell +$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" +$vsInstallPath = & $vswhere -latest -property installationPath +$cmakePath = "$vsInstallPath\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" +$env:PATH = "$cmakePath;$env:PATH" +``` + +This is more robust than hardcoding a path, as it works across VS editions (Community, +Professional, Enterprise) and different install locations. + +### `cmake_minimum_required(VERSION 3.22)` in CMakeLists.txt + +Ubuntu 22.04 ships cmake **3.22.1** via apt. The Docker images for both Linux builds +(`docker/linux-x86_64/Dockerfile.build` and `docker/linux-aarch64/Dockerfile.build`) +install cmake from apt, so requiring 3.25+ would make the Docker builds fail. Nothing in +this project requires cmake features beyond 3.22. The GitHub Actions workflow uses pixi, +which installs a newer cmake independently and is not affected by this constraint. + +### Linux aarch64 on an amd64 runner (QEMU + docker buildx) + +Runner #33 is an x86_64 machine. To produce an ARM64 shared library without a dedicated +ARM runner, the pipeline uses QEMU emulation: + +```yaml +- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes +- docker buildx build --platform linux/arm64 --load -t ... -f docker/linux-aarch64/Dockerfile.build . +``` + +The first command registers QEMU binfmt handlers in the kernel so the host can +transparently execute ARM64 binaries. The second command builds a proper `linux/arm64` +Docker image, which runs the ARM64 toolchain inside QEMU. The base image +(`arm64v8/ubuntu:22.04`) is a native ARM64 image — all binaries compiled inside it are +ARM64 ELF. + +### Release job uses curl, not `release-cli` + +The standard GitLab approach for creating releases uses a job with `image: registry.gitlab.com/gitlab-org/release-cli`. +However, since Runner #33 is a shell executor, the `image:` directive is ignored and +`release-cli` is not available. The release job instead calls the GitLab Releases REST +API directly via `curl`: + +```bash +curl --fail --request POST \ + --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --header "Content-Type: application/json" \ + --data "{ ... }" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases" +``` + +This produces the same result as `release-cli` with no additional tooling required. + +### When pipelines are triggered (`workflow: rules`) + +```yaml +workflow: + rules: + - if: $CI_COMMIT_TAG + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH +``` + +| Event | Pipeline created | Jobs that run | +|---|---|---| +| Push to a branch (no open MR) | Yes | build × 3 | +| MR opened or updated | Yes | build × 3 | +| Push to a branch with an open MR | **No** (branch pipeline skipped) | MR pipeline runs instead | +| Tag pushed (`git tag 1.0.0`) | Yes | build × 3 + release | + +The third case avoids duplicate pipelines: when a branch already has an open MR, the +branch push does not create a redundant pipeline — only the MR pipeline runs. + +### Releases are only created on explicit version tags + +The `release` job has: + +```yaml +rules: + - if: $CI_COMMIT_TAG +``` + +It will never run on a branch push or MR. A release is an intentional act: + +```bash +git tag 1.0.0 +git push origin 1.0.0 +``` + +This pushes the tag, triggers the full pipeline (build × 3 + release), uploads the zips +to the Package Registry permanently, and creates a GitLab Release with download links. +Temporary test tags (e.g. `1.0.0-test`) can be deleted afterwards: + +```bash +git push origin --delete 1.0.0-test +git tag --delete 1.0.0-test +``` + +### `optional: true` for aarch64 and Windows in the release job + +```yaml +needs: + - job: build-linux-x86_64 + optional: false + - job: build-linux-aarch64 + optional: true + - job: build-windows-x64 + optional: true +``` + +The release is created even if the aarch64 or Windows builds failed, as long as the +x86_64 build succeeded. This avoids blocking a release over a platform-specific failure. + +--- + +## Artifact and Package Registry flow + +``` +branch push → build jobs run → .zip uploaded as GitLab CI artifact (expires in 1 week) +tag push → build jobs run → .zip uploaded to Package Registry (permanent) + → release job creates a GitLab Release with download links +``` + +Package Registry URL pattern: +``` +{CI_API_V4_URL}/projects/{CI_PROJECT_ID}/packages/generic/pj-test-dummy-plugins/{tag}/{filename} +``` diff --git a/README.md b/README.md index 27e7327..8b68d34 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # pj-test-dummy-plugins -> **Note:** This repository is a work in progress and is used internally for testing the PlotJuggler Marketplace infrastructure. - -Six dummy C++ extensions (shared libraries) for the PlotJuggler Marketplace POC, with a complete CI/CD pipeline using **conan 2.0** and GitHub Actions workflows for Ubuntu (x86_64 + aarch64), Windows (x64 + arm64), and macOS (x86_64 + arm64). +Six dummy C++ extensions (shared libraries) for the PlotJuggler Marketplace POC, with a complete CI/CD pipeline using **pixi** + **conan 2.0** and GitHub Actions workflows for Ubuntu (x86_64 + aarch64), Windows (x64 + arm64), and macOS (x86_64 + arm64). This repository covers the **dummy extensions** deliverable of **Week 1** of the PlotJuggler Marketplace implementation plan (5–11 March 2026). See [ARCHITECTURE.md §7.2](../plotjuggler_core/pj_marketplace/documentation/ARCHITECTURE.md) and [PLAN.md §4](../plotjuggler_core/pj_marketplace/documentation/PLAN.md) for full context. @@ -49,64 +47,91 @@ Each compiled shared library exposes two `extern "C"` functions: extern "C" PluginSystem::* create(); // Metadata — returns a JSON string with extension info -extern "C" const char* getMetadata(); +extern "C" const char* getPluginMetadata(); ``` -> **Resolved:** function name is `getMetadata()` per PLAN.md §4 (Week 1). ARCHITECTURE.md §7.2 previously listed `getPluginMetadata()` — this has been aligned. +> **Open question:** PLAN.md §4 (Week 1) names the function `getMetadata()`, while ARCHITECTURE.md §7.2 names it `getPluginMetadata()`. Currently implemented as `getPluginMetadata()` following the architecture. **Needs alignment.** --- ## ZIP artifact structure -Releases are **per extension**. Each zip contains one subdirectory ready to be extracted into `~/.plotjuggler/extensions/` (see [ARCHITECTURE.md §5.1](../plotjuggler_core/pj_marketplace/documentation/ARCHITECTURE.md)): +Each release zip contains one subdirectory per extension, ready to be extracted directly into `~/.plotjuggler/extensions/` (see [ARCHITECTURE.md §5.1](../plotjuggler_core/pj_marketplace/documentation/ARCHITECTURE.md)): ``` -csv-loader-1.0.0-linux-x86_64.zip -└── csv-loader/ - ├── csv-loader.so - └── manifest.json +pj-test-dummy-plugins-1.0.0-linux-x86_64.zip +├── csv-loader/ +│ ├── csv-loader.so +│ └── manifest.json +├── ros2-streaming/ +│ ├── ros2-streaming.so +│ └── manifest.json +└── ... (6 extensions total) ``` -Six zips are produced per release tag (one per platform/arch combination). - --- ## Requirements -- Python + pip -- A C++ compiler: gcc/g++ on Linux, clang on macOS, MSVC on Windows +- [pixi](https://pixi.sh) — manages the toolchain (cmake, ninja, conan, ccache, gcc/clang) +- [Docker](https://docs.docker.com/get-docker/) — required for local CI testing with `act` +- [act](https://github.com/nektos/act) *(optional)* — run GitHub Actions workflows locally ## Build locally ```bash -pip install cmake "conan>=2.0,<3" -conan profile detect --force -conan install . --output-folder=build --build=missing -s build_type=Release -cmake -S . -B build/Release -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -cmake --build build/Release --config Release -ctest --test-dir build/Release -V --output-on-failure +pixi run all # conan install → cmake configure → build → ctest +pixi run clean # remove build/ ``` +## Test CI locally with act + +```bash +# Ubuntu x86_64 +act push -W .github/workflows/ubuntu.yml --matrix ubuntu-runner:ubuntu-22.04 + +# Ubuntu aarch64 (requires QEMU) +act push -W .github/workflows/ubuntu.yml --matrix ubuntu-runner:ubuntu-22.04-arm + +# Windows x64 (runs in a Linux container via act) +act push -W .github/workflows/windows.yml --matrix arch:x64 + +# macOS x86_64 (runs in a Linux container via act) +act push -W .github/workflows/macos.yml --matrix arch:x86_64 + +# Simulate a release tag (verifies artifact packaging) +act push -W .github/workflows/ubuntu.yml \ + --eventpath test-event-tag.json \ + --matrix ubuntu-runner:ubuntu-22.04 \ + --artifact-server-path /tmp/act-artifacts +``` + +> **Note:** Windows arm64 and macOS arm64 jobs require real GitHub-hosted runners and cannot be fully validated with `act` locally. + +> **Note:** The `Upload artifact` step will fail in act (no `ACTIONS_RUNTIME_TOKEN`). This is expected — the build and packaging steps succeed correctly. On real GitHub runners the full flow works. + --- ## Release -Releases are **per extension** following the mono-repo strategy in `plotjuggler-marketplace-spec-v1.0.0` §9. Push a tag with the format `/v`: +A GitHub Release is created automatically when a version tag is pushed: ```bash -git tag csv-loader/v1.0.0 -git push origin csv-loader/v1.0.0 +git tag 1.0.0 +git push origin 1.0.0 ``` -The unified workflow runs all 6 matrix jobs in parallel (linux x86_64, linux aarch64, macos x86_64, macos arm64, windows x64, windows arm64). Each builds the full project but packages **only the tagged extension**. The six resulting zips are attached to a single GitHub Release: +All three workflows (ubuntu, macos, windows) run in parallel and each uploads its artifacts to the same release. The release is created by the ubuntu workflow (which also auto-generates release notes from commits since the previous tag). macOS and Windows attach their zips without modifying the description. + +The release includes these artifacts: ``` -csv-loader-1.0.0-linux-x86_64.zip -csv-loader-1.0.0-linux-aarch64.zip -csv-loader-1.0.0-macos-x86_64.zip -csv-loader-1.0.0-macos-arm64.zip -csv-loader-1.0.0-windows-x64.zip -csv-loader-1.0.0-windows-arm64.zip +pj-test-dummy-plugins-1.0.0-linux-x86_64.zip +pj-test-dummy-plugins-1.0.0-linux-aarch64.zip +pj-test-dummy-plugins-1.0.0-macos-x86_64.zip +pj-test-dummy-plugins-1.0.0-macos-arm64.zip +pj-test-dummy-plugins-1.0.0-windows-x64.zip +pj-test-dummy-plugins-1.0.0-windows-arm64.zip ``` --- @@ -117,8 +142,17 @@ csv-loader-1.0.0-windows-arm64.zip pj-test-dummy-plugins/ ├── CMakeLists.txt # root, includes all 6 extensions ├── conanfile.py # C++ dependency: gtest/1.14.0 +├── pixi.toml # toolchain + tasks (linux, windows, macos) +├── pixi.lock # locked environment for linux platforms +├── test-event-tag.json # event file for simulating tag push with act +├── .actrc # runner mapping for local act testing +├── docker/ +│ ├── linux-x86_64/Dockerfile.build # builds x86_64 inside Docker (GitLab CI) +│ └── linux-aarch64/Dockerfile.build # builds aarch64 via buildx + QEMU (GitLab CI) ├── .github/workflows/ -│ └── build.yml # unified matrix: 6 jobs (linux x86_64/aarch64, macos x86_64/arm64, windows x64/arm64) +│ ├── ubuntu.yml # matrix: ubuntu-22.04 (x86_64) + ubuntu-22.04-arm (aarch64) +│ ├── windows.yml # matrix: windows-latest (x64) + windows-11-arm (arm64) +│ └── macos.yml # matrix: macos-13 (x86_64) + macos-14 (arm64) └── extensions/ ├── csv-loader/ # CsvLoader extension + GTest suite ├── ros2-streaming/ # Ros2Streaming extension + GTest suite diff --git a/docker/linux-aarch64/Dockerfile b/docker/linux-aarch64/Dockerfile new file mode 100644 index 0000000..28764c0 --- /dev/null +++ b/docker/linux-aarch64/Dockerfile @@ -0,0 +1,19 @@ +FROM arm64v8/ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=UTC + +RUN apt-get update && apt-get install -y \ + cmake \ + ninja-build \ + g++ \ + python3-pip \ + zip \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install --no-cache-dir "conan>=2.0,<3" + +WORKDIR /workspace +CMD ["/bin/bash"] diff --git a/docker/linux-aarch64/Dockerfile.build b/docker/linux-aarch64/Dockerfile.build new file mode 100644 index 0000000..9f54376 --- /dev/null +++ b/docker/linux-aarch64/Dockerfile.build @@ -0,0 +1,36 @@ +FROM arm64v8/ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=UTC + +RUN apt-get update && apt-get install -y \ + cmake \ + ninja-build \ + g++ \ + python3-pip \ + zip \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install --no-cache-dir "conan>=2.0,<3" + +WORKDIR /workspace +COPY . . + +RUN conan profile detect --force && \ + conan install . --output-folder=build --build=missing -s build_type=Release && \ + cmake -S . -B build/Release \ + -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ + -DCMAKE_PREFIX_PATH=build \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTS=ON \ + -GNinja && \ + cmake --build build/Release && \ + ctest --test-dir build/Release -V --output-on-failure && \ + for ext_dir in extensions/*/; do \ + name=$(basename "$ext_dir"); \ + mkdir -p "dist/$name"; \ + find build/Release -name "${name}.so" -exec cp {} "dist/$name/" \; 2>/dev/null || true; \ + cp "${ext_dir}manifest.json" "dist/$name/" 2>/dev/null || true; \ + done diff --git a/docker/linux-x86_64/Dockerfile b/docker/linux-x86_64/Dockerfile new file mode 100644 index 0000000..774f27d --- /dev/null +++ b/docker/linux-x86_64/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=UTC + +RUN apt-get update && apt-get install -y \ + cmake \ + ninja-build \ + g++ \ + python3-pip \ + zip \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install --no-cache-dir "conan>=2.0,<3" + +WORKDIR /workspace +CMD ["/bin/bash"] diff --git a/docker/linux-x86_64/Dockerfile.build b/docker/linux-x86_64/Dockerfile.build new file mode 100644 index 0000000..bbd2356 --- /dev/null +++ b/docker/linux-x86_64/Dockerfile.build @@ -0,0 +1,36 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=UTC + +RUN apt-get update && apt-get install -y \ + cmake \ + ninja-build \ + g++ \ + python3-pip \ + zip \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install --no-cache-dir "conan>=2.0,<3" + +WORKDIR /workspace +COPY . . + +RUN conan profile detect --force && \ + conan install . --output-folder=build --build=missing -s build_type=Release && \ + cmake -S . -B build/Release \ + -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ + -DCMAKE_PREFIX_PATH=build \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTS=ON \ + -GNinja && \ + cmake --build build/Release && \ + ctest --test-dir build/Release -V --output-on-failure && \ + for ext_dir in extensions/*/; do \ + name=$(basename "$ext_dir"); \ + mkdir -p "dist/$name"; \ + find build/Release -name "${name}.so" -exec cp {} "dist/$name/" \; 2>/dev/null || true; \ + cp "${ext_dir}manifest.json" "dist/$name/" 2>/dev/null || true; \ + done diff --git a/extensions/can-bus-parser/manifest.json b/extensions/can-bus-parser/manifest.json index a67fb38..233cb59 100644 --- a/extensions/can-bus-parser/manifest.json +++ b/extensions/can-bus-parser/manifest.json @@ -2,7 +2,7 @@ "id": "can-bus-parser", "name": "CAN Bus Parser", "description": "Loads a DBC file and parses CAN frames into signal maps", - "version": "1.0.8", + "version": "1.0.0", "category": "parser", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/can-bus-parser/src/PluginEntry.cpp b/extensions/can-bus-parser/src/PluginEntry.cpp index a64eb19..d4efea4 100644 --- a/extensions/can-bus-parser/src/PluginEntry.cpp +++ b/extensions/can-bus-parser/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::CanBusParser* createCanBusParser() { return new PluginSystem::CanBusParser(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "can-bus-parser", "name": "CAN Bus Parser", diff --git a/extensions/csv-loader/manifest.json b/extensions/csv-loader/manifest.json index f069f44..183656b 100644 --- a/extensions/csv-loader/manifest.json +++ b/extensions/csv-loader/manifest.json @@ -2,7 +2,7 @@ "id": "csv-loader", "name": "CSV Loader", "description": "Loads CSV files and exposes column names", - "version": "1.0.8", + "version": "1.0.0", "category": "data_loader", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/csv-loader/src/PluginEntry.cpp b/extensions/csv-loader/src/PluginEntry.cpp index 4f1ce6c..8671679 100644 --- a/extensions/csv-loader/src/PluginEntry.cpp +++ b/extensions/csv-loader/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::CsvLoader* createCsvLoader() { return new PluginSystem::CsvLoader(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "csv-loader", "name": "CSV Loader", diff --git a/extensions/fft-toolbox/manifest.json b/extensions/fft-toolbox/manifest.json index 36ba472..847eb8a 100644 --- a/extensions/fft-toolbox/manifest.json +++ b/extensions/fft-toolbox/manifest.json @@ -2,7 +2,7 @@ "id": "fft-toolbox", "name": "FFT Toolbox", "description": "Computes FFT over sample vectors with configurable window functions", - "version": "1.0.8", + "version": "1.0.0", "category": "toolbox", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/fft-toolbox/src/PluginEntry.cpp b/extensions/fft-toolbox/src/PluginEntry.cpp index a96294e..f78a2e0 100644 --- a/extensions/fft-toolbox/src/PluginEntry.cpp +++ b/extensions/fft-toolbox/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::FftToolbox* createFftToolbox() { return new PluginSystem::FftToolbox(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "fft-toolbox", "name": "FFT Toolbox", diff --git a/extensions/mcap-loader/manifest.json b/extensions/mcap-loader/manifest.json index 6f0b56e..cc12ee3 100644 --- a/extensions/mcap-loader/manifest.json +++ b/extensions/mcap-loader/manifest.json @@ -2,7 +2,7 @@ "id": "mcap-loader", "name": "MCAP Loader", "description": "Opens MCAP files and lists available channels", - "version": "1.0.8", + "version": "1.0.0", "category": "data_loader", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/mcap-loader/src/PluginEntry.cpp b/extensions/mcap-loader/src/PluginEntry.cpp index 4515460..27c5785 100644 --- a/extensions/mcap-loader/src/PluginEntry.cpp +++ b/extensions/mcap-loader/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::McapLoader* createMcapLoader() { return new PluginSystem::McapLoader(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "mcap-loader", "name": "MCAP Loader", diff --git a/extensions/ros-bundle/manifest.json b/extensions/ros-bundle/manifest.json index a11e905..567c7dc 100644 --- a/extensions/ros-bundle/manifest.json +++ b/extensions/ros-bundle/manifest.json @@ -2,7 +2,7 @@ "id": "ros-bundle", "name": "ROS Bundle", "description": "Meta-extension that groups ROS-related plugins and reports availability", - "version": "1.0.8", + "version": "1.0.0", "category": "toolbox", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/ros-bundle/src/PluginEntry.cpp b/extensions/ros-bundle/src/PluginEntry.cpp index 8f5ff98..71ff01b 100644 --- a/extensions/ros-bundle/src/PluginEntry.cpp +++ b/extensions/ros-bundle/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::RosBundle* createRosBundle() { return new PluginSystem::RosBundle(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "ros-bundle", "name": "ROS Bundle", diff --git a/extensions/ros2-streaming/manifest.json b/extensions/ros2-streaming/manifest.json index 359d250..0d0287d 100644 --- a/extensions/ros2-streaming/manifest.json +++ b/extensions/ros2-streaming/manifest.json @@ -2,7 +2,7 @@ "id": "ros2-streaming", "name": "ROS 2 Streaming", "description": "Connects to a ROS 2 host and lists available topics", - "version": "1.0.8", + "version": "1.0.0", "category": "data_streamer", "min_plotjuggler_version": "4.0.0" } diff --git a/extensions/ros2-streaming/src/PluginEntry.cpp b/extensions/ros2-streaming/src/PluginEntry.cpp index af32024..8bb2f7e 100644 --- a/extensions/ros2-streaming/src/PluginEntry.cpp +++ b/extensions/ros2-streaming/src/PluginEntry.cpp @@ -6,7 +6,7 @@ PluginSystem::Ros2Streaming* createRos2Streaming() { return new PluginSystem::Ros2Streaming(); } -const char* getMetadata() { +const char* getPluginMetadata() { return R"({ "id": "ros2-streaming", "name": "ROS 2 Streaming", diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000..952236c --- /dev/null +++ b/pixi.lock @@ -0,0 +1,2138 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + options: + pypi-prerelease-mode: if-necessary-or-explicit + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bottle-0.12.23-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.13-hedf47ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.3-hc85cc9f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conan-2.26.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fasteners-0.19-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hbdf3cc3_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h298d278_21.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-he467f4b_21.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.3.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patch-ng-1.18.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluginbase-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bottle-0.12.23-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.13-h185addb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-4.2.3-hc9d863e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conan-2.26.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fasteners-0.19-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h533bfc8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h118592a_21.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha384071_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h32e4f2e_21.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hcab7f73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.18.0-hc57f145_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.3.0-h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_118.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.2-hdc560ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patch-ng-1.18.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluginbase-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/bottle-0.12.23-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py314he701e3d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.11.0-h528c1b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ccache-4.13-h7fd822b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.3-hdcbee5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conan-2.26.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fasteners-0.19-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.22.2-h0ea6238_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h8206538_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhiredis-1.3.0-he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.52.0-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py314h2359020_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.13.2-h477610d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patch-ng-1.18.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluginbase-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.3-h4b44e0e_101_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py314h2359020_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_34.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xxhash-0.8.3-hbba6f48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 + md5: 468fd3bb9e1f671d36c2cbc677e56f1d + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28926 + timestamp: 1770939656741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_101.conda + sha256: 2851d34944b056d028543f0440fb631aeeff204151ea09589d8d9c13882395de + md5: 9902aeb08445c03fb31e01beeb173988 + depends: + - binutils_impl_linux-64 >=2.45.1,<2.45.2.0a0 + license: GPL-3.0-only + license_family: GPL + size: 35128 + timestamp: 1770267175160 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_101.conda + sha256: 7113440420c6f31742c2b29d7590900362007a0bb0d31f9bc5c9a1379d9ab702 + md5: 77f58300ab7d95ce79f9c2c13ad72d5c + depends: + - binutils_impl_linux-aarch64 >=2.45.1,<2.45.2.0a0 + license: GPL-3.0-only + license_family: GPL + size: 35322 + timestamp: 1770267247190 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_101.conda + sha256: 74341b26a2b9475dc14ba3cf12432fcd10a23af285101883e720216d81d44676 + md5: 83aa53cb3f5fc849851a84d777a60551 + depends: + - ld_impl_linux-64 2.45.1 default_hbd61a6d_101 + - sysroot_linux-64 + - zstd >=1.5.7,<1.6.0a0 + license: GPL-3.0-only + license_family: GPL + size: 3744895 + timestamp: 1770267152681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_101.conda + sha256: e90ab42a5225dc1eaa6e4e7201cd7b8ed52dad6ec46814be7e5a4039433ae85c + md5: df6e1dc38cbe5642350fa09d4a1d546b + depends: + - ld_impl_linux-aarch64 2.45.1 default_h1979696_101 + - sysroot_linux-aarch64 + - zstd >=1.5.7,<1.6.0a0 + license: GPL-3.0-only + license_family: GPL + size: 4741684 + timestamp: 1770267224406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_101.conda + sha256: 4826f97d33cbe54459970a1e84500dbe0cccf8326aaf370e707372ae20ec5a47 + md5: dec96579f9a7035a59492bf6ee613b53 + depends: + - binutils_impl_linux-64 2.45.1 default_hfdba357_101 + license: GPL-3.0-only + license_family: GPL + size: 36060 + timestamp: 1770267177798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_101.conda + sha256: 4ed3cf8af327b1c8b7e71433c98eb0154027e07b726136e81235276e9025489a + md5: 99924e610d9960dc3d8b865614787cec + depends: + - binutils_impl_linux-aarch64 2.45.1 default_h5f4c503_101 + license: GPL-3.0-only + license_family: GPL + size: 36223 + timestamp: 1770267249899 +- conda: https://conda.anaconda.org/conda-forge/noarch/bottle-0.12.23-pyhd8ed1ab_0.conda + sha256: 4f6762c983b15413aa2d46ade22903a2a6af903bec2d934a7a24e9e54bc8174b + md5: f2a23cc207750e042ad93e2baa6008b4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 47580 + timestamp: 1669764323720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda + sha256: 3ad3500bff54a781c29f16ce1b288b36606e2189d0b0ef2f67036554f47f12b0 + md5: 8910d2c46f7e7b519129f486e0fe927a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - libbrotlicommon 1.2.0 hb03c661_1 + license: MIT + license_family: MIT + size: 367376 + timestamp: 1764017265553 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda + sha256: 5a5b0cdcd7ed89c6a8fb830924967f6314a2b71944bc1ebc2c105781ba97aa75 + md5: a1b5c571a0923a205d663d8678df4792 + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.14,<3.15.0a0 + - python >=3.14,<3.15.0a0 *_cp314 + - python_abi 3.14.* *_cp314 + constrains: + - libbrotlicommon 1.2.0 he30d5cf_1 + license: MIT + license_family: MIT + size: 373193 + timestamp: 1764017486851 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py314he701e3d_1.conda + sha256: 6854ee7675135c57c73a04849c29cbebc2fb6a3a3bfee1f308e64bf23074719b + md5: 1302b74b93c44791403cbeee6a0f62a3 + depends: + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libbrotlicommon 1.2.0 hfd05255_1 + license: MIT + license_family: MIT + size: 335782 + timestamp: 1764018443683 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c + md5: 840d8fc0d7b3209be93080bc20e07f2d + depends: + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 192412 + timestamp: 1771350241232 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda + sha256: 76dfb71df5e8d1c4eded2dbb5ba15bb8fb2e2b0fe42d94145d5eed4c75c35902 + md5: 4cb8e6b48f67de0b018719cdf1136306 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: bzip2-1.0.6 + license_family: BSD + size: 56115 + timestamp: 1771350256444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e + md5: 920bb03579f15389b9e512095ad995b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 207882 + timestamp: 1765214722852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + sha256: 7ec8a68efe479e2e298558cbc2e79d29430d5c7508254268818c0ae19b206519 + md5: 1dfbec0d08f112103405756181304c16 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 217215 + timestamp: 1765214743735 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda + sha256: 8e7a40f16400d7839c82581410aa05c1f8324a693c9d50079f8c50dc9fb241f0 + md5: abd85120de1187b0d1ec305c2173c71b + depends: + - binutils + - gcc + - gcc_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6693 + timestamp: 1753098721814 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda + sha256: a16c5078619d60e54f75336ed2bbb4ee0fb6f711de02dd364983748beda31e04 + md5: 89bc32110bba0dc160bb69427e196dc4 + depends: + - binutils + - gcc + - gcc_linux-aarch64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6721 + timestamp: 1753098688332 +- conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.11.0-h528c1b4_0.conda + sha256: 55e04bd4af61500cb8cae064386be57d18fbfdf676655ff1c97c7e5d146c6e34 + md5: 6d994ff9ab924ba11c2c07e93afbe485 + depends: + - vs2022_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6938 + timestamp: 1753098808371 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-h4c7d964_0.conda + sha256: 37950019c59b99585cee5d30dbc2cc9696ed4e11f5742606a4db1621ed8f94d6 + md5: f001e6e220355b7f87403a4d0e5bf1ca + depends: + - __win + license: ISC + size: 147734 + timestamp: 1772006322223 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc + md5: 4492fd26db29495f0ba23f146cd5638d + depends: + - __unix + license: ISC + size: 147413 + timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.13-hedf47ba_0.conda + sha256: 35ad12e966e2df70567eabb7e2749a157e90afdff4191b585a55c985e6582682 + md5: 92a194f6d6511e91afbdd2944491ea8e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - zstd >=1.5.7,<1.6.0a0 + - libhiredis >=1.3.0,<1.4.0a0 + - xxhash >=0.8.3,<0.8.4.0a0 + license: GPL-3.0-only + license_family: GPL + size: 844357 + timestamp: 1772777717021 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.13-h185addb_0.conda + sha256: c5352df3f93c438a72f0ff10290b7d9fa8703027378eaf55236c6cf69811027d + md5: e82dd46d52f3696ad7451abe0af74831 + depends: + - libstdcxx >=14 + - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - xxhash >=0.8.3,<0.8.4.0a0 + - libhiredis >=1.3.0,<1.4.0a0 + license: GPL-3.0-only + license_family: GPL + size: 834082 + timestamp: 1772777955617 +- conda: https://conda.anaconda.org/conda-forge/win-64/ccache-4.13-h7fd822b_0.conda + sha256: 40c326b2ddb17ec3cccb096dbf92cdf135cf722f9669fadcd9e33f1e33b118fe + md5: 7b71aca1a5f261c30fa810cf01ceb369 + depends: + - ucrt + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - xxhash >=0.8.3,<0.8.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libhiredis >=1.3.0,<1.4.0a0 + license: GPL-3.0-only + license_family: GPL + size: 686480 + timestamp: 1772777739652 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 + md5: 765c4d97e877cdbbb88ff33152b86125 + depends: + - python >=3.10 + license: ISC + size: 151445 + timestamp: 1772001170301 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.5-pyhd8ed1ab_0.conda + sha256: 05ea76a016c77839b64f9f8ec581775f6c8a259044bd5b45a177e46ab4e7feac + md5: beb628209b2b354b98203066f90b3287 + depends: + - python >=3.10 + license: MIT + size: 53210 + timestamp: 1772816516728 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.3-hc85cc9f_1.conda + sha256: 5ece78754577b8d9030ec1f09ce1cd481125f27d8d6fcdcfe2c1017661830c61 + md5: 51d37989c1758b5edfe98518088bf700 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libstdcxx >=14 + - libuv >=1.51.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.6,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 22330508 + timestamp: 1771383666798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-4.2.3-hc9d863e_1.conda + sha256: 2e548b4b146a0ad33282da8af1784d77f28bdb60b9dfd787bdd4d047a5c90004 + md5: 734ae2565cc57e1e2137ec09d7ab87d0 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libstdcxx >=14 + - libuv >=1.51.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.6,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 21507482 + timestamp: 1771383802433 +- conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.3-hdcbee5b_1.conda + sha256: 9f66a8e231a3afce282123827bd9e8f8e0f81d4b6f3c5c809b8006db2bd8a44a + md5: ec81c32bfe49031759ffa481f44742bb + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libexpat >=2.7.4,<3.0a0 + - liblzma >=5.8.2,<6.0a0 + - libuv >=1.51.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 15742645 + timestamp: 1771384342226 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/conan-2.26.2-pyhd8ed1ab_0.conda + sha256: e6ec17cb249094cfd0afc15e22f0321123eff1e270600c79bed12606a28cd30d + md5: 84d225b54578db4d1e3fecfe98b69b44 + depends: + - bottle >=0.12.8,<0.13 + - colorama >=0.4.3,<0.5.0 + - distro >=1.4.0,<=1.8.0 + - fasteners >=0.15 + - jinja2 >=3.0,<4.0.0 + - patch-ng >=1.18.0,<1.19 + - pluginbase >=0.5 + - pyjwt >=2.4.0,<3.0.0 + - python >=3.10 + - python-dateutil >=2.8.0,<3 + - pyyaml >=6.0,<7.0 + - requests >=2.25,<3.0.0 + - urllib3 >=1.26.6,<1.27 + license: MIT + license_family: MIT + size: 471877 + timestamp: 1772767561116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_18.conda + sha256: b90ec0e6a9eb22f7240b3584fe785457cff961fec68d40e6aece5d596f9bbd9a + md5: 0e3e144115c43c9150d18fa20db5f31c + depends: + - gcc_impl_linux-64 >=14.3.0,<14.3.1.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 31705 + timestamp: 1771378159534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_18.conda + sha256: 7b018e74d2f828e887faabc9d5c5bef6d432c3356dcac3e691ee6b24bc82ef52 + md5: 184c1aba41c40e6bc59fa91b37cd7c3f + depends: + - gcc_impl_linux-aarch64 >=14.3.0,<14.3.1.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 31474 + timestamp: 1771377963347 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda + sha256: 3fcc97ae3e89c150401a50a4de58794ffc67b1ed0e1851468fcc376980201e25 + md5: 5da8c935dca9186673987f79cef0b2a5 + depends: + - c-compiler 1.11.0 h4d9bdce_0 + - gxx + - gxx_linux-64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6635 + timestamp: 1753098722177 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda + sha256: b87cd33501867d999caa1a57e488e69dc9e08011ec8685586df754302247a7a4 + md5: 0234c63e6b36b1677fd6c5238ef0a4ec + depends: + - c-compiler 1.11.0 hdceaead_0 + - gxx + - gxx_linux-aarch64 14.* + license: BSD-3-Clause + license_family: BSD + size: 6705 + timestamp: 1753098688728 +- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.11.0-h1c1089f_0.conda + sha256: c888f4fe9ec117c1c01bfaa4c722ca475ebbb341c92d1718afa088bb0d710619 + md5: 4d94d3c01add44dc9d24359edf447507 + depends: + - vs2022_win-64 + license: BSD-3-Clause + license_family: BSD + size: 6957 + timestamp: 1753098809481 +- conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + sha256: 0d01c4da6d4f0a935599210f82ac0630fa9aeb4fc37cbbc78043a932a39ec4f3 + md5: 67999c5465064480fa8016d00ac768f6 + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 40854 + timestamp: 1675116355989 +- conda: https://conda.anaconda.org/conda-forge/noarch/fasteners-0.19-pyhd8ed1ab_1.conda + sha256: 42fb170778b47303e82eddfea9a6d1e1b8af00c927cd5a34595eaa882b903a16 + md5: dbe9d42e94b5ff7af7b7893f4ce052e7 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 20711 + timestamp: 1734943237791 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_18.conda + sha256: 9b34b57b06b485e33a40d430f71ac88c8f381673592507cf7161c50ff0832772 + md5: 52d6457abc42e320787ada5f9033fa99 + depends: + - conda-gcc-specs + - gcc_impl_linux-64 14.3.0 hbdf3cc3_18 + license: BSD-3-Clause + license_family: BSD + size: 29506 + timestamp: 1771378321585 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_18.conda + sha256: debc5c801b3af35f1d474aead8621c4869a022d35ca3c5195a9843d81c1c9ab4 + md5: db4bf1a70c2481c06fe8174390a325c0 + depends: + - conda-gcc-specs + - gcc_impl_linux-aarch64 14.3.0 h533bfc8_18 + license: BSD-3-Clause + license_family: BSD + size: 29438 + timestamp: 1771378102660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hbdf3cc3_18.conda + sha256: 3b31a273b806c6851e16e9cf63ef87cae28d19be0df148433f3948e7da795592 + md5: 30bb690150536f622873758b0e8d6712 + depends: + - binutils_impl_linux-64 >=2.45 + - libgcc >=14.3.0 + - libgcc-devel_linux-64 14.3.0 hf649bbc_118 + - libgomp >=14.3.0 + - libsanitizer 14.3.0 h8f1669f_18 + - libstdcxx >=14.3.0 + - libstdcxx-devel_linux-64 14.3.0 h9f08a49_118 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 76302378 + timestamp: 1771378056505 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h533bfc8_18.conda + sha256: e2488aac8472cfdff4f8a893861acd1ce1c66eafb28e7585ec52fe4e7546df7e + md5: 2ac1b579c1560e021a4086d0d704e2be + depends: + - binutils_impl_linux-aarch64 >=2.45 + - libgcc >=14.3.0 + - libgcc-devel_linux-aarch64 14.3.0 h25ba3ff_118 + - libgomp >=14.3.0 + - libsanitizer 14.3.0 hedb4206_18 + - libstdcxx >=14.3.0 + - libstdcxx-devel_linux-aarch64 14.3.0 h57c8d61_118 + - sysroot_linux-aarch64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 69149627 + timestamp: 1771377858762 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h298d278_21.conda + sha256: 27ad0cd10dccffca74e20fb38c9f8643ff8fce56eee260bf89fa257d5ab0c90a + md5: 1403ed5fe091bd7442e4e8a229d14030 + depends: + - gcc_impl_linux-64 14.3.0.* + - binutils_linux-64 + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 28946 + timestamp: 1770908213807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h118592a_21.conda + sha256: 2b4c579549e63f8f7e29aa332a95b85a5a33976d6caf42d7c3dc147d2939d7a0 + md5: dfe811f86ef2d8f511263ef38b773a39 + depends: + - gcc_impl_linux-aarch64 14.3.0.* + - binutils_linux-aarch64 + - sysroot_linux-aarch64 + license: BSD-3-Clause + license_family: BSD + size: 28666 + timestamp: 1770908257439 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-h76987e4_18.conda + sha256: 1b490c9be9669f9c559db7b2a1f7d8b973c58ca0c6f21a5d2ba3f0ab2da63362 + md5: 19189121d644d4ef75fed05383bc75f5 + depends: + - gcc 14.3.0 h0dff253_18 + - gxx_impl_linux-64 14.3.0 h2185e75_18 + license: BSD-3-Clause + license_family: BSD + size: 28883 + timestamp: 1771378355605 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha384071_18.conda + sha256: 09fb56bcb1594d667e39b1ff4fced377f1b3f6c83f5b651d500db0b4865df68a + md5: 3d5380505980f8859a796af4c1b49452 + depends: + - gcc 14.3.0 h2e72a27_18 + - gxx_impl_linux-aarch64 14.3.0 h0d4f5d4_18 + license: BSD-3-Clause + license_family: BSD + size: 28822 + timestamp: 1771378129202 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_18.conda + sha256: 38ffca57cc9c264d461ac2ce9464a9d605e0f606d92d831de9075cb0d95fc68a + md5: 6514b3a10e84b6a849e1b15d3753eb22 + depends: + - gcc_impl_linux-64 14.3.0 hbdf3cc3_18 + - libstdcxx-devel_linux-64 14.3.0 h9f08a49_118 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 14566100 + timestamp: 1771378271421 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_18.conda + sha256: 859a78ff16bef8d1d1d89d0604929c3c256ac0248b9a688e8defe9bbc027c886 + md5: a12277d1ec675dbb993ad72dce735530 + depends: + - gcc_impl_linux-aarch64 14.3.0 h533bfc8_18 + - libstdcxx-devel_linux-aarch64 14.3.0 h57c8d61_118 + - sysroot_linux-aarch64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 13513218 + timestamp: 1771378064341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-he467f4b_21.conda + sha256: 1e07c197e0779fa9105e59cd55a835ded96bfde59eb169439736a89b27b48e5d + md5: 7b51f4ff82eeb1f386bfee20a7bed3ed + depends: + - gxx_impl_linux-64 14.3.0.* + - gcc_linux-64 ==14.3.0 h298d278_21 + - binutils_linux-64 + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + size: 27503 + timestamp: 1770908213813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h32e4f2e_21.conda + sha256: 10059135f9960de93f991ce7fb6ef9d833dc2ac675459a1a08def052e5a29667 + md5: 3114b029596eff0aeb9fc0c81f598211 + depends: + - gxx_impl_linux-aarch64 14.3.0.* + - gcc_linux-aarch64 ==14.3.0 h118592a_21 + - binutils_linux-aarch64 + - sysroot_linux-aarch64 + license: BSD-3-Clause + license_family: BSD + size: 27275 + timestamp: 1770908257444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda + sha256: 142a722072fa96cf16ff98eaaf641f54ab84744af81754c292cb81e0881c0329 + md5: 186a18e3ba246eccfc7cff00cd19a870 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12728445 + timestamp: 1767969922681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.2-hcab7f73_0.conda + sha256: dcbaa3042084ac58685e3ef4547e4c4be9d37dc52b92ea18581288af95e48b52 + md5: 998ee7d53e32f7ab57fc35707285527e + depends: + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12851689 + timestamp: 1772208964788 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 + md5: 53abe63df7e10a6ba605dc5f9f961d36 + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 50721 + timestamp: 1760286526795 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b + md5: 04558c96691bed63104678757beb4f8d + depends: + - markupsafe >=2.0 + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 120685 + timestamp: 1764517220861 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a + md5: 86d9cba083cd041bfbf242a01a7a1999 + constrains: + - sysroot_linux-64 ==2.28 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 1278712 + timestamp: 1765578681495 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + sha256: 5d224bf4df9bac24e69de41897c53756108c5271a0e5d2d2f66fd4e2fbc1d84b + md5: bb3b7cad9005f2cbf9d169fb30263f3e + constrains: + - sysroot_linux-aarch64 ==2.28 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 1248134 + timestamp: 1765578613607 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + size: 134088 + timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda + sha256: 5ce830ca274b67de11a7075430a72020c1fb7d486161a82839be15c2b84e9988 + md5: e7df0aab10b9cbb73ab2a467ebfaf8c7 + depends: + - libgcc >=13 + license: LGPL-2.1-or-later + size: 129048 + timestamp: 1754906002667 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 + depends: + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 1386730 + timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + sha256: b53999d888dda53c506b264e8c02b5f5c8e022c781eda0718f007339e6bc90ba + md5: d9ca108bd680ea86a963104b6b3e95ca + depends: + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 1517436 + timestamp: 1769773395215 +- conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.22.2-h0ea6238_0.conda + sha256: eb60f1ad8b597bcf95dee11bc11fe71a8325bc1204cf51d2bb1f2120ffd77761 + md5: 4432f52dc0c8eb6a7a6abc00a037d93c + depends: + - openssl >=3.5.5,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 751055 + timestamp: 1769769688841 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 + md5: 12bd9a3f089ee6c9266a37dab82afabd + depends: + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 725507 + timestamp: 1770267139900 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_101.conda + sha256: 44527364aa333be631913451c32eb0cae1e09343827e9ce3ccabd8d962584226 + md5: 35b2ae7fadf364b8e5fb8185aaeb80e5 + depends: + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-aarch64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 875924 + timestamp: 1770267209884 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda + sha256: c84e8dccb65ad5149c0121e4b54bdc47fa39303fd5f4979b8c44bb51b39a369b + md5: 1707cdd636af2ff697b53186572c9f77 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 463621 + timestamp: 1770892808818 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.18.0-hc57f145_1.conda + sha256: a4677f2684e5298b27617deb3d524b940401e8eb6a58aa21531d5554c0395b13 + md5: 0406a63cbcc9262d31907b8a8487b597 + depends: + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 483167 + timestamp: 1770892771161 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h8206538_1.conda + sha256: f7dfa98e615a0ddc8de80b32eb6700ea4ebf7b872a6de22a7eadc30a52edd4bf + md5: b7243e3227df9a1852a05762d0efe08d + depends: + - krb5 >=1.22.2,<1.23.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: curl + license_family: MIT + size: 383527 + timestamp: 1770892890348 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 + md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.7.4.* + license: MIT + license_family: MIT + size: 76798 + timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda + sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 + md5: 57f3b3da02a50a1be2a6fe847515417d + depends: + - libgcc >=14 + constrains: + - expat 2.7.4.* + license: MIT + license_family: MIT + size: 76564 + timestamp: 1771259530958 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda + sha256: b31f6fb629c4e17885aaf2082fb30384156d16b48b264e454de4a06a313b533d + md5: 1c1ced969021592407f16ada4573586d + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - expat 2.7.4.* + license: MIT + license_family: MIT + size: 70323 + timestamp: 1771259521393 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 + md5: 2f364feefb6a7c00423e80dcb12db62a + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 55952 + timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda + sha256: 59d01f2dfa8b77491b5888a5ab88ff4e1574c9359f7e229da254cdfe27ddc190 + md5: 720b39f5ec0610457b725eb3f396219a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 45831 + timestamp: 1769456418774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 + md5: 0aa00f03f9e39fb9876085dee11a85d4 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1041788 + timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda + sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 + md5: 552567ea2b61e3a3035759b2fdb3f9a6 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 h8acb6b2_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 622900 + timestamp: 1771378128706 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_118.conda + sha256: 1abc6a81ee66e8ac9ac09a26e2d6ad7bba23f0a0cc3a6118654f036f9c0e1854 + md5: 06901733131833f5edd68cf3d9679798 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3084533 + timestamp: 1771377786730 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_118.conda + sha256: 058fab0156cb13897f7e4a2fc9d63c922d3de09b6429390365f91b62f1dddb0e + md5: 3733752e5a7a0737c8c4f1897f2074f9 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 2335839 + timestamp: 1771377646960 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 + md5: d5e96b1ed75ca01906b3d2469b4ce493 + depends: + - libgcc 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27526 + timestamp: 1771378224552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda + sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f + md5: 4feebd0fbf61075a1a9c2e9b3936c257 + depends: + - libgcc 15.2.0 h8acb6b2_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27568 + timestamp: 1771378136019 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 + md5: 239c5e9546c38a1e884d69effcf4c882 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 603262 + timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda + sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 + md5: 4faa39bf919939602e594253bd673958 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 588060 + timestamp: 1771378040807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.3.0-h5888daf_1.conda + sha256: 5638e321719590b00826d218431d5028d1a22a76f281532ce621d9a40d5e0f42 + md5: aa342fcf3bc583660dbfdb2eae6be48e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 140759 + timestamp: 1748219397797 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.3.0-h5ad3122_1.conda + sha256: ea5b743b2b76f2cfc6cc6160dd2a07ae14111844d3c32222f97072388fee1852 + md5: c11818b31f7c054ce220041b2459aacb + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 140290 + timestamp: 1748220539026 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhiredis-1.3.0-he0c23c2_1.conda + sha256: 9234de8c29f1a3a51bd37c94752e31b19c2514103821e895f6fabaa65e74ea5a + md5: 821660830c0152d3260633b150f92b49 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 64205 + timestamp: 1748219812303 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb + md5: c7c83eecbb72d88b940c249af56c8b17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 113207 + timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda + sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 + md5: 96944e3c92386a12755b94619bae0b35 + depends: + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 125916 + timestamp: 1768754941722 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda + sha256: f25bf293f550c8ed2e0c7145eb404324611cfccff37660869d97abf526eb957c + md5: ba0bfd4c3cf73f299ffe46ff0eaeb8e3 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 106169 + timestamp: 1768752763559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 + md5: 7b9813e885482e3ccb1fa212b86d7fd0 + depends: + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 114056 + timestamp: 1769482343003 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + sha256: 40dcd0b9522a6e0af72a9db0ced619176e7cfdb114855c7a64f278e73f8a7514 + md5: e4a9fc2bba3b022dad998c78856afe47 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-2-Clause + license_family: BSD + size: 89411 + timestamp: 1769482314283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 + md5: b499ce4b026493a13774bcf0f4c33849 + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.5,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.2,<4.0a0 + license: MIT + license_family: MIT + size: 666600 + timestamp: 1756834976695 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda + sha256: b03f406fd5c3f865a5e08c89b625245a9c4e026438fd1a445e45e6a0d69c2749 + md5: 981082c1cc262f514a5a2cf37cab9b81 + depends: + - c-ares >=1.34.5,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.2,<4.0a0 + license: MIT + license_family: MIT + size: 728661 + timestamp: 1756835019535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_18.conda + sha256: e03ed186eefb46d7800224ad34bad1268c9d19ecb8f621380a50601c6221a4a7 + md5: ad3a0e2dc4cce549b2860e2ef0e6d75b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.3.0 + - libstdcxx >=14.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 7949259 + timestamp: 1771377982207 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_18.conda + sha256: 48641a458e3da681038af7ebdab143f9b6861ad9d1dcc2b4997ff2b744709423 + md5: 03feac8b6e64b72ae536fdb264e2618d + depends: + - libgcc >=14.3.0 + - libstdcxx >=14.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 7526147 + timestamp: 1771377792671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda + sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 + md5: fd893f6a3002a635b5e50ceb9dd2c0f4 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 951405 + timestamp: 1772818874251 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda + sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 + md5: 77891484f18eca74b8ad83694da9815e + depends: + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 952296 + timestamp: 1772818881550 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.52.0-hf5d6505_0.conda + sha256: 5fccf1e4e4062f8b9a554abf4f9735a98e70f82e2865d0bfdb47b9de94887583 + md5: 8830689d537fda55f990620680934bb1 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: blessing + size: 1297302 + timestamp: 1772818899033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 + md5: eecce068c7e4eddeb169591baac20ac4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304790 + timestamp: 1745608545575 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda + sha256: 1e289bcce4ee6a5817a19c66e296f3c644dcfa6e562e5c1cba807270798814e7 + md5: eecc495bcfdd9da8058969656f916cc2 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 311396 + timestamp: 1745609845915 +- conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda + sha256: cbdf93898f2e27cefca5f3fe46519335d1fab25c4ea2a11b11502ff63e602c09 + md5: 9dce2f112bfd3400f4f432b3d0ac07b2 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 292785 + timestamp: 1745608759342 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e + md5: 1b08cd684f34175e4514474793d44bcb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5852330 + timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda + sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 + md5: f56573d05e3b735cb03efeb64a15f388 + depends: + - libgcc 15.2.0 h8acb6b2_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5541411 + timestamp: 1771378162499 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_118.conda + sha256: b1c3824769b92a1486bf3e2cc5f13304d83ae613ea061b7bc47bb6080d6dfdba + md5: 865a399bce236119301ebd1532fced8d + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 20171098 + timestamp: 1771377827750 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_118.conda + sha256: 609585a02b05a2b0f2cabb18849328455cbce576f2e3eb8108f3ef7f4cb165a6 + md5: bcf29f2ed914259a258204b05346abb1 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 17565700 + timestamp: 1771377672552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee + md5: db409b7c1720428638e7c0d509d3e1b5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 40311 + timestamp: 1766271528534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda + sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 + md5: cf2861212053d05f27ec49c3784ff8bb + depends: + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 43453 + timestamp: 1766271546875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b + md5: 0f03292cc56bf91a077a134ea8747118 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 895108 + timestamp: 1753948278280 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + sha256: 7a0fb5638582efc887a18b7d270b0c4a6f6e681bf401cab25ebafa2482569e90 + md5: 8e62bf5af966325ee416f19c6f14ffa3 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 629238 + timestamp: 1753948296190 +- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda + sha256: f03dc82e6fb1725788e73ae97f0cd3d820d5af0d351a274104a0767035444c59 + md5: 31e1545994c48efc3e6ea32ca02a8724 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 297087 + timestamp: 1753948490874 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 55476 + timestamp: 1727963768015 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda + sha256: c279be85b59a62d5c52f5dd9a4cd43ebd08933809a8416c22c3131595607d4cf + md5: 9a17c4307d23318476d7fbf0fedc0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 27424 + timestamp: 1772445227915 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda + sha256: 383c188496d13a55658c06e61e7d4cdff2c9f9d5a0648769fca8250bece7e0ef + md5: e5de3c36dd548b35ff2a8aa49208dcb3 + depends: + - libgcc >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 27913 + timestamp: 1772446407659 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py314h2359020_1.conda + sha256: 02805a0f3cd168dbf13afc5e4aed75cc00fe538ce143527a6471485b36f5887c + md5: 8de7b40f8b30a8fcaa423c2537fe4199 + depends: + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 30022 + timestamp: 1772445159549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda + sha256: 6f7d59dbec0a7b00bf5d103a4306e8886678b796ff2151b62452d4582b2a53fb + md5: b518e9e92493721281a60fa975bddc65 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: Apache-2.0 + license_family: APACHE + size: 186323 + timestamp: 1763688260928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.2-hdc560ac_0.conda + sha256: 45fbc7c8c44681f5cefba1e5b26ca504a4485b000c5dfaa31cec0b7bc78d0de4 + md5: 8b5222a41b5d51fb1a5a2c514e770218 + depends: + - libstdcxx >=14 + - libgcc >=14 + license: Apache-2.0 + license_family: APACHE + size: 182666 + timestamp: 1763688214250 +- conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.13.2-h477610d_0.conda + sha256: e41a945c34a5f0bd2109b73a65486cd93023fa0a9bcba3ef98f9a3da40ba1180 + md5: 7ecb9f2f112c66f959d2bb7dbdb89b67 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: Apache-2.0 + license_family: APACHE + size: 309417 + timestamp: 1763688227932 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c + md5: f61eb8cd60ff9057122a3d338b99c00f + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3164551 + timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda + sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f + md5: 25f5885f11e8b1f075bccf4a2da91c60 + depends: + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3692030 + timestamp: 1769557678657 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda + sha256: 53a5ad2e5553b8157a91bb8aa375f78c5958f77cb80e9d2ce59471ea8e5c0bd6 + md5: eb585509b815415bc964b2c7e11c7eb3 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + size: 9343023 + timestamp: 1769557547888 +- conda: https://conda.anaconda.org/conda-forge/noarch/patch-ng-1.18.1-pyhd8ed1ab_0.conda + sha256: d47e9d6db7e1d4fcedfdb2ba82e793f39f79c0eb66eb602f46decde79becd79e + md5: dc5638ae55efba309714557759713e03 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 22023 + timestamp: 1734746582395 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluginbase-1.0.1-pyhd8ed1ab_1.conda + sha256: aa94f1212029ef80638e86b970920cefca1f979fe4c7def59e1f950f95840ed9 + md5: ebb5d42dc046c334addb40c96145bc28 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 13509 + timestamp: 1734979293862 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + sha256: ac605d7fa239f78c508b47f2a0763236eef8d52b53852b84d784b598f92a1573 + md5: f9517d2fe1501919d7a236aba73409bb + depends: + - python >=3.10 + constrains: + - cryptography >=3.4.0 + license: MIT + license_family: MIT + size: 30144 + timestamp: 1769858771741 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + size: 21784 + timestamp: 1733217448189 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda + build_number: 101 + sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd + md5: c014ad06e60441661737121d3eae8a60 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + size: 36702440 + timestamp: 1770675584356 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda + build_number: 101 + sha256: 87e9dff5646aba87cecfbc08789634c855871a7325169299d749040b0923a356 + md5: 205011b36899ff0edf41b3db0eda5a44 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + size: 37305578 + timestamp: 1770674395875 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.3-h4b44e0e_101_cp314.conda + build_number: 101 + sha256: 3f99d83bfd95b9bdae64a42a1e4bf5131dc20b724be5ac8a9a7e1ac2c0f006d7 + md5: 7ec2be7eaf59f83f3e5617665f3fbb2e + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.14.* *_cp314 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + size: 18273230 + timestamp: 1770675442998 + python_site_packages_path: Lib/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 + depends: + - python >=3.9 + - six >=1.5 + - python + license: Apache-2.0 + license_family: APACHE + size: 233310 + timestamp: 1751104122689 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda + sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d + md5: 2035f68f96be30dc60a5dfd7452c7941 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 202391 + timestamp: 1770223462836 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda + sha256: 496b5e65dfdd0aaaaa5de0dcaaf3bceea00fcb4398acf152f89e567c82ec1046 + md5: 9ae2c92975118058bd720e9ba2bb7c58 + depends: + - libgcc >=14 + - python >=3.14,<3.15.0a0 + - python >=3.14,<3.15.0a0 *_cp314 + - python_abi 3.14.* *_cp314 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 195678 + timestamp: 1770223441816 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py314h2359020_1.conda + sha256: a2aff34027aa810ff36a190b75002d2ff6f9fbef71ec66e567616ac3a679d997 + md5: 0cd9b88826d0f8db142071eb830bce56 + depends: + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 181257 + timestamp: 1770223460931 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 345073 + timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + sha256: fe695f9d215e9a2e3dd0ca7f56435ab4df24f5504b83865e3d295df36e88d216 + md5: 3d49cad61f829f4f0e0611547a9cda12 + depends: + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 357597 + timestamp: 1765815673644 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 + md5: c65df89a0b2e321045a9e01d1337b182 + depends: + - python >=3.10 + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - urllib3 >=1.21.1,<3 + - python + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 63602 + timestamp: 1766926974520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 + md5: c1c9b02933fdb2cfb791d936c20e887e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 193775 + timestamp: 1748644872902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda + sha256: 0fe6f40213f2d8af4fcb7388eeb782a4e496c8bab32c189c3a34b37e8004e5a4 + md5: 745d02c0c22ea2f28fbda2cb5dbec189 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 207475 + timestamp: 1748644952027 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d + md5: 3339e3b65d58accf4ca4fb8748ab16b3 + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 18455 + timestamp: 1753199211006 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 + md5: 13dc3adbc692664cd3beabd216434749 + depends: + - __glibc >=2.28 + - kernel-headers_linux-64 4.18.0 he073ed8_9 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 24008591 + timestamp: 1765578833462 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda + sha256: 1bd2db6b2e451247bab103e4a0128cf6c7595dd72cb26d70f7fadd9edd1d1bc3 + md5: fdf07ab944a222ff28c754914fdb0740 + depends: + - __glibc >=2.28 + - kernel-headers_linux-aarch64 4.18.0 h05a177a_9 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + size: 23644746 + timestamp: 1765578629426 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 + md5: 7fc6affb9b01e567d2ef1d05b84aa6ed + depends: + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3368666 + timestamp: 1769464148928 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + sha256: 0e79810fae28f3b69fe7391b0d43f5474d6bd91d451d5f2bde02f55ae481d5e3 + md5: 0481bfd9814bf525bd4b3ee4b51494c4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: TCL + license_family: BSD + size: 3526350 + timestamp: 1769460339384 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5 + md5: 71b24316859acd00bdb8b38f5e2ce328 + constrains: + - vc14_runtime >=14.29.30037 + - vs2015_runtime >=14.29.30037 + license: LicenseRef-MicrosoftWindowsSDK10 + size: 694692 + timestamp: 1756385147981 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.20-pyhd8ed1ab_0.conda + sha256: 97aa149dfac27182d1fc8f7990f7c894a0167180e3edb6e7c6bdbcd7845bb854 + md5: 0511ede4b6dd034d77fa80c6d09794e1 + depends: + - brotli-python >=1.0.9 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.10 + license: MIT + license_family: MIT + size: 115586 + timestamp: 1761321225593 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda + sha256: 9dc40c2610a6e6727d635c62cced5ef30b7b30123f5ef67d6139e23d21744b3a + md5: 1e610f2416b6acdd231c5f573d754a0f + depends: + - vc14_runtime >=14.44.35208 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 19356 + timestamp: 1767320221521 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda + sha256: 02732f953292cce179de9b633e74928037fa3741eb5ef91c3f8bae4f761d32a5 + md5: 37eb311485d2d8b2c419449582046a42 + depends: + - ucrt >=10.0.20348.0 + - vcomp14 14.44.35208 h818238b_34 + constrains: + - vs2015_runtime 14.44.35208.* *_34 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 683233 + timestamp: 1767320219644 +- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda + sha256: 878d5d10318b119bd98ed3ed874bd467acbe21996e1d81597a1dbf8030ea0ce6 + md5: 242d9f25d2ae60c76b38a5e42858e51d + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.44.35208.* *_34 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 115235 + timestamp: 1767320173250 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_34.conda + sha256: 05bc657625b58159bcea039a35cc89d1f8baf54bf4060019c2b559a03ba4a45e + md5: 1d699ffd41c140b98e199ddd9787e1e1 + depends: + - vswhere + constrains: + - vs_win-64 2022.14 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 23060 + timestamp: 1767320175868 +- conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda + sha256: b72270395326dc56de9bd6ca82f63791b3c8c9e2b98e25242a9869a4ca821895 + md5: f622897afff347b715d046178ad745a5 + depends: + - __win + license: MIT + license_family: MIT + size: 238764 + timestamp: 1745560912727 +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 + depends: + - __win + - python >=3.9 + license: LicenseRef-Public-Domain + size: 9555 + timestamp: 1733130678956 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda + sha256: 08e12f140b1af540a6de03dd49173c0e5ae4ebc563cabdd35ead0679835baf6f + md5: 607e13a8caac17f9a664bcab5302ce06 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: BSD-2-Clause + license_family: BSD + size: 108219 + timestamp: 1746457673761 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda + sha256: db8cc7186ecb1cf4cb92977822ad17698fa2cd5fc87935de2afd9e99d2cbb507 + md5: f2accdfbd632e2be9a63bed23cb08045 + depends: + - libgcc >=13 + license: BSD-2-Clause + license_family: BSD + size: 105762 + timestamp: 1746457675564 +- conda: https://conda.anaconda.org/conda-forge/win-64/xxhash-0.8.3-hbba6f48_0.conda + sha256: 5500076adee2f73fe771320b73dc21296675658ce49a972dd84dc40c7fff5974 + md5: 2de9e5bd94ae9c32ac604ec8ce7c90eb + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 105768 + timestamp: 1746458183583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad + md5: a77f85f77be52ff59391544bfe73390a + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + size: 85189 + timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda + sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 + md5: 032d8030e4a24fe1f72c74423a46fb88 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 88088 + timestamp: 1753484092643 +- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda + sha256: 80ee68c1e7683a35295232ea79bcc87279d31ffeda04a1665efdb43cbd50a309 + md5: 433699cba6602098ae8957a323da2664 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: MIT + license_family: MIT + size: 63944 + timestamp: 1753484092156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 + depends: + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 601375 + timestamp: 1764777111296 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 + md5: c3655f82dcea2aa179b291e7099c1fcc + depends: + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 614429 + timestamp: 1764777145593 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda + sha256: 368d8628424966fd8f9c8018326a9c779e06913dd39e646cf331226acc90e5b2 + md5: 053b84beec00b71ea8ff7a4f84b55207 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 388453 + timestamp: 1764777142545 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..5f7b8b0 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,47 @@ +[workspace] +name = "pj-test-dummy-plugins" +version = "1.0.0" +description = "PlotJuggler dummy plugins — pixi + conan 2.0" +channels = ["conda-forge"] +platforms = ["linux-64", "linux-aarch64", "win-64", "osx-64", "osx-arm64"] + +[dependencies] +cmake = ">=3.25" +ninja = "*" +conan = ">=2.0,<3" +ccache = "*" + +[target.linux-64.dependencies] +c-compiler = "*" +cxx-compiler = "*" + +[target.linux-aarch64.dependencies] +c-compiler = "*" +cxx-compiler = "*" + +[target.win-64.dependencies] +c-compiler = "*" +cxx-compiler = "*" + +[target.osx-64.dependencies] +c-compiler = "*" +cxx-compiler = "*" + +[target.osx-arm64.dependencies] +c-compiler = "*" +cxx-compiler = "*" + +[tasks] +conan-profile = "conan profile detect --force" + +conan-install = { depends-on = ["conan-profile"], cmd = "conan install . --output-folder=build --build=missing -s build_type=Release" } + +configure = { depends-on = ["conan-install"], cmd = "cmake -S . -B build/Release -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_PREFIX_PATH=build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -GNinja" } + +build = { depends-on = ["configure"], cmd = "cmake --build build/Release --parallel" } + +test = { depends-on = ["build"], cmd = "ctest --test-dir build/Release -V --output-on-failure" } + +all = { depends-on = ["test"] } + +clean = "rm -rf build" diff --git a/test-event-tag.json b/test-event-tag.json new file mode 100644 index 0000000..a4e0a27 --- /dev/null +++ b/test-event-tag.json @@ -0,0 +1,18 @@ +{ + "ref": "refs/tags/1.0.0", + "ref_name": "1.0.0", + "ref_type": "tag", + "repository": { + "name": "pj-test-dummy-plugins", + "full_name": "org/pj-test-dummy-plugins", + "private": true, + "default_branch": "main" + }, + "pusher": { + "name": "test-user", + "email": "test@example.com" + }, + "sender": { + "login": "test-user" + } +}