Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unnamed windows path issue on deploy #60

Closed
ghost opened this issue May 15, 2013 · 2 comments
Closed

unnamed windows path issue on deploy #60

ghost opened this issue May 15, 2013 · 2 comments

Comments

@ghost
Copy link

ghost commented May 15, 2013

(aether/deploy 
  :coordinates [nomnomnom/nomnomnom "0.5.0-SNAPSHOT"] 
  :artifact-map {
          [:extension "jar"] "s:\\workspace.eclipse.2k13_2\\leiningen\\test_projects\\sample\\target\\provided\\nomnomnom-0.5.0-SNAPSHOT.jar", 
          [:extension "pom"] "s:\\workspace.eclipse.2k13_2\\leiningen\\test_projects\\sample\\pom.xml"
   } 
:transfer-listener 
 :stdout 
:repository [
  ["file://C:\\Users\\user\\AppData\\Local\\Temp\\lein-custom-repo" 
   {:url "file://C:\\Users\\user\\AppData\\Local\\Temp\\lein-custom-repo"}]
 ]
)

if I call that, I get approximately this:

Could not find metadata nomnomnom:nomnomnom:0.5.0-SNAPSHOT/maven-metadata.xml in file://C:\Users\use
r\AppData\Local\Temp\lein-custom-repo (file://C:\Users\user\AppData\Local\Temp\lein-custom-repo)
org.sonatype.aether.deployment.DeploymentException: Failed to update metadata nomnomnom:nomnomnom:0.
5.0-SNAPSHOT/maven-metadata.xml: Could not write metadata C:\Users\user\.m2\repository\nomnomnom\nom
nomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml: C:
\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\user\App
Data\Local\Temp\lein-custom-repo.xml (The filename, directory name, or volume label syntax is incorr
ect)
        at org.sonatype.aether.impl.internal.DefaultDeployer.upload(DefaultDeployer.java:414)
        at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:256)
        at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:211)
        at org.sonatype.aether.impl.internal.DefaultRepositorySystem.deploy(DefaultRepositorySystem.
java:443)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)
        at cemerick.pomegranate.aether$deploy_artifacts.doInvoke(aether.clj:328)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:617)
        at cemerick.pomegranate.aether$deploy.doInvoke(aether.clj:401)
        at clojure.lang.RestFn.invoke(RestFn.java:619)
        at leiningen.deploy$deploy.invoke(deploy.clj:161)
        at leiningen.test.deploy$deploy_snapshots.doInvoke(deploy.clj:25)
        at clojure.lang.RestFn.invoke(RestFn.java:442)
        at leiningen.test.deploy$fn__3526.invoke(deploy.clj:43)
        at clojure.test$test_var$fn__7145.invoke(test.clj:701)
        at clojure.test$test_var.invoke(test.clj:701)
        at user$eval2606$test_var_with_selector__2615.invoke(NO_SOURCE_FILE:0)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.core$apply.invoke(core.clj:619)
        at leiningen.core.injected$compose_hooks$fn__2540.doInvoke(NO_SOURCE_FILE)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:617)
        at leiningen.core.injected$run_hooks.invoke(NO_SOURCE_FILE:0)
        at leiningen.core.injected$prepare_for_hooks$fn__2545$fn__2546.doInvoke(NO_SOURCE_FILE:0)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.test$test_all_vars$fn__7149$fn__7156.invoke(test.clj:717)
        at clojure.test$default_fixture.invoke(test.clj:671)
        at clojure.test$test_all_vars$fn__7149.invoke(test.clj:717)
        at clojure.test$default_fixture.invoke(test.clj:671)
        at clojure.test$test_all_vars.invoke(test.clj:713)
        at clojure.test$test_ns.invoke(test.clj:736)
        at clojure.core$map$fn__4207.invoke(core.clj:2487)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:60)
        at clojure.lang.Cons.next(Cons.java:39)
        at clojure.lang.RT.boundedLength(RT.java:1654)
        at clojure.lang.RestFn.applyTo(RestFn.java:130)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.test$run_tests.doInvoke(test.clj:751)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:617)
        at user$eval2606$fn__2672.invoke(NO_SOURCE_FILE)
        at user$eval2606.invoke(NO_SOURCE_FILE:0)
        at clojure.lang.Compiler.eval(Compiler.java:6619)
        at clojure.lang.Compiler.eval(Compiler.java:6609)
        at clojure.lang.Compiler.eval(Compiler.java:6582)
        at clojure.core$eval.invoke(core.clj:2852)
        at leiningen.core.eval$eval2244$fn__2245.invoke(eval.clj:273)
        at clojure.lang.MultiFn.invoke(MultiFn.java:231)
        at leiningen.core.eval$eval_in_project.invoke(eval.clj:282)
        at leiningen.test$test.doInvoke(test.clj:177)
        at clojure.lang.RestFn.invoke(RestFn.java:423)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.core$apply.invoke(core.clj:619)
        at leiningen.core.main$resolve_task$fn__1944.doInvoke(main.clj:149)
        at clojure.lang.RestFn.applyTo(RestFn.java:139)
        at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:619)
        at leiningen.core.main$apply_task.invoke(main.clj:189)
        at leiningen.core.main$resolve_and_apply.invoke(main.clj:193)
        at leiningen.core.main$_main$fn__2007.invoke(main.clj:257)
        at leiningen.core.main$_main.doInvoke(main.clj:247)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.core$apply.invoke(core.clj:617)
        at clojure.main$main_opt.invoke(main.clj:335)
        at clojure.main$main.doInvoke(main.clj:440)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at clojure.lang.Var.invoke(Var.java:427)
        at clojure.lang.AFn.applyToHelper(AFn.java:172)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)
