Forwarding headers for ThreadWeaver
Mirko Boehm
mirko at kde.org
Thu Jan 2 15:26:33 UTC 2014
Hi,
On 02 Jan 2014, at 15:37 , David Faure <faure at kde.org> wrote:
> On Thursday 02 January 2014 15:29:13 Mirko Boehm wrote:
>>> The official way used by all other modules would be
>>> threadweaver/job.h (lowercase real header) and
>>> ThreadWeaver/Job (forwarding header)
>>
>> Ok.
>
> Is this a green light for us to convert all of threadweaver (and its users) to
> this scheme? (or do you plan to do so?)
Actually, I *know* I have unpushed changes at home where I started with the class renaming. These will very likely clash with header file renamings. So I can take care of that on Saturday. If I need help, I will holler on IRC.
>>> OTOH to really make threadweaver like the other modules, I would move
>>> src/Weaver/* to src/*, the subdir isn't useful.
>>
>> Is that a change that has any meaning to the outside world? If not, that can
>> be done later as well.
>
> Well, it makes sure that nothing can include <Weaver/File.h> :)
> But OK, only two unittests do that, I thought there was more.
>
> I'll make that change unless you object, because it makes it easier to script
> stuff across all frameworks (like I've been doing in the last 48 hours, and
> will do again since we changed the include path a little bit...).
Please wait, for the same reason as above. If you want to, we can set a time for Saturday and meet, and get everything ready. Sorry for being a pain here :-)
What you could do is change the occasions you find that use the Weaver/ subdirectory to use the official include directory. Then removing the subdirectories should not affect anybody outside of the ThreadWeaver source.
>>> I want to release TP1 asap (i.e. once all forwarding headers are
>>> installed), but SIC changes can still be done afterwards.
>>
>> Threadweaver cannot be released before the class name changes are done,
>> because those will be source incompatible. I get back tomorrow night, and
>> will finish it on Saturday. After that, all other changes are incremental
>> and BC, so the release would get unblocked. Sorry for that.
>
> As I said, TP1 does NOT include a SC promise, it's ok to make SC changes
> afterwards.
The class name changes will be source *in*compatible.
> But yeah, with the unexpected delays due to the forwarding header stuff it's
> too late for tagging today, so I'll do that on Sunday, with your changes from
> Saturday in.
>
>> OSX uses a case insensitive but in all other aspects UNIX like file system
>> (with symlinks et cetera) by default. I feel slightly uncomfortable with
>> installing into the same directory because it may lead to weird clashes if
>> there are file names that only differ in case - those will end up being
>> the same file on Windows and OSX. Can be avoided, but is a potential
>> pitfall.
>
> Only the directories clash, never the actual files, since the lowercase
> headers have a ".h" extension and the CamelCase headers have no extension.
>
> And we can't fully fix the clash anyway... for non-namespaced frameworks like
> kcoreaddons we can (KCoreAddons/kjob.h and KCoreAddons/KJob) but for
> namespaced frameworks like KIO and KParts (and ThreadWeaver) we'll still have
> KIOCore/KIO/Job and KIOCore/kio/job.h, since there's a lot of code that uses
> <kio/job.h> out there. My planned fix is to never lowercase the framework name
> anymore, but the prefix can be lowercased, leading to KIO and kio dirs side by
> side. No filename clash though, ever.
Agreed, it is only a remote possibility and that can be managed when needed.
Cheers,
Mirko.
--
Mirko Boehm | mirko at kde.org | KDE e.V.
FSFE Fellow, FSFE Team Germany
Qt Certified Specialist and Trainer
More information about the Kde-frameworks-devel
mailing list