Fork me on GitHub
#clojure-italy
<
2019-02-27
>
Lu08:02:15

👌:skin-tone-3:☘️

andrea.crotti15:02:28

ma non c'e' modo in Clojure per un autore di librerie/tools che dipendono da altre librerie, di settare un range di versioni sulle dipendenze?

andrea.crotti15:02:56

per esempio io sviluppo libreria X e so che la mia dipendenza Y mi scassa tutto se in versione < 1.0

andrea.crotti15:02:23

un progetto che usa sia X e Y dovrebbe lanciare allarmi se prova a usare Y < 1.0

andrea.crotti15:02:42

ma non ho visto molto a riguardo

bronsa15:02:52

se usi lein puoi usare version ranges

bronsa15:02:05

non so se tools.deps le supporti, ma non credo

andrea.crotti15:02:15

ah figo, non l'ho visto usare in nessuna libreria pero'

andrea.crotti15:02:49

e no cmq non e' quello che intendevo An update to newer dependencies within the defined ranges without hitting the keyboard.

bronsa15:02:29

questo e` il behaviour normale di maven, senza usare verson ranges eh

andrea.crotti15:02:53

mm no se tu setti una certa versione esplicitamente ti becchi quella no?

andrea.crotti15:02:56

questo anzi non mi sembra una buona idea

andrea.crotti15:02:19

perfino pip (Python) scoppia se non ricordo male se ti ritrovi ad avere ranges incompatibili

bronsa15:02:54

quello che i version ranges ti aggiungono e` specificare piu` granularmente i boundaries

bronsa15:02:17

1.10 e` semanticamente identico a [1.10,)

bronsa15:02:51

che significa che ho bisogno di almeno 1.10 (ma 1.11 va bene uguale, 1.9 no)

andrea.crotti15:02:40

in che senso behaviour normale @bronsa? Io in situazioni simili l'unica cosa che vedo e' un warning se ho settato :pedantic? Lo scenario che intendo e' dipendere da una libreria sia direttamente che transitivamente attraverso un altra libreria. Se la seconda libreria non funziona con una versione vecchia della prima se ne infischia e prende quella che hai settato tu al momento

andrea.crotti15:02:54

e da degli warnings al massimo

andrea.crotti15:02:03

almeno io non ho mai visto errori a riguardo

bronsa15:02:28

si`, questo perche` la risoluzione delle dipendenze e` un best-effort

bronsa15:02:51

essere precisi al 100% e` un problema NP-completo, non conosco nessun dependency manager che non usi approssimazioni

bronsa15:02:10

alcuni usano SAT solver

andrea.crotti15:02:36

no vabbeh se libreria Y ha modo di dire guarda che funziono solo con certe versioni, farlo scoppiare non mi sembra NP completo

bronsa15:02:16

no, ma il motivo per cui hai pullato una versione vecchia potrebbe essere perche` hai risolto in modo non ottimale i version constraints invece di un impossibilita` vera di risolverli, quindi al massimo ha senso un warning

bronsa15:02:35

e` uno di quei problemi che dal di fuori sempra significativamente molto piu` triviale di quello che e` in realta`

andrea.crotti21:02:40

se non c'e' modo pero' di descrivere questi constraints per un autore di librerie poi diventa impossibile avere un tool di questo tipo

andrea.crotti15:02:00

il problema generale senza extra informazioni certo e' complicato, mi domandavo solo se c'e' il modo di dare queste informazioni aggiuntive, e si version ranges non c'entrano e non sono neanche ben visti

andrea.crotti15:02:20

(articolo vecchio ma direi che mi sembra sensato)

andrea.crotti15:02:14

chiedevo perche' ho avuto questo problema esattamente stamattina https://github.com/lambdaisland/kaocha-cloverage/issues/4

andrea.crotti15:02:50

kaocha dipende da tools.cli (e funziona solo con una versione > x.y), nel mio progetto usavamo una versione piu' vecchia di tools.cli, e non funzionava una pippa con un errore strano

andrea.crotti15:02:30

in teoria kaocha dovrebbe poter dire che se tools.cli < x.y non funziona, immagino si possa fare anche con un po' di reflection magari, ma certo non e' il massimo