taoensso / timbre

Pure Clojure/Script logging library
https://www.taoensso.com/timbre
Eclipse Public License 1.0
1.44k stars 171 forks source link

Specifying TIMBRE_LEVEL can cause tools.deps to crash #294

Closed ivarref closed 5 years ago

ivarref commented 5 years ago

Hi,

and thanks for a fine library!

It seems that specifying TIMBRE_LEVEL can cause tools.deps to crash. I'm using the latest homebrew Clojure version, 1.10.1.466.

File to reproduce the behaviour:

#!/usr/bin/env bash

set -ex

echo '(ns main) (defn -main [& _] (println "Hello world"))' > main.clj
echo '
{:paths ["."]
 :deps {com.taoensso/timbre        {:mvn/version "4.10.0"}
        com.fzakaria/slf4j-timbre  {:mvn/version "0.3.14"}
        org.slf4j/log4j-over-slf4j {:mvn/version "1.7.14"}
        org.slf4j/jcl-over-slf4j   {:mvn/version "1.7.14"}
        org.slf4j/jul-to-slf4j     {:mvn/version "1.7.14"}
        pack/pack.alpha            {:git/url    "https://github.com/juxt/pack.alpha.git"
                                    :sha        "9911c70bcfd6e94383d3d54b6e8befa492222926"
                                    :exclusions [org.slf4j/slf4j-nop]}}}' > deps.edn

clojure \
-J-DTIMBRE_LEVEL=warn \
-Sverbose \
-m mach.pack.alpha.jib \
--verbose \
--quiet \
--image-name ivarref/demo:latest \
--image-type docker \
-m main

Output on my machine:

+ echo '(ns main) (defn -main [& _] (println "Hello world"))'
+ echo '
{:paths ["."]
 :deps {com.taoensso/timbre        {:mvn/version "4.10.0"}
        com.fzakaria/slf4j-timbre  {:mvn/version "0.3.14"}
        org.slf4j/log4j-over-slf4j {:mvn/version "1.7.14"}
        org.slf4j/jcl-over-slf4j   {:mvn/version "1.7.14"}
        org.slf4j/jul-to-slf4j     {:mvn/version "1.7.14"}
        pack/pack.alpha            {:git/url    "https://github.com/juxt/pack.alpha.git"
                                    :sha        "9911c70bcfd6e94383d3d54b6e8befa492222926"
                                    :exclusions [org.slf4j/slf4j-nop]}}}'
+ clojure -J-DTIMBRE_LEVEL=warn -Sverbose -m mach.pack.alpha.jib --verbose --quiet --image-name ivarref/demo:latest --image-type docker -m main
version      = 1.10.1.466
install_dir  = /home/linuxbrew/.linuxbrew/Cellar/clojure/1.10.1.466
config_dir   = /home/ire/.clojure
config_paths = /home/linuxbrew/.linuxbrew/Cellar/clojure/1.10.1.466/deps.edn /home/ire/.clojure/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/709336129.cp

Refreshing classpath
Compile-time (elision) Timbre level: warn
Execution error (NullPointerException) at clojure.tools.deps.alpha.util.maven/make-session (maven.clj:164).
null

Full report at:
/tmp/clojure-5345125585733153541.edn

$ cat /tmp/clojure-5345125585733153541.edn
{:clojure.main/message
 "Execution error (NullPointerException) at clojure.tools.deps.alpha.util.maven/make-session (maven.clj:164).\nnull\n",
 :clojure.main/triage
 {:clojure.error/class java.lang.NullPointerException,
  :clojure.error/line 164,
  :clojure.error/symbol
  clojure.tools.deps.alpha.util.maven/make-session,
  :clojure.error/source "maven.clj",
  :clojure.error/phase :execution},
 :clojure.main/trace
 {:via
  [{:type java.lang.NullPointerException,
    :at
    [clojure.tools.deps.alpha.util.maven$make_session
     invokeStatic
     "maven.clj"
     164]}],
  :trace
  [[clojure.tools.deps.alpha.util.maven$make_session
    invokeStatic
    "maven.clj"
    164]
   [clojure.tools.deps.alpha.util.maven$make_session
    invoke
    "maven.clj"
    161]
   [clojure.tools.deps.alpha.extensions.maven$eval414$fn__416
    invoke
    "maven.clj"
    93]
   [clojure.lang.MultiFn invoke "MultiFn.java" 244]
   [clojure.tools.deps.alpha$expand_deps$fn__788
    invoke
    "alpha.clj"
    192]
   [clojure.tools.deps.alpha$expand_deps invokeStatic "alpha.clj" 191]
   [clojure.tools.deps.alpha$expand_deps invoke "alpha.clj" 172]
   [clojure.tools.deps.alpha$resolve_deps invokeStatic "alpha.clj" 239]
   [clojure.tools.deps.alpha$resolve_deps invoke "alpha.clj" 221]
   [mach.pack.alpha.impl.tools_deps$parse_deps_map
    invokeStatic
    "tools_deps.clj"
    77]
   [mach.pack.alpha.impl.tools_deps$parse_deps_map
    invoke
    "tools_deps.clj"
    71]
   [mach.pack.alpha.jib$_main invokeStatic "jib.clj" 214]
   [mach.pack.alpha.jib$_main doInvoke "jib.clj" 189]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.core$apply invokeStatic "core.clj" 665]
   [clojure.main$main_opt invokeStatic "main.clj" 514]
   [clojure.main$main_opt invoke "main.clj" 510]
   [clojure.main$main invokeStatic "main.clj" 664]
   [clojure.main$main doInvoke "main.clj" 616]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.main main "main.java" 40]]}}

I'm not sure what is to blame here. Tools.deps or Timbre.

Edit: Update to use local deps.edn file.

Thanks and kind regards.

ivarref commented 5 years ago

Seems this is an issue with pack.alpha, so I will move it there.

Regards.