plotly / plotly/plotly.rs

Using Plotly.rs in CI with `static_export_wd_download` fails

Aperta
#379 3 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Rust
Stelle
1.5k
Fork
128
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dallo script di build di plotly_static e dalla configurazione delle funzionalità static_export_geckodriver/static_export_wd_download, quindi riproduci il fallimento sul runner Ubuntu generico di GitHub Actions. Confronta il percorso di rilevamento del browser e del driver con la build locale riuscita; il lavoro è completato quando la configurazione CI documentata completa l’esportazione statica senza l’errore segnalato nello script di build.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
github-actions, rust
Ambito
ci-cd, data-visualization
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.