[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Get your hands dirty: Help bootstrap Ruby on Windows.

Luis Lavena

1/3/2008 8:29:00 PM

This was asked, and asked, and asked too many times, so here we go.

Since I don't want to hold anyone to try it, I'll like to share some
progress I've made in this area.
I'll like to make a few points clear before:

1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took the
MinGW path since was the only one that could be bootstrapped from
scratch.

2) This is a work in progress. Even that I'm 110% busy with work,
interest on this seems it deserve be shared, no mater how "alpha" the
whole process is.

3) Don't blame me if isn't work or your Rails application don't work
either. Isn't complete!. Instead: grab the code, hack it and send me
your patches.

4) Make code talk for you. I've heard this too many times on other
projects, so please move from simple comments to share your ruby-fu.

5) Part of this project is bring a new build procedure to One-Click
Installer, if we succeed, everybody will enjoy the benefits.

For those who aren't aware, I'm the new maintainer of OCI (One-Click
Ruby Installer for Windows). Curt give me the kingdom keys a few
months back and the latest release was completely build in my office
computer.

OCI, in its current state is a 'Package of Ruby Tools and libraries',
not a Installer. There are plans to change that.

So, now the code:

http://code.mmediasys.com/installer3/...

This is a pure-ruby solution that download and setup a mingw+msys
environment to get Ruby build.

It uses some rake recipes to download all the needed packages
At this time Ruby 1.8.6 p111 is targeted, but targeting Ruby 1.9 will
no have mayor issues.

Dependencies are not compiled, just downloaded for the time being.
Tested all the scenarios (pre-built and compile from source) and there
are issues with them which I reported previously.

To bootstrap and use this project, you need:
- Ruby 1.8.5 or greater
- Rake 0.7.3 or greater
- Tar [1] and Unzip [2] binary packages from GnuWin32

If someone can provide me a way to unpack 4MB zip, tgz and tar.bz2
files without external dependencies (just ruby) -- you're welcome.

The rake tasks available:
rake check # Run tests for the interpreter in the sandbox.
rake clean # Remove any temporary products.
rake clobber # Remove any generated file.
rake compile # Compile the interpreter.
rake configure # Run the configure process for the interpreter.
rake download # Download all components.
rake extract # Extract all downloaded components.
rake install # Install the interpreter in the sandbox.
rake prepare # Prepare the freshly extracted components.

clean will remove the sandbox and clobber will remove all the
downloaded files.

The step sequence is:

download, extract, prepare, configure, compile, install, check

you will find the installed ruby in sandbox/ruby_mingw

You need to install before check, so the check process use the sandbox
interpreter instead of the one you're using to build it.

check will fail in the readline tests, since I cannot get them working
properly.

I suggest to those who are interested, help me get this working.

====

Checkout code:

I'm using Bazaar (bzr) as distributed version control software:

http://www.bazaa...

bzr branch http://code.mmediasys.com/inst... my-local-branch

====

[1] This ships inside libarchive-2.4.0 named as 'bsdtar.exe'
http://gnuwin32.sourceforge.net/packages/liba...

[2] http://gnuwin32.sourceforge.net/packages...

--
Luis Lavena
Multimedia systems
-
A common mistake that people make when trying to design
something completely foolproof is to underestimate
the ingenuity of complete fools.
Douglas Adams
19 Answers

Bill Kelly

1/3/2008 8:45:00 PM

0


From: "Luis Lavena" <luislavena@gmail.com>
>
> 1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took the
> MinGW path since was the only one that could be bootstrapped from
> scratch.

Just to clarify... What does "bootstrapped from scratch" mean
in this context?


Regards,

Bill



James Tucker

1/3/2008 8:58:00 PM

0


On 3 Jan 2008, at 16:45, Bill Kelly wrote:

>
> From: "Luis Lavena" <luislavena@gmail.com>
>>
>> 1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took the
>> MinGW path since was the only one that could be bootstrapped from
>> scratch.
>
> Just to clarify... What does "bootstrapped from scratch" mean
> in this context?

As low as he (we) can go. At the moment, it's in ruby (as per the code
presented and requirements), but some of my ideas had most of the
stack from a .cmd file - although that may be excessive.

js or .vb via WSH anyone?

>
>
>
> Regards,
>
> Bill
>
>
>


Luis Lavena

1/3/2008 8:59:00 PM

0

