jemc changed the topic of #ponylang to: Welcome! Please check out our Code of Conduct => https://github.com/ponylang/ponyc/blob/master/CODE_OF_CONDUCT.md | Public IRC logs are available => http://irclog.whitequark.org/ponylang | Please consider participating in our mailing lists => https://pony.groups.io/g/pony
jemc has joined #ponylang
jemc has quit [Ping timeout: 248 seconds]
jemc has joined #ponylang
inara has quit [Quit: Leaving]
inara has joined #ponylang
mollymorphic has joined #ponylang
gokr has quit [Ping timeout: 260 seconds]
jemc has quit [Ping timeout: 260 seconds]
jemc has joined #ponylang
jemc has quit [Ping timeout: 260 seconds]
dipin has joined #ponylang
endformationage has quit [Quit: WeeChat 1.9.1]
inoas has joined #ponylang
gokr has joined #ponylang
gokr has quit [Ping timeout: 248 seconds]
dipin has quit [Quit: dipin]
khan has quit [Quit: khan]
gokr has joined #ponylang
samuell has joined #ponylang
codec1 has joined #ponylang
inoas has quit [Quit: inoas]
samuell has quit [Quit: Leaving]
<Candle> SeanTAllen: Thanks for the response, I've been offline for a few days (like quite a few people!). Given they are platform dependent, I wonder what the best way to document them en-mass is. I'm notoriously bad at documenting the correct things, but I'll have a think about it and try to throw some notes together.
<Candle> On the AST project, I have at least two ideas that I would like to use it for; documentation possibly being the easier one to do. My C is poor, so doing something with the documentation may be a useful project to improve that with. Pehaps using the C to generate an AST-like IR, and then pony to render to mkdocs. With the intention to replace the initial C element with pony-ast when it's available?
_andre has joined #ponylang
gokr has quit [Ping timeout: 240 seconds]
codec1 has quit [Quit: Leaving.]
codec1 has joined #ponylang
khan has joined #ponylang
codec2 has joined #ponylang
codec1 has quit [Read error: Connection reset by peer]
Praetonus has joined #ponylang
codec1 has joined #ponylang
codec2 has quit [Read error: Connection reset by peer]
gokr has joined #ponylang
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Remote host closed the connection]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
khan has quit [Remote host closed the connection]
khan has joined #ponylang
khan has quit [Remote host closed the connection]
jemc has joined #ponylang
dipin has joined #ponylang
endformationage has joined #ponylang
nisanharamati has joined #ponylang
codec1 has quit [Quit: Leaving.]
codec1 has joined #ponylang
<winksaville> @Schwarzbaer
<winksaville> Use -Dopenssl_1.1.0 (periods instead of underscore)
<Schwarzbaer> ...when using ponyc?
<winksaville> yes
<Schwarzbaer> ...*and* `make use=openssl_1.1.0` to build ponyc?
<winksaville> yes
<winksaville> did you checkout "support-openssl1.1" ?
<Schwarzbaer> Aye aye. Will try once Panda3D is built, that's eating up my CPU right now.
<Schwarzbaer> Yes.
<winksaville> $ grep 'openssl_1.1.0' packages/net/ssl/ssl_context.pony
<winksaville> you should see three occurances of " ifdef "openssl_1.1.0" then"
<Schwarzbaer> I do.
<winksaville> hmmnm
<winksaville> What OS?
<Schwarzbaer> Debian Stretch
<winksaville> hmmm, and openssl 1.1.0 is installed, I use Arch Linux.
dipin has quit [Quit: dipin]
<Schwarzbaer> Running the build right now, just to make sure I do this right.
<winksaville> after that, do:
<winksaville> rm -rf buil
<winksaville> rm -rf build
<winksaville> make use=openssl_1.1.0
<winksaville> The second line should be:
<Schwarzbaer> I ran make clean before it. :) At least I assume that that'd suffice.
<winksaville> Makefile:326: targeting openssl 1.1.0
<Schwarzbaer> That was the first output line actually.
<winksaville> Oh, right I have llvm 5 so I get a warning on that first
<winksaville> after the build then do a manual ponyc compile of examples/net/ssl
<winksaville> ./build/release/ponyc -Dopenssl_1.1.0 examples/net/ssl
<winksaville> I'm rebuilding ponyc now
<winksaville> So I just did:
<winksaville> $ ./build/release/ponyc --pic -Dopenssl_1.1.0 examples/net/
<winksaville> And no errors and the last line was:
<winksaville> Linking ./net
<Schwarzbaer> I'm still waiting for the ponyc build to finish...
<winksaville> Actually, some that's know to actually run is stdlib:
<winksaville> ./build/release/ponyc --pic -Dopenssl_1.1.0 packages/stdlib/
<winksaville> Running it:
<winksaville> ./stdlib
<winksaville> the last line is:
<winksaville> ---- Passed: 277
<Schwarzbaer> examples/net/ built!
<Schwarzbaer> ...and runs!
<Schwarzbaer> Thanks. SeanTAllen, jemc, Praetonus, concerning the OpenSSL1.1 PR, I can confirm: Works for me.
<winksaville> So what was different from earlier?
<winksaville> Please run stdlib as show above
<winksaville> (of course build it with -Dopenssl_1.1.0 first)
<Schwarzbaer> I guess one of the parameters provided was different. TBH the build-and-build-with process for that branch isn't documented too well.
<winksaville> yes, we need to update the docs
<winksaville> Did you try stdlib?
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
<Schwarzbaer> It just finished with a bunch of errors wrt pcre2. I guess I better check whether I have the -dev package for it installed.
<Schwarzbaer> Installed package, trying to build stdlib again...
<winksaville> k
<Schwarzbaer> Build successful!
<Schwarzbaer> Well, now I have no excuse for slacking on the "learn Pony, wrap dcparser, build a server" front any more, so now it's time to check out the new input device bindings of Panda3D, I guess.
<winksaville> Great and I assume ./stdlib told you all tests had passed?
<winksaville> I've updated the README.md, could you take a quick look please?
<winksaville> @Schwarzbaer, one other request, could you comment your opinion on PR 2415: https://github.com/ponylang/ponyc/pull/2415
<Schwarzbaer> 3 tests failed, net/http/_HTTPConnection._new_conn, net/Broadcast and net/TCPThrottle
<Schwarzbaer> I don't know whether the "or" in the README is misleading, but I'd have to test that to actually know, and I guess you know better what you're talking about than I do, so if providing that arg only at ponyc build time *or* executable build time, then yes, that's the change I'd have wanted to see.
<Schwarzbaer> Though, TBH, it's a bit buried down there, but I guess that that just can't be helped.
<winksaville> Hmmm, what if I just drop the "Or, if you're compiling manually..." and it said "If you're you're compiling manually...".
<winksaville> In actual fact it's an "and" condition. When you're compiling the compiler you much use "use=openssl_1.1.0" and if you're compiling manually (i.e. using the resulting ponyc)
<winksaville> you must use -Dopenssl_1.1.0 if your compiling something that needs to use packages/net/ssl.
<winksaville> There is actually an "or" condition it is possible to define "OPENSSL_1.1.0=-Dopenssl_1.1.0" and use that on the command line of make
<winksaville> "make OPENSSL_1.1.0=-Dopenssl_1.1.0"
<winksaville> Now that I've written this, I think instead of "if" I'll use "When" so it would read:
<winksaville> When you're compiling manually add "-Dopenssl_1.1.0" ...
<winksaville> opinion?
<Schwarzbaer> ... I'll re-read that once I've eaten my soup, okay? There's a bit too much logic spelled out in too natural language for me to grok that on first pass.
<winksaville> yea :)
<winksaville> Actually here's another version:
<Schwarzbaer> Actually, let me try to break this down: When building ponyc to support openssl1.1, the `use=...` flag is required, correct? And when using that ponyc to build a project that uses ssl1.1, that `-Dopen...` flag is required, too, correct?
<winksaville> "When you're compiling with ponyc add "-Dopenssl_1.1.0" to the command line. For instance, to compile stdlib tests:"
<winksaville> In reality
<winksaville> you use=openssl_1.1.0 causes the Makefile to add -Dopenssl_1.1.0 when compiling a ".pony" file with ponyc
<winksaville> to be totally factual the -Dopenssl_1.1.0 is needed as a parameter to ponyc when compiling anything that is using "packages/crypto" or "packages/net/ssl"
<winksaville> To make it simple in the Makefile whenever ponyc is invoked I pass -Dopenssl_1.1.0
<winksaville> I hope that make sense?
<winksaville> So a user program which doesn't need crypto/ssl support the -Dopenssl_1.1.0 is not necessary.
<Schwarzbaer> So `make`ing ponyc with `use=...` is equivalent to always providing `-Dopen...` to the resulting ponyc?
<winksaville> Nope, only when the Makefile compiles some pony code using ponyc.
<Schwarzbaer> So the Makefile in ponyc does compile other stuff than ponyc itself? I didn't know that.
<winksaville> If thats what "use=xxx" means then I'd drop "use=openssl_1.1.0" and just instruct people to supply "OPENSSL_1.1.0=-Dopenssl_1.1.0" on the Makefile command line.
<Schwarzbaer> Er... I don't know whether it does? That's why I'm asking stuff. :p
<SeanTAllen> Schwarzbaer: no, they aren't the same.
<Schwarzbaer> TBH right now I'm still not clear on what is required when under which condition.
<Schwarzbaer> SeanTAllen, "they"? undefined reference. ^^
<SeanTAllen> use and -D are not equivalent
khan has quit [Quit: khan]
<winksaville> I've choosen to define a "use" varible for convenence and its just a short hand for "OPENSSL_1.1.0=-Dopenssl_1.1.0"
khan has joined #ponylang
<winksaville> seems it's more confusing than helpful :)
<Schwarzbaer> Well, I'm a fan of short, declarative, and unambiguous sentences, and of yes/no answers. TBH right now I'm not seeing a lot of either.
<winksaville> lets reset and I'll explain
khan has quit [Quit: khan]
khan has joined #ponylang
<winksaville> By default the Makefile compiles the compiler creating "ponyc", the pony runtime, pony compiler tests and pony runtime tests.
<winksaville> None of these use the ponyc compiler itself you only need to pass -Dopenssl_1.1.0 to the ponyc compiler when you are directly or indirectly using crypto or ssl
khan has quit [Client Quit]
khan has joined #ponylang
<winksaville> When using the Makefile and the target is "test" then the ponyc compiler is invoked to build tests and some of those tests, such as stdlib, use crypto or ssl
<winksaville> And then -Dopenssl_1.1.0 is required if openssl 1.1.0 is the default crypto/ssl library.
<winksaville> If you compile files with ponyc and they do NOT use crypto/ssl then -Dopenssl_1.1.0 is not needed.
<winksaville> @schwarzbaer, clearer? questions?
<Schwarzbaer> So when building ponyc itself, is any flag required?
<winksaville> "any flag required" is a ambigious statement, do you mean when you run "make" for the compiler?
<Schwarzbaer> Yes.
<winksaville> no parameters are required
<winksaville> But if you do "make test" then yes
<Schwarzbaer> I see. So when using ponyc directly to build ssl/crypto-using projects, or using make in a way that invokes ponyc to build such projects, *then* they are required.
<winksaville> YES!!!
<Schwarzbaer> Okay, _now_ I get it.
<winksaville> Glad, but I totally understand the confusion.
<SeanTAllen> thats not true winksaville
<winksaville> well it works for me seantallen :)
<SeanTAllen> nevermind it is true
<winksaville> So what falsehood have I perpetuated
<SeanTAllen> i though there were some C changes
<SeanTAllen> I was mistaken
<SeanTAllen> Ignore me
<SeanTAllen> apologies
<winksaville> I had some C changes in the build that didn't quite work, but now they are gone
<winksaville> NP
<Schwarzbaer> I consider me being a bit slow on the uptake to be what I can use best to contribute to Open Source projects. It forces people like you to write and explain in a style that makes it easy for *everyone* to understand things, opening up projects to a wider audience. ^^
<winksaville> schwarzbaer, it not you its me, I need to explain it better
nisanharamati has quit []
<Schwarzbaer> You need people like me to force you to. :)
<winksaville> most correct
<winksaville> So first question to you and Sean should I remove "use=openssl_1.1.0" and instead just indicate "OPENSSL_1.1.0=-Dopenssl1_1.1.0"?
<winksaville> Optionally, simplifiy slightly and just make it "OPENSSL=-Dopenssl_1.1.0" that way support for different versions is simpler.
<Schwarzbaer> I have no opinion on that, and I was assuming that all of these hoops would be obsoleted by either autodetecting the SSL API, or pre-1.1 OpenSSL becoming to old that support for it is removed.
<winksaville> At this point the default is going to be "pre-1.1" and the few of us that need 1.1 have to put it the extra effort.
<jemc> we examined a lot of options for autodetecting the SSL version
<jemc> we have some mixed ideas, which are long term and none of them are clean enough for everyone to agree so we can shove in quickly for SSL's sake
<winksaville> I kinda like the notion of a "config" program like "llvm-config" which does the autodetection.
<winksaville> I also ran into another program last week wxWidgets which has "wx-config"
<winksaville> so maybe someday there is a "ssl-config" program and can output appropriate flags for compiling and linking
<winksaville> Anyway, I've removed "use=openssl_1.1.0" from the Makefile and changed the Makefile variable OPENSSL_1.1.0 to OPENSSL.
<jemc> regarding the `llvm-config` approach - yeah, it's not a bad approach
<jemc> our main issue is that there is no "one true way" of identifying shared library versions, especially across platforms and distros
<winksaville> Can someone kill the two "Support OpenSSL 1.1.0" builds on travis, I'm rebase on top master and no sense building those.
<jemc> that is, we have a lot of near-standards, and no totally standard way o doing it
<jemc> sure
<winksaville> @jemc, txs (and you're right, there is no totally standard way of doing things like that)
<winksaville> Please kill the other one too (https://travis-ci.org/ponylang/ponyc/builds/324328864)
<jemc> :skull:
<winksaville> dead now :)
<winksaville> the rebased version is now building, hopefully we Travis treats us nice and doesn't have too many errors.
codec1 has quit [Read error: Connection reset by peer]