Merge native-deps functionality. Needs more testing.
This commit is contained in:
parent
ddf3d96f42
commit
665ad07b74
6 changed files with 51 additions and 49 deletions
|
@ -77,7 +77,7 @@
|
|||
(symlink {:link destination
|
||||
:resource (.getCanonicalPath (File. dir f))}))))
|
||||
|
||||
(defn make-deps-task [project deps-set]
|
||||
(defn make-deps-task [project & [deps-set]]
|
||||
(let [deps-task (DependenciesTask.)]
|
||||
(.setProject deps-task lancet/ant-project)
|
||||
;; in maven-ant-tasks (at least 2.0.10 and 2.1.1) if there's an
|
||||
|
@ -95,62 +95,64 @@
|
|||
(.setPathId deps-task (:name project))
|
||||
(doseq [repo (make-repositories project)]
|
||||
(.addConfiguredRemoteRepository deps-task repo))
|
||||
(doseq [dep (project deps-set)]
|
||||
(doseq [dep (project (or deps-set :dependencies))]
|
||||
(.addDependency deps-task (make-dependency dep project)))
|
||||
deps-task))
|
||||
|
||||
(defn use-dev-deps? [project skip-dev]
|
||||
(and (not skip-dev) (seq (:dev-dependencies project))))
|
||||
|
||||
(defn- sha1-digest [content]
|
||||
(.toString (BigInteger. 1 (-> (MessageDigest/getInstance "SHA1")
|
||||
(.digest (.getBytes content)))) 16))
|
||||
|
||||
(defn- deps-checksum [project]
|
||||
(sha1-digest (pr-str [(:dependencies project)
|
||||
(:dev-dependencies project)])))
|
||||
(:dev-dependencies project)
|
||||
(:native-dependencies project)])))
|
||||
|
||||
(defn- new-deps-checksum-file [project]
|
||||
(File. (:root project) ".lein-deps-sum"))
|
||||
|
||||
(defn fetch-deps? [project deps-set skip-dev]
|
||||
(defn- has-dependencies? [project]
|
||||
(some (comp seq project) [:dependencies :dev-dependencies
|
||||
:native-dependencies]))
|
||||
|
||||
(defn fetch-deps? [project]
|
||||
(let [deps-checksum-file (new-deps-checksum-file project)]
|
||||
(and (or (seq (project deps-set)) (use-dev-deps? project skip-dev))
|
||||
(or (not (:checksum-deps project))
|
||||
(not (:checksum-deps (user-settings)))
|
||||
(empty? (.list (File. (:library-path project))))
|
||||
(and (has-dependencies? project)
|
||||
(or (empty? (.list (File. (:library-path project))))
|
||||
(not (:checksum-deps project (:checksum-deps (user-settings))))
|
||||
(not (.exists deps-checksum-file))
|
||||
(not= (slurp deps-checksum-file) (deps-checksum project))))))
|
||||
|
||||
(defn ^{:help-arglists '([])} deps
|
||||
(defn deps
|
||||
"Download :dependencies and put them in :library-path."
|
||||
([project skip-dev deps-set]
|
||||
(when (fetch-deps? project deps-set skip-dev)
|
||||
(when-not (or (:disable-deps-clean project)
|
||||
(:disable-implicit-clean project))
|
||||
(delete-file-recursively (:library-path project) :silently))
|
||||
(let [deps-task (doto (make-deps-task project deps-set) .execute)
|
||||
fileset (.getReference lancet/ant-project
|
||||
(.getFilesetId deps-task))]
|
||||
(.mkdirs (File. (:library-path project)))
|
||||
(copy-dependencies (:jar-behavior project)
|
||||
;; Leiningen's process only has access to lib/dev.
|
||||
(if (:eval-in-leiningen project)
|
||||
"lib/dev"
|
||||
(:library-path project))
|
||||
true fileset)
|
||||
(when (use-dev-deps? project skip-dev)
|
||||
;; TODO: skip-dev/deps-set args are nonsense; we should
|
||||
;; just replace :dependencies with :dev-dependencies and
|
||||
;; recur in 2.0.
|
||||
(deps (assoc project :library-path (str (:root project) "/lib/dev")
|
||||
:disable-implicit-clean (if (:eval-in-leiningen project)
|
||||
false
|
||||
(:disable-implicit-clean
|
||||
project)))
|
||||
true :dev-dependencies))
|
||||
(when (:checksum-deps project)
|
||||
(spit (new-deps-checksum-file project) (deps-checksum project)))
|
||||
fileset)))
|
||||
([project skip-dev] (deps project skip-dev :dependencies))
|
||||
([project] (deps project false)))
|
||||
[project]
|
||||
(when (fetch-deps? project)
|
||||
(when-not (or (:disable-deps-clean project)
|
||||
(:disable-implicit-clean project))
|
||||
(delete-file-recursively (:library-path project) :silently))
|
||||
(let [deps-task (make-deps-task project)]
|
||||
(when (seq (:dependencies project))
|
||||
(.execute deps-task)
|
||||
(.mkdirs (File. (:library-path project)))
|
||||
(copy-dependencies (:jar-behavior project)
|
||||
;; Leiningen's process only has access to lib/dev.
|
||||
(if (:eval-in-leiningen project)
|
||||
"lib/dev"
|
||||
(:library-path project))
|
||||
true (.getReference lancet/ant-project
|
||||
(.getFilesetId deps-task))))
|
||||
(when (seq (:native-dependencies project))
|
||||
(deps (assoc project :disable-deps-clean true
|
||||
:dependencies (:native-dependencies project)
|
||||
:native-dependencies nil :dev-dependencies nil)))
|
||||
(when (seq (:dev-dependencies project))
|
||||
(deps (assoc project :library-path (str (:root project) "/lib/dev")
|
||||
:dependencies (:dev-dependencies project)
|
||||
:native-dependencies nil :dev-dependencies nil
|
||||
:disable-implicit-clean (if (:eval-in-leiningen project)
|
||||
false
|
||||
(:disable-implicit-clean
|
||||
project)))))
|
||||
(when (:checksum-deps project)
|
||||
(spit (new-deps-checksum-file project) (deps-checksum project)))
|
||||
(.getReference lancet/ant-project (.getFilesetId deps-task)))))
|
||||
|
|
|
@ -67,6 +67,7 @@ shell wrappers in ~/.lein/bin when provided."
|
|||
;; TODO: use lancet/unjar?
|
||||
(try (extract-jar (file jarfile) temp-project)
|
||||
(binding [copy-dependencies (constantly nil)]
|
||||
(deps (read-project (format "%s/project.clj" temp-project)) true))
|
||||
(deps (dissoc (read-project (format "%s/project.clj" temp-project))
|
||||
:dev-dependencies :native-dependencies)))
|
||||
(finally
|
||||
(delete-file-recursively temp-project :silently))))))
|
||||
|
|
|
@ -202,7 +202,8 @@ function in that namespace will be used as the main-class for executable jar."
|
|||
deps (memoize deps)]
|
||||
(when (zero? (compile/compile project))
|
||||
(let [jar-path (get-jar-filename project jar-name)
|
||||
deps-fileset (deps project)]
|
||||
deps-fileset (deps (dissoc project :dev-dependencies
|
||||
:native-dependencies))]
|
||||
(write-jar project jar-path (filespecs project deps-fileset))
|
||||
(println "Created" jar-path)
|
||||
jar-path))))
|
||||
|
|
|
@ -37,7 +37,7 @@ Syntax: lein plugin install [GROUP/]ARTIFACT-ID VERSION
|
|||
_ (extract-jar (file jarfile) temp-project)
|
||||
project (read-project (str (file temp-project "project.clj")))
|
||||
standalone-filename (plugin-standalone-filename group name version)]
|
||||
(deps (dissoc project :dev-dependencies))
|
||||
(deps (dissoc project :dev-dependencies :native-dependencies))
|
||||
(with-open [out (-> (file plugins-path standalone-filename)
|
||||
(FileOutputStream.)
|
||||
(ZipOutputStream.))]
|
||||
|
|
|
@ -25,8 +25,7 @@
|
|||
(let [jars (set (map #(.getName %)
|
||||
(.listFiles (file (:root dev-deps-project)
|
||||
"lib" "dev"))))]
|
||||
(doseq [j ["clojure-1.2.0.jar"]]
|
||||
(is (jars j)))))
|
||||
(is (contains? jars "clojure-1.2.0.jar"))))
|
||||
|
||||
(deftest test-snapshots-releases
|
||||
(try
|
||||
|
|
3
todo.org
3
todo.org
|
@ -40,12 +40,11 @@ See also https://github.com/technomancy/leiningen/issues
|
|||
- improve test coverage
|
||||
- new push task based on clj-ssh
|
||||
lein-clojars task doesn't support DSA keys
|
||||
- merge lucene-based lein-search plugin
|
||||
* For 1.6
|
||||
- Merge lein-search
|
||||
- Merge lein-retest
|
||||
- Merge native-deps
|
||||
- Add leiningen.util.inject namespace
|
||||
- Add leiningen.util.injected namespace
|
||||
- Trampoline functionality
|
||||
http://groups.google.com/group/leiningen/browse_thread/thread/a07a7f10edb77c9b
|
||||
* For 1.5.1
|
||||
|
|
Loading…
Reference in a new issue