Fork me on GitHub
#boot
<
2015-10-09
>
danpallas01:10:52

Hi everyone. I'm just getting started with boot, and I'm having some trouble completing the tutorial on the github readme

danpallas01:10:27

I"m getting this error at the very end of it: Could not locate demo/boot_build__init.class or demo/boot_build.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.

danpallas01:10:22

src/demo/boot_build.clj does exist in my project and I've run out of ideas trying to figure out what the problem is.

danpallas02:10:43

The command that fails for me is "boot build"

flyboarder02:10:53

I had that issue as well, dont use dashes

danpallas02:10:24

is boot incapable of dealing with dashes in namespaces now?

flyboarder02:10:38

not sure, i just avoided the issue

flyboarder02:10:47

didnt spend time on it

danpallas02:10:01

ha. that's smart. I've spent too much time on this

micha02:10:21

i can have a look too if you want

micha02:10:31

boot doesn't do anything special with namespaces

danpallas02:10:35

yes please. Thank you

flyboarder02:10:24

source-paths

flyboarder02:10:29

you also have a typo

micha02:10:17

@flyboarder: i think that's it!

flyboarder02:10:24

here i removed the dashes and fixed a few typos, try that and maybe add the dashes back in to test that separate

danpallas02:10:19

what was wrong with the source-paths?

flyboarder02:10:30

you had source-path

danpallas02:10:00

oh. well that will do it

danpallas02:10:14

thank you for taking a look at it

danpallas02:10:39

it does work with the dashes when source-paths is spelled correctly

martinklepsch09:10:27

If boots env is supposed to conform to a specific schema, maybe it would be helpful to validate it as well

micha13:10:55

@martinklepsch: that's a good idea, i think

micha13:10:36

and perform an assertion using clojure.core/get-method so we can tell the user which key(s) are unknown

micha15:10:01

hi flipmokid

micha15:10:13

the clojure version warning is only a warning

micha15:10:37

it's because your build.boot is a clojure program, not a configuration map

micha15:10:55

so when it runs clojure is already loaded on the classpath

micha15:10:20

your :dependencies tries to pull in 1.4 clojure

micha15:10:35

which won't work because clojure is already on the classpath when that happens

micha15:10:58

you can eliminate the warning by specifying the version of clojure in your :dependencies

micha15:10:45

ah i see a problem

micha15:10:56

your jdk-env task is not really a task

micha15:10:17

it needs to return the fileset

micha15:10:34

oh wait disregard that

micha15:10:17

it looks like your problem is the AOT

flipmokid15:10:02

Do you know what I could try to fix?

micha15:10:36

i would make the AOT namespaces as minimal as possible

flipmokid15:10:47

Also do you know if Boot uses JAVA_HOME when compiling or does it do something else?

micha15:10:57

to simplify you can just AOT a minimal shim namespace

micha15:10:13

boot uses your PATH to get the java executable

micha15:10:49

i think your issue is clojure-related, not boot-related

micha15:10:12

i.e. something in the server namespace isn't AOT friendly

micha15:10:33

if you're doing AOT to get ring working there are other ways to do that

micha15:10:38

that don't require AOT

flipmokid15:10:09

Okay, thanks very much. I'll look into that and see if I can remove the AOT stuff. I really appreciate you taking the time to look at it

micha15:10:35

you can use boot's web task

flipmokid15:10:17

Awesome, thanks! I'll give that a go now

micha15:10:31

also you can look at thist

flipmokid15:10:08

I'll try that one first

micha15:10:26

you're wanting to deploy this application to production?

flipmokid15:10:34

Not really, it's just a test. I originally wanted to run it via the repl but the first example I came across was a task to jar the app. I thought I'd go with that first, get the barebones code working and then come back running it without having to jar it up

micha15:10:23

also boot-http is a great task for serving ring apps

malcolmsparks16:10:45

hmm., latest everything and I can't seem to get cljs-repl to work:

java.lang.IllegalArgumentException: No value supplied for key: weasel.repl.websocket.WebsocketEnv@5165de1d

malcolmsparks16:10:07

is there something I'm missing - having just got used to a cljs repl, I'm finding the lack of it quite painful

martinklepsch17:10:41

@malcolmsparks: sometimes dependencies import their own weasel/austin/piggieback causing wrong dependencies to be loaded.

