On Thu, Jan 31, 2013 at 12:25 AM, Mark Rowe <mr...@apple.com> wrote:
> On 2013-01-30, at 17:14, Dirk Pranke <dpra...@chromium.org> wrote:
>> On Wed, Jan 30, 2013 at 4:15 PM, Maciej Stachowiak <m...@apple.com> wrote:
>>> On Jan 30, 2013, at 3:24 PM, Dirk Pranke <dpra...@chromium.org> wrote:
>>>> On Wed, Jan 30, 2013 at 1:50 PM, Filip Pizlo <fpi...@apple.com> wrote:
>>>>> Thanks for sharing this.
>>>>>
>>>>> On Jan 30, 2013, at 1:28 PM, Eric Seidel <e...@webkit.org> wrote:
>>>>>
>>>>> I wish we only had one build system (it were easy to add/remove/move 
>>>>> files).
>>>>>
>>>>> I believe changes like http://trac.webkit.org/changeset/74849 are an
>>>>> unhealthy sign for the project.  Adam is not the only person who has 
>>>>> chosen
>>>>> to empty files instead of removing them.  The pain of updating 8 build
>>>>> system is so great, we jump through hoops to avoid it.  Which means it 
>>>>> took
>>>>> us months to move JavaScriptCore/wtf to WTF, and will take us years to 
>>>>> kill
>>>>> WebCore/platform.
>>>>>
>>>>>
>>>>> +1
>>>>>
>>>>> This is a hard problem.  It is a problem worth solving.
>>>>>
>>>>> Do you have more thoughts on this, particularly since you know quite well
>>>>> how both Xcode and gyp work?
>>>>>
>>>>> I suspect this is one of those things that it would be hard to achieve
>>>>> consensus on since there are so many stakeholders.  But it may be fruitful
>>>>> to have a "what if" discussion about what this might look like.
>>>>>
>>>>
>>>> I think we can solve this problem if we agree that we want to. I think
>>>> we haven't in the past mostly because we couldn't reach a consensus
>>>> that it was worth solving enough to really try.
>>>>
>>>> I would love to see this fixed and would be glad to work on it. I
>>>> think we should at least pursue this far enough to fully understand
>>>> what our options are and what the costs and tradeoffs might be; does
>>>> anyone disagree, and is anyone else willing to help pitch in?
>>>>
>>>> I think there are several possible ways we could solve this. One would
>>>> be to switch to a common meta-build system. My understanding is that
>>>> Apple's internal production build processes impose certain constraints
>>>> here that I don't fully understand, but I know we've discussed the
>>>> possibility of checking in generated project files as a workaround.
>>>> Maybe there are other options as well to those constraints? I would
>>>> love to discuss this further w/ someone from Apple ...
>>>
>>> It's far simplest for us if:
>>> (a) There is an Xcode project (or a Makefile) that builds the Mac port 
>>> checked in to source control.
>>> (b) The generated project invokes only tools that are part of the default 
>>> Mac OS X install.
>>>
>>> It may not be completely impossible to violate these requirements but it 
>>> will require a lot of bureaucracy.
>>>
>>>> (Also, just to get this out of the way, I don't think gyp needs to be
>>>> the solution).
>>>>
>>>> Another alternative would be to write a script that did support at
>>>> least the common use cases (add/move/delete files). There have been
>>>> attempts in the past, but they have foundered on at least some
>>>> perceived skepticism over how well this would work w/ XCode. That
>>>> said, I don't think we've really pushed this to see. At some point
>>>> this script might turn into a meta-meta-build system, which might be
>>>> silly but also be the shortest path to the finish line.
>>>>
>>>> I suggest if there is interest in this we can start a new thread to
>>>> discuss further ...
>>>
>>> My preference would be to use a common meta-build system with a comfortably 
>>> human-readable and human-editable syntax, and checked in generated project 
>>> files for those ports that need them.
>>>
>>> I think a key to making this work is to get Chromium and the Apple Mac port 
>>> onto a common build system, which will probably require both Google and 
>>> Apple ponying up at least one person to work on this project for a 
>>> reasonable period of time.
>>>
>>> I think the plausible meta-build-systems to use would be CMake and Gyp, but 
>>> in both cases it may be necessary to modify them to work well for everyone.
>>>
>>
>> Premake might also be an option, though I wouldn't necessarily vote
>> for it. Gyp's syntax is ... awkward ... but apart from that might just
>> work for checking in generated apple mac xcode projects. We should try
>> it (shouldn't be too hard, since abarth had it working at one point).
>
> I think Eric and/or Adam had JavaScriptCore building with gyp at one point. 
> I’m not sure if they ever got to the other projects.

We had JavaScriptCore and WebCore working.  (We also had
JavaScriptGlue, but that doesn't exist anymore.)  I don't remember if
we had WebKit/mac working.  (WebKit2 didn't exist at the time.)

>> I would consider changing or improving gyp's syntax to be on the table
>> if it was needed to reach the goal.
>
> For what it’s worth, I also find the gyp syntax to be unpleasant. It feels as 
> though it was optimized for being processed by a machine rather than for 
> being written and maintained by humans.

Unlike xcodeproj files.  :)

>> CMake was originally considered a non-starter for chromium since the
>> XCode and VS projects it produced didn't look or feel like native
>> projects. However, we've since switched to ninja for most things so
>> I'm less sure how important this is now. I've never been a huge fan of
>> the CMake syntax but I haven't used it enough to really have an
>> informed opinion.
>
> Generating well-structured Xcode projects is still something that is 
> important for any meta build system that we would consider adopting for the 
> Mac. It would be substantially more challenging for us to support an 
> alternative system for building our production builds. If there are 
> substantial advantages to using ninja for engineering builds then we may wish 
> to support both to get the best behavior in each environment.
>
> The non-natively structured Xcode projects is one thing that turned me off 
> CMake when I looked at it in the past. I’m not sure if this has improved 
> since then. If not, then I don’t think CMake is worth spending much time on.
>
>> Regarding "(b) The generated project invokes only tools that are part
>> of the default Mac OS X install": invoking tools that are checked into
>> the WK repo is also possible, right, since we invoke scripts now? So,
>> hypothetically, could we check in a copy of the ninja binary and build
>> with that?
>
> Checking in binaries isn’t an option for us, and isn’t a particularly 
> scalable approach anyway given the number of platforms that WebKit can build 
> on. If we require an external tool as a dependency to build WebKit from 
> source then we’d need to check in the source for the tool and build it prior 
> to building WebKit proper. This obviously introduces more complexity so it 
> would be preferable to keep the dependencies to a minimum.
>
> - Mark
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to