tools-deps

Discuss tools.deps.alpha, tools.build, and the clj/clojure command-line scripts! See also #depstar #clj-new
Reily Siegel 2021-07-03T06:16:50.010800Z

Is there any possibility/interest in integrating deps.edn with https://guix.gnu.org/? As a functional package manager, Guix seems to be relatively in-line with Clojure principles. There are a few advantages that I can think of to a guix integration. First, Guix allows an application/library to define dependencies on non-jvm components. Second, because packaging is a solved (ish) problem in Guix, many of the problems with Uberjars, such as diffuclty of embedding a JVM/JRE can be avoided. Finally, because Guix allows for more complex pacakge definitions than deps.edn, clojure code can (and currently is) automatically compiled by Guix upon installation. However, there is one major drawback to this integration. guix (at least in officially endorsed package channels) requires that all packages be built from source using a Guix build system. However, Clojurescript (which is depended on by many Clojure libraries via core.async) depends on many Google java libraries which are currently cumbersome to build from source in an automated fashion. Because of this, I have chosen to submit the clojure-tools package to an unofficial third-party package channel for now. I think, assuming we can overcome this build requirement (this is a one time cost), a Guix integration could be a major advantage for Clojure. Ideally, this would work in a similar manner to gitdeps, where a dep map could be specified like {my-guix-dep {:guix/package clojure-my-guix-dep}} .

alexmiller 2021-07-03T12:35:21.013200Z

I’m a little unclear if you are looking to make something available in guix or if you are looking to use guix as a source of dependencies, or both and what problem you’re trying to solve by doing so

alexmiller 2021-07-03T12:39:14.017800Z

If your are looking to establish interest in a feature or integration it’s best to ask at https://ask.clojure.org to gather votes. An important thing to keep in mind is how deps.edn dependencies are used, which is to gather paths to put on the classpath. If guix mostly holds non classpath things then it’s probably not useful to include

Reily Siegel 2021-07-03T15:44:07.019200Z

I'm mostly interested in using guix as a dependency source. Guix packages many java libraries (and some clojure libraries, despite the above issues with building CLJS) that use the class path. The idea behind guix integration is that a classpath library in guix could be packaged to have a dependency on a non-classpath package.

Reily Siegel 2021-07-03T15:44:23.019400Z

I will make a post about this on Ask Clojure as soon as I have a chance.

hadils 2021-07-03T16:44:43.021400Z

Hi! I am setting up a CI pipeline on buddy.works. This uses Docker containers. I am wondering if tools.deps depends on Maven to be installed. If not, how can I control where the jars are placed during installation?

borkdude 2021-07-03T17:11:30.021900Z

@hadilsabbagh18 you don't have to install mvn. I believe tools.deps supports :mvn/local-repo

borkdude 2021-07-03T17:12:00.022200Z

https://clojure.org/reference/deps_and_cli#_maven

alexmiller 2021-07-03T17:15:32.022500Z

Correct on both counts

hadils 2021-07-03T18:28:40.023Z

Thank you very much @borkdude and @alexmiller!!