timimahoney / decaf

Ruby in the browser.
http://trydecaf.org
470 stars 8 forks source link

Support Linux and Windows #7

Open shvelo opened 11 years ago

shvelo commented 11 years ago

Will this support Linux?

timimahoney commented 11 years ago

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.

KarateCowboy commented 11 years ago

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 commented 11 years ago

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.

timimahoney commented 11 years ago

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!

KarateCowboy commented 11 years ago

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

KarateCowboy commented 11 years ago

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.

timimahoney commented 11 years ago

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.

KarateCowboy commented 11 years ago

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 commented 11 years ago

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

timimahoney commented 11 years ago

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.

KarateCowboy commented 11 years ago

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.

shvelo commented 11 years ago

Great to hear this.

KarateCowboy commented 11 years ago

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.

timimahoney commented 11 years ago

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.

trans commented 11 years ago

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.

KarateCowboy commented 11 years ago

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.

timimahoney commented 11 years ago

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

KarateCowboy commented 11 years ago

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 commented 11 years ago

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

timimahoney commented 11 years ago

Strange. So you no longer get that error?

KarateCowboy commented 11 years ago

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
shvelo commented 11 years ago

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.

timimahoney commented 11 years ago

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
KarateCowboy commented 11 years ago

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

@shvelo Yes I am compiling this on Arch linux

timimahoney commented 11 years ago

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.

maksimr commented 11 years ago

+1

How's tricks porting on Linux?)

kingsleyh commented 10 years ago

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

timimahoney commented 10 years ago

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 notifications@github.com 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.