This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
ragge: interesting, it could be this: http://stackoverflow.com/a/3014860
@micha: yeah, I thought it might be that too at first... clojure has the same bug: http://dev.clojure.org/jira/browse/CLJ-1659
I tried this: https://github.com/boot-clj/boot/blob/814d9b6ff991c113f323ab2c35a04750a825d0b0/boot/pod/src/boot/pod.clj#L358
I also tried fixing another unclosed resource in jar-entries*
: https://github.com/boot-clj/boot/blob/814d9b6ff991c113f323ab2c35a04750a825d0b0/boot/pod/src/boot/pod.clj#L301
currently, the JarFile
opened isn't closed: https://github.com/boot-clj/boot/blob/76980e6b132f46a8b00cecd5fd2713343cc21a49/boot/pod/src/boot/pod.clj#L301
I tried these changes: https://github.com/ragnard/boot/commit/814d9b6ff991c113f323ab2c35a04750a825d0b0
@micha: @juhoteperi related to pod dependencies I was wondering if it would make sense to add something like the output of boot show -d
for each pod when called with -vv
— thoughts?
@ragge: excellent sleuthing!
Hi I have some problems with converting an leiningen build to boot
I am currently using trapperkeeper, and trapperkeeper apparently expects your src content so be copied in the jar
So I get the follwing exception after I created a uberjar
java.io.FileNotFoundException: Could not locate nl/avisi/xodus/service__init.class or nl/avisi/xodus/service.clj on classpath.
When I inspect the Jar I see this is true? Is there an option to force this?
@ragge: After I started running off of the master boot branch my uber problem disappeared.
I then started seeing the “too many files open” bug as well, your patch fixed it for me, thanks!
@alandipert @estsauver I'm out now but will try to tidy up a PR later today
Nvm fixed it -_-
@mitchelkuijpers: what was the fix?
I have added the src/clj folder to the resources 😛
that fixes it, stupid trapperkeeper does not support aot
(Just trying to minimize the https://xkcd.com/979/ effect )
@estsauver: Haha you're right
@mitchelkuijpers: curious, why are you AOT-ing?
I am not anymore, because trapperkeeper does not support it
but the main reason is that the application starts a bit faster
ah, yes
i ask because i try to spread the good news about the web + war tasks, and detest AOT
Aha ok I don't exactly know what the web task is?
it allows you to generate servlets without AOT, by generating a web.xml file and putting it on the fileset that's compatible with https://github.com/tailrecursion/clojure-adapter-servlet
so if you are deploying to a servlet container you can both 1) not have to aot anything and 2) user uber --as-jars (much faster than default uber)
Oh thats nice!
i have been working on and off on something similar, except for cli
that provides a proxy -main that runs a build.boot in the jar, so we can distribute boot cli programs with no deps except jvm
@ragge: re: PR that sounds great, thanks!
Does that mean you could kind of use boot as an integral part of your distributed application?
well, you can already do that if you're brave enough
more that it would make it possible to distribute standalone jars easily
Hmm might need to look into that
I am currently building the distribution of this application http://dash.avisi.com/ with leiningen
Lol should fix that description of the page
But that is the reason I am looking at boot creating a tar.gz with custom stuff is very narly with leiningen
that looks really cool!
i can imagine producing debs and rpms also, with fpm in a jruby pod
yes definately
Had never seen fpm, thank you sir!
sure! :thumbsup:
I get some errors with instaparse
I think this is probably the bug: https://github.com/Engelberg/instaparse/issues/104
I guess the fix for now is making sure boot uses the same clojure version?
Yes that fixed it 😃
@alandipert: was actually considering doing something for deb as that's what we're mostly deploying... we're currently using fpm, but using it from embedded jruby in a pod sounds both a bit wicked, and very exciting. is that something someone is working on?
@alandipert: if not, it sounds like the perfect first proper task for me
@ragge: not that i know of, go for it!
@ragge: i made a ticket for it here https://github.com/boot-clj/boot/issues/224
@alandipert: just a question re the unpack-jar
fn: what's the reason for catching this exception and just printing a warning? https://github.com/boot-clj/boot/blob/master/boot/pod/src/boot/pod.clj#L371
if exception is swallowed, that means a file that was in the jar to be unpacked will not be in the uberjar, which is pretty serious...
that was due to issues like this https://github.com/boot-clj/boot/commit/abb64d20b760d81b19b1c32026af6173cab9377d
not sure I agree... as I said, it totally make sense in this case, but defaulting to automatically excluding files from your uberjar when an exception occurred somewhere in that fn...
just seemed like a dangerous default... was mostly asking to see if i should remove it in PR, but if you feel that should be the behaviour, I won't change it
it would be a shame if we make it so that the user always needs to jump through hoops of excluding things to get uber to work
well, it's only an issue when files do clash like in the issue... and currently boot makes a global decision that it's first-one-wins... how do you know that's what the user wants?
that's just windows refusing to create a file with the same name as the non-empty directory
too me it just feels weird to not fail the task when an exception occurs like this (and if it's the license issue, let the user handle it, maybe print "if you want to exclude this failing file, add this /LICENSE
to :exclude" etc...)
it's like the javac task would succeed even if compilation failed, but just print warnings
the uber task has been problematic from the start so i think it's maybe alright to change things around, because i think a lot of people are annoyed by how it currentlyworks
@podviaznikov: there are still some references to meta.edn
here: https://github.com/hashobject/perun#how-does-it-work
thanks, will remove them now
Btw. @podviaznikov I wrote a Boot task for LiveReload (https://github.com/Deraen/boot-livereload) it enables quite nice workflow for Perun: https://github.com/Deraen/deraen.github.io/blob/blog/build.boot#L34-L40
@juhoteperi: it’s pretty cool. I’ll try it
@podviaznikov: in some tasks it would be neat if the exceptions give some more information about what file caused it
It's not yet pushed to clojars as I'm waiting for clj-livereload PR to be merged.
@podviaznikov: also is there documentation on specifying the initial metadata in markdown files? Is that just something that comes with markdown-clj?
@martinklepsch: what exceptions do you see?
@martinklepsch: metadata is just “key:value” pairs. You can see example here: https://raw.githubusercontent.com/hashobject/blog.hashobject.com/master/resources/posts/20130603-clojure-webapp-with-https-support-on-amazon-beanstalk.md
and this function https://github.com/hashobject/perun/blob/master/src/io/perun/markdown.clj#L32 parses metadata
@podviaznikov: yeah, I figured that out, but I was used —
as delimiters (jekyll) and surprised about the HTML comments
I think I can add support for jekyll style. I did that parses for my initial implementation 2 years ago and I don’t remember why I did it this way back then
created a task: https://github.com/hashobject/perun/issues/8.
I’m fine with either, was just confused initially, probably something that would be useful in the Readme/task docstring
@podviaznikov: re exceptions: getting them when having html inside markdown blockquotes, worked in kramdown but doesn’t with markdown-clj
I’ll try to reproduce error and see what can be improved for exception handling
also do you know other good markdown libraries in clojure?
No idea about markdown libs, I guess most just wrap the most popular Java lib (whichever that is)
As far as I know, Dmitri’s is the standard: https://github.com/yogthos/markdown-clj
podviaznikov: check this out: https://github.com/tailrecursion/boot-hoplon/blob/master/src/tailrecursion/hoplon/markdown.clj
whoops: https://github.com/tailrecursion/boot-hoplon/blob/master/src/tailrecursion/boot_hoplon/markdown.clj
my objective there was to use markdown as a general purpose s-expression markup language