<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>
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?
<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>
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)