On Jan 3, 6:45 pm, Bill Kelly <bi...@cts.com> wrote:
> From: "Luis Lavena" <luislav...@gmail.com>
>
>
>
> > 1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took the
> > MinGW path since was the only one that could be bootstrapped from
> > scratch.
>
> Just to clarify... What does "bootstrapped from scratch" mean
> in this context?
>

Don't know if that is the right terminology (since I'm not a native
english speaker) but this means:

- Grab MinGW+MSYS
- Compile Ruby
- Package it
- Repeat!

Be usable so you can repeat the whole process with the new version of
the interpreter you just compiled :-)

So future version use the new one, is like what Rubinius is doing:
bootstrapping itself using a previous ruby installation.

Hope this clarify things a bit.
--
Luis Lavena

Luis Lavena

1/3/2008 9:05:00 PM

0

On Jan 3, 6:57 pm, James Tucker <jftuc...@gmail.com> wrote:
> On 3 Jan 2008, at 16:45, Bill Kelly wrote:
>
> > From: "Luis Lavena" <luislav...@gmail.com>
>
> >> 1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took the
> >> MinGW path since was the only one that could be bootstrapped from
> >> scratch.
>
> > Just to clarify... What does "bootstrapped from scratch" mean
> > in this context?
>
> As low as he (we) can go. At the moment, it's in ruby (as per the code
> presented and requirements), but some of my ideas had most of the
> stack from a .cmd file - although that may be excessive.
>
> js or .vb via WSH anyone?
>

The idea is Bootstrap Ruby with Ruby, like Rubinius guys are doing.

I must admit that have extensive batch files that I use to bootstrap
ruby with VC6 at office, but maintain .CMD and workaround its
limitations don't worth the effort.

Also, we are using Ruby for the fun of it, right? ;-)
--
Luis Lavena

James Tucker

1/3/2008 10:01:00 PM

0


On 3 Jan 2008, at 17:09, Luis Lavena wrote:

> On Jan 3, 6:57 pm, James Tucker <jftuc...@gmail.com> wrote:
>> On 3 Jan 2008, at 16:45, Bill Kelly wrote:
>>
>>> From: "Luis Lavena" <luislav...@gmail.com>
>>
>>>> 1) VC6 vs. VC8 vs. MinGW have no room in this discussion. I took
>>>> the
>>>> MinGW path since was the only one that could be bootstrapped from
>>>> scratch.
>>
>>> Just to clarify... What does "bootstrapped from scratch" mean
>>> in this context?
>>
>> As low as he (we) can go. At the moment, it's in ruby (as per the
>> code
>> presented and requirements), but some of my ideas had most of the
>> stack from a .cmd file - although that may be excessive.
>>
>> js or .vb via WSH anyone?
>>
>
> The idea is Bootstrap Ruby with Ruby, like Rubinius guys are doing.
>
> I must admit that have extensive batch files that I use to bootstrap
> ruby with VC6 at office, but maintain .CMD and workaround its
> limitations don't worth the effort.
>
> Also, we are using Ruby for the fun of it, right? ;-)

Right, shame one can't do the whole implement Jump, branch and then
move on up thing though... ;-)

>
> --
> Luis Lavena
>


Nobuyoshi Nakada

1/4/2008 2:21:00 AM

0

Hi,

At Fri, 4 Jan 2008 05:29:58 +0900,
Luis Lavena wrote in [ruby-talk:285910]:
> So, now the code:
>
> http://code.mmediasys.com/installer3/...
>
> This is a pure-ruby solution that download and setup a mingw+msys
> environment to get Ruby build.

Seems manifest task in ruby18.rake doesn't close the target
file, so the file may be incomplete at the end of the task.

--
Nobu Nakada

Luis Lavena

1/4/2008 2:49:00 AM

0

On Jan 4, 12:21 am, Nobuyoshi Nakada <n...@ruby-lang.org> wrote:
> Hi,
>
> At Fri, 4 Jan 2008 05:29:58 +0900,
> Luis Lavena wrote in [ruby-talk:285910]:
>
> > So, now the code:
>
> >http://code.mmediasys.com/installer3/...
>
> > This is a pure-ruby solution that download and setup a mingw+msys
> > environment to get Ruby build.
>
> Seems manifest task in ruby18.rake doesn't close the target
> file, so the file may be incomplete at the end of the task.

Thank you Nobu, I didn't give attention to manifest since I was using
WiX Heat to collect all the files.

