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

load statements aren't handled #61

Open
expez opened this issue Oct 27, 2021 · 17 comments
Open

load statements aren't handled #61

expez opened this issue Oct 27, 2021 · 17 comments

Comments

@expez
Copy link
Contributor

expez commented Oct 27, 2021

I recently tried to inline tools.deps.alpha to get hotload-dependencies working again for cljr, but mranderson failed to consider these load statements in the middle of the file.

@expez
Copy link
Contributor Author

expez commented Oct 27, 2021

From what I can tell this happens because tools.namespace only considers the ns form and doesn't register the dependency caused by the load statement.

Guess we could run our own pass over the file to look for load, require, use and import...

@benedekfazekas
Copy link
Owner

👋 @expez give above (branch handle-load-stmt) a try and let me know if it works

benedekfazekas added a commit that referenced this issue Nov 14, 2021
@benedekfazekas
Copy link
Owner

also require/use/import etc is taken care of. what was missing is checking file path like references what load is using

@benedekfazekas
Copy link
Owner

gentle bump @expez

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

Got an error:

unzipping [ plexus-component-annotations  [ v2v1v0 ]]
  munge source files of plexus-component-annotations artifact on branch [] exposed false.
  munge source files of commons-compress artifact on branch [] exposed false.
  munge source files of commons-lang artifact on branch [] exposed false.
  munge source files of xz artifact on branch [] exposed false.
  munge source files of compliment artifact on branch [] exposed false.
Error encountered performing task 'inline-deps' with profile(s): 'base,system,provided,dev,1.10'
java.util.concurrent.ExecutionException: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at clojure.core$deref_future.invokeStatic(core.clj:2300)
	at clojure.core$future_call$reify__8439.deref(core.clj:6974)
	at clojure.core$deref.invokeStatic(core.clj:2320)
	at clojure.core$pmap$step__8452$fn__8456.invoke(core.clj:7025)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at mranderson.move$replace_ns_symbol_in_source_files.invokeStatic(move.clj:303)
	at mranderson.move$replace_ns_symbol_in_source_files.invoke(move.clj:294)
	at mranderson.move$move_ns.invokeStatic(move.clj:318)
	at mranderson.move$move_ns.invoke(move.clj:305)
	at mranderson.core$update_artifact_BANG_.invokeStatic(core.clj:227)
	at mranderson.core$update_artifact_BANG_.invoke(core.clj:196)
	at mranderson.dependency.tree$walk_ordered_deps$fn__2194$fn__2199.invoke(tree.clj:83)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$dorun.invoke(core.clj:3133)
	at mranderson.dependency.tree$walk_ordered_deps$fn__2194.invoke(tree.clj:83)
	at mranderson.dependency.tree$walk_ordered_deps.invokeStatic(tree.clj:82)
	at mranderson.dependency.tree$walk_ordered_deps.invoke(tree.clj:73)
	at mranderson.core$mranderson_resolved_deps_BANG_.invokeStatic(core.clj:326)
	at mranderson.core$mranderson_resolved_deps_BANG_.invoke(core.clj:307)
	at mranderson.core$mranderson.invokeStatic(core.clj:357)
	at mranderson.core$mranderson.invoke(core.clj:333)
	at leiningen.inline_deps$inline_deps.invokeStatic(inline_deps.clj:65)
	at leiningen.inline_deps$inline_deps.doInvoke(inline_deps.clj:52)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.invoke(RestFn.java:410)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.with_profile$with_profiles_STAR_.invokeStatic(with_profile.clj:14)
	at leiningen.with_profile$with_profiles_STAR_.invoke(with_profile.clj:8)
	at leiningen.with_profile$apply_task_with_profiles.invokeStatic(with_profile.clj:53)
	at leiningen.with_profile$apply_task_with_profiles.invoke(with_profile.clj:45)
	at leiningen.with_profile$with_profile$fn__10482.invoke(with_profile.clj:85)
	at clojure.core$mapv$fn__8430.invoke(core.clj:6912)
	at clojure.core.protocols$fn__8144.invokeStatic(protocols.clj:168)
	at clojure.core.protocols$fn__8144.invoke(protocols.clj:124)
	at clojure.core.protocols$fn__8099$G__8094__8108.invoke(protocols.clj:19)
	at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
	at clojure.core.protocols$fn__8131.invokeStatic(protocols.clj:75)
	at clojure.core.protocols$fn__8131.invoke(protocols.clj:75)
	at clojure.core.protocols$fn__8073$G__8068__8086.invoke(protocols.clj:13)
	at clojure.core$reduce.invokeStatic(core.clj:6828)
	at clojure.core$mapv.invokeStatic(core.clj:6903)
	at clojure.core$mapv.invoke(core.clj:6903)
	at leiningen.with_profile$with_profile.invokeStatic(with_profile.clj:85)
	at leiningen.with_profile$with_profile.doInvoke(with_profile.clj:63)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.core.main$resolve_and_apply.invokeStatic(main.clj:343)
	at leiningen.core.main$resolve_and_apply.invoke(main.clj:336)
	at leiningen.core.main$_main$fn__6681.invoke(main.clj:452)
	at leiningen.core.main$_main.invokeStatic(main.clj:442)
	at leiningen.core.main$_main.doInvoke(main.clj:439)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.main$main_opt.invokeStatic(main.clj:491)
	at clojure.main$main_opt.invoke(main.clj:487)
	at clojure.main$main.invokeStatic(main.clj:598)
	at clojure.main$main.doInvoke(main.clj:561)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.main.main(main.java:37)