martinklepsch17:10:52

@malcolmsparks: when you run with -vvv you should see a line similar to this one:

Loaded REPL dependencies: ([org.clojure/tools.nrepl "0.2.8" :exclusions [[org.clojure/clojure]]] [cider/cider-nrepl "0.9.0-SNAPSHOT"] [weasel “0.7.0”] [org.clojure/tools.nrepl "0.2.11"] [com.cemerick/piggieback "0.2.1"] [org.clojure/clojurescript "1.7.58”])
If your dependencies differ try finding out which of your project's dependencies import the different one. (`boot show -d` will help)

alandipert18:10:12

had a thought today i'd love to collaborate on with anyone interested... the idea is: make & share metadata about yourself with a specially named github repo, modify the repo using a set of boot tasks

alandipert18:10:54

i haven't written the tool yet, but the idea is i could have added my gpg key by doing boot -d anyhub/gpg --import

alandipert18:10:12

and some other user could encrypt a file for me by doing boot -d anyhub/gpg --encrypt -f passwords.txt --recipient alandipert

alandipert18:10:58

other consumers of the anyhub data wouldn't work with the git repo directly, but through the anyhub/gpg library

alandipert18:10:05

so, the specially named gh repo establishes the point of coordination, and software libraries work with the data at this special location

alandipert18:10:22

the grander plot is an ecosystem of tools with some social aspect, storing their state and finding data through the special repo

raywillig18:10:01

@alandipert: that seems pretty cool

mahinshaw19:10:20

@alandipert: Would the users have some mapping to tools/meta, or would this be a way to transmit?

alandipert19:10:32

@mahinshaw: what do you mean?

alandipert19:10:41

or, i don't quite understand your question

mahinshaw19:10:17

Is the purpose to transmit information? Or is there some sort of central hub?

alandipert19:10:16

the purpose is to share information, and the point of centralization is github

alandipert19:10:23

coordination within the data is handled by tools

mahinshaw19:10:18

I guess I'm thinking about the file transfer example - This is like having a peer to peer from that angle?

mahinshaw19:10:14

using a boot task to do the transfer

alandipert19:10:34

oh, well the boot task would just clone the user's anyhub repo

alandipert19:10:41

and then look for data it needs in there

alandipert19:10:47

very similar to getting a library from clojars, except from github

alandipert19:10:07

the idea with git instead of clojars it to make it easy for non-clj tools

mahinshaw19:10:09

right. So the anyhub repo would host tools (or maybe point to them)?

alandipert19:10:21

i think the tools would create the repo if it didn't exist

alandipert19:10:01

so, anyhub-user is in the user's github account just to establish their identity, not really for them to do anything with directly except through tools

mahinshaw19:10:31

Now I'm tracking

mahinshaw19:10:08

That's an interesting idea. I'd be happy to help

alandipert19:10:24

cool, thanks!

alandipert19:10:36

the original use case was distributing passwords to the team at work

alandipert19:10:22

but, SSH pubkeys are only used for identification, not ideal for encryption

alandipert19:10:39

but there isn't a way to attach a gpg key to a github user

alandipert19:10:50

and it's helpful to use github, because our org structure is basically encoded on it

mahinshaw19:10:51

So one would be able to look up a public gpg key by github user

mahinshaw19:10:21

that's convinient

alandipert19:10:40

it's an alternative to (and inverse of, kinda?) https://keybase.io/

alandipert19:10:02

which lets you do keybase id

alandipert19:10:26

but it only does keys, and does other stuff like maintain your trustdb

mahinshaw19:10:13

And this would do the transimission as well as look up

alandipert19:10:54

yeah... i'm envisioning a library for clj to start ot manage the read/write

mahinshaw19:10:37

I'm guessing Java has a gpg lib for the encryption part?

mahinshaw19:10:19

Bouncy Castle?

alandipert19:10:59

that... or not do gpg at all, just provide things for adding/searching/importing and leav encryption to local gpg command

mahinshaw19:10:38

that makes sense. Looks like most wrappers use jni anyways

mahinshaw19:10:12

If you get to a place where you get things moving, let me know, and I will help out as time allows

alandipert20:10:30

@mahinshaw: thanks, i'll let you know when it picks up