Skip to content

Commit 567176d

Browse files
committed
Compile all namespaces in paths
1 parent 4d0b4de commit 567176d

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

deps.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{:paths ["src"]
22
:deps {org.clojure/clojure {:mvn/version "1.10.0"}
3-
org.clojure/tools.deps.alpha {:mvn/version "0.6.480"}}}
3+
org.clojure/tools.deps.alpha {:mvn/version "0.6.496"}
4+
org.clojure/tools.namespace {:mvn/version "0.2.11"}}}

src/clj/native_image.clj

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
(:require [clojure.java.io :as io]
44
[clojure.string :as cs]
55
[clojure.tools.deps.alpha :as deps]
6-
[clojure.tools.deps.alpha.reader :as deps.reader])
7-
(:import (java.io File BufferedReader)))
6+
[clojure.tools.deps.alpha.reader :as deps.reader]
7+
[clojure.tools.namespace.find :refer [find-namespaces-in-dir]])
8+
(:import (java.io BufferedReader)))
89

910
(defn deps->classpath
1011
"Returns the classpath according to deps.edn, adds *compile-path*."
1112
[deps-map]
12-
(let [lib-map (deps/resolve-deps deps-map nil)]
13-
(deps/make-classpath lib-map (:paths deps-map) {:extra-paths [*compile-path*]})))
13+
(deps/make-classpath
14+
(deps/resolve-deps deps-map nil)
15+
(:paths deps-map)
16+
{:extra-paths (conj (:extra-paths deps-map) *compile-path*)}))
1417

1518
(defn merged-deps []
1619
"Merges install, user, local deps.edn maps left-to-right."
@@ -46,9 +49,10 @@
4649
(apply sh bin cli-args)))
4750

4851
(defn prep-compile-path []
49-
(doseq [file (-> (io/file *compile-path*) (file-seq) (rest) (reverse))]
50-
(io/delete-file file))
51-
(.mkdir (io/file *compile-path*)))
52+
(let [compile-path (io/file *compile-path*)]
53+
(doseq [file (-> compile-path (file-seq) (rest) (reverse))]
54+
(io/delete-file file))
55+
(.mkdir compile-path)))
5256

5357
(defn native-image-bin-path []
5458
(-> (io/file (System/getenv "GRAALVM_HOME") "bin/native-image")
@@ -66,19 +70,17 @@
6670
(binding [*out* *err*] (println "Main namespace required e.g. \"script\" if main file is ./script.clj"))
6771
(System/exit 1))
6872

69-
(println "Loading" main-ns)
70-
(load (-> main-ns
71-
(cs/replace "." File/separator)
72-
(munge-class-name)))
73+
(let [deps-map (merged-deps)
74+
namespaces (mapcat (comp find-namespaces-in-dir io/file) (:paths deps-map))]
75+
(prep-compile-path)
76+
(doseq [ns namespaces]
77+
(println "Compiling" ns)
78+
(compile (symbol ns)))
7379

74-
(println "Compiling" main-ns)
75-
(prep-compile-path)
76-
(compile (symbol main-ns))
77-
78-
(let [classpath (deps->classpath (merged-deps))
79-
class-name (munge-class-name main-ns)]
80-
(println (format "Building native image '%s' with classpath '%s'" class-name classpath))
81-
(System/exit (exec-native-image nat-img-path nat-img-opts classpath class-name)))))
80+
(let [classpath (deps->classpath deps-map)
81+
class-name (munge-class-name main-ns)]
82+
(println (format "Building native image with classpath '%s'" classpath))
83+
(System/exit (exec-native-image nat-img-path nat-img-opts classpath class-name))))))
8284

8385
(defn -main [main-ns & args]
8486
(try

0 commit comments

Comments
 (0)