Fork me on GitHub
#boot
<
2015-11-08
>
juhoteperi14:11:52

The Github integration is quite verbose 😄

micha14:11:29

too much?

micha14:11:46

i don't think i mind it myself

juhoteperi14:11:22

I don't mind either

micha14:11:26

i guess it could suppress some of it

micha14:11:35

like add them as "reactions" sort of

micha14:11:44

when there is a series of comments or something

micha14:11:13

2.5.0-SNAPSHOT now has a non-braindead sift task implementation, btw simple_smile

micha14:11:40

my tests with sifting uberjar contents went from 20sec -> 40ms

micha14:11:03

ridiculous, i know

juhoteperi14:11:10

Do you think it would be possible to get GPG changes to the next version?

micha14:11:18

does it break anything?

juhoteperi14:11:24

It shouldn't

micha14:11:34

awesome, feel free to merge it

juhoteperi14:11:14

I don't think I have permission

micha14:11:19

whoa really?

micha14:11:28

you're not an owner of boot-clj organization?

micha14:11:36

i'll fix that

micha14:11:39

sorry, i thought you were

micha14:11:08

ok should be good now

micha14:11:28

they changed their organization stuff around

danielsz15:11:14

Lots of activity

micha15:11:31

i'm working on crushing uberjar perf today

danielsz15:11:01

Oh, that's timely. My app takes something like 5 minutes to build simple_smile

micha15:11:11

yeah not anymore hopefully

micha15:11:07

if you could make a demo uberjar that takes a long time to build i could use that for testing

danielsz15:11:45

BTW, yesterday I had to upgrade my VPS. The running app has something like 400 MB, but during compilation my 1GB VPS could not handle it.

danielsz15:11:08

The JVM would error out with Out of Memory error.

dave15:11:13

hey @micha: i've almost got a "jar2bin" boot task working, it turns jar files into standalone unix executables

micha15:11:14

clojurescript is involved?

danielsz15:11:28

No, it's the stage when entries are being added to uberjar

danielsz15:11:52

I had to upgrade my VPS to a 2GB instance, then compilation would pass

dave15:11:30

would it make sense to put it under adzerk-oss?

micha15:11:33

@danielsz: interesting, i wouldn't expect uberjar to use a lot of memory

micha15:11:49

i wonder if streams need to be closed more aggressively or something

danielsz15:11:17

@micha Yeah, I have no idea what's the compilation process doing. I'm clueless.

micha15:11:22

i'll look into it; it would be helpful to have an example huge uberjar project

micha15:11:35

@dave: sure, why not?

danielsz15:11:40

@micha: Would it be sufficient to pass you a build boot with a fake core.clj

micha15:11:03

@danielsz: sure, if it exhibits the problem it would be most helpful

dave15:11:13

i don't think i have access to our clojars org -- at least i've never pushed anything to it

micha15:11:28

i can add you, one sec

danielsz15:11:11

@micha: Well, my reasoning is that it has to do with the amount and order of dependencies, but I could be wrong.

micha15:11:13

@dave what's your clojars username?

dave15:11:25

@micha daveyarwood

micha15:11:41

💥 done

dave15:11:51

awesome, thx!

danielsz15:11:13

BTW, my talk on boot-system that I gave after Clojutre, in Belgium and Spain, was recorded and published here: http://mattiasbuelens.github.io/interactiveprogrammingtalk/interactiveprogramming.html

juhoteperi15:11:53

Woah cool way to integrate the video with slides

danielsz15:11:39

Yeah, that's the work of mattias buelens, he wrote this slick reveal.js plugin to show video with slides. He's one of beClojure members, and I was lucky to be the first talk they produced with this technique

juhoteperi15:11:21

@danielsz: I have recently updated metosin's component library: https://github.com/metosin/palikka

danielsz15:11:54

@juhoteperi: Oh nice, I wasn't aware of this.

danielsz15:11:31

@juhoteperi: Would you like me to put a link in system's README to this or is internal stuff?

juhoteperi15:11:05

@danielsz: It's not internal but I don't think link is too useful

juhoteperi15:11:35

But would be cool if you have time to check the differences sometime and tell what you think

danielsz15:11:45

OK , I'd be happy to.

juhoteperi15:11:58

Could be useful to copy some ideas to System simple_smile

danielsz15:11:21

Yeah. I'm sure there's good stuff there.

juhoteperi15:11:02

I guess some features have minor drawbacks, like it requires Schema and tools.logging

danielsz15:11:17

I'll definitely take a closer look.

juhoteperi15:11:41

Also, @micha, here is my take on environment configuration: https://github.com/metosin/maailma

danielsz15:11:25

@juhoteperi I love this, you reinterpret everything to your taste. That's the spirit, young man.

danielsz15:11:49

Congrats for your build pipeline in CLJS!

juhoteperi16:11:33

We indeed do re-invent quite many things at Metosin, but at least in some cases we have managed to invent some new useful features 😄

