diff options
Diffstat (limited to 'lux-lein')
-rw-r--r-- | lux-lein/src/leiningen/lux/builder.clj | 8 | ||||
-rw-r--r-- | lux-lein/src/leiningen/lux/packager.clj | 164 | ||||
-rw-r--r-- | lux-lein/src/leiningen/lux/test.clj | 16 |
3 files changed, 95 insertions, 93 deletions
diff --git a/lux-lein/src/leiningen/lux/builder.clj b/lux-lein/src/leiningen/lux/builder.clj index 3600ffda7..fe7c09750 100644 --- a/lux-lein/src/leiningen/lux/builder.clj +++ b/lux-lein/src/leiningen/lux/builder.clj @@ -10,15 +10,15 @@ (do (when-let [jvm-module (get-in program-modules [:jvm])] (when (&utils/run-process (&utils/compile-path project "jvm" jvm-module (get project :source-paths (list))) nil - "[BUILD BEGIN]" - "[BUILD END]") + "[JVM COMPILATION BEGAN]" + "[JVM COMPILATION ENDED]") (&packager/package project "jvm" jvm-module (get project :resource-paths (list))) true)) (when-let [js-module (get-in program-modules [:js])] (when (&utils/run-process (&utils/compile-path project "js" js-module (get project :source-paths (list))) nil - "[BUILD BEGIN]" - "[BUILD END]") + "[JS COMPILATION BEGAN]" + "[JS COMPILATION ENDED]") (&packager/package project "js" js-module (get project :resource-paths (list))) true)) (when (not (or (get-in program-modules [:jvm]) diff --git a/lux-lein/src/leiningen/lux/packager.clj b/lux-lein/src/leiningen/lux/packager.clj index afb4a82db..6fbc45d14 100644 --- a/lux-lein/src/leiningen/lux/packager.clj +++ b/lux-lein/src/leiningen/lux/packager.clj @@ -126,88 +126,90 @@ (defn ^:private package-jvm "(-> Text (List Text) Null)" [project module resources-dirs] - (let [output-package-name (get project :jar-name &utils/output-package) - output-dir (&utils/prepare-path (get-in project [:lux :target] &utils/default-jvm-output-dir)) - output-package (str output-dir java.io.File/separator output-package-name) - !all-jar-files (atom {}) - includes-android? (boolean (some #(-> % first (= 'com.google.android/android)) - (get project :dependencies))) - project* (-> project - (update-in [:dependencies] (fn [_deps] - ;; Skip the last two, - ;; because they are: - ;; tools.nrepl-0.2.12.jar and - ;; clojure-complete-0.2.4.jar - ;; and they belong to Leiningen. - (take (- (count _deps) 2) _deps)))) - deps (->> project* - (classpath/resolve-managed-dependencies :dependencies :managed-dependencies) - (map #(.getAbsolutePath ^File %)))] - (do (.delete (new File output-package)) - (with-open [out (new JarOutputStream - (->> output-package (new File) (new FileOutputStream)) - (manifest project module includes-android?))] - (do (doseq [$group (.listFiles (new File output-dir))] - (write-module! $group out output-dir)) - (when (not (get-in project [:lux :android])) - (write-resources! out resources-dirs)) - (doseq [^String file-path deps] - (add-jar! (new File file-path) project !all-jar-files)) - (doseq [[_ [entry-data entry]] @!all-jar-files] - (doto out - (.putNextEntry (doto entry (.setCompressedSize -1))) - (.write entry-data 0 (alength entry-data)) - (.flush) - (.closeEntry))) - nil)) - (when (get-in project [:lux :android]) - (let [output-dir-context (new File (get-in project [:lux :target] &utils/default-jvm-output-dir)) - output-dex "classes.dex" - _ (do (.delete (new File output-dex)) - (&utils/run-process (str "dx --dex --output=" output-dex " " output-package-name) - output-dir-context - "[DX BEGIN]" - "[DX END]")) - manifest-path (get-in project [:lux :android :manifest] default-manifest-file) - sdk-path (get-in project [:lux :android :sdk]) - android-path (str sdk-path java.io.File/separator "platforms" java.io.File/separator "android-" (get-in project [:lux :android :version]) java.io.File/separator "android.jar") - _ (assert (.exists (new File android-path)) - (str "Can't find Android JAR: " android-path)) - output-apk-unaligned-name (string/replace output-package-name #"\.jar$" ".apk.unaligned") - output-apk-unaligned-path (str output-dir java.io.File/separator output-apk-unaligned-name) - output-apk-path (string/replace output-package #"\.jar$" ".apk") - current-working-dir (.getCanonicalPath (new File ".")) - _ (do (.delete (new File output-apk-unaligned-path)) - (&utils/run-process (str "aapt package -f -M " manifest-path " -I " android-path " -F " output-apk-unaligned-path - (apply str " " (interleave (repeat (count resources-dirs) - "-A ") - (filter #(.exists (new File %)) - resources-dirs))) - (apply str " " (interleave (repeat (count resources-dirs) - "-S ") - (->> (get-in project [:lux :android :resources] ["android-resources"]) - (map (partial str current-working-dir java.io.File/separator)) - (filter #(.exists (new File %))))))) - nil - "[AAPT PACKAGE BEGIN]" - "[AAPT PACKAGE END]") - (&utils/run-process (str "aapt add -f " output-apk-unaligned-name " " output-dex) - output-dir-context - "[AAPT ADD BEGIN]" - "[AAPT ADD END]") - (when-let [path (get-in project [:lux :android :keystore :path])] - (when-let [alias (get-in project [:lux :android :keystore :alias])] - (when-let [password (get-in project [:lux :android :keystore :password])] - (&utils/run-process (str "jarsigner -storepass " password " -keystore " path " " output-apk-unaligned-name " " alias) - output-dir-context - "[JARSIGNER BEGIN]" - "[JARSIGNER END]")))) - (do (.delete (new File output-apk-path)) - (&utils/run-process (str "zipalign 4 " output-apk-unaligned-path " " output-apk-path) + (do (println "[JVM PACKAGING BEGAN]") + (let [output-package-name (get project :jar-name &utils/output-package) + output-dir (&utils/prepare-path (get-in project [:lux :target] &utils/default-jvm-output-dir)) + output-package (str output-dir java.io.File/separator output-package-name) + !all-jar-files (atom {}) + includes-android? (boolean (some #(-> % first (= 'com.google.android/android)) + (get project :dependencies))) + project* (-> project + (update-in [:dependencies] (fn [_deps] + ;; Skip the last two, + ;; because they are: + ;; tools.nrepl-0.2.12.jar and + ;; clojure-complete-0.2.4.jar + ;; and they belong to Leiningen. + (take (- (count _deps) 2) _deps)))) + deps (->> project* + (classpath/resolve-managed-dependencies :dependencies :managed-dependencies) + (map #(.getAbsolutePath ^File %)))] + (do (.delete (new File output-package)) + (with-open [out (new JarOutputStream + (->> output-package (new File) (new FileOutputStream)) + (manifest project module includes-android?))] + (do (doseq [$group (.listFiles (new File output-dir))] + (write-module! $group out output-dir)) + (when (not (get-in project [:lux :android])) + (write-resources! out resources-dirs)) + (doseq [^String file-path deps] + (add-jar! (new File file-path) project !all-jar-files)) + (doseq [[_ [entry-data entry]] @!all-jar-files] + (doto out + (.putNextEntry (doto entry (.setCompressedSize -1))) + (.write entry-data 0 (alength entry-data)) + (.flush) + (.closeEntry))) + nil)) + (when (get-in project [:lux :android]) + (let [output-dir-context (new File (get-in project [:lux :target] &utils/default-jvm-output-dir)) + output-dex "classes.dex" + _ (do (.delete (new File output-dex)) + (&utils/run-process (str "dx --dex --output=" output-dex " " output-package-name) + output-dir-context + "[ANDROID DX BEGAN]" + "[ANDROID DX ENDED]")) + manifest-path (get-in project [:lux :android :manifest] default-manifest-file) + sdk-path (get-in project [:lux :android :sdk]) + android-path (str sdk-path java.io.File/separator "platforms" java.io.File/separator "android-" (get-in project [:lux :android :version]) java.io.File/separator "android.jar") + _ (assert (.exists (new File android-path)) + (str "Cannot find Android JAR: " android-path)) + output-apk-unaligned-name (string/replace output-package-name #"\.jar$" ".apk.unaligned") + output-apk-unaligned-path (str output-dir java.io.File/separator output-apk-unaligned-name) + output-apk-path (string/replace output-package #"\.jar$" ".apk") + current-working-dir (.getCanonicalPath (new File ".")) + _ (do (.delete (new File output-apk-unaligned-path)) + (&utils/run-process (str "aapt package -f -M " manifest-path " -I " android-path " -F " output-apk-unaligned-path + (apply str " " (interleave (repeat (count resources-dirs) + "-A ") + (filter #(.exists (new File %)) + resources-dirs))) + (apply str " " (interleave (repeat (count resources-dirs) + "-S ") + (->> (get-in project [:lux :android :resources] ["android-resources"]) + (map (partial str current-working-dir java.io.File/separator)) + (filter #(.exists (new File %))))))) nil - "[ZIPALIGN BEGIN]" - "[ZIPALIGN END]")))] - nil))))) + "[ANDROID AAPT-PACKAGE BEGAN]" + "[ANDROID AAPT-PACKAGE ENDED]") + (&utils/run-process (str "aapt add -f " output-apk-unaligned-name " " output-dex) + output-dir-context + "[ANDROID AAPT-ADD BEGAN]" + "[ANDROID AAPT-ADD ENDED]") + (when-let [path (get-in project [:lux :android :keystore :path])] + (when-let [alias (get-in project [:lux :android :keystore :alias])] + (when-let [password (get-in project [:lux :android :keystore :password])] + (&utils/run-process (str "jarsigner -storepass " password " -keystore " path " " output-apk-unaligned-name " " alias) + output-dir-context + "[ANDROID JARSIGNER BEGAN]" + "[ANDROID JARSIGNER ENDED]")))) + (do (.delete (new File output-apk-path)) + (&utils/run-process (str "zipalign 4 " output-apk-unaligned-path " " output-apk-path) + nil + "[ANDROID ZIPALIGN BEGAN]" + "[ANDROID ZIPALIGN ENDED]")))] + nil)))) + (println "[JVM PACKAGING ENDED]"))) (defn package "(-> Text Text (List Text) Null)" diff --git a/lux-lein/src/leiningen/lux/test.clj b/lux-lein/src/leiningen/lux/test.clj index 2164db5d8..209c060c4 100644 --- a/lux-lein/src/leiningen/lux/test.clj +++ b/lux-lein/src/leiningen/lux/test.clj @@ -11,8 +11,8 @@ (do (when-let [jvm-module (get-in tests-modules [:jvm])] (when (&utils/run-process (&utils/compile-path project "jvm" jvm-module (concat (:test-paths project) (:source-paths project))) nil - "[BUILD BEGIN]" - "[BUILD END]") + "[JVM COMPILATION BEGAN]" + "[JVM COMPILATION ENDED]") (let [java-cmd (get project :java-cmd "java") jvm-opts (->> (get project :jvm-opts) (interpose " ") (reduce str "")) output-package (str (get-in project [:lux :target] &utils/default-jvm-output-dir) "/" @@ -20,21 +20,21 @@ (do (&packager/package project "jvm" jvm-module (get project :resource-paths (list))) (&utils/run-process (str java-cmd " " jvm-opts " -jar " output-package) nil - "[TEST BEGIN]" - "[TEST END]") + "[JVM TESTING BEGAN]" + "[JVM TESTING ENDED]") true)))) (when-let [js-module (get-in tests-modules [:js])] (when (&utils/run-process (&utils/compile-path project "js" js-module (concat (:test-paths project) (:source-paths project))) nil - "[BUILD BEGIN]" - "[BUILD END]") + "[JS COMPILATION BEGAN]" + "[JS COMPILATION ENDED]") (let [output-package (str (get-in project [:lux :target] &utils/default-js-output-dir) "/" "program.js")] (do (&packager/package project "js" js-module (get project :resource-paths (list))) (&utils/run-process (str "node " output-package) nil - "[TEST BEGIN]" - "[TEST END]") + "[JS TESTING BEGAN]" + "[JS TESTING ENDED]") true)))) (when (not (or (get-in tests-modules [:jvm]) (get-in tests-modules [:js]))) |