Caused by: org.sonatype.aether.RepositoryException: Could not write metadata C:\Users\user\.m2\repos
itory\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-
custom-repo.xml: C:\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file
:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml (The filename, directory name, or volume lab
el syntax is incorrect)
        at org.apache.maven.repository.internal.MavenMetadata.write(MavenMetadata.java:125)
        at org.apache.maven.repository.internal.MavenMetadata.merge(MavenMetadata.java:73)
        at org.sonatype.aether.impl.internal.DefaultDeployer.upload(DefaultDeployer.java:410)
        ... 84 more
Caused by: java.io.FileNotFoundException: C:\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0-SNA
PSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml (The filename, dire
ctory name, or volume label syntax is incorrect)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
        at org.codehaus.plexus.util.xml.XmlStreamWriter.<init>(XmlStreamWriter.java:59)
        at org.codehaus.plexus.util.WriterFactory.newXmlWriter(WriterFactory.java:117)
        at org.apache.maven.repository.internal.MavenMetadata.write(MavenMetadata.java:120)
        ... 86 more
Failed to update metadata nomnomnom:nomnomnom:0.5.0-SNAPSHOT/maven-metadata.xml: Could not write met
adata C:\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\
user\AppData\Local\Temp\lein-custom-repo.xml: C:\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0
-SNAPSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml (The filename,
directory name, or volume label syntax is incorrect)

lein test :only leiningen.test.deploy/test-deploy-custom-url

