2016-03-21 19 views
5

Ho una libreria e voglio assicurarmi che nessuna delle dipendenze nella mia albero delle dipendenze usi le dipendenze dei caratteri jolly. dipendenze jolly sono il male :(Verifica dipendenze indesiderate dei caratteri jolly in modo ricorsivo

Posso controllare questo in modo ricorsivo con cargo nella riga di comando o posso controllare manualmente in Cargo.lock

EDIT:? Mentre crates.io respinge casse con dipendenze jolly dal momento che il rilascio Rust 1.6 (approximately, grazie Steve Klabnik) ci sono ancora vecchie casse su crates.io che do hanno dipendenze con caratteri jolly.Posso caricare la mia cassa che dipende da una vecchia cassa.Pertanto la mia cassa dipende indirettamente anche dalle dipendenze dei caratteri jolly. cosa voglio evitare e controllare per

risposta

2

Ho scritto un piccolo script che prende lo crates.io-index e legge le informazioni correnti per tutti i pacchetti. Se un pacchetto ha una dipendenza da carattere jolly diretto su un altro pacchetto, vi è una riga stampata nel formato crate-name -> wildcard-dependency, another-one.

Ci sono 995 current packages with wildcard dependencies. L'elenco è esaustivo e diminuirà solo in lunghezza se i pacchetti vengono aggiornati.

È possibile passare manualmente a tutte le dipendenze in Cargo.lock e controllare se sono menzionate nell'elenco. Si noti che è necessario utilizzare la versione più recente delle dipendenze per garantire che non si dipenda da un pacchetto obsoleto con dipendenze con caratteri jolly.

+0

Quindi ... questo è solo il controllo delle dipendenze dirette? Quindi se la mia cassa dipende da 'crate-a', che dipende da' crate-b', che ha una dipendenza da carattere jolly, allora: (1) 'crate-b' è elencato nella lista (2) cercando le dipendenze di la mia cassa (cioè '[cassa-a]') non mi aiuterà. Ho capito bene? Se sì, sarebbe fantastico se tu potessi fare queste cose ricorsive e/o pubblicare il tuo script. :) –

+0

Devi controllare tutte le dipendenze menzionate in "Cargo.lock". Il testo iniziale aveva un errore di battitura che diceva "Cargo.toml". Ma funziona solo se tutte le dipendenze utilizzano dipendenze aggiornate. :-( – Pyfisch

+0

Ah ok, questo ha un senso, immagino. Potresti ancora pubblicare il tuo script? Sarei certamente interessato anche a questo. Penso che eseguirò il ping del [carico-obsoleto] (https://github.com/ kbknapp/cargo-obsoleto) ragazzi e chiedete se vogliono integrare questa funzione ... –

3

A partire da pochi mesi, Cargo non consente più le dipendenze con caratteri jolly. Quindi non hai bisogno di farlo da solo.

Questa è una caratteristica di crates.io, non una funzione di Ruggine o Carico, quindi non è associata a nessuna versione particolare di questi strumenti. L'aggiornamento è avvenuto around the time we released Rust 1.6.

+0

Avete la versione (stabile) del rilascio Cargo/Rust che ha attivato per primo questo? Permetterebbe agli utenti che utilizzano versioni precedenti sapere se è "corretto" nel loro rilascio o meno. –

+0

aggiornerò la mia risposta. –

+0

Questo è esattamente il mio problema: la mia libreria aveva una vecchia dipendenza che utilizza ancora le dipendenze con caratteri jolly. Posso ancora pubblicare la mia cassa in 'crates.io', perché non usa direttamente le dipendenze con caratteri jolly, ma solo attraverso un'altra cassa. Quindi con un albero di dipendenza enorme voglio controllare se qualcosa in questo albero usa ancora delle dipendenze con caratteri jolly. –

Problemi correlati