plotly / plotly/plotly.rs

Using Plotly.rs in CI with `static_export_wd_download` fails

Ouverte
#379 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Rust
Étoiles
1.5k
Forks
128
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I have a GitHub Actions CI that has been building with plotly.rs fine for a year, but started failing today. I was building with this:

plotly = { version = "0.13.5", features = ["kaleido", "kaleido_download"] }

which failed due to errors like this:

error[E0412]: cannot find type `Table` in crate `crc`
  --> /Users/bart/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lzma-rust2-0.15.3/src/xz.rs:33:33
   |
33 | const CRC32: crc::Crc<u32, crc::Table<16>> =
   |                                 ^^^^^ not found in `crc`

It turns out that under my project I have two versions of crc being used, and somehow (because plotly_kaleido uses it as a build-dependency? Shouldn't cargo handle this fine?) they are colliding:

❯ cargo tree -p crc@2.1.0 -i    
crc v2.1.0
└── lzma-rust2 v0.15.3
    └── zip v7.1.0
        [build-dependencies]
        └── plotly_kaleido v0.13.6
            └── plotly v0.13.5

My project uses sqlx:

❯ cargo tree -p crc@3.4.0 -i    
crc v3.4.0
└── sqlx-core v0.8.6
    ├── sqlx v0.8.6

So instead of fighting plotly_kaleido, it being deprecated, I switched to this:

plotly = { version = "0.14", features = ["static_export_geckodriver", "static_export_wd_download"] }

Which works fine on my local machine, but when I build in GitHub actions on the generic ubuntu runner, I get this

warning: plotly_static@0.1.0: You can specify WEBDRIVER_PATH to an existing chromedriver/geckodriver installation to avoid downloads.
warning: plotly_static@0.1.0: You can override browser detection using BROWSER_PATH environment variable.
warning: plotly_static@0.1.0: geckodriver selected but not installed, will be downloaded ... 
error: failed to run custom build command for `plotly_static v0.1.0`
Caused by:
  process didn't exit successfully: `/__w/foo/bar/target/debug/build/plotly_static-60b220e432895492/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-changed=src/lib.rs
  cargo::rerun-if-changed=/github/home/.local/bin
  cargo::warning=You can specify WEBDRIVER_PATH to an existing chromedriver/geckodriver installation to avoid downloads.
  cargo::warning=You can override browser detection using BROWSER_PATH environment variable.
  cargo::warning=geckodriver selected but not installed, will be downloaded ... 
  --- stderr
  Error: Failed to detect browser path for geckodriver
  Caused by:
      0: Failed to run command
      1: cannot find binary path
warning: build failed, waiting for other jobs to finish...

My assumption would be that static_export_wd_download takes care of downloading whatever rendering engine I'd need. Maybe I'm misunderstanding the requirements for not using kaleido, but seems like some sort of bug.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le script de build de plotly_static et la configuration des fonctionnalités static_export_geckodriver/static_export_wd_download, puis reproduisez l’échec sur le runner Ubuntu générique de GitHub Actions. Comparez le chemin de détection du navigateur et du driver avec le build local réussi ; le travail sera considéré comme terminé lorsque la configuration CI documentée effectuera l’export statique sans l’erreur signalée dans le script de build.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
github-actions, rust
Domaine
ci-cd, data-visualization
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.