decaf icon indicating copy to clipboard operation
decaf copied to clipboard

Support Linux and Windows

Open shvelo opened this issue 11 years ago • 28 comments

Will this support Linux?

shvelo avatar Apr 09 '13 17:04 shvelo

I'd love it to run on Linux! The only thing stopping it is that the Linux build configurations haven't been updated with the new files and scripts. The same is true with Windows. I'd be happy to assist anybody who wants to try, but I don't have plans to do it myself yet.

timimahoney avatar Apr 09 '13 18:04 timimahoney

I smell a challenge here. I'll fork and see what I can do over the next few days. I am a bit under the weather(or maybe the weather is a bit over me), but I will keep you updated.

KarateCowboy avatar Apr 16 '13 22:04 KarateCowboy

I tried compiling it on Ubuntu Quantal this evening. The autogen was chugging along, and I had to install a bunch of dev libraries. I got stuck on the gstreamer stuff, because the dev packages in the repository are 1.0.1 and this requires 1.0.3. Next step is to poke around and find newer versions.

KarateCowboy avatar Apr 17 '13 01:04 KarateCowboy

I don't know much about building WebKit on Linux, but the pages about WebKit for Qt, EFL, and GTK might help. We probably only need one, but I'm not sure about the differences between them. The lack of a unified build system in WebKit is troublesome, but it may be fixed soon.

As for Ruby-specific stuff, the build needs to include all the files from Source/WebCore/bindings/rb. Some of the files that used to be in bindings/js are now in bindings/generic, and there are now JS-specific ones in the js folder that need to be included as well.

Also, the RB*.{h,cpp} files in the derived sources need to be included. These will be generated at build time in WebKitBuild/{Debug/Release}/DerivedSources. Not all of them should be included. Only those included by bindings/rb/RBInitialization.cpp plus RB{SVG,HTML}ElementWrapperFactory and the event target headers.

Finally, WebCore needs to link against Ruby. The source for Ruby 2.0 is in Source/Ruby. I imagine compiling it on Linux should be straightforward, but Windows may be a drag. I use a static library on the Mac build so we know exactly which version of Ruby we're working with.

Let me know if you run into any more problems. Thanks, and feel better!

timimahoney avatar Apr 17 '13 04:04 timimahoney

I'll work on the gtk one first. If I get that to work, then maybe go for Qt.

KarateCowboy avatar Apr 24 '13 03:04 KarateCowboy

Still working on this. Having some trouble with gstreamer dependencies. Quantal has libraries for 1.0.1. I think I'll have to download the latest from the repository and somehow compile those in. This is quite an adventure.

KarateCowboy avatar Apr 25 '13 15:04 KarateCowboy

Yeah, compiling WebKit on Linux seems like an adventure. When I'm finished with some other stuff, I'll check it out in a Linux VM and see what's going on.

timimahoney avatar Apr 25 '13 15:04 timimahoney

arch linux always runs on the bleeding edge. So, I tried installing cinnarch on a vm but the installer kept crashing. Tonight I will try again with manjaro. If I do not make any progress then I will recruit some help from my coworkers. We have some 300 developers so I'm sure I'll be able to get some good help

KarateCowboy avatar Apr 27 '13 22:04 KarateCowboy

Had some problems with my virtualbox setup. I will try again some more tomorrow.

KarateCowboy avatar Apr 28 '13 04:04 KarateCowboy

Very cool! I haven't checked it out on Linux yet, but I should get to it next week after I get web workers working.

timimahoney avatar Apr 28 '13 04:04 timimahoney

hopefully i will have it compiled and running by then. You know the language. You keep on perfecting your masterpiece. I will be your right hand linux man.

KarateCowboy avatar Apr 28 '13 16:04 KarateCowboy

Great to hear this.

shvelo avatar Apr 28 '13 16:04 shvelo

UPDATE: I have an arch linux box set up for build. I have been trying to clone the repository to it, however, github keeps running out of memory for compressing the data. I almost had it once, but then I ran out of disk space on my virtual machine (8 Gb). I should get it cloned today.

KarateCowboy avatar Apr 30 '13 16:04 KarateCowboy

Very cool! The git repo is pretty huge. On my machine, the main repo with a few old branches is up to 20GB at the moment. That's including all the built files, which take up about 11GB.

timimahoney avatar May 01 '13 16:05 timimahoney

Probably b/c git creates lots and lots of tiny files. I recently came to realize just how bad it was when I tried to copy my projects and discovered they ballooned in size to over 30 GB -- for a set of projects that without git would probably take up far less than 1GB. I wonder if Reiser4 wouldn't makes sense for git developers to use b/c it handles small files more efficiently.

trans avatar May 01 '13 16:05 trans

HALLELUJAH! It is cloned.