ERROR in (test-deploy-custom-url) (core.clj:4327)
Uncaught exception, not in assertion.
expected: nil
  actual: clojure.lang.ExceptionInfo: Suppressed exit
 at clojure.core$ex_info.invoke (core.clj:4327)
    leiningen.core.main$exit.invoke (main.clj:74)
    leiningen.core.main$abort.doInvoke (main.clj:84)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.deploy$deploy.invoke (deploy.clj:167)
    leiningen.test.deploy$deploy_snapshots.doInvoke (deploy.clj:25)
    clojure.lang.RestFn.invoke (RestFn.java:442)
    leiningen.test.deploy/fn (deploy.clj:43)
    clojure.test$test_var$fn__7145.invoke (test.clj:701)
    clojure.test$test_var.invoke (test.clj:701)
    user$eval2606$test_var_with_selector__2615.invoke (NO_SOURCE_FILE:0)
    clojure.lang.AFn.applyToHelper (AFn.java:163)
    clojure.lang.AFn.applyTo (AFn.java:151)
    clojure.core$apply.invoke (core.clj:619)
    leiningen.core.injected$compose_hooks$fn__2540.doInvoke (NO_SOURCE_FILE:-1)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invoke (core.clj:617)
    leiningen.core.injected$run_hooks.invoke (NO_SOURCE_FILE:0)
    leiningen.core.injected$prepare_for_hooks$fn__2545$fn__2546.doInvoke (NO_SOURCE_FILE:0)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.test$test_all_vars$fn__7149$fn__7156.invoke (test.clj:717)
    clojure.test$default_fixture.invoke (test.clj:671)
    clojure.test$test_all_vars$fn__7149.invoke (test.clj:717)
    clojure.test$default_fixture.invoke (test.clj:671)
    clojure.test$test_all_vars.invoke (test.clj:713)
    clojure.test$test_ns.invoke (test.clj:736)
    clojure.core$map$fn__4207.invoke (core.clj:2487)
    clojure.lang.LazySeq.sval (LazySeq.java:42)
    clojure.lang.LazySeq.seq (LazySeq.java:60)
    clojure.lang.Cons.next (Cons.java:39)
    clojure.lang.RT.boundedLength (RT.java:1654)
    clojure.lang.RestFn.applyTo (RestFn.java:130)
    clojure.core$apply.invoke (core.clj:619)
    clojure.test$run_tests.doInvoke (test.clj:751)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invoke (core.clj:617)
    user$eval2606$fn__2672.invoke (NO_SOURCE_FILE:-1)
    user$eval2606.invoke (NO_SOURCE_FILE:0)
    clojure.lang.Compiler.eval (Compiler.java:6619)
    clojure.lang.Compiler.eval (Compiler.java:6609)
    clojure.lang.Compiler.eval (Compiler.java:6582)
    clojure.core$eval.invoke (core.clj:2852)
    leiningen.core.eval$eval2244$fn__2245.invoke (eval.clj:273)
    clojure.lang.MultiFn.invoke (MultiFn.java:231)
    leiningen.core.eval$eval_in_project.invoke (eval.clj:282)
    leiningen.test$test.doInvoke (test.clj:177)
    clojure.lang.RestFn.invoke (RestFn.java:423)
    clojure.lang.Var.invoke (Var.java:419)
    clojure.lang.AFn.applyToHelper (AFn.java:163)
    clojure.lang.Var.applyTo (Var.java:532)
    clojure.core$apply.invoke (core.clj:619)
    leiningen.core.main$resolve_task$fn__1944.doInvoke (main.clj:149)
    clojure.lang.RestFn.applyTo (RestFn.java:139)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invoke (core.clj:619)
    leiningen.core.main$apply_task.invoke (main.clj:189)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:193)
    leiningen.core.main$_main$fn__2007.invoke (main.clj:257)
    leiningen.core.main$_main.doInvoke (main.clj:247)
    clojure.lang.RestFn.invoke (RestFn.java:421)
    clojure.lang.Var.invoke (Var.java:419)
    clojure.lang.AFn.applyToHelper (AFn.java:163)
    clojure.lang.Var.applyTo (Var.java:532)
    clojure.core$apply.invoke (core.clj:617)
    clojure.main$main_opt.invoke (main.clj:335)
    clojure.main$main.doInvoke (main.clj:440)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    clojure.lang.Var.invoke (Var.java:427)
    clojure.lang.AFn.applyToHelper (AFn.java:172)
    clojure.lang.Var.applyTo (Var.java:532)
    clojure.main.main (main.java:37)

