From 1dffa74b8e02bddfa43a01031a7a8caace0f8e9e Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Thu, 13 Oct 2022 18:27:17 +0200 Subject: [PATCH] [nop] Update project template --- .github/workflows/build.yml | 25 ---------- .github/workflows/graal-tests.yml | 32 ++++++++++++ .github/workflows/main-tests.yml | 30 +++++++++++ CHANGELOG.md | 2 +- bb.edn | 10 ++++ bb/graal_tests.clj | 36 ++++++++++++++ project.clj | 82 +++++++++++++++++-------------- test/taoensso/graal_tests.clj | 5 ++ 8 files changed, 160 insertions(+), 62 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/graal-tests.yml create mode 100644 .github/workflows/main-tests.yml create mode 100644 bb.edn create mode 100755 bb/graal_tests.clj create mode 100644 test/taoensso/graal_tests.clj diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 3edb0f1..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: build - -on: [push, pull_request] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 14 - - - name: Cache deps - uses: actions/cache@v1 - id: cache-deps - with: - path: ~/.m2/repository - key: ${{ runner.os }}-java14-${{ hashFiles('project.clj') }} - restore-keys: | - ${{ runner.os }}-java14- - - - name: Run tests for Java 14 - run: | - lein test diff --git a/.github/workflows/graal-tests.yml b/.github/workflows/graal-tests.yml new file mode 100644 index 0000000..b2ea89b --- /dev/null +++ b/.github/workflows/graal-tests.yml @@ -0,0 +1,32 @@ +name: Graal tests +on: [push, pull_request] + +jobs: + test: + strategy: + matrix: + java: ['17'] + os: [ubuntu-latest, macOS-latest, windows-latest] + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: graalvm/setup-graalvm@v1 + with: + version: 'latest' + java-version: ${{ matrix.java }} + components: 'native-image' + github-token: ${{ secrets.GITHUB_TOKEN }} + + - uses: DeLaGuardo/setup-clojure@10.0 + with: + lein: latest + bb: latest + + - uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: deps-${{ hashFiles('deps.edn') }} + restore-keys: deps- + + - run: bb graal-tests diff --git a/.github/workflows/main-tests.yml b/.github/workflows/main-tests.yml new file mode 100644 index 0000000..900a96e --- /dev/null +++ b/.github/workflows/main-tests.yml @@ -0,0 +1,30 @@ +name: Main tests +on: [push, pull_request] + +jobs: + tests: + strategy: + matrix: + java: ['17', '18', '19'] + os: [ubuntu-latest] + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: 'corretto' + java-version: ${{ matrix.java }} + + - uses: DeLaGuardo/setup-clojure@10.0 + with: + lein: latest + + - uses: actions/cache@v3 + id: cache-deps + with: + path: ~/.m2/repository + key: deps-${{ hashFiles('project.clj') }} + restore-keys: deps- + + - run: lein test-all diff --git a/CHANGELOG.md b/CHANGELOG.md index 99f062e..17f9841 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -> This project uses [Break Versioning](https://github.com/ptaoussanis/encore/blob/master/BREAK-VERSIONING.md) as of **Aug 16, 2014**. +This project uses Break Versioning (https://www.taoensso.com/break-versioning) ## v3.2.0 / 2022 Jul 18 diff --git a/bb.edn b/bb.edn new file mode 100644 index 0000000..5721f2a --- /dev/null +++ b/bb.edn @@ -0,0 +1,10 @@ +{:paths ["bb"] + :tasks + {:requires ([graal-tests]) + graal-tests + {:doc "Run Graal native-image tests" + :task + (do + (graal-tests/uberjar) + (graal-tests/native-image) + (graal-tests/run-tests))}}} diff --git a/bb/graal_tests.clj b/bb/graal_tests.clj new file mode 100755 index 0000000..b8c00d6 --- /dev/null +++ b/bb/graal_tests.clj @@ -0,0 +1,36 @@ +#!/usr/bin/env bb + +(ns graal-tests + (:require + [clojure.string :as str] + [babashka.fs :as fs] + [babashka.process :refer [shell]])) + +(defn uberjar [] + (let [command "lein with-profiles +graal-tests uberjar" + command + (if (fs/windows?) + (if (fs/which "lein") + command + ;; Assume PowerShell powershell module + (str "powershell.exe -command " (pr-str command))) + command)] + + (shell command))) + +(defn executable [dir name] + (-> (fs/glob dir (if (fs/windows?) (str name ".{exe,bat,cmd}") name)) + first + fs/canonicalize + str)) + +(defn native-image [] + (let [graalvm-home (System/getenv "GRAALVM_HOME") + bin-dir (str (fs/file graalvm-home "bin"))] + (shell (executable bin-dir "gu") "install" "native-image") + (shell (executable bin-dir "native-image") "-jar" "target/graal-tests.jar" "--no-fallback" "graal_tests"))) + +(defn run-tests [] + (let [{:keys [out]} (shell {:out :string} (executable "." "graal_tests"))] + (assert (str/includes? out "loaded") out) + (println "Native image works!"))) diff --git a/project.clj b/project.clj index 4abd22d..cecfb1f 100644 --- a/project.clj +++ b/project.clj @@ -1,59 +1,69 @@ (defproject com.taoensso/nippy "3.2.0" :author "Peter Taoussanis " - :description "High-performance serialization library for Clojure" - :url "https://github.com/ptaoussanis/nippy" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html" - :distribution :repo - :comments "Same as Clojure"} - :min-lein-version "2.3.3" - :global-vars {*warn-on-reflection* true - *assert* true - ;; *unchecked-math* :warn-on-boxed - } + :description "The fastest serialization library for Clojure" + :url "https://github.com/taoensso/nippy" + + :license + {:name "Eclipse Public License - v 1.0" + :url "https://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/tools.reader "1.3.6"] - [com.taoensso/encore "3.23.0"] + [com.taoensso/encore "3.31.0"] [org.iq80.snappy/snappy "0.4"] [org.tukaani/xz "1.9"] [org.lz4/lz4-java "1.8.0"]] - :resources - ["resources"] - - :plugins - [[lein-pprint "1.3.2"] - [lein-ancient "0.7.0"] - [lein-codox "0.10.8"]] - :profiles {;; :default [:base :system :user :provided :dev] - :server-jvm {:jvm-opts ^:replace ["-server" "-Xms1024m" "-Xmx2048m"]} - :provided {:dependencies [[org.clojure/clojure "1.7.0"]]} - :1.7 {:dependencies [[org.clojure/clojure "1.7.0"]]} - :1.8 {:dependencies [[org.clojure/clojure "1.8.0"]]} - :1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]} - :1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]} - :1.11 {:dependencies [[org.clojure/clojure "1.11.1"]]} - :depr {:jvm-opts ["-Dtaoensso.elide-deprecated=true"]} + :provided {:dependencies [[org.clojure/clojure "1.11.1"]]} + :c1.11 {:dependencies [[org.clojure/clojure "1.11.1"]]} + :c1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]} + :c1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]} + :test {:jvm-opts - ["-Xms1024m" "-Xmx2048m" + ["-server" + "-Xms1024m" "-Xmx2048m" + "-Dtaoensso.elide-deprecated=true" "-Dtaoensso.nippy.thaw-serializable-allowlist-base=base.1, base.2" "-Dtaoensso.nippy.thaw-serializable-allowlist-add=add.1 , add.2"] + + :global-vars + {*warn-on-reflection* true + *assert* true + *unchecked-math* false #_:warn-on-boxed} + :dependencies [[org.clojure/test.check "1.1.1"] [org.clojure/data.fressian "1.0.0"] [org.xerial.snappy/snappy-java "1.1.8.4"]]} - :dev [:1.11 :test :server-jvm :depr]} + :graal-tests + {:dependencies [[org.clojure/clojure "1.11.1"] + [com.github.clj-easy/graal-build-time "0.1.4"]] + :main taoensso.graal-tests + :aot [taoensso.graal-tests] + :uberjar-name "graal-tests.jar"} + + :dev + [:c1.11 :test + {:plugins + [[lein-pprint "1.3.2"] + [lein-ancient "0.7.0"] + [com.taoensso.forks/lein-codox "0.10.10"]] + + :codox + {:language #{:clojure #_:clojurescript} + :base-language :clojure}}]} + + :test-paths ["test" #_"src"] :aliases - {"start-dev" ["with-profile" "+dev" "repl" ":headless"] - "deploy-lib" ["do" "deploy" "clojars," "install"] - "test-all" ["with-profile" "+1.10:+1.9:+1.8:+1.7" "test"]} + {"start-dev" ["with-profile" "+dev" "repl" ":headless"] + ;; "build-once" ["do" ["clean"] ["cljsbuild" "once"]] + "deploy-lib" ["do" #_["build-once"] ["deploy" "clojars"] ["install"]] - :repositories - {"sonatype-oss-public" - "https://oss.sonatype.org/content/groups/public/"}) + "test-clj" ["with-profile" "+c1.11:+c1.10:+c1.9" "test"] + ;; "test-cljs" ["with-profile" "+test" "cljsbuild" "test"] + "test-all" ["do" ["clean"] ["test-clj"] #_["test-cljs"]]}) diff --git a/test/taoensso/graal_tests.clj b/test/taoensso/graal_tests.clj new file mode 100644 index 0000000..e764e9d --- /dev/null +++ b/test/taoensso/graal_tests.clj @@ -0,0 +1,5 @@ +(ns taoensso.graal-tests + (:require [taoensso.nippy :as nippy]) + (:gen-class)) + +(defn -main [& args] (println "Namespace loaded successfully"))