Change committed and pushed updated branch and zip file.

Regards,
--
Luis Lavena

M. Edward (Ed) Borasky

1/4/2008 5:04:00 AM

0

Luis Lavena wrote:
[snip]

> This is a pure-ruby solution that download and setup a mingw+msys
> environment to get Ruby build.
>
> It uses some rake recipes to download all the needed packages
> At this time Ruby 1.8.6 p111 is targeted, but targeting Ruby 1.9 will
> no have mayor issues.
>
> Dependencies are not compiled, just downloaded for the time being.
> Tested all the scenarios (pre-built and compile from source) and there
> are issues with them which I reported previously.
>
> To bootstrap and use this project, you need:
> - Ruby 1.8.5 or greater
> - Rake 0.7.3 or greater
> - Tar [1] and Unzip [2] binary packages from GnuWin32

Aren't they in MSys?

[snip]


> I suggest to those who are interested, help me get this working.


This does look like fun. I have a spare Windows XP license I'm not using
and a Linux hosted VMware Workstation 6. :) Are the compiler, linker,
"tar" and zip/gzip/bzip2 the only external dependencies you have at the
moment?

Luis Lavena

1/4/2008 10:32:00 AM

0

On 4 ene, 03:03, "M. Edward (Ed) Borasky" <zn...@cesmail.net> wrote:
> Luis Lavena wrote:
>
> [snip]
>
> > To bootstrap and use this project, you need:
> > - Ruby 1.8.5 or greater
> > - Rake 0.7.3 or greater
> > - Tar [1] and Unzip [2] binary packages from GnuWin32
>
> Aren't they in MSys?
>

Chicken-egg situation:

They are inside the compressed tar.gz and tar.bz2 files... how I'm
supposed to get them if I don't decompress them first? :-D

So: if someone have a pure-ruby (with aditional gem or extension) that
allow us extract content from:

- .zip (deflate) files
- .gz (of .tar.gz) files
- .bz2 (of .tar.bz2) files

All without these dependencies, feel free to modify rake/
extracttask :-)

> This does look like fun. I have a spare Windows XP license I'm not using
> and a Linux hosted VMware Workstation 6. :) Are the compiler, linker,
> "tar" and zip/gzip/bzip2 the only external dependencies you have at the
> moment?

You don't need to manually download MinGW or MSYS, only you need get
your hands at tar and unzip.
(also, have a working ruby, which you could use OCI for that) ;-)

The compiler, linker and dependencies are downloaded automatically.

Right now only two "dependencies" are in place:

- Zlib 1.2.3
- Readline 5.0

I stopped at readline since I got some serious issues with
Readline.readline, as posted before to this list and ruby-core.

The thing is that those worked in the past, but right know they don't.

Each time I add a dependency (to get the bundled extension built), I
do a 'test-all' procedure and see if it's passing their self-tests.

Regards,
--
Luis Lavena

Michal Suchanek

1/4/2008 11:35:00 AM

0

On 04/01/2008, Luis Lavena <luislavena@gmail.com> wrote:
> On 4 ene, 03:03, "M. Edward (Ed) Borasky" <zn...@cesmail.net> wrote:
> > Luis Lavena wrote:
> >
> > [snip]
> >
> > > To bootstrap and use this project, you need:
> > > - Ruby 1.8.5 or greater
> > > - Rake 0.7.3 or greater
> > > - Tar [1] and Unzip [2] binary packages from GnuWin32
> >
> > Aren't they in MSys?
> >
>
> Chicken-egg situation:
>
> They are inside the compressed tar.gz and tar.bz2 files... how I'm
> supposed to get them if I don't decompress them first? :-D
>
> So: if someone have a pure-ruby (with aditional gem or extension) that
> allow us extract content from:
>
> - .zip (deflate) files
> - .gz (of .tar.gz) files
> - .bz2 (of .tar.bz2) files
>
> All without these dependencies, feel free to modify rake/
> extracttask :-)
>
If youcan afford relying on ruby stdlib, there is zlib which can do
deflate and gunzip.

There is minitar hosted on rubyforge under ruwiki (does not work on
unseekable files like stdin but works on gzipped files by using zlib).
There is rubyzip (untested, uses zlib for compression). bzip2 remains
to be solved but hopefully the basic stuff can be obtained as gzipped
archives.

http://rubyforge.org/frs/?g...
http://rubyforge.org/frs/?gr...

Thanks

Michal