Ran 4 tests containing 12 assertions.
0 failures, 1 errors.
Tests failed.
clojure.lang.ExceptionInfo: Suppressed exit {:exit-code 1}
        at clojure.core$ex_info.invoke(core.clj:4327)
        at leiningen.core.main$exit.invoke(main.clj:74)
        at leiningen.core.main$abort.doInvoke(main.clj:84)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at leiningen.test$test.doInvoke(test.clj:182)
        at clojure.lang.RestFn.invoke(RestFn.java:423)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.core$apply.invoke(core.clj:619)
        at leiningen.core.main$resolve_task$fn__1944.doInvoke(main.clj:149)
        at clojure.lang.RestFn.applyTo(RestFn.java:139)
        at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:619)
        at leiningen.core.main$apply_task.invoke(main.clj:189)
        at leiningen.core.main$resolve_and_apply.invoke(main.clj:193)
        at leiningen.core.main$_main$fn__2007.invoke(main.clj:257)
        at leiningen.core.main$_main.doInvoke(main.clj:247)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.core$apply.invoke(core.clj:617)
        at clojure.main$main_opt.invoke(main.clj:335)
        at clojure.main$main.doInvoke(main.clj:440)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at clojure.lang.Var.invoke(Var.java:427)
        at clojure.lang.AFn.applyToHelper(AFn.java:172)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)

so the problem is that somehow it gets a filename like this:
C:\Users\user\.m2\repository\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml
C:\Users\user.m2\repository\nomnomnom\nomnomnom\0.5.0-SNAPSHOT\maven-metadata-file:\C:\Users\user\AppData\Local\Temp\lein-custom-repo.xml

am I doing something wrong here? I know it works fine with unix paths but windows ...?!

EDIT: to note that I've also tried these params to aether/deploy:

:coordinates [nomnomnom/nomnomnom "0.5.0-SNAPSHOT"]
 :artifact-map {[:extension "jar"] "s:\\workspace.eclipse.2k13_2\\leiningen\\test_projects\\sample\\target\\provided\\nomnomnom-0.5.0-SNAPSHOT.jar", 
 [:extension "pom"] "s:\\workspace.eclipse.2k13_2\\leiningen\\test_projects\\sample\\pom.xml"} 
:transfer-listener 
:stdout 
:repository [
  ["file://C:/Users/user/AppData/Local/Temp/lein-custom-repo" 
  {:url "file://C:/Users/user/AppData/Local/Temp/lein-custom-repo"}]
]

notice the "" became "/" in the :repository part

and also with all the "" as "/" such as: (trying now)

 :coordinates [nomnomnom/nomnomnom "0.5.0-SNAPSHOT"] 
:artifact-map {[:extension "jar"] "s:/workspace.eclipse.2k13_2/leiningen/test_projects/sample/target/provided/nomnomnom-0.5.0-SNAPSHOT.jar", 
[:extension "pom"] "s:/workspace.eclipse.2k13_2/leiningen/test_projects/sample/pom.xml"} 
:transfer-listener 
:stdout 
:repository [
  ["file://C:/Users/user/AppData/Local/Temp/lein-custom-repo" 
  {:url "file://C:/Users/user/AppData/Local/Temp/lein-custom-repo"}]]

Any ideas on this? is it expecting only unix paths? so like no drive letter? and maybe delimiters to be "/" also ?

@ghost
Copy link
Author

ghost commented May 16, 2013

ok I've tracked this to being a wrongly formated repo name passed to aether/deploy: ie. repo name file://C:/Users/user/AppData/Local/Temp//lein-custom-repo instead of lein-custom-repo. So since aether tries to form a file name using this repo name which is repo id which in turn is repo key, like from maven-metadata.xml into maven-metadata-repoKeyHERE.xml where repoKeyHERE ends up being the repo name... then it will fail to access it, unless something tries to sanitize/check if the repo name is valid ie. pomegranate could do that inside deploy

So this:

:repository [
  ["file://C:/Users/user/AppData/Local/Temp/lein-custom-repo" 
  {:url "file://C:/Users/user/AppData/Local/Temp/lein-custom-repo"}]]

should be this:

:repository [
  ["lein-custom-repo" 
  {:url "file://C:/Users/user/AppData/Local/Temp/lein-custom-repo"}]]

the related leiningen issue which led me to this (in windows,the leiningen tests would fail) is this technomancy/leiningen#1179

So, it's not pomegranate or aether fault per se, but they are allowing/assuming that the repo name is valid (ie. containing non-path-delimiters) and aether uses this name to form filenames

@cemerick
Copy link
Collaborator

Trying to validate arguments into aether would be really challenging. Sorry, not in scope here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant