From 93d3ce91ed38e83c3831a90e601f83b0368518cd Mon Sep 17 00:00:00 2001 From: niten Date: Thu, 2 Jun 2022 11:56:19 -0700 Subject: [PATCH] Just...try this --- bebot.nix | 20 +++++-- build.clj | 44 +++++++++++++++ deps.edn | 10 +--- deps.nix | 25 ++------- flake.lock | 130 ++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 2 +- src/bebot/model.clj | 2 - 7 files changed, 199 insertions(+), 34 deletions(-) create mode 100644 build.clj create mode 100644 flake.lock diff --git a/bebot.nix b/bebot.nix index 68f55fe..e09d35d 100644 --- a/bebot.nix +++ b/bebot.nix @@ -1,4 +1,5 @@ -{ lib, stdenv, bash, clojure, gitignoreSource, callPackage, ... }: +{ lib, stdenv, clojure, gitignoreSource, callPackage, writeText +, writeShellScript, ... }: let base-name = "bebot"; @@ -7,14 +8,25 @@ let jar-name = "${base-name}.jar"; cljdeps = callPackage ./deps.nix { }; - classpath = cljdeps.makeClasspaths { }; + + uberdeps-edn = + writeText "deps.edn" ''{:deps {uberdeps/uberdeps {:mvn/version "1.1.4"}}}''; + uberdeps-script = writeShellScript "bebot-uberdeps.sh" '' + SRC=$1 + TARGET=$2 + clojure -M -m uberdeps.uberjar --deps-file $SRC/deps.edn --target $TARGET + ''; in stdenv.mkDerivation { name = full-name; src = gitignoreSource ./.; - buildInputs = [ bash clojure ] ++ map (d: d.paths) cljdeps.packages; + outputs = [ "lib" ]; + buildInputs = [ clojure ] ++ map (d: d.paths) cljdeps.packages; buildPhase = '' - ./uberdeps/package.sh ./target/${jar-name} + mkdir $TEMP/build + cd $TEMP/build + cp ${uberdeps-edn} . + ${uberdeps-script} $src ./${jar-name} ''; installPhase = '' cp ./target/${jar-name} $out diff --git a/build.clj b/build.clj new file mode 100644 index 0000000..25e77e9 --- /dev/null +++ b/build.clj @@ -0,0 +1,44 @@ +(ns build + (:require [clojure.tools.build.api :as b])) + +(def target-dir "./target") +(def class-dir (format "%s/classes" target-dir)) +(def lib-name 'org.fudo/bebop.client) +(def version (format "0.%s" (b/git-count-revs nil))) +(def basis (b/create-basis {:project "deps.edn"})) +(def jar-file (format "%s/%s-%s.jar" + target-dir (name lib-name) version)) +(def uber-file (format "%s/%s-%s-standalone.jar" + target-dir (name lib-name) version)) + +(defn clean [_] + (println (format "removing build target folder \"%s\"" target-dir)) + (b/delete {:path target-dir})) + +(defn jar [_] + (clean nil) + (b/copy-dir {:src-dirs ["src"] + :target-dir target-dir}) + (b/compile-clj {:basis basis + :src-dirs ["src"] + :class-dir class-dir}) + (b/write-pom {:class-dir class-dir + :lib lib-name + :version version + :basis basis + :src-dirs ["src"]}) + (b/jar {:class-dir class-dir + :jar-file jar-file}) + (println (format "jar file created at: %s" jar-file))) + +(defn uberjar [_] + (clean nil) + (b/copy-dir {:src-dirs ["src"] + :target-dir class-dir}) + (b/compile-clj {:basis basis + :src-dirs ["src"] + :class-dir class-dir}) + (b/uber {:class-dir class-dir + :uber-file uber-file + :basis basis}) + (println (format "uberjar file created at: %s" uber-file))) diff --git a/deps.edn b/deps.edn index b9fc84e..4ead85b 100644 --- a/deps.edn +++ b/deps.edn @@ -1,14 +1,13 @@ { :paths ["src"] :deps { - org.clojure/clojure { :mvn/version "1.10.3" } + org.clojure/clojure { :mvn/version "1.11.1" } org.clojure/core.async { :mvn/version "1.5.648" } - org.clojure/core.match { :mvn/version "1.0.0" } - org.clojure/test.check { :mvn/version "1.1.1" } net.bis5.mattermost4j/mattermost4j-core { :mvn/version "0.24.0" } org.fudo/fudo-clojure { + ;; :local/root "/nix/store/afrgn7xsiglgfghnfqbba22yq3hc41a6-fudo-clojure-0.1-standalone.jar" :git/url "https://git.fudo.org/fudo-public/fudo-clojure.git" :sha "2d9303f55f7eac9c2f8989e9a0dde3dc97811220" } @@ -26,10 +25,5 @@ :main-opts ["-m" "cognitect.test-runner"] :exec-fn cognitect.test-runner.api/test } - :uberdeps { - :replace-deps {uberdeps/uberdeps {:mvn/version "1.1.4"}} - :replace-paths [] - :main-opts ["-m" "uberdeps.uberjar"] - } } } diff --git a/deps.nix b/deps.nix index cecf95a..e16ed42 100644 --- a/deps.nix +++ b/deps.nix @@ -34,8 +34,8 @@ let repos = [ inherit repos; artifactId = "clojure"; groupId = "org.clojure"; - sha512 = "4bb567b9262d998f554f44e677a8628b96e919bc8bcfb28ab2e80d9810f8adf8f13a8898142425d92f3515e58c57b16782cff12ba1b5ffb38b7d0ccd13d99bbc"; - version = "1.10.3"; + sha512 = "1925300a0fe4cc9fc3985910bb04ae65a19ce274dacc5ec76e708cfa87a7952a0a77282b083d0aebb2206afff619af73a57f0d661a3423601586f0829cc7956b"; + version = "1.11.1"; }; paths = [ src ]; @@ -99,8 +99,8 @@ let repos = [ inherit repos; artifactId = "core.specs.alpha"; groupId = "org.clojure"; - sha512 = "c1d2a740963896d97cd6b9a8c3dcdcc84459ea66b44170c05b8923e5fbb731b4b292b217ed3447bbc9e744c9a496552f77a6c38aea232e5e69f8faa627dea4b5"; - version = "0.2.56"; + sha512 = "f521f95b362a47bb35f7c85528c34537f905fb3dd24f2284201e445635a0df701b35d8419d53c6507cc78d3717c1f83cda35ea4c82abd8943cd2ab3de3fcad70"; + version = "0.2.62"; }; paths = [ src ]; @@ -138,8 +138,8 @@ let repos = [ inherit repos; artifactId = "spec.alpha"; groupId = "org.clojure"; - sha512 = "0740dc3a755530f52e32d27139a9ebfd7cbdb8d4351c820de8d510fe2d52a98acd6e4dfc004566ede3d426e52ec98accdca1156965218f269e60dd1cd4242a73"; - version = "0.2.194"; + sha512 = "ddfe4fa84622abd8ac56e2aa565a56e6bdc0bf330f377ff3e269ddc241bb9dbcac332c13502dfd4c09c2c08fe24d8d2e8cf3d04a1bc819ca5657b4e41feaa7c2"; + version = "0.3.218"; }; paths = [ src ]; @@ -392,19 +392,6 @@ let repos = [ paths = [ src ]; } - rec { - name = "test.check/org.clojure"; - src = fetchMavenArtifact { - inherit repos; - artifactId = "test.check"; - groupId = "org.clojure"; - sha512 = "b8d7a330b0b5514cd6a00c4382052fab51c3c9d3bc53133f8506791fa670e7c5ecd65094977ea5ced91f59623b0abd1ab8feeec96d63c5c6e459b265a655c577"; - version = "1.1.1"; - - }; - paths = [ src ]; - } - rec { name = "jersey-media-json-jackson/org.glassfish.jersey.media"; src = fetchMavenArtifact { diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..6bff745 --- /dev/null +++ b/flake.lock @@ -0,0 +1,130 @@ +{ + "nodes": { + "clj2nix": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "utils": "utils" + }, + "locked": { + "lastModified": 1637900288, + "narHash": "sha256-hQdSCIm1WpG5uK9hoe/iagyYc3Fhi8PJzfo1jFBa53g=", + "owner": "hlolli", + "repo": "clj2nix", + "rev": "3d0a38c954c8e0926f57de1d80d357df05fc2f94", + "type": "github" + }, + "original": { + "owner": "hlolli", + "repo": "clj2nix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646480205, + "narHash": "sha256-kekOlTlu45vuK2L9nq8iVN17V3sB0WWPqTTW3a2SQG0=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "bff2832ec341cf30acb3a4d3e2e7f1f7b590116a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1637881340, + "narHash": "sha256-/meU5CTm8GnaETZrJa0UqBQvk9T/jKp1+MLIQQ7FTTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d460f48ddb884f7270b7f7bfcbf8a7b91140caa5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05", + "type": "indirect" + } + }, + "root": { + "inputs": { + "clj2nix": "clj2nix", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_2", + "utils": "utils_2" + } + }, + "utils": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_2": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 3b30bfc..1dcc151 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "BeBot Mattermost chatbot Clojure library."; inputs = { - nixpkgs.url = "nixpkgs/nixpkgs-21.05"; + nixpkgs.url = "nixpkgs/nixos-21.05"; utils.url = "github:numtide/flake-utils"; clj2nix.url = "github:hlolli/clj2nix"; gitignore = { diff --git a/src/bebot/model.clj b/src/bebot/model.clj index 14ad32c..4a3ce7c 100644 --- a/src/bebot/model.clj +++ b/src/bebot/model.clj @@ -6,8 +6,6 @@ PostList User))) -(defn- pthru [o] (clojure.pprint/pprint o) o) - (defn- to-instant [millis] (java.time.Instant/ofEpochMilli millis))