<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions and answers in Other</title>
<link>https://ask.clojure.org/index.php/qa/other</link>
<description></description>
<item>
<title>Answered: shasum not found error when using ./posix-install on linux</title>
<link>https://ask.clojure.org/index.php/14987/shasum-not-found-error-when-using-posix-install-on-linux?show=14988#a14988</link>
<description>&lt;p&gt;We've added a version verification step in the installer. The posix and linux installers use different tools to calculate the sha of the downloaded file according to the expectations of these platforms. You should use the installer that is most appropriate - here, that seems to be the linux installer (for Amazon Linux).&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14987/shasum-not-found-error-when-using-posix-install-on-linux?show=14988#a14988</guid>
<pubDate>Wed, 11 Mar 2026 22:05:18 +0000</pubDate>
</item>
<item>
<title>Answered: TDEPS-269: checksums should use sha256sum instead of shasum</title>
<link>https://ask.clojure.org/index.php/14906/tdeps-269-checksums-should-use-sha256sum-instead-of-shasum?show=14908#a14908</link>
<description>&lt;p&gt;Thanks, I logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-275&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-275&lt;/a&gt; and will change at least the Linux installer today, need to decide which to use for Posix installer.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14906/tdeps-269-checksums-should-use-sha256sum-instead-of-shasum?show=14908#a14908</guid>
<pubDate>Tue, 27 Jan 2026 15:18:40 +0000</pubDate>
</item>
<item>
<title>Answered: I found a broken link in the Guides section of Clojure.org</title>
<link>https://ask.clojure.org/index.php/14689/i-found-a-broken-link-in-the-guides-section-of-clojure-org?show=14690#a14690</link>
<description>&lt;p&gt;Thanks, seems like that link has gone missing so I've removed it.&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14689/i-found-a-broken-link-in-the-guides-section-of-clojure-org?show=14690#a14690</guid>
<pubDate>Sat, 23 Aug 2025 02:30:45 +0000</pubDate>
</item>
<item>
<title>Answered: Gotcha: core.match 'No matching clause' when using shadowed local binding</title>
<link>https://ask.clojure.org/index.php/14522/gotcha-match-matching-clause-using-shadowed-local-binding?show=14523#a14523</link>
<description>&lt;p&gt;It's a deliberate documented behavior, &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.match/wiki/Basic-usage#locals&quot;&gt;https://github.com/clojure/core.match/wiki/Basic-usage#locals&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Normally core.match will bind values to symbols, however it first tries to match against locals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Changing it would definitely be a breaking change.&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14522/gotcha-match-matching-clause-using-shadowed-local-binding?show=14523#a14523</guid>
<pubDate>Fri, 25 Apr 2025 12:50:25 +0000</pubDate>
</item>
<item>
<title>Answered: core.async 1.8 beta1 cached thread pools can grow to hundreds of threads when doing io work</title>
<link>https://ask.clojure.org/index.php/14428/core-async-beta1-cached-thread-pools-hundreds-threads-doing?show=14431#a14431</link>
<description>&lt;p&gt;There's so much stuff in this example, it's hard to tell what actual use case you're trying to think through.  Yes, mechanically it's possible, but I can't tell what's important here or if this is just poorly structured - are you trying to make a point about io-thread or the change in go or the use of them together?&lt;/p&gt;
&lt;p&gt;You're eagerly spinning task-count number of blocking tasks. Before io-thread, you would have used thread for that, which is no different. (In the future io-thread will be able to utilize JVM virtual threads when available, which will be ideal for this in resource usage.)&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14428/core-async-beta1-cached-thread-pools-hundreds-threads-doing?show=14431#a14431</guid>
<pubDate>Wed, 26 Feb 2025 19:08:01 +0000</pubDate>
</item>
<item>
<title>Answered: Why clojuredocs is down?</title>
<link>https://ask.clojure.org/index.php/14323/why-clojuredocs-is-down?show=14328#a14328</link>
<description>&lt;p&gt;It is back online now!&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14323/why-clojuredocs-is-down?show=14328#a14328</guid>
<pubDate>Sat, 04 Jan 2025 06:04:25 +0000</pubDate>
</item>
<item>
<title>Answered: Comparison b/w Ragtime and Migratus</title>
<link>https://ask.clojure.org/index.php/9598/comparison-b-w-ragtime-and-migratus?show=14292#a14292</link>
<description>&lt;p&gt;I haven't used Migratus, but I have been using Ragtime for years on multiple projects, and I haven't encountered any issues so far. It's a simple library with a straightforward concept that is very stable and easy to work with and extend. You can use Ragtime for migrating various types of data, similarly to Migratus, although it only supports SQL databases out of the box. For instance, I have implemented Cassandra migrations using Ragtime in a private project. Additionally, with the &lt;code&gt;ragtime-clj&lt;/code&gt; [1] library, you can write migrations using Clojure code [2].&lt;/p&gt;
&lt;p&gt;I don't understand Mark's comment about how Ragtime is more involved regarding configuration (maybe I'm missing some advanced things). My typical Ragtime code only requires two calls at application startup: &lt;code&gt;ragtime.repl/migrate&lt;/code&gt; and/or &lt;code&gt;ragtime.repl/rollback&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;[1] &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/mariusz-jachimowicz-83/ragtime-clj&quot;&gt;https://github.com/mariusz-jachimowicz-83/ragtime-clj&lt;/a&gt;&lt;br&gt;
[2] &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/mariusz-jachimowicz-83/ragtime-clj/blob/master/test/migrations/008_test.clj&quot;&gt;https://github.com/mariusz-jachimowicz-83/ragtime-clj/blob/master/test/migrations/008_test.clj&lt;/a&gt;&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9598/comparison-b-w-ragtime-and-migratus?show=14292#a14292</guid>
<pubDate>Sat, 07 Dec 2024 18:07:57 +0000</pubDate>
</item>
<item>
<title>Answered: What is the best place to start learning Clojure?</title>
<link>https://ask.clojure.org/index.php/14210/what-is-the-best-place-to-start-learning-clojure?show=14218#a14218</link>
<description>&lt;p&gt;The clojure.org Getting Started page suggests some good starting places: &lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/guides/getting_started&quot;&gt;https://clojure.org/guides/getting_started&lt;/a&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14210/what-is-the-best-place-to-start-learning-clojure?show=14218#a14218</guid>
<pubDate>Fri, 01 Nov 2024 17:52:03 +0000</pubDate>
</item>
<item>
<title>Answered: Guidance on Licensing and Attribution for Ported Clojure Code</title>
<link>https://ask.clojure.org/index.php/14130/guidance-licensing-and-attribution-for-ported-clojure-code?show=14131#a14131</link>
<description>&lt;p&gt;I can't give you legal advice and really reading the license is the best way to know what you're supposed to do, but those seem like correct steps.&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14130/guidance-licensing-and-attribution-for-ported-clojure-code?show=14131#a14131</guid>
<pubDate>Mon, 23 Sep 2024 21:44:01 +0000</pubDate>
</item>
<item>
<title>Answered: Using the state instantiated by integrant init-key</title>
<link>https://ask.clojure.org/index.php/13447/using-the-state-instantiated-by-integrant-init-key?show=13454#a13454</link>
<description>&lt;p&gt;When you call &lt;code&gt;(ig/init config)&lt;/code&gt;, it calls &lt;code&gt;ig/init-key&lt;/code&gt; in the dependency order of your config map and returns a map where each key is one of the defined init-keys. In your case, it will return &lt;code&gt;{:my-space/my-key #&amp;lt;MyObject…&amp;gt;}&lt;/code&gt;. Depending on how you’ve structured your app, you can put this map into a var or an atom, or you can pass it as an argument to your ring middleware so every request has a reference, etc.&lt;/p&gt;
&lt;p&gt;To call the methods of MyObject, you’d write &lt;code&gt;(.someMethod (:my-space/my-key system))&lt;/code&gt;&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13447/using-the-state-instantiated-by-integrant-init-key?show=13454#a13454</guid>
<pubDate>Fri, 10 Nov 2023 13:35:28 +0000</pubDate>
</item>
<item>
<title>Answered: I have created a new language based on Clojure and wondered if someone would like to take a look.</title>
<link>https://ask.clojure.org/index.php/13268/created-language-based-clojure-wondered-someone-would-look?show=13269#a13269</link>
<description>&lt;p&gt;Hi, you might find posting this on &lt;a rel=&quot;nofollow&quot; href=&quot;https://reddit.com/r/clojure&quot;&gt;https://reddit.com/r/clojure&lt;/a&gt; or the Clojurians Slack at &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.net&quot;&gt;https://clojurians.net&lt;/a&gt; would be better places to get feedback...&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13268/created-language-based-clojure-wondered-someone-would-look?show=13269#a13269</guid>
<pubDate>Wed, 06 Sep 2023 21:15:11 +0000</pubDate>
</item>
<item>
<title>Answered: first build fails on ubuntu due to repo1.maven.org/maven2 timing out for orr.clojure artifact</title>
<link>https://ask.clojure.org/index.php/12753/first-build-fails-ubuntu-repo1-maven2-timing-clojure-artifact?show=12754#a12754</link>
<description>&lt;p&gt;Not really sure what to suggest ... seems like a networking issue on your machine?&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12753/first-build-fails-ubuntu-repo1-maven2-timing-clojure-artifact?show=12754#a12754</guid>
<pubDate>Mon, 13 Mar 2023 00:23:06 +0000</pubDate>
</item>
<item>
<title>Answered: [deps] All pulling from http maven repos</title>
<link>https://ask.clojure.org/index.php/12698/deps-all-pulling-from-http-maven-repos?show=12702#a12702</link>
<description>&lt;p&gt;If you or others need this flag, I would be interested in learning about what scenario you have where this is needed.&lt;/p&gt;
&lt;p&gt;One I know of is having an internal Maven proxy (like Nexus) that is http - the recommendation from Nexus is to put that under https as well.&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12698/deps-all-pulling-from-http-maven-repos?show=12702#a12702</guid>
<pubDate>Wed, 01 Mar 2023 15:53:13 +0000</pubDate>
</item>
<item>
<title>core.async: Add a function to set thread executor</title>
<link>https://ask.clojure.org/index.php/12692/core-async-add-a-function-to-set-thread-executor</link>
<description>&lt;p&gt;See slack #babashka discussion &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/CLX41ASCS/p1677319666536479&quot;&gt;https://clojurians.slack.com/archives/CLX41ASCS/p1677319666536479&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The use case is setting a virtual thread pool executor with SCI.&lt;br&gt;
In Clojure I could set &lt;code&gt;clojure.core.async.impl.exec.threadpool/thread-pool-executor&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;Doing the intern in SCI will not have the desired effect since the pre-compiled functions don't see the change. &lt;/p&gt;
&lt;p&gt;Clojure.core agents also allow this via &lt;code&gt;set-agent-send-executor!&lt;/code&gt; etc. &lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12692/core-async-add-a-function-to-set-thread-executor</guid>
<pubDate>Sat, 25 Feb 2023 11:21:02 +0000</pubDate>
</item>
<item>
<title>Answered: Can ASYNC-248 be reverted?</title>
<link>https://ask.clojure.org/index.php/12690/can-async-248-be-reverted?show=12691#a12691</link>
<description>&lt;p&gt;Reported as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-249&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-249&lt;/a&gt; &lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12690/can-async-248-be-reverted?show=12691#a12691</guid>
<pubDate>Thu, 23 Feb 2023 23:02:01 +0000</pubDate>
</item>
<item>
<title>Answered: Set GITLIBS in deps.edn</title>
<link>https://ask.clojure.org/index.php/12414/set-gitlibs-in-deps-edn?show=12423#a12423</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-237&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-237&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12414/set-gitlibs-in-deps-edn?show=12423#a12423</guid>
<pubDate>Thu, 01 Dec 2022 15:32:45 +0000</pubDate>
</item>
<item>
<title>Answered: Datomic Pro on-prem fails on M1 Mac</title>
<link>https://ask.clojure.org/index.php/12392/datomic-pro-on-prem-fails-on-m1-mac?show=12393#a12393</link>
<description>&lt;p&gt;Probably better to post this on &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.datomic.com&quot;&gt;https://ask.datomic.com&lt;/a&gt; so the folks there will see it. &lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12392/datomic-pro-on-prem-fails-on-m1-mac?show=12393#a12393</guid>
<pubDate>Mon, 21 Nov 2022 00:30:31 +0000</pubDate>
</item>
<item>
<title>Answered: Support `:mvn/repos` inside an alias</title>
<link>https://ask.clojure.org/index.php/12367/support-mvn-repos-inside-an-alias?show=12368#a12368</link>
<description>&lt;p&gt;I'm going to mark this as a dupe to the other, and you can make your comment there.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12367/support-mvn-repos-inside-an-alias?show=12368#a12368</guid>
<pubDate>Tue, 08 Nov 2022 19:23:37 +0000</pubDate>
</item>
<item>
<title>Answered: Recommended metrics library</title>
<link>https://ask.clojure.org/index.php/12020/recommended-metrics-library?show=12035#a12035</link>
<description>&lt;p&gt;I've been using riemann-clojure-client [1], which ships everything to Riemann [2], for several years. Not extensive like other libraries, but gives you a better control and with a few custom &quot;with-timed-something&quot; macros, it can measure practically anything. Also, don't forget that JVM (and other Java libraries, like Jetty) already comes with ready JMX metrics; you'd just need to pull them from the application. I use collectd [3] for that.&lt;/p&gt;
&lt;p&gt;[1] &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/riemann/riemann-clojure-client&quot;&gt;https://github.com/riemann/riemann-clojure-client&lt;/a&gt;&lt;br&gt;
[2] &lt;a rel=&quot;nofollow&quot; href=&quot;https://riemann.io&quot;&gt;https://riemann.io&lt;/a&gt;&lt;br&gt;
[3] &lt;a rel=&quot;nofollow&quot; href=&quot;https://collectd.org/&quot;&gt;https://collectd.org/&lt;/a&gt;&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12020/recommended-metrics-library?show=12035#a12035</guid>
<pubDate>Sun, 03 Jul 2022 07:14:56 +0000</pubDate>
</item>
<item>
<title>Answered: Convention for bypassing EDN parsing in -X usage to reduce using quotes in arguments passed from shell</title>
<link>https://ask.clojure.org/index.php/11585/convention-bypassing-parsing-reduce-quotes-arguments-passed?show=11936#a11936</link>
<description>&lt;p&gt;I have a potential solution for this, but in the form of a library:&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/babashka/cli#usage-with-the-clojure-cli&quot;&gt;https://github.com/babashka/cli#usage-with-the-clojure-cli&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Perhaps it can help inform the array of possible solutions.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11585/convention-bypassing-parsing-reduce-quotes-arguments-passed?show=11936#a11936</guid>
<pubDate>Thu, 02 Jun 2022 14:16:18 +0000</pubDate>
</item>
<item>
<title>Answered: Calva project type: shadow-cljs vs deps.edn + shadow-cljs?</title>
<link>https://ask.clojure.org/index.php/11901/calva-project-type-shadow-cljs-vs-deps-edn-shadow-cljs?show=11902#a11902</link>
<description>&lt;p&gt;Hi there! Thanks for asking about this. The naming of these project types in Calva is a bit confusing, even if I don't really know what else to name them. Which project type to use depends on how the project is configured.&lt;/p&gt;
&lt;p&gt;A shadow-cljs project can be configured so that you can start it with either shadow-cljs or with deps.edn. Most often just one of them is used. This is not Calva specific, but rather just about how the project is supposed to be started. The Calva project types are configurations + some code that will start the project.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;shadow-cljs&lt;/strong&gt; project type starts the development REPL with a command line like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npx shadow-cljs watch -d cider/cider-nrepl:0.27.4  &amp;lt;build-id-1&amp;gt; [&amp;lt;build-id-2&amp;gt; ...]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is how you have configured your project above to be started, so that's why this works.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;deps.edn + shadow-cljs&lt;/strong&gt; project type starte the REPL with a command line like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version,&quot;0.9.0&quot;},cider/cider-nrepl {:mvn/version,&quot;0.27.4&quot;}}}' -M&amp;lt;alias-1&amp;gt;[&amp;lt;alias-2&amp;gt;...] -m nrepl.cmdline --middleware &quot;[cider.nrepl/cider-middleware]&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I can't recall right now what is needed in &lt;code&gt;deps.edn&lt;/code&gt; for this to work, but anyway, there needs to be things there to support this. (Some &lt;code&gt;:main&lt;/code&gt; config that will start the shadow-cljs watcher.) Your project is not configured for it, which is why the that project type doesn't work. (Calva error handling here is not good, so you do not get proper messages about what goes wrong.)&lt;/p&gt;
&lt;p&gt;In both cases, once the Clojure REPL is started, Calva will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect to this REPL.&lt;/li&gt;
&lt;li&gt;Clone the nREPL (the protocol used for the REPL connection) session. This is the Calva &lt;code&gt;clj&lt;/code&gt; session and will be used in &lt;code&gt;.clj&lt;/code&gt; files, as well is &lt;code&gt;.cljc&lt;/code&gt; files when Calva is configured to do that. (This is a toggle, which you can access via the status bar.)&lt;/li&gt;
&lt;li&gt;Make yet another clone of the nREPL session. This will be the Calva &lt;code&gt;cljs&lt;/code&gt; session and be used with &lt;code&gt;.cljs&lt;/code&gt; files, and for &lt;code&gt;.cljc&lt;/code&gt; files depending on that toggle.&lt;/li&gt;
&lt;li&gt;”Promote” the &lt;code&gt;cljs&lt;/code&gt; session to a ClojureScript REPL. Calva uses the shadow-cljs development  API for this. The same commands as you would from the REPL prompt if you did this from a terminal.&lt;/li&gt;
&lt;li&gt;Select one of the builds watched. Again using the shadow-cljs development API&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that outside of Calva you can do these steps manually. I can recommend to do it now and then to de-mystify what Calva does at Jack-in and connect. But when connecting Calva, better let Calva do it, because Calva will then be able to update some of its state, so that the UI reflects which REPL is being used and such. &lt;/p&gt;
&lt;p&gt;This answers, I hope, &lt;em&gt;when to select which project type in Calva&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt; You are rather asking about &lt;em&gt;when to use one or the other project setup&lt;/em&gt;. I'll let other people answer that, because it is outside my field of expertise. But I can say that I prefer to try use shadow-cljs for starting the dev REPL. I think that most often works.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11901/calva-project-type-shadow-cljs-vs-deps-edn-shadow-cljs?show=11902#a11902</guid>
<pubDate>Sat, 21 May 2022 20:28:48 +0000</pubDate>
</item>
<item>
<title>Answered: How can we make it easier for beginners to install Clojure?</title>
<link>https://ask.clojure.org/index.php/11767/how-can-we-make-it-easier-for-beginners-to-install-clojure?show=11777#a11777</link>
<description>&lt;p&gt;&quot;Easier for beginners to install&quot; is complected!  Let's split it up.  &lt;/p&gt;
&lt;p&gt;&quot;Easier for beginners&quot; means not having to use administrative privileges; not having to make a commitment or risk a complicated outcome if an installer does something unexpected; files obviously partitioned (e.g., inside 1 directory) for clarity of erasing it and trying it again and again.&lt;/p&gt;
&lt;p&gt;&quot;Easier to install&quot;, on the other hand, is not only a tougher problem, but also perhaps a bit secondary.  By the time someone is thrilled with the trial, and let us remember that these are top-1% people, they will know whether they even &lt;em&gt;need&lt;/em&gt; &quot;installation&quot;, and if they do need it, they will be pleased to be given no more of a red carpet than is in the nature of the task.&lt;/p&gt;
&lt;p&gt;Leiningen sets a pretty good example (it's hard to beat &quot;download lein&quot; and &quot;./lein&quot;) with not even the option of system-wide installation it avoids complications.  Nonetheless, Clojure's official getting-started page is not a super place to suggest Leiningen.  Lein's deep Maven consanguinity has been a great booster rocket, but a future of direct source-code-repo connections, free of a packaging step or a middleman brokering jars, is closer to Clojure's spirit.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11767/how-can-we-make-it-easier-for-beginners-to-install-clojure?show=11777#a11777</guid>
<pubDate>Sun, 17 Apr 2022 21:18:05 +0000</pubDate>
</item>
<item>
<title>Answered: How can I return data from clojure.tools.cli.api/tree?</title>
<link>https://ask.clojure.org/index.php/11738/how-can-i-return-data-from-clojure-tools-cli-api-tree?show=11741#a11741</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-225&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-225&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11738/how-can-i-return-data-from-clojure-tools-cli-api-tree?show=11741#a11741</guid>
<pubDate>Wed, 06 Apr 2022 14:48:12 +0000</pubDate>
</item>
<item>
<title>Answered: Set mvn/local-repo via alias</title>
<link>https://ask.clojure.org/index.php/11711/set-mvn-local-repo-via-alias?show=11727#a11727</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-224&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-224&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11711/set-mvn-local-repo-via-alias?show=11727#a11727</guid>
<pubDate>Mon, 04 Apr 2022 17:23:16 +0000</pubDate>
</item>
<item>
<title>Answered: All kinds of problems trying to run my first Clojure program</title>
<link>https://ask.clojure.org/index.php/11640/all-kinds-of-problems-trying-to-run-my-first-clojure-program?show=11661#a11661</link>
<description>&lt;p&gt;Using the clj command line, if I just copy/paste what you have into the repl:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\joinr&amp;gt; clj
Clojure 1.10.2
user=&amp;gt; (ns clojure-noob.core
         (:gen-class))

(defn -main
  &quot;I don't do a whole lot...yet.&quot;
  [&amp;amp; args]
  (println &quot;Hello, World!&quot;))

(defn train
  []
  nil

#'clojure-noob.core/-main
#'clojure-noob.core/train

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and then I evaluate (train) and (main):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure-noob.core=&amp;gt; (train)
Choo choo!
nil

clojure-noob.core=&amp;gt; (-main)
Hello, World!
nil
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Everything seems fine.  What are you doing differently?&lt;/p&gt;
&lt;p&gt;[ed] I noticed you are following CFTBT.  Is this your first time with emacs?  If so, a simpler editor/setup may be better, so that you are not learning both clojure and emacs at the same time....(I say this as an emacs user, specifically spacemacs with the default clojure layer and minimal customization....).&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11640/all-kinds-of-problems-trying-to-run-my-first-clojure-program?show=11661#a11661</guid>
<pubDate>Wed, 23 Mar 2022 16:20:09 +0000</pubDate>
</item>
<item>
<title>Answered: EMacs standard configuration error</title>
<link>https://ask.clojure.org/index.php/11621/emacs-standard-configuration-error?show=11626#a11626</link>
<description>&lt;blockquote&gt;&lt;p&gt;I encountered this error setting up Emacs with the standard&lt;br&gt;
configuration:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The error you posted comes from an emacs package (evil-collection) which is not part of a standard emacs configuration. I'm assuming you followed a guide or are using an emacs distribution such as Spacemacs or Doom emacs that use the package named &quot;evil&quot; and provide a preconfiguration.&lt;/p&gt;
&lt;p&gt;If you're new to both Clojure and emacs I suggest you start from scratch, this way you can remove as many variables as possible (such as the &quot;evil&quot; package above). There's an online book &quot;Clojure for the brave and true&quot; that covers configuring an otherwise standard emacs for Clojure development. &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.braveclojure.com/basic-emacs/&quot;&gt;https://www.braveclojure.com/basic-emacs/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As a side note, the &quot;evil&quot; package provides modal editing in emacs like what you can find in vi. If this is something you are looking for, after you get your Clojure environment up and running you can go back and configure evil to get both working nicely, or look into one of the distributions mentioned above.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11621/emacs-standard-configuration-error?show=11626#a11626</guid>
<pubDate>Mon, 14 Mar 2022 20:19:23 +0000</pubDate>
</item>
<item>
<title>Answered: Allow configuring behavior for -X when it's invoked as entry point</title>
<link>https://ask.clojure.org/index.php/11598/allow-configuring-behavior-for-when-its-invoked-entry-point?show=11612#a11612</link>
<description>&lt;p&gt;Why not just make a -X entry point function that wraps a simpler function? &lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11598/allow-configuring-behavior-for-when-its-invoked-entry-point?show=11612#a11612</guid>
<pubDate>Mon, 28 Feb 2022 22:56:50 +0000</pubDate>
</item>
<item>
<title>Twitter community</title>
<link>https://ask.clojure.org/index.php/11597/twitter-community</link>
<description>&lt;p&gt;Recently Twitter released the feature of creating a community for my profile, I took the liberty of creating one in the name of Clojure&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://twitter.com/i/communities/1494013093059432451&quot;&gt;https://twitter.com/i/communities/1494013093059432451&lt;/a&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11597/twitter-community</guid>
<pubDate>Sun, 20 Feb 2022 17:13:00 +0000</pubDate>
</item>
<item>
<title>Support --help for tools / use &quot;standard&quot; cli options for clojure tooling</title>
<link>https://ask.clojure.org/index.php/11590/support-help-for-tools-use-standard-options-clojure-tooling</link>
<description>&lt;p&gt;Hello, &lt;/p&gt;
&lt;p&gt;Is there a way to get help for a tool other than knowing in advance what it does?&lt;br&gt;
Can we have a standardized --help option ?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;I found out about clj -Ttools list command in an announcement. &lt;br&gt;
Is there a way to see what other things are available besides &quot;list&quot; operations ?&lt;br&gt;
Is there a way to print docs for those ?&lt;br&gt;
Most CLI tools offer a --help or a man page.&lt;br&gt;
I tried some of the things I know from usual OS commands: &lt;br&gt;
clj -Ttools &lt;br&gt;
No function found on command line or in :exec-fn&lt;br&gt;
clj -Ttools help&lt;br&gt;
Function not found: clojure.tools.tools.api/help&lt;br&gt;
clj -Ttools --help&lt;br&gt;
Function not found: clojure.tools.tools.api/--help&lt;br&gt;
This works but for clj, not for the tools.&lt;br&gt;
clj --help&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;I would argue that clojure should adopt a more familiar CLI interface so people comming into clojure can find their way around. &lt;/p&gt;
&lt;p&gt;Of course more advance clojure users could argue that things are good enough as they are - but I don't think there is any standardization on this front. &lt;br&gt;
This leads to having to remember syntax for lots of tools.  &lt;/p&gt;
&lt;p&gt;I think having a standardized help would improve this a lot: &lt;br&gt;
There are some guides online - first search brought me this &lt;a rel=&quot;nofollow&quot; href=&quot;https://clig.dev/#help&quot;&gt;https://clig.dev/#help&lt;/a&gt;  . &lt;br&gt;
I'm sure there are others. &lt;/p&gt;
&lt;p&gt;Original discussion on Cojurians slack &lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/C06MAR553/p1635321226061200?thread_ts=1635283780.057200&amp;amp;cid=C06MAR553&quot;&gt;https://clojurians.slack.com/archives/C06MAR553/p1635321226061200?thread_ts=1635283780.057200&amp;amp;cid=C06MAR553&lt;/a&gt; . &lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11590/support-help-for-tools-use-standard-options-clojure-tooling</guid>
<pubDate>Fri, 18 Feb 2022 07:53:03 +0000</pubDate>
</item>
<item>
<title>Answered: tools.build/javac does not handle modules-info</title>
<link>https://ask.clojure.org/index.php/11428/tools-build-javac-does-not-handle-modules-info?show=11459#a11459</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TBUILD-25&quot;&gt;https://clojure.atlassian.net/browse/TBUILD-25&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11428/tools-build-javac-does-not-handle-modules-info?show=11459#a11459</guid>
<pubDate>Tue, 11 Jan 2022 14:42:32 +0000</pubDate>
</item>
<item>
<title>Answered: What is the canonical way to share bundles of predicates + generators in clojure spec?</title>
<link>https://ask.clojure.org/index.php/11282/what-canonical-share-bundles-predicates-generators-clojure?show=11283#a11283</link>
<description>&lt;p&gt;I think you're on the right path for sure. I think maybe a useful intermediate point is that you could def (not s/def) the &lt;code&gt;(s/with-gen local-date local-date-generator)&lt;/code&gt; - that is a spec+custom generator, named in a var. That's somewhat orthogonal to whether you want to define a named attribute (users of this spec+generator may want to put it on other attributes). Really, they can do either, by referring to spec var or by aliasing to a named attribute you create. The tradeoffs are subtle and may change with spec 2 in the future.&lt;/p&gt;
&lt;p&gt;With respect to bundling multiple things - namespaces are the way to bundle either vars referring to specs, or consolidate the loading of attributes. You may want to separate those two if you want to give users the  maximum flexibility (a namespace for specs+generators, a namespace that defines attributes).&lt;/p&gt;
&lt;p&gt;There's a lot of options, and a fair amount of &quot;it depends&quot;, so sorry I can't give more prescriptive advice.&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11282/what-canonical-share-bundles-predicates-generators-clojure?show=11283#a11283</guid>
<pubDate>Wed, 17 Nov 2021 17:16:14 +0000</pubDate>
</item>
<item>
<title>Answered: clojure -X misreports error if FileNotFoundException is thrown</title>
<link>https://ask.clojure.org/index.php/11223/clojure-misreports-error-if-filenotfoundexception-thrown?show=11224#a11224</link>
<description>&lt;p&gt;Thanks, I've fixed it for the next release.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11223/clojure-misreports-error-if-filenotfoundexception-thrown?show=11224#a11224</guid>
<pubDate>Thu, 28 Oct 2021 18:29:19 +0000</pubDate>
</item>
<item>
<title>Answered: Make tools help more discoverable</title>
<link>https://ask.clojure.org/index.php/11214/make-tools-help-more-discoverable?show=11215#a11215</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/TDEPS-211&quot;&gt;https://clojure.atlassian.net/browse/TDEPS-211&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11214/make-tools-help-more-discoverable?show=11215#a11215</guid>
<pubDate>Wed, 27 Oct 2021 19:07:08 +0000</pubDate>
</item>
<item>
<title>Answered: How to do a HTTP request over a unix socket in Clojure</title>
<link>https://ask.clojure.org/index.php/8990/how-to-do-a-http-request-over-a-unix-socket-in-clojure?show=11183#a11183</link>
<description>&lt;p&gt;They say they introduced support for Unix sockets in JDK 16: &lt;a rel=&quot;nofollow&quot; href=&quot;https://openjdk.java.net/jeps/380&quot;&gt;https://openjdk.java.net/jeps/380&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here's a good blog post about them:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://inside.java/2021/02/03/jep380-unix-domain-sockets-channels/&quot;&gt;https://inside.java/2021/02/03/jep380-unix-domain-sockets-channels/&lt;/a&gt;&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8990/how-to-do-a-http-request-over-a-unix-socket-in-clojure?show=11183#a11183</guid>
<pubDate>Sat, 23 Oct 2021 15:45:41 +0000</pubDate>
</item>
<item>
<title>Answered: tools.build: are &quot;standard&quot; build tasks under consideration?</title>
<link>https://ask.clojure.org/index.php/11168/tools-build-are-standard-build-tasks-under-consideration?show=11169#a11169</link>
<description>&lt;p&gt;I don't think there is anything &quot;official&quot; so far.  But, if not already, you might want to take a look at Sean Corfield's &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/seancorfield/build-clj&quot;&gt;build-clj&lt;/a&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11168/tools-build-are-standard-build-tasks-under-consideration?show=11169#a11169</guid>
<pubDate>Fri, 15 Oct 2021 01:40:00 +0000</pubDate>
</item>
<item>
<title>Datomic ion push fails</title>
<link>https://ask.clojure.org/index.php/11113/datomic-ion-push-fails</link>
<description>&lt;p&gt;Anyone recognize this error &quot;data did not conform&quot; when trying to make a datomic ion push? I am using a windows machine and get the following message:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;{​​​​​​:command-failed&lt;br&gt;
 &quot;{​​​​​​:op :push :uname my-test-name :creds-profile my-creds-profile :region my-region}​​​​​​&quot;,&lt;br&gt;
 :causes&lt;br&gt;
 ({​​​​​​:message &quot;Data did not conform&quot;,&lt;br&gt;
   :class ExceptionInfo,&lt;br&gt;
   :data&lt;br&gt;
   #:clojure.spec.alpha{​​​​​​:problems&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                    ({​​​​​​:path [:local :home],
                      :pred clojure.core/string?,
                      :val nil,
                      :via
                      [:cognitect.s3-libs.specs/local
                       :cognitect.s3-libs.specs/home],
                      :in [:local :home]}​​​​​​),
                    :spec
                    #object[clojure.spec.alpha$map_spec_impl$reify__1997 0x668a32a4 &quot;clojure.spec.alpha$map_spec_impl$reify__1997@668a32a4&quot;],
                    :value
                    {​​​​​​:description
                     &quot;Unreproducible deployment (no git commit)&quot;,
                     :query-group nil,
                     :app-name &quot;app-name&quot;,
                     :creds-profile my-creds-profile,
                     :op :push,
                     :uname my-test-name,
                     :allow [],
                     :region my-region,
                     :lambdas
                     {​​​​​​:api-handler
                      {​​​​​​:fn com.anon.app-name.ions.core/api-ion,
                       :integration :api-gateway/proxy,
                       :description
                       &quot;Handles requests to REST API.&quot;,
                       :timeout-secs 29,
                       :concurrency-limit :none}​​​​​​,
                      :file-upload-handler
                      {​​​​​​:fn
                       com.anon.app-name.ions.core/file-upload-handler,
                       :description
                       &quot;Handles notifications received from S3 when a user uploads a file to uploads bucket.&quot;,
                       :timeout-secs 900,
                       :concurrency-limit :none}​​​​​​,
                      :file-cleanup-handler
                      {​​​​​​:fn
                       com.anon.app-name.ions.core/file-cleanup-handler,
                       :description
                       &quot;Cleanups orphan files in database. Triggered by AWS Events every midnight.&quot;,
                       :timeout-secs 300,
                       :concurrency-limit 1}​​​​​​,
                      :common-connector
                      {​​​​​​:fn
                       com.anon.app-name.ions.core/common-connector,
                       :description
                       &quot;Handles common connection tasks between datomic and other Amazon services when required.&quot;,
                       :timeout-secs 300,
                       :concurrency-limit :none}​​​​​​,
                      :first-platform-connector
                      {​​​​​​:fn
                       com.anon.app-name.ions.core/first-platform-connector,
                       :description
                       &quot;Handles first-platform related connection tasks between datomic and other Amazon services when required.&quot;,
                       :timeout-secs 300,
                       :concurrency-limit :none}​​​​​​,
                      :second-platform-connector
                      {​​​​​​:fn
                       com.anon.app-name.ions.core/second-platform-connector,
                       :description
                       &quot;Handles second-platform related connection tasks between datomic and other Amazon services when required.&quot;,
                       :timeout-secs 300,
                       :concurrency-limit :none}​​​​​​}​​​​​​,
                     :datomic.ion.dev.config/resource
                     &quot;datomic/ion-config.edn&quot;,
                     :local {​​​​​​:home nil}​​​​​​,
                     :bucket
                     &quot;datomic-code-hash&quot;}​​​​​​}​​​​​​}​​​​​​)}​​​​​​
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11113/datomic-ion-push-fails</guid>
<pubDate>Wed, 29 Sep 2021 07:41:53 +0000</pubDate>
</item>
<item>
<title>Do I have to switch to Java 8 or 11 from 16.0.1?</title>
<link>https://ask.clojure.org/index.php/11052/do-i-have-to-switch-to-java-8-or-11-from-16-0-1</link>
<description>&lt;p&gt;Hi &lt;br&gt;
I saw a comment on Clojure.org stating that it only runs on java 8 or 11. I have 16.0.1 installed. What  is the best solution for me? I really do not want to download Java 11 and in a way downgrade. I am also concerned with my older projects all configured to use newer versions. &lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11052/do-i-have-to-switch-to-java-8-or-11-from-16-0-1</guid>
<pubDate>Tue, 14 Sep 2021 20:22:11 +0000</pubDate>
</item>
<item>
<title>Are there plans for official docs (rationale and guide) on datafy / nav?</title>
<link>https://ask.clojure.org/index.php/11032/are-there-plans-for-official-docs-rationale-and-guide-datafy</link>
<description>&lt;p&gt;If Clojure is to become (even) more data oriented, these are powerful tools to achieve that goal. The community needs support to encourage adoption.&lt;/p&gt;
&lt;p&gt;The current state of documentation for &lt;code&gt;datafy&lt;/code&gt; and &lt;code&gt;nav&lt;/code&gt; is not sufficient IMHO to encourage independent learning on a broad scale.&lt;/p&gt;
&lt;p&gt;There is no canonical source of such documentation in the community despite some valiant efforts (eg @SeanCorfield who has a &lt;a rel=&quot;nofollow&quot; href=&quot;https://corfield.org/blog/2018/12/03/datafy-nav/&quot;&gt;great blog post&lt;/a&gt; and is an active proponent). &lt;/p&gt;
&lt;p&gt;Examples are difficult to find around the internet ... &lt;a rel=&quot;nofollow&quot; href=&quot;https://gist.github.com/sashton/56a14d275c71d7ce3e224c11c9a16bd4&quot;&gt;here's a good one&lt;/a&gt; from a Slack recommendation by @Frederick on there.&lt;/p&gt;
&lt;p&gt;We know that there are problems with Slack since we cannot easily search history so keeping it here might help people find it in the meantime.&lt;/p&gt;
&lt;p&gt;It would be good to have a rationale explaining the problem it is solving, the general approach and some specifics on the design.&lt;/p&gt;
&lt;p&gt;Likewise a guide on how it should be used with a worked example and some hints and tips on how to approach implementations.&lt;/p&gt;
&lt;p&gt;I know it's marked as alpha but this has not prevented docs on other aspects of the language.&lt;/p&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11032/are-there-plans-for-official-docs-rationale-and-guide-datafy</guid>
<pubDate>Sat, 11 Sep 2021 10:26:57 +0000</pubDate>
</item>
<item>
<title>instaparse and an s-exp language: how do i deal with comments?</title>
<link>https://ask.clojure.org/index.php/11008/instaparse-and-an-s-exp-language-how-do-i-deal-with-comments</link>
<description>&lt;p&gt;I am trying to write a parser for an s-expression-based language.  It has the usual &lt;code&gt;;&lt;/code&gt; to the end of line comments.  My problem is that I don't want to strip the comments (my original goal was to write a pretty-printer/formatter), and the comments can appear anywhere in the code.  &lt;/p&gt;
&lt;p&gt;For example, I can have&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; pretty normal -- this function does blah blah blah
(define-private (blah)
  ;; TODO: do something useful here
  (= 23 5))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(define-private ;; make this public maybe?
  (blah)
  (let (
    (enigma 23) ;; snicker
    (laws ;; this is a terrible example
      5))
    ;; inside the let body
   (= enigma 
    ;; todo: constant folding?
    laws)))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;How do I get instaparse to handle that?&lt;/p&gt;
&lt;p&gt;Stripping comments is trivial -- I can use something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defparser ws-or-comments
  &quot;ws-or-comments = #'\\s+' | comment+
   comment = #';+[^\n]*'
&quot; :auto-whitespace :standard)

(defparser my-parser ... :auto-whitespace ws-or-comments)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Libs</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11008/instaparse-and-an-s-exp-language-how-do-i-deal-with-comments</guid>
<pubDate>Fri, 03 Sep 2021 09:08:24 +0000</pubDate>
</item>
<item>
<title>Why tools-deps downloads all deps again when i run the tests (locally and on CI)</title>
<link>https://ask.clojure.org/index.php/10999/why-tools-deps-downloads-all-deps-again-when-run-tests-locally</link>
<description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am trying to download all deps so tests and other steps on CI should not do it.&lt;/p&gt;
&lt;p&gt;I run this command to download all deps&lt;br&gt;
&lt;code&gt; clojure -Sdeps '{:mvn/local-repo &quot;.m2&quot;}' -A:dev:test:prod:frontend -Spath &amp;gt; /dev/null&lt;/code&gt;&lt;br&gt;
I can confirm &lt;code&gt;.m2&lt;/code&gt; and &lt;code&gt;.cpcache&lt;/code&gt; dirs are there.&lt;/p&gt;
&lt;p&gt;But when I run &lt;br&gt;
&lt;code&gt;clojure -Sdeps '{:mvn/local-repo &quot;.m2&quot;}' -M:dev:test&lt;/code&gt;&lt;br&gt;
All deps are being downloaded again.&lt;/p&gt;
&lt;p&gt;It reproduces locally and on ci.&lt;/p&gt;
&lt;p&gt;Sdescribe&lt;br&gt;
&lt;code&gt;{:version &quot;1.10.3.967&quot;
 :config-files [&quot;/usr/local/Cellar/clojure/1.10.3.967/deps.edn&quot; &quot;/Users/kirill/.clojure/deps.edn&quot; &quot;deps.edn&quot; ]
 :config-user &quot;/Users/kirill/.clojure/deps.edn&quot;
 :config-project &quot;deps.edn&quot;
 :install-dir &quot;/usr/local/Cellar/clojure/1.10.3.967&quot;
 :config-dir &quot;/Users/kirill/.clojure&quot;
 :cache-dir &quot;.cpcache&quot;
 :force false
 :repro false
 :main-aliases &quot;&quot;
 :repl-aliases &quot;&quot;}&lt;/code&gt;&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10999/why-tools-deps-downloads-all-deps-again-when-run-tests-locally</guid>
<pubDate>Thu, 02 Sep 2021 13:50:27 +0000</pubDate>
</item>
<item>
<title>tools.build.api/git-count-revs should support rev-lists path argument</title>
<link>https://ask.clojure.org/index.php/10958/tools-build-api-count-revs-should-support-lists-path-argument</link>
<description>&lt;p&gt;Given a monorepo it's useful to have git-count-revs return only the revs affecting a particular folder.&lt;/p&gt;
&lt;p&gt;Ie:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd mymonorepo/service-a
$ git rev-list HEAD --count
1024 # all revs in monorepo
$ git rev-list HEAD --count -- .
17 # only count revs affecting service-a
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10958/tools-build-api-count-revs-should-support-lists-path-argument</guid>
<pubDate>Sun, 22 Aug 2021 10:20:03 +0000</pubDate>
</item>
<item>
<title>tools.build.api/write-pom does not expose generated pom's filename</title>
<link>https://ask.clojure.org/index.php/10956/tools-build-api-write-pom-does-expose-generated-poms-filename</link>
<description>&lt;p&gt;&lt;code&gt;tools.build.api/write-pom&lt;/code&gt; writes a pom.xml file, but does not expose the file name.&lt;/p&gt;
&lt;p&gt;Many tools that deploy to Clojars/Maven Central/etc. expect to be passed the name of a pom.xml file. For example &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clj-commons/pomegranate/blob/41ccbf9e20a5a82680133b7438443da45de8db2d/src/main/clojure/cemerick/pomegranate/aether.clj#L403&quot;&gt;cemerick.pomegranate.aether/deploy&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/slipset/deps-deploy/blob/b4359c5d67ca002d9ed0c4b41b710d7e5a82e3bf/src/deps_deploy/deps_deploy.clj#L207&quot;&gt;deps-deploy.deps-deploy/deploy&lt;/a&gt; expect a &lt;code&gt;:pom-file&lt;/code&gt; argument.&lt;/p&gt;
&lt;p&gt;This leads to hard-coding this filename, for example in &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/seancorfield/next-jdbc/blob/5992c8d9bb25760519e02cd6a91739291f2c1e6c/deps.edn#L55&quot;&gt;next-jdbc deps.edn&lt;/a&gt;, or re-calculating it, as in &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/mainej/f-form/blob/f36bef6e4330167e4f9387436f02c647a98233db/dev/build.clj#L19&quot;&gt;f-form dev/build.clj&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Would it be possible for tools.build to expose either the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.build/blob/d3008e159eb2afbc4b0019e1d36cf20e1129c394/src/main/clojure/clojure/tools/build/tasks/write_pom.clj#L236&quot;&gt;pom directory&lt;/a&gt; or &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/tools.build/blob/d3008e159eb2afbc4b0019e1d36cf20e1129c394/src/main/clojure/clojure/tools/build/tasks/write_pom.clj#L237&quot;&gt;pom filename&lt;/a&gt;, to facilitate the integration of builds and deploys?&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10956/tools-build-api-write-pom-does-expose-generated-poms-filename</guid>
<pubDate>Sat, 21 Aug 2021 21:01:23 +0000</pubDate>
</item>
<item>
<title>getting &quot;Function not found&quot; when invoking clojure with -X:alias</title>
<link>https://ask.clojure.org/index.php/10947/getting-function-not-found-when-invoking-clojure-with-alias</link>
<description>&lt;p&gt;I have two aliases in my deps.edn:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
 :deps
 {
  org.clojure/spec.alpha {:mvn/version &quot;0.2.194&quot;}
  aleph/aleph {:mvn/version &quot;0.4.7-alpha7&quot;}
  hiccup/hiccup {:mvn/version &quot;2.0.0-alpha2&quot;}
  }

 :aliases 
 { 
  :web-server {
               :exec-fn web.network-service/run 
               :exec-args {:port 8080} 
               }
  :test-web-server { 
                    :exec-fn test.tnetwork-service/run 
                    :exec-args {:port 9090}
                    }
  }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When invoking &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -X:web-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I get &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Function not found: web.network-service/run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Everything is honky dory when invoking &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -X:test-web-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I don't see why would that be, the exec-funs are basically identical. Take a look at full code here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sidesteps/network-grid&quot;&gt;https://github.com/sidesteps/network-grid&lt;/a&gt;&lt;br&gt;
I have   &lt;code&gt;:paths [&quot;.&quot; &quot;src&quot;]&lt;/code&gt; in my global deps.edn&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10947/getting-function-not-found-when-invoking-clojure-with-alias</guid>
<pubDate>Wed, 18 Aug 2021 16:07:57 +0000</pubDate>
</item>
<item>
<title>Setting --prefix clojure-tools results in the installation being deleted</title>
<link>https://ask.clojure.org/index.php/10940/setting-prefix-clojure-tools-results-installation-deleted</link>
<description>&lt;p&gt;If the CLI tools installer is run with --prefix clojure-tools then the tools will be installed into ./clojure-tools and then subsequently deleted. This is because &quot;clojure-tools&quot; is the name of a temporary folder created by the installer.&lt;/p&gt;
&lt;p&gt;This is a corner case, but it had me scratching my head for a few minutes and is a potential source of frustration when someone is just starting to use Clojure. Clojure-tools is a reasonable name for the CLI install if you're just trying out clojure and want to e.g. install into your home directory just to have a look at clojure.&lt;/p&gt;
&lt;p&gt;Suggested fixes&lt;br&gt;
Name the temp dir temp-something, or use mktemp&lt;br&gt;
Add a check that prefix &amp;lt;&amp;gt; temp dir name&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10940/setting-prefix-clojure-tools-results-installation-deleted</guid>
<pubDate>Sat, 14 Aug 2021 15:17:29 +0000</pubDate>
</item>
<item>
<title>create-basis/java-command do not handle :jvm-opts</title>
<link>https://ask.clojure.org/index.php/10894/create-basis-java-command-do-not-handle-jvm-opts</link>
<description>&lt;p&gt;I have a &lt;code&gt;:test&lt;/code&gt; alias in my project, which includes &lt;code&gt;:jvm-opts&lt;/code&gt; (as well as &lt;code&gt;:extra-paths&lt;/code&gt; and &lt;code&gt;:extra-deps&lt;/code&gt;). I call &lt;code&gt;tools.build.api/create-basis&lt;/code&gt; with &lt;code&gt;{:aliases [:test]}&lt;/code&gt; and then pass that basis to &lt;code&gt;tools.build.api/java-command&lt;/code&gt; but that doesn't include those JVM options.&lt;/p&gt;
&lt;p&gt;In order to pick up those JVM options, I needed to do this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defn run-tests
  [_]
  (let [basis    (b/create-basis {:aliases [:test]})
        combined (t/combine-aliases basis [:test])
        cmds     (b/java-command {:basis     basis
                                  :java-opts (:jvm-opts combined)
                                  :main      'clojure.main
                                  :main-args [&quot;-m&quot; &quot;cognitect.test-runner&quot;]})
        {:keys [exit]} (b/process cmds)]
    (when-not (zero? exit)
      (throw (ex-info &quot;Tests failed&quot; {})))))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(so I have to use &lt;code&gt;tools.deps.alpha/combine-aliases&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Is this expected? Should this be easier?&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10894/create-basis-java-command-do-not-handle-jvm-opts</guid>
<pubDate>Tue, 03 Aug 2021 04:31:20 +0000</pubDate>
</item>
<item>
<title>tools.build.api/write-pom does not update scm&gt;tag</title>
<link>https://ask.clojure.org/index.php/10893/tools-build-api-write-pom-does-not-update-scm-tag</link>
<description>&lt;p&gt;Although &lt;code&gt;write-pom&lt;/code&gt; updates the &lt;code&gt;&amp;lt;version&amp;gt;&lt;/code&gt; field in the &lt;code&gt;pom.xml&lt;/code&gt;, it does not attempt to update the &lt;code&gt;&amp;lt;scm&amp;gt;&amp;lt;tag&amp;gt;&lt;/code&gt; field. How should folks deal with that tag field when using &lt;code&gt;tools.build&lt;/code&gt;?&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10893/tools-build-api-write-pom-does-not-update-scm-tag</guid>
<pubDate>Tue, 03 Aug 2021 03:41:09 +0000</pubDate>
</item>
<item>
<title>Add support for BOM (Bill Of Materials) dependencies</title>
<link>https://ask.clojure.org/index.php/10892/add-support-for-bom-bill-of-materials-dependencies</link>
<description>&lt;p&gt;Currently, if you have a dependency that is a BOM on Maven, you have to track down what all the components of that BOM are and list them as explicit, individual dependencies. It would save a lot of detective work and redundancy if t.d.a supported this type of dependency directly.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10892/add-support-for-bom-bill-of-materials-dependencies</guid>
<pubDate>Mon, 02 Aug 2021 17:08:00 +0000</pubDate>
</item>
<item>
<title>help/doc doesn't work with project dependencies</title>
<link>https://ask.clojure.org/index.php/10888/help-doc-doesnt-work-with-project-dependencies</link>
<description>&lt;p&gt;Repro:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(! 748)-&amp;gt; cat deps.edn 
{:deps {org.clojure/data.csv {:mvn/version &quot;RELEASE&quot;}}}
(! 749)-&amp;gt; cat src/foo.clj 
(ns foo
  &quot;Example namespace.&quot;
  (:require [clojure.data.csv :as csv]))

(defn bar &quot;Example function&quot; [_] (println &quot;Baaa!&quot;))
(! 750)-&amp;gt; clojure -X foo/bar
Baaa!
(! 751)-&amp;gt; clojure -X:deps help/doc :fn foo/bar
Syntax error (FileNotFoundException) compiling at (foo.clj:1:1).
Could not locate clojure/data/csv__init.class, clojure/data/csv.clj or clojure/data/csv.cljc on classpath.

Full report at:
/var/folders/p1/30gnjddx6p193frh670pl8nh0000gn/T/clojure-12591734153756667401.edn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Because &lt;code&gt;-X:deps&lt;/code&gt; replaces the project dependencies, only the &lt;code&gt;src&lt;/code&gt; files are found (because &lt;code&gt;:paths&lt;/code&gt; is not replaced).&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10888/help-doc-doesnt-work-with-project-dependencies</guid>
<pubDate>Thu, 29 Jul 2021 17:14:04 +0000</pubDate>
</item>
<item>
<title>Exception using futures with -X on Clojure CLI 1.10.3.929</title>
<link>https://ask.clojure.org/index.php/10850/exception-using-futures-with-x-on-clojure-cli-1-10-3-929</link>
<description>&lt;p&gt;There seems to be a weird issue related to &lt;code&gt;-X&lt;/code&gt; and futures with Clojure CLI 1.10.3.929:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ clojure --version
Clojure CLI version 1.10.3.929
$ clojure -Srepro -X clojure.core.server/start-server :name '&quot;server&quot;' :port 5555 :accept clojure.core.server/repl :server-daemon false
$ clojure -Srepro -J-Dclojure.server.repl=&quot;{:port 6666 :accept clojure.core.server/repl}&quot;
$ nc localhost 5555
user=&amp;gt; (def x (future 1))
Execution error (RejectedExecutionException) at java.util.concurrent.ThreadPoolExecutor$AbortPolicy/rejectedExecution (ThreadPoolExecutor.java:2057).
Task java.util.concurrent.FutureTask@14c75e2b[Not completed, task = clojure.core$binding_conveyor_fn$fn__5772@4f4cba65] rejected from java.util.concurrent.ThreadPoolExecutor@5d5b17a8[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
$ nc localhost 6666
user=&amp;gt; (def x (future 2))
#'user/x
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I cannot reproduce the issue with 1.10.3.875.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;-X&lt;/code&gt; invocation doesn't work at all on 1.10.3.882, so I can't (easily) narrow it down any further.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10850/exception-using-futures-with-x-on-clojure-cli-1-10-3-929</guid>
<pubDate>Mon, 26 Jul 2021 17:23:05 +0000</pubDate>
</item>
<item>
<title>help/doc would be useful for -Ttools</title>
<link>https://ask.clojure.org/index.php/10782/help-doc-would-be-useful-for-ttools</link>
<description>&lt;p&gt;Although you can &lt;code&gt;clojure -Ttools show :tool something&lt;/code&gt;, you don't get much information back about it and you can't use the new &lt;code&gt;-X:deps help/doc&lt;/code&gt; on it because it isn't loaded via an alias.&lt;/p&gt;
&lt;p&gt;Please add &lt;code&gt;help/doc&lt;/code&gt; and &lt;code&gt;help/dir&lt;/code&gt; to &lt;code&gt;-Ttools&lt;/code&gt; so that it is easier to get help/documentation for the installed tools.&lt;/p&gt;
</description>
<category>Tools</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10782/help-doc-would-be-useful-for-ttools</guid>
<pubDate>Wed, 14 Jul 2021 03:26:54 +0000</pubDate>
</item>
</channel>
</rss>