micha16:11:26

@juhoteperi: very interesting

micha16:11:06

@danielsz: this presentation format is great

micha16:11:11

the best i've seen so far

dave16:11:13

hmm... i'm having trouble making a file in the fileset executable

micha16:11:04

you you need to do that after everything

micha16:11:17

the fileset doesn't know about permissions

micha16:11:31

because it's not clear how to do that in a system independent way

dave16:11:37

ah, i see

dave16:11:25

is it possible for a boot task to do things like that, after the fact?

dave16:11:41

i guess not, if they need to be composable, right?

micha16:11:03

you could write the file somewhere

micha16:11:05

in a task

micha16:11:23

copy the file out of the fileset to a directory that isn't managed by boot

micha16:11:35

and then set the executable bit on it

micha16:11:55

like write it to $CWD/bin or something

dave16:11:01

yeah, that's actually what i did in my first iteration simple_smile but then i realized that i couldn't use "target" as an explicit output directory

micha16:11:38

it could be an option on the task

micha16:11:43

the directory to write to

micha16:11:01

just remember to do io/make-parents on the directory in case it doesn't exist

micha16:11:23

i mean (.mkdirs dir)

dave16:11:19

what's the difference?

micha16:11:53

one makes the parent directory

micha16:11:08

(and any of its parents that don't exist)

micha16:11:22

the other makes the directory itself, and any parent directorues that don't exist

dave16:11:05

ah i see, so (.mkdirs dir) is better because it will create the directory itself if it doesn't exist already

micha16:11:26

yeah or call make-parents on the file you're going to write to before you write to it

micha16:11:32

that will do the same thing

dave16:11:47

ok, cool

dave17:11:10

^thoughts?

dave17:11:43

this is my first boot task, criticism welcome simple_smile

jaen18:11:32

I'm getting goog.require could not find: boot.cljs.main78961 and in my target folder I only have goog.require could not find: boot.cljs.main1867. Any idea what could have caused such a mistmatch?

onetom18:11:12

i was just about to ask about that too

jaen18:11:23

It must be caused by some recent changes, it's the first time I'm seeing it and I just bumped my cljs-related deps.

onetom18:11:35

the cljs announcement clearly stated 2 days ago that there are some breaking changes, but since the boot-cljs version was also bumped i assumed it should work

onetom18:11:23

hmmm… one difference from the project i get with lein new hoplon - which is also using boot-cljs:1.7.170-2 is that im using boot-http, not boot-jetty

juhoteperi18:11:56

How recent is the problem? Does -1 work?

juhoteperi18:11:41

Are you using automatically generated cljs.edn files?

mynomoto18:11:01

The templates are self updating, they may be broken.

jaen18:11:46

1.7.170-2 over here; restarting but just fixed this of course, but it may trigger again.

jaen18:11:53

Oh, automatically generated cljs.edn files?

jaen18:11:57

I must have missed that

jaen18:11:56

I thought you have to write out your cljs.edn files for each compilation artifact you want

juhoteperi18:11:03

That's preferred

juhoteperi18:11:12

but if you don't have any, boot-cljs will create one

juhoteperi18:11:40

that would explain the number on namespace name

onetom18:11:12

i moved (serve) to the end of the build pipeline - as i saw it in the hoplon template - and it works now. i thought it was irrelevant where is it in the pipeline...

jaen18:11:53

But for boot to catch that change you must have restarted, right?

jaen18:11:36

So it probably doesn't mean anything - for me restart without actually changing anything helped.

jaen18:11:17

@juhoteperi: so if i have my own cljs.edn the file shouldn't be named main1867 or whatever?

onetom18:11:44

@jaen: yeah, the cljs.edn name can be anything

onetom18:11:29

@jaen: i just had a quick look at the source to see if i can prove it easily. i haven't found the exact spot which finds these .edn files but if u have a look at how the boot-cljs test is done, then you can see it's not assuming any specific names: https://github.com/adzerk-oss/boot-cljs/blob/1894176517405d7d67d62b6a4adf73534b05d2f3/build.boot#L28-L32 it's using the index.cljs.edn and the other.cljs.edn files from: https://github.com/adzerk-oss/boot-cljs/tree/1894176517405d7d67d62b6a4adf73534b05d2f3/test/demo

micha18:11:05

yeah you can use any name for the .cljs.edn file, it only cares about the extension

jaen18:11:33

Yeah, I never said you can't

jaen18:11:37

What I was saying

jaen18:11:23

I understood @juhoteperi to mean that since it couldn't find boot.cljs.main1867 he suspected my cljs.edn could be autogenerated, which is not the case.

jaen18:11:32

That's why I asked if it should be not named like that.

micha18:11:14

it'll always generate a gensym namespace under boot.cljs.

micha18:11:20

the .cljs.edn file represents an application entry point, so the actual generated namespace doesn't need to have any particular name, since you will never be :requireing it from any of your namespaces

jaen18:11:27

I see. The issue that it tried to require a different gensym'd name than was generated still stands though. Not sure what could have caused that.

micha18:11:27

it's at the tip of the heirarchy

micha18:11:08

yeah i'm not familiar enough with the most recent changes to say anything useful about that

onetom18:11:30

im getting a few lines of logs with boot-jetty, like:

2015-11-09 02:18:06.174:INFO::clojure-agent-send-off-pool-0: Logging initialized @30738ms
2015-11-09 02:18:06.227:INFO:oejs.Server:clojure-agent-send-off-pool-0: jetty-9.3.1.v20150714
2015-11-09 02:18:06.328:INFO:oejw.StandardDescriptorProcessor:clojure-agent-send-off-pool-0: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
...
2015-11-09 02:18:06.352:INFO:oejs.Server:clojure-agent-send-off-pool-0: Started @30916ms

onetom18:11:37

can i turn these off somehow?

micha18:11:22

it's using the java logger

micha18:11:31

you can configure via log4j i believe

jaen18:11:35

Hmm, it seems to happen when I mess up and get an exception

jaen18:11:43

Then when I try reloading again I get the mismatch

onetom18:11:13

indeed. same here.

onetom19:11:26

@jaen: are you experiencing this with a hoplon project?

jaen19:11:13

Nope, never used hopleon thus far. Freshly started reagent thing.

micha19:11:36

the recent changes involved reloading .cljs.edn files, i believe

micha19:11:42

which seems to be related to your issue

micha19:11:01

git bisect might be helpful

onetom19:11:39

im looking at the latest commit which is talking about this unconditional cljs.edn reload, but it seems it's always creating a new main... namespace https://github.com/adzerk-oss/boot-cljs/commit/5a614c7ef8df1cd7f809a9204cac4eb49f329013

jaen19:11:55

Yeah, looking at this right now as well

jaen19:11:28

Maybe the context inside boot gets updated but the file is not emitted somehow?

onetom19:11:45

i can see this changing name space in target/index.html.out/cljs_deps.js, but the target/index.html.out/cljs_deps.js still contains the initial value:

goog.addDependency("../boot/cljs/main852.js", ['boot.cljs.main852'], ['hoplon.app_pages._index_DOT_html', 'cljs.core']);

juhoteperi19:11:04

Oh, calling gensym each time is not good

juhoteperi19:11:20

I wonder why I didn't see the problem

onetom19:11:23

maybe you should extend the test suite for repeated calls?

juhoteperi19:11:58

I should probably also remember to run boot-cljs tests before releases...

onetom19:11:59

which is very nice, btw, that there is a test!

juhoteperi19:11:08

Okay, I managed to reproduce this

onetom19:11:23

i always find myself learning a lot about software by looking at how the test harness is doing its instrumentation

juhoteperi19:11:54

I probably only checked that boot-reload reloads worked, didn't try full reload after a change

juhoteperi19:11:39

I think I found good way to test this simple_smile

onetom19:11:22

im gonna upgrade as soon as you released a fix!

juhoteperi19:11:15

I can reproduce the ns name changing in tests but the tests still pass

juhoteperi19:11:02

Well, there's the fix. No tests yet.

juhoteperi19:11:03

@onetom: Can you try master before I make a new release?

onetom20:11:50

deraen: affirmative. it worked

juhoteperi20:11:48

@jaen: -3 should fix the problem

jaen20:11:02

Nice, thanks

jaen20:11:24

Yup, appears to work

juhoteperi20:11:03

Testing boot tasks is an interesting area, could use more investigating.

juhoteperi20:11:03

Test for this particular case should look something like (let [compile-cljs (cljs)] (comp compile-cljs (test) (touch-files ["demo/core.cljs"]) compile-cljs (test))

juhoteperi20:11:22

And while end-to-end tests like boot-cljs currently does (starts a http server and loads the page on browser) are good, I would like to write unittests against the fileset contents

onetom20:11:34

deraen: have you used generative testing before? im just wondering, because u mentioned unit testing vs e2e...

juhoteperi20:11:10

hmh is generative testing different than property based (test.check)?

juhoteperi20:11:32

I keep looking for places to use test.check but haven't used it yet

onetom20:11:06

that's still a question to me but what i gathered from all around the internet it seems to be the same thing

martinklepsch21:11:57

@micha: how about merging the boot builds boot branch? 😄

micha21:11:52

martinklepsch: (doit)

onetom21:11:47

im trying to do some datomic development (again, finally) using boot-test the memory usage grows with every run though and the time required to run my tests too

onetom21:11:27

is there some reference setup somewhere on how to do this without such a "memory leak"?

martinklepsch21:11:37

Anyone seeing an obvious reason for No matching method: newPod? in the above branch? (https://github.com/boot-clj/boot/pull/340/files)

micha21:11:50

looks like App.java didn't merge well

martinklepsch21:11:53

the diff lists it as "renamed unchanged"