rel-output-path produces wrong path for :lib files
Duplicate
Description fields
Description
Building with a cljsjs package where cljsjs package includes :libs in deps.cljs you find the "out" directory includes a subdirectory "file:".
An example from my specific case: "out/file:/home/vagrant/.m2/repository/cljsjs/openlayers/3.3.0-0/openlayers-3.3.0-0.jar!/cljsjs/development/openlayers/ol/array.js"
':' is not permitted on Windows filesystem, which leads to compilation error.
Building with a cljsjs package where cljsjs package includes
:libs
indeps.cljs
you find the "out" directory includes a subdirectory "file:".An example from my specific case:
"out/file:/home/vagrant/.m2/repository/cljsjs/openlayers/3.3.0-0/openlayers-3.3.0-0.jar!/cljsjs/development/openlayers/ol/array.js"
':' is not permitted on Windows filesystem, which leads to compilation error.
It happens because
rel-output-path
here https://github.com/clojure/clojurescript/blob/17bcf2a091accb6f7caf1e8fa3954b490e9d34fa/src/main/clojure/cljs/closure.clj#L1515 detects closure-lib first (before taking in account that it is in jar) and passes it tolib-rel-path
which acts as if file is located in project directory.Another issue, but deeply related, is that on Windows,
lib-rel-path
breaks build even for:lib
files located in project directory. It happens because of naive path prefix removal https://github.com/clojure/clojurescript/blob/17bcf2a091accb6f7caf1e8fa3954b490e9d34fa/src/main/clojure/cljs/closure.clj#L1500 because it tries to remove a subpath with native path separators, but path comes here in url-like form with forward slashes. Compiler then reports that path is not relative and aborts compilation.