-
Notifications
You must be signed in to change notification settings - Fork 102
Conversation
(I'm also really not sure Boost has a place in charybdis, but oh well.) |
@grawity I've merely censored the real commit message to protect the children. 65,000 calls to close(), 90's-era daemonization, and screwing with the implicit fd's is sub-optimal. P.S. looking now, there's a fair amount here that will be filtered out of the first merge anyway... |
At first I thought this was a serious pull request, and then I did some actual looking at it, and now I'm not sure anymore. Let's take a look at some of the issues I've seen in my few minutes looking at it:
All this because you think C++ is absolutely a superior language to C, and believe that magic is the answer to everything. I'm sorry, but I prefer being able to sanely debug what my ircd is doing. If this is the direction charybdis is going, I guess I will need to find another ircd at some point. |
@dwfreed my understanding is that we're only building the parts of boost that we are actually using (essentially |
fwiw i am pretty sure that banner was just a joke, and isn't going to be included in the final release of charybdis 5. |
@kaniini just use system boost if you're going to use boost; 99% of people who run charybdis do it on a binary distro anyway, and they probably already have boost because something else uses it. |
ISO C11 support I could understand. building as C++, I cannot. |
I'm restricting this patchset to contributors only, as I really don't want to hear whining. Use the software or don't. Thanks for your understanding. |
Yes, the ratbox event system is really not good; contrast to libmowgli for example. It's inadvisable to waste effort improving the ratbox event system- buggy code ripped from squid decades ago which doesn't take advantage of modern OS features in a reliable cross-platform way. Boost allows for optimal and evolving cross-platform support from a single IO interface. This is what you want.
We don't build boost. Calm down. Boost is mostly header only libraries. A few of the big ones are linked. Right now only boost_system is "built" and I'm looking into what is being linked to... something like errno, and I'm pretty sure from past experience it will be compatible with the shared library probably mapped into your ram somewhere as we speak...
Please no need to fear-monger. I have no idea what you're talking about. I want to pin to a specific version of boost so I know what's being compiled in, and that's what is being done here with submodules. If distros have a problem with recursive git trees and submodules as, quite possibly, a new paradigm of packaging distros themselves, maybe they should talk to me.
It's a tornado that says tulsa oklahoma somewhere in it. relax.
Well then you're not writing C++ 👯 |
Thanks for all the support. Visit irc.charybdis.io #charybdis |
This allows the option of at least -std=gnu++14 for new translation units. Changes are trivial.
Files with the suffix .cpp will automatically integrate.
Conversation on the patchset itself is reopened. Please understand that:
Conversation should remain on topic -- advocating that we do not use C++ or certain boost modules -- is considered off topic and will result in the conversation being restricted again. Thanks to everyone for their understanding. |
* argument number of the format string, and b is the 1 based argument | ||
* number of the variadic ... */ | ||
#ifdef __GNUC__ | ||
#define AFP(a,b) __attribute__((format (printf, a, b))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RB_AFP()
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure but that just adds to this diff because the calls are all over... There will have to be a complete macro/define refactor next.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok.
"Ratbox 2: HyperRatbox" is a silly commit description, please revise the commit descriptions around them as they are a little vague. |
In general, no objections to the mechanical side of the patchset here. I think if we can squash it down a bit and get the build bots green, then we can merge it into 5. |
Should be done tomorrow if the hangover is light. |
When I wrote this, there was an
@kaniini just know that distros (especially Debian and Gentoo) will maintain patchsets unbundling boost, and forcing charybdis to use the system copy, which may be a different version than what you're bundling, and thus have different bugs. |
2 things:
|
We will probably support |
@dwfreed First realize this project has almost none of the working modern infrastructure that you probably take for granted in something like Atheme.
This project already has precedent for bundling stuff, namely libltdl. I believe the default is to use system ltdl first and build the bundle optionally and I never assumed boost would work any different from the ltdl schema. I agree that --with-system-boost should actually be on and defaulting to the distro version first. Boost is robust enough and our usage of it is so light it really doesn't matter in terms of features and system boost's version on the targeted platform is nearly guaranteed to be sufficient within the last ~5 years.
Boost is evalulated by the same compiler toolchain that the rest of the project uses. It builds with all of the same target platforms, GCC4,5,6, clang3, mingw, etc... With that being said, once there's sufficient detection for system boost availability in the libpath that step may rarely be seen anyway...
Also on this point, the P.P.S If the #pragma once schema has a way to detect if something was or wasn't included then it is definitely superior now. |
Eh? My point is that compilers can and sometimes do change ABI between versions. If you build boost with GCC 6.whatever, and ship that in the release tarball, and then I go and build charybdis with GCC 4.9.3, which hypothetically ends up having incompatible ABI, then the build is broken. Just make building boost a very early target in the makefile, and skip it in the |
Yes, a target in the makefile sounds better.
|
* librb is no longer a separately configured subproject. * charybdis is now a standalone directory with a binary. * Include path layout now requires a directory ircd/ rb/ etc.
Adds a Makefile target 'mrproper' though this only works on new versions of AC.
ircd/rb: Move some lowish level macros down to rb.
Happy 28th birthday. You're all grown up.
NOTE: This only has "C" linkage right now.
This test against the __cplusplus #define value allows for a more granular feature test.
If you feel the need to peep around.
This allows the option of at least -std=gnu++14 for new translation units.
Changes are trivial.