I kept letting it run overnight, only to find some small thing like a timeout or something halted the receipt of repository objects. This morning, however, I woke up to the good news that it cloned completely. I have half a mind to back up the directory to some other disk!

This is just in time for the weekend. I can spend a few hours straight devoted to building this. If I am lucky, I will have a binary for you.

KarateCowboy avatar May 03 '13 14:05 KarateCowboy

Awesome! Let me know if you run into any problems.

timimahoney avatar May 03 '13 15:05 timimahoney

Any idea what this might mean?

autoreconf: running: /usr/bin/autoconf --include=Source/autotools
configure:5321: error: possibly undefined macro: AC_DISABLE_STATIC
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure:5322: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
configure:5323: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/bin/autoconf failed with exit status: 1

KarateCowboy avatar May 04 '13 17:05 KarateCowboy

I think it meant that I did not have gcc installed, because after I installed gcc it went away.

KarateCowboy avatar May 04 '13 17:05 KarateCowboy

Strange. So you no longer get that error?

timimahoney avatar May 04 '13 17:05 timimahoney

No more. It was kind of strange. I would have expected "gcc not found" or some stripe. I was compiling for a while, then it errored out with this:

  CXX      Source/WebKit/gtk/WebCoreSupport/libwebkitgtk_3_0_la AcceleratedCompositingContextGL.lo
In file included from ./Source/WebCore/loader/HistoryController.h:34:0,
                 from ./Source/WebCore/loader/FrameLoader.h:38,
                 from ./Source/WebCore/page/ChromeClient.h:30,
                 from Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h:24,
                 from Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp:26:
./Source/WebCore/bindings/js/SerializedScriptValue.h:33:23: fatal error: Ruby/ruby.h: No such file or directory
 #include <Ruby/ruby.h>
                   ^
compilation terminated.
make[1]: *** [Source/WebKit/gtk/WebCoreSupport/libwebkitgtk_3_0_la-AcceleratedCompositingContextGL.lo] Error 1
make[1]: Leaving directory `/home/moriger/decaf'
make: *** [all] Error 2

KarateCowboy avatar May 05 '13 05:05 KarateCowboy

Do you have Ruby dev package? I think it's ruby1.9.1-dev or ruby1.8.3-dev. Oh I thought you were building Linux version on Linux.

shvelo avatar May 05 '13 15:05 shvelo

Ruby compiles as a static library with the Xcode project, so we need to make it compile during the Linux build as well. The Ruby source is in Source/Ruby, and it needs to be compiled before WebCore. Here is the script that runs during the Xcode build:

mkdir -p "${OBJECT_FILE_DIR}"
cd "${OBJECT_FILE_DIR}"

if [ ! -e "Makefile" ]; then
    cd "${SRCROOT}"/Source
    autoconf    
    cd "${OBJECT_FILE_DIR}"
    "${SRCROOT}"/Source/configure \
        --prefix="${BUILT_PRODUCTS_DIR}"/DerivedSources/Ruby/ \
        --with-rubyhdrdir="${BUILT_PRODUCTS_DIR}"/DerivedSources/Ruby/include \
        --with-rubyarchhdrdir="${BUILT_PRODUCTS_DIR}"/DerivedSources/Ruby/include \
        --disable-install-doc \
        --disable-rubygems \
        --disable-multiarch \
        --without-gcc
fi

if [ "${ACTION}" = "build" ]; then
    make
    make install
    cp "${BUILT_PRODUCTS_DIR}"/DerivedSources/Ruby/lib/libruby-static.a "${BUILT_PRODUCTS_DIR}"/libRuby.a
fi

If [ "${ACTION}" = "clean" ]; then
    make clean
fi

timimahoney avatar May 05 '13 16:05 timimahoney

@timahoney OK cool. I'll see if I can set that up

@shvelo Yes I am compiling this on Arch linux

KarateCowboy avatar May 05 '13 16:05 KarateCowboy

Also, you may have to add the Ruby bindings generation to the WebCore build process. That stuff is found in Source/WebCore/DerivedSources.make. I'm not sure if the GTK build process uses that file. If it doesn't you'll need to add the bindings code generator and the wrapper factory generation to the GTK build. Search for Ruby and wrapperFactoryRB in that file to see what's going on.

timimahoney avatar May 05 '13 17:05 timimahoney

+1

How's tricks porting on Linux?)

maksimr avatar Jul 27 '13 21:07 maksimr

Are there any updates on porting this to Windows or Linux? Is this project still alive?

kingsleyh avatar Dec 13 '13 15:12 kingsleyh

Sadly, I am no longer working on this project, so no more progress has been made.

On Dec 13, 2013, at 7:11 AM, Kingsley Hendrickse [email protected] wrote:

Are there any updates on porting this to Windows or Linux? Is this project still alive?

— Reply to this email directly or view it on GitHub.

timimahoney avatar Dec 14 '13 15:12 timimahoney