This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-08-12
Channels
- # announcements (10)
- # babashka (26)
- # beginners (113)
- # calva (75)
- # cider (7)
- # clj-http (1)
- # cljdoc (2)
- # cljfx (3)
- # cljs-dev (13)
- # clojure (79)
- # clojure-europe (21)
- # clojure-losangeles (2)
- # clojure-nl (4)
- # clojure-sweden (1)
- # clojure-uk (23)
- # clojureladies (4)
- # clojurescript (26)
- # clojureverse-ops (2)
- # conjure (2)
- # cursive (2)
- # data-science (1)
- # datalog (6)
- # datomic (1)
- # degree9 (2)
- # depstar (4)
- # esprit (3)
- # fulcro (25)
- # introduce-yourself (2)
- # jobs (3)
- # lsp (30)
- # meander (38)
- # missionary (9)
- # nbb (7)
- # news-and-articles (2)
- # off-topic (28)
- # pathom (46)
- # polylith (19)
- # re-frame (4)
- # reitit (2)
- # sci (8)
- # shadow-cljs (23)
- # specter (17)
- # spire (1)
- # tools-deps (16)
- # unrepl (1)
- # xtdb (30)
question on procurers: is there a DB procurement option eg from code stored in Datomic or similar?
Nothing like that now. The procurer impl needs to be able to find and download a lib and determine it’s deps.
Depending how you stored stuff, could reuse lots of existing pieces
My thinking was having a project that looked something like {:project "epic" :code {:ns "my.foo" :code "(def bar 42)"}}
which could be stored directly in a DB that kept history. Then you pick the latest view of it, serialize the namespaces to files (urgh but OK if we have to) and add the namespaces to the CLASSPATH. Which feels close to what you do with git
deps. I would rather avoid the files but not sure if this is possible. Is it?
It’s all ultimately file based (you’re always making a classpath), so can’t avoid files. (I have made similar db-based dynamic classloaders before, but that’s attacking a different level)
Not interested in adding that to tools.deps but it’s all open multimethods so no need to be in the project
The one big caveat is that the Clojure CLI currently has no hook to load such a thing (not a problem when using tools.deps directly as a lib). I’ve been pushing that off as a problem to solve when it needed solving
All of the extension points are defined in clojure.tools.deps.alpha.extensions
@alexmiller With t.d.a, if it encounters the same dependency in multiple places in the dependency tree, both with git SHAs, can it compare them in some circumstances but not others, or does it always throw Unable to compare versions for...
regardless of whether one SHA is an ancestor of the other?
it can compare them in any case where there is an ancestor relationship and otherwise fails
in the latter case, there is no way to determine which is preferred (so you'll need to resolve it explicitly at the top level)
the more descendant one is preferred (as it is presumably the newer one)
Thanks.