Caused by: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at clojure.tools.reader.impl.errors$throw_ex.invokeStatic(errors.clj:34)
	at clojure.tools.reader.impl.errors$throw_ex.doInvoke(errors.clj:24)
	at clojure.lang.RestFn.invoke(RestFn.java:442)
	at clojure.tools.reader.impl.errors$reader_error.invokeStatic(errors.clj:40)
	at clojure.tools.reader.impl.errors$reader_error.doInvoke(errors.clj:36)
	at clojure.lang.RestFn.invoke(RestFn.java:516)
	at clojure.tools.reader.impl.errors$throw_invalid.invokeStatic(errors.clj:97)
	at clojure.tools.reader.impl.errors$throw_invalid.invoke(errors.clj:96)
	at clojure.tools.reader.edn$read_symbol.invokeStatic(edn.clj:262)
	at clojure.tools.reader.edn$read_symbol.invoke(edn.clj:249)
	at clojure.tools.reader.edn$read.invokeStatic(edn.clj:407)
	at clojure.tools.reader.edn$read.invoke(edn.clj:371)
	at clojure.tools.reader.edn$read.invokeStatic(edn.clj:392)
	at clojure.tools.reader.edn$read.invoke(edn.clj:371)
	at clojure.tools.reader.edn$read_string.invokeStatic(edn.clj:440)
	at clojure.tools.reader.edn$read_string.invoke(edn.clj:429)
	at clojure.tools.reader.edn$read_string.invokeStatic(edn.clj:437)
	at clojure.tools.reader.edn$read_string.invoke(edn.clj:429)
	at rewrite_clj.reader$string__GT_edn.invokeStatic(reader.cljc:109)
	at rewrite_clj.reader$string__GT_edn.invoke(reader.cljc:106)
	at rewrite_clj.parser.token$symbol_node.invokeStatic(token.cljc:34)
	at rewrite_clj.parser.token$symbol_node.invoke(token.cljc:23)
	at rewrite_clj.parser.token$parse_token.invokeStatic(token.cljc:47)
	at rewrite_clj.parser.token$parse_token.invoke(token.cljc:37)
	at rewrite_clj.parser.core$eval4078$fn__4079.invoke(core.cljc:74)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser.core$parse_delim$fn__4070.invoke(core.cljc:54)
	at rewrite_clj.reader$read_repeatedly$fn__3108.invoke(reader.cljc:156)
	at clojure.core$repeatedly$fn__6448.invoke(core.clj:5149)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$take_while$fn__5902.invoke(core.clj:2904)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at rewrite_clj.reader$read_repeatedly.invokeStatic(reader.cljc:158)
	at rewrite_clj.reader$read_repeatedly.invoke(reader.cljc:152)
	at rewrite_clj.parser.core$parse_delim.invokeStatic(core.cljc:55)
	at rewrite_clj.parser.core$parse_delim.invoke(core.cljc:50)
	at rewrite_clj.parser.core$eval4148$fn__4149.invoke(core.cljc:201)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.reader$read_n.invokeStatic(reader.cljc:168)
	at rewrite_clj.reader$read_n.invoke(reader.cljc:160)
	at rewrite_clj.parser.core$parse_printables.invokeStatic(core.cljc:61)
	at rewrite_clj.parser.core$parse_printables.doInvoke(core.cljc:57)
	at clojure.lang.RestFn.invoke(RestFn.java:445)
	at rewrite_clj.parser.core$eval4110$fn__4111.invoke(core.cljc:118)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser.core$parse_delim$fn__4070.invoke(core.cljc:54)
	at rewrite_clj.reader$read_repeatedly$fn__3108.invoke(reader.cljc:156)
	at clojure.core$repeatedly$fn__6448.invoke(core.clj:5149)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$take_while$fn__5902.invoke(core.clj:2904)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.RT.next(RT.java:709)
	at clojure.core$next__5371.invokeStatic(core.clj:64)
	at clojure.core$dorun.invokeStatic(core.clj:3142)
	at clojure.core$doall.invokeStatic(core.clj:3148)
	at clojure.core$doall.invoke(core.clj:3148)
	at rewrite_clj.reader$read_repeatedly.invokeStatic(reader.cljc:158)
	at rewrite_clj.reader$read_repeatedly.invoke(reader.cljc:152)
	at rewrite_clj.parser.core$parse_delim.invokeStatic(core.cljc:55)
	at rewrite_clj.parser.core$parse_delim.invoke(core.cljc:50)
	at rewrite_clj.parser.core$eval4140$fn__4141.invoke(core.cljc:193)
	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
	at rewrite_clj.reader$read_with_meta.invokeStatic(reader.cljc:147)
	at rewrite_clj.reader$read_with_meta.invoke(reader.cljc:143)
	at rewrite_clj.parser.core$parse_next.invokeStatic(core.cljc:46)
	at rewrite_clj.parser.core$parse_next.invoke(core.cljc:44)
	at rewrite_clj.parser$parse.invokeStatic(parser.cljc:20)
	at rewrite_clj.parser$parse.invoke(parser.cljc:17)
	at mranderson.move$split_ns_form_ns_body.invokeStatic(move.clj:139)
	at mranderson.move$split_ns_form_ns_body.invoke(move.clj:130)
	at mranderson.move$replace_ns_symbol.invokeStatic(move.clj:256)
	at mranderson.move$replace_ns_symbol.invoke(move.clj:247)
	at clojure.lang.AFn.applyToHelper(AFn.java:178)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at mranderson.move$update_file.invokeStatic(move.clj:38)
	at mranderson.move$update_file.doInvoke(move.clj:32)
	at clojure.lang.RestFn.invoke(RestFn.java:566)
	at mranderson.move$replace_ns_symbol_in_source_files$fn__4897.invoke(move.clj:302)
	at clojure.core$pmap$fn__8447$fn__8448.invoke(core.clj:7022)
	at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:831)
make: *** [Makefile:10: .inline-deps] Error 1

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

I added some debug info and here's the ns form of the file it choked on:

(ns ^{:author "Alex Taggart", :doc "Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info "Hello World!")
      (log/error (Exception. "Did a thing") "Error: oops")
      (logged? 'user :info #"Hello")                           ; true
      (logged? 'user :error [Throwable #"thing"] #"Error:")    ; true
      (logged? 'user :debug "Hi"))                             ; false", :mranderson/inlined true} clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [clojure.tools.logging :refer [*logger-factory*]]
            [clojure.tools.logging.impl :as impl]))

This ns form is unreadable because the strings in the code example have lost their escape characters.

Here's the original as a reference:

(ns ^{:author "Alex Taggart"
      :doc
  "Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info \"Hello World!\")
      (log/error (Exception. \"Did a thing\") \"Error: oops\")
      (logged? 'user :info #\"Hello\")                           ; true
      (logged? 'user :error [Throwable #\"thing\"] #\"Error:\")    ; true
      (logged? 'user :debug \"Hi\"))                             ; false"}
    clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [clojure.tools.logging :refer [*logger-factory*]]
            [clojure.tools.logging.impl :as impl]))

@benedekfazekas
Copy link
Owner

hm.. I though rewrite-clj handled such strings but maybe not.. will check check this. that said this seems to be a different issue from the original,right? does this mean the load statements are now fine?

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

It doesn't get to the load statements because it fails pretty quickly.

@benedekfazekas
Copy link
Owner

bit confused here. how did you get to the original failure with the load statements then? you don't get this problem with the version of mranderson you used before reporting the original?

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

unzipping [ orchard  [ v0v7v3 ]]
unzipping [ toolsdepsalpha  [ v0v12v1048 ]]
unzipping [ api  [ v0v8v524 ]]
unzipping [ dataxml  [ v0v2v0-alpha6 ]]
unzipping [ datacodec  [ v0v1v0 ]]
unzipping [ maven-core  [ v3v8v2 ]]
unzipping [ maven-plugin-api  [ v3v8v2 ]]
unzipping [ maven-resolver-provider  [ v3v8v2 ]]
unzipping [ maven-model-builder  [ v3v8v2 ]]
unzipping [ maven-artifact  [ v3v8v2 ]]
unzipping [ http-client  [ v0v1v106 ]]
unzipping [ coreasync  [ v1v3v622 ]]
unzipping [ toolsanalyzerjvm  [ v1v1v0 ]]
unzipping [ corememoize  [ v1v0v236 ]]
unzipping [ corecache  [ v1v0v207 ]]
unzipping [ guice  [ v4v2v2 ]]
unzipping [ guava  [ v25v1-android ]]
unzipping [ maven-settings-builder  [ v3v8v2 ]]
unzipping [ maven-builder-support  [ v3v8v2 ]]
unzipping [ maven-shared-utils  [ v3v3v4 ]]
unzipping [ commons-io  [ v2v6 ]]
unzipping [ datapriority-map  [ v1v0v0 ]]
unzipping [ maven-repository-metadata  [ v3v8v2 ]]
unzipping [ maven-resolver-impl  [ v1v6v3 ]]
unzipping [ maven-resolver-connector-basic  [ v1v6v3 ]]
unzipping [ maven-resolver-transport-http  [ v1v6v3 ]]
unzipping [ maven-resolver-util  [ v1v6v3 ]]
unzipping [ orgeclipsesisuplexus  [ v0v3v4 ]]
unzipping [ orgeclipsesisuinject  [ v0v3v4 ]]
unzipping [ maven-model  [ v3v8v2 ]]
unzipping [ maven-resolver-transport-file  [ v1v6v3 ]]
unzipping [ jcl-over-slfj  [ v1v7v30 ]]
unzipping [ slfj-api  [ v1v7v30 ]]
unzipping [ toolsgitlibs  [ v2v3v167 ]]
unzipping [ dynapath  [ v1v1v0 ]]
unzipping [ rewrite-clj  [ v1v0v699-alpha ]]
unzipping [ cljfmt  [ v0v8v0 ]]
unzipping [ toolsreader  [ v1v3v6 ]]
unzipping [ jetty-client  [ v9v4v36vv20210114 ]]
unzipping [ jetty-http  [ v9v4v36vv20210114 ]]
unzipping [ jetty-io  [ v9v4v36vv20210114 ]]
unzipping [ cdi-api  [ v1v0 ]]
unzipping [ httpclient  [ v4v5v12 ]]
unzipping [ plexus-interpolation  [ v1v25 ]]
unzipping [ plexus-sec-dispatcher  [ v1v4 ]]
unzipping [ plexus-classworlds  [ v2v6v0 ]]
unzipping [ jobjc-annotations  [ v1v1 ]]
unzipping [ maven-resolver-spi  [ v1v6v3 ]]
unzipping [ commons-codec  [ v1v11 ]]
unzipping [ toolsnamespace  [ v1v1v0 ]]
unzipping [ javaclasspath  [ v1v0v0 ]]
unzipping [ checker-compat-qual  [ v2v0v0 ]]
unzipping [ diffutils  [ v1v3v0 ]]
unzipping [ jsr-api  [ v1v0 ]]
unzipping [ aopalliance  [ v1v0 ]]
unzipping [ maven-resolver-api  [ v1v6v3 ]]
unzipping [ fs  [ v1v6v307 ]]
unzipping [ httpcore  [ v4v4v13 ]]
unzipping [ maven-settings  [ v3v8v2 ]]
unzipping [ asm  [ v5v2 ]]
unzipping [ http-kit  [ v2v5v3 ]]
unzipping [ plexus-utils  [ v3v2v1 ]]
unzipping [ version-clj  [ v1v0v0 ]]
unzipping [ jetty-util  [ v9v4v36vv20210114 ]]
unzipping [ animal-sniffer-annotations  [ v1v14 ]]
unzipping [ toolscli  [ v1v0v206 ]]
unzipping [ toolslogging  [ v1v1v0 ]]
unzipping [ toolsanalyzer  [ v1v0v0 ]]
unzipping [ datajson  [ v2v3v1 ]]
unzipping [ compliment  [ v0v3v12 ]]
unzipping [ xz  [ v1v8 ]]
unzipping [ commons-lang  [ v3v8v1 ]]
unzipping [ commons-compress  [ v1v20 ]]
unzipping [ plexus-component-annotations  [ v2v1v0 ]]
  munge source files of plexus-component-annotations artifact on branch [] exposed false.
  munge source files of commons-compress artifact on branch [] exposed false.
  munge source files of commons-lang artifact on branch [] exposed false.
  munge source files of xz artifact on branch [] exposed false.
  munge source files of compliment artifact on branch [] exposed false.
Failed to update file #object[java.io.File 0x442615b4 /home/lars/git/refactor-nrepl/target/srcdeps/clojure/tools/logging/test.clj] function #object[mranderson.move$replace_ns_symbol 0x1249354 mranderson.move$replace_ns_symbol@1249354] (compliment.core refactor-nrepl.inlined-deps.compliment.v0v3v12.compliment.core :mranderson/inlined ".clj" ".clj")
Error encountered performing task 'inline-deps' with profile(s): 'base,system,provided,dev,1.10'
java.util.concurrent.ExecutionException: clojure.lang.ExceptionInfo: Invalid symbol: Error:. {:type :reader-exception, :ex-kind :reader-error}
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at clojure.core$deref_future.invokeStatic(core.clj:2300)

Here's a bit more of the printout. As you can see it crashes before it reaches clojure.tools.deps which contained the problematic load statements.

@benedekfazekas
Copy link
Owner

how did you get to clojure.tools.deps originally then? TOL maybe would worth to create a repro project with just clojure.tools.deps...

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

how did you get to clojure.tools.deps originally then?

make install in the refactor-nrepl repo on the hotload-deps branch gave me the load error with version 0.5.3. This branch (that I installed as 0.5.4-SNAPSHOT with lein install) gave me the error above when I ran make install again.

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

To repro the only dep you need is this one, from refactor-nrepl:

                 ^:inline-dep [org.clojure/tools.deps.alpha "0.12.1048"
                               :exclusions
                               [
                                com.cognitect.aws/s3
                                com.cognitect.aws/endpoints
                                javax.inject]]

It will cause this branch to fail.

tools.dep really puts mranderson through it's paces as it pulls in A LOT of deps :/

@benedekfazekas
Copy link
Owner

thx for the repro snippet. haha that is good in a way ;)

@expez
Copy link
Contributor Author

expez commented Nov 24, 2021

Here's an even better repro by modifying the new test you created for this branch:

(def tool-deps-alpha-example
  "(ns
  ^{:author \"Alex Taggart\"
    :doc
    \"Support for testing whether logging calls are made.

  Usage example:
    (require '[clojure.tools.logging :as log]
             '[clojure.tools.logging.test :refer [logged? with-log])

    (with-log
      (log/info \"Hello World!\")
      (log/error (Exception. \"Did a thing\") \"Error: oops\")
      (logged? 'user :info #\"Hello\")                           ; true
      (logged? 'user :error [Throwable #\"thing\"] #\"Error:\")    ; true
      (logged? 'user :debug \"Hi\"))                             ; false\"}

clojure.tools.deps.alpha)
   (load \"/clojure/tools/deps/alpha/extensions/maven\")")

@benedekfazekas
Copy link
Owner

can't really reproduce this with above as dblquotes inside the doc string should be double escaped. not even sure that is possible so just put the above example in a file and that is processed without a problem -- see latest commit on https://github.com/benedekfazekas/mranderson/tree/handle-load-stmt branch.

the maybe offending file is in tools logging btw: https://github.com/clojure/tools.logging/blob/master/src/main/clojure/clojure/tools/logging/test.clj will have an other go and see if mranderson can inline tools logging

@benedekfazekas
Copy link
Owner

mranderson does not seem to have a problem with tools logging. added it to mranderson.core-test/dependencies the test run fine:

lein test mranderson.core-test
retrieve dependencies and munge clojure source files
in RESOLVED-TREE mode, working on a resolved dependency tree
 [cljfmt "0.7.0"]
   [com.googlecode.java-diff-utils/diffutils "1.3.0"]
   [org.clojure/tools.cli "1.0.194"]
   [org.clojure/tools.reader "1.3.3"]
   [rewrite-clj "0.6.1"]
   [rewrite-cljs "0.4.5"]
 [org.clojure/data.xml "0.2.0-alpha6"]
   [org.clojure/data.codec "0.1.0"]
 [org.clojure/tools.logging "1.1.0"]
 [riddley "0.1.12"]
unzipping [ cljfmt  [ v0v7v0 ]]
unzipping [ rewrite-cljs  [ v0v4v5 ]]
unzipping [ dataxml  [ v0v2v0-alpha6 ]]
unzipping [ datacodec  [ v0v1v0 ]]
unzipping [ rewrite-clj  [ v0v6v1 ]]
unzipping [ toolsreader  [ v1v3v3 ]]
unzipping [ diffutils  [ v1v3v0 ]]
unzipping [ riddley  [ v0v1v12 ]]
  removing duplicated file with namespace mismatch: compiler.clj
  removing duplicated file with namespace mismatch: walk.clj
unzipping [ toolscli  [ v1v0v194 ]]
unzipping [ toolslogging  [ v1v1v0 ]]
  munge source files of toolslogging artifact on branch [] exposed false.
  munge source files of toolscli artifact on branch [] exposed false.
  munge source files of riddley artifact on branch [] exposed false.
  munge source files of diffutils artifact on branch [] exposed false.
  munge source files of toolsreader artifact on branch [] exposed false.
  munge source files of rewrite-clj artifact on branch [] exposed false.
  munge source files of datacodec artifact on branch [] exposed false.
  munge source files of dataxml artifact on branch [] exposed false.
  munge source files of rewrite-cljs artifact on branch [] exposed false.
  munge source files of cljfmt artifact on branch [] exposed false.

and after digging out the inlined file the ns macro looks like this:

;; Copyright (c) Alex Taggart. All rights reserved.  The use
;; and distribution terms for this software are covered by the Eclipse
;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this
;; distribution.  By using this software in any fashion, you are
;; agreeing to be bound by the terms of this license.  You must not
;; remove this notice, or any other, from this software.


(ns ^{:mranderson/inlined true} mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging.test
  (:import [clojure.lang Fn Keyword Namespace Symbol]
           java.util.Set
           java.util.regex.Pattern)
  (:require [mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging :refer [*logger-factory*]]
            [mranderson-test58044.toolslogging.v1v1v0.clojure.tools.logging.impl :as impl]))

so can't really repro the problem unfortunately. the load stmt thing is fixed too. let me know if i can be any help tho

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

2 participants