Ruby-ldap on Windows (built)


#1

I have finally managed to build the ruby-ldap library for the Windows
platform (i.e. not a cygwin or ming build, but an mswin32 build).

This has been an issue for awhile as the maintainer of the project does
not have access to a Windows machine for testing.

So far, it seems to be working (I use it only for ActiveDirectory
authentication).

Anyway, if you are like me and have been struggling to get ldap working
on the mswin32 build, please try the pre-built package:

Download:
http://webtest.wvu.edu/users/cbscharf/ldap/

Put ldap.so in:
C:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt

Put *.rb in:
C:\ruby\lib\ruby\site_ruby\1.8\ldap

I believe these are the proper locations. Hopefully this helps someone
out there :slight_smile:

Note: This was build using 0.9.4 of ruby-ldap on WinXP SP2.


#2

On 4/18/06, Chris S. removed_email_address@domain.invalid wrote:

I have finally managed to build the ruby-ldap library for the Windows
platform (i.e. not a cygwin or ming build, but an mswin32 build).

This has been an issue for awhile as the maintainer of the project does
not have access to a Windows machine for testing.

Cool. Would you be interested in alpha-testing a different solution
and providing advice toward the development in it?

-austin


#3

On 4/18/06, Chris S. removed_email_address@domain.invalid wrote:

on the mswin32 build, please try the pre-built package:
I believe these are the proper locations. Hopefully this helps someone
out there :slight_smile:

Note: This was build using 0.9.4 of ruby-ldap on WinXP SP2.

I would LOVE to know how you managed this. I struck out hard on
several occasions, and I’d like to learn from my mistakes.

–Wilson.


#4

Wilson B. wrote:

On 4/18/06, Chris S. removed_email_address@domain.invalid wrote:

on the mswin32 build, please try the pre-built package:
I believe these are the proper locations. Hopefully this helps someone
out there :slight_smile:

Note: This was build using 0.9.4 of ruby-ldap on WinXP SP2.

I would LOVE to know how you managed this. I struck out hard on
several occasions, and I’d like to learn from my mistakes.

–Wilson.

Well, the first step was to download the latest Platform SDK
(http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en).
The reason is that I have MSVC C++ 6.0, and apparently that distribution
has a known issue with the wldap32.lib library. After downloading the
SDK, I grabbed the latest ruby-ldap source from sourceforge.

Now, the ruby-ldap source has a win directory, which has a wldap32.def
file, and this is used to build the wldap32.lib file. However, I think
this .def creates the BAD .lib that comes with MSVC 6, so what I did was
drop in the one from the platform SDK.

Now, the tricky part: modifiying the source. I had to open the
sslconn.c file, and change a few things. The first is that the
rb_ldap_sslconn_bind_f function (around line 260) is missing an
argument. The function definition should be:

VALUE rb_ldap_sslconn_bind_f(int argc, VALUE argv[], VALUE self,
VALUE (*rb_ldap_sslconn_bind_func) (int, VALUE, VALUE))

The two functions that follow (rb_ldap_sslconn_bind_s and
rb_ldap_sslconn_simple_bind_s) make calls to a function called

rb_ldap_sslconn_bind_func

However, it should be

rb_ldap_sslconn_bind_f

Next - the SDK includes special command prompt shortcuts that set up the
paths and all that, so I used the one for my machine (Win XP 32-bit),
and went to the directory where I had extracted the source.

Then:

ruby extconf.rb --with-wldap32
nmake
nmake install

I believe the Platform SDK itself should be sufficient to build
everything - the real trick is getting that .lib from the SDK and
dropping it in the \win directory of the extracted source, and then
changing the source code.


#5

Ian M. wrote:

I’ll make these changes to the source.

This would make for a nice 0.9.5 release. If you can send me the .def
file, I’ll package up a tar file and send it to you for verification
that things work out of the box.

Current Ruby/LDAP CVS has the changes, so I’m curious to know if the
Windows build now works out of the box. I’d be grateful if Windows users
could try this out and report back.


#6

Chris S. wrote:

Now, the ruby-ldap source has a win directory, which has a wldap32.def
file, and this is used to build the wldap32.lib file. However, I think
this .def creates the BAD .lib that comes with MSVC 6, so what I did was
drop in the one from the platform SDK.

Can you possibly provide me with the good wldap32.def file from the SDK?
I assume it’s redistributable, in which case I’ll substitute it for the
bad one.

Now, the tricky part: modifiying the source. I had to open the
sslconn.c file, and change a few things. The first is that the
rb_ldap_sslconn_bind_f function (around line 260) is missing an
argument. The function definition should be:

VALUE rb_ldap_sslconn_bind_f(int argc, VALUE argv[], VALUE self,
VALUE (*rb_ldap_sslconn_bind_func) (int, VALUE, VALUE))

The two functions that follow (rb_ldap_sslconn_bind_s and
rb_ldap_sslconn_simple_bind_s) make calls to a function called

rb_ldap_sslconn_bind_func

However, it should be

rb_ldap_sslconn_bind_f

I’ll make these changes to the source.

This would make for a nice 0.9.5 release. If you can send me the .def
file, I’ll package up a tar file and send it to you for verification
that things work out of the box.

Thanks for your work on this.


#7

Ian M. wrote:

Current Ruby/LDAP CVS has the changes, so I’m curious to know if the
Windows build now works out of the box. I’d be grateful if Windows users
could try this out and report back.

I worked with Chris S. to fix the issues on Windows and am pleased
to say that the result is the release of version 0.9.5, the first
version known to work on Windows since I took over maintenance of the
code.

If anyone experiences any problems with this version, please let me
know. It should just work out of the box.


#8

Ian M. wrote:

Ian M. wrote:

Current Ruby/LDAP CVS has the changes, so I’m curious to know if the
Windows build now works out of the box. I’d be grateful if Windows users
could try this out and report back.

I worked with Chris S. to fix the issues on Windows and am pleased
to say that the result is the release of version 0.9.5, the first
version known to work on Windows since I took over maintenance of the
code.

If anyone experiences any problems with this version, please let me
know. It should just work out of the box.

The new version worked on Windows for me. I updated my Platform SDK to
the newest version just in case and then ran ‘ruby extconf.rb
–with-wldap32’, ‘nmake’, and
‘nmake install’, as mentioned above. I had a small problem at first
though, I think because it didn’t like spaces in my path (I put the
files on my desktop). I also used require ‘LDAP’ instead of require
‘ldap’ when I was testing it, which it didn’t like. I guess the
convention is to use lower-case for require?


#9

Peter Tseng wrote:

Ian M. wrote:

Ian M. wrote:

Current Ruby/LDAP CVS has the changes, so I’m curious to know if the
Windows build now works out of the box. I’d be grateful if Windows users
could try this out and report back.

I worked with Chris S. to fix the issues on Windows and am pleased
to say that the result is the release of version 0.9.5, the first
version known to work on Windows since I took over maintenance of the
code.

If anyone experiences any problems with this version, please let me
know. It should just work out of the box.

The new version worked on Windows for me. I updated my Platform SDK to
the newest version just in case and then ran ‘ruby extconf.rb
–with-wldap32’, ‘nmake’, and
‘nmake install’, as mentioned above. I had a small problem at first
though, I think because it didn’t like spaces in my path (I put the
files on my desktop). I also used require ‘LDAP’ instead of require
‘ldap’ when I was testing it, which it didn’t like. I guess the
convention is to use lower-case for require?

Hi
Just wondering how to build this. Have never built a windows app from
source before. Have downloaded SDK and Visual C++ Express Edition. Not
really sure what I’m doing with these apps., but decided to set v0.9.5
as a new project and run build against it. This throws up the error
that the include ruby.h can’t be found.
Not sure when or where I would use “ruby extconf.rb …” apart from in
command prompt. If so, where does ‘nmake’ and ‘nmake install’ go?
Finally, why not either provide some clearer instruction on the project,
or provide a binary?
thanks
Jason


#10

Jason Woodruff wrote:

Just to post a solution to my problems: a gem has been made available

http://66.249.93.104/search?q=cache:XGh2OrFoEVMJ:toolbox.boudry.org/articles/2006/05/09/building-ruby-ldap-for-win32+ruby+ldap+windows+0.9.5&hl=en&gl=uk&ct=clnk&cd=14

Perhaps this should be made available through the project?


#11

Jason Woodruff wrote:

Peter Tseng wrote:

Ian M. wrote:

Ian M. wrote:

Current Ruby/LDAP CVS has the changes, so I’m curious to know if the
Windows build now works out of the box. I’d be grateful if Windows users
could try this out and report back.

I worked with Chris S. to fix the issues on Windows and am pleased
to say that the result is the release of version 0.9.5, the first
version known to work on Windows since I took over maintenance of the
code.

If anyone experiences any problems with this version, please let me
know. It should just work out of the box.

The new version worked on Windows for me. I updated my Platform SDK to
the newest version just in case and then ran ‘ruby extconf.rb
–with-wldap32’, ‘nmake’, and
‘nmake install’, as mentioned above. I had a small problem at first
though, I think because it didn’t like spaces in my path (I put the
files on my desktop). I also used require ‘LDAP’ instead of require
‘ldap’ when I was testing it, which it didn’t like. I guess the
convention is to use lower-case for require?

Hi
Just wondering how to build this. Have never built a windows app from
source before. Have downloaded SDK and Visual C++ Express Edition. Not
really sure what I’m doing with these apps., but decided to set v0.9.5
as a new project and run build against it. This throws up the error
that the include ruby.h can’t be found.
Not sure when or where I would use “ruby extconf.rb …” apart from in
command prompt. If so, where does ‘nmake’ and ‘nmake install’ go?
Finally, why not either provide some clearer instruction on the project,
or provide a binary?
thanks
Jason

I should probably add that I am running OpenLDAP and not Active
Directory. Therefore is the --with-wldap32 command correct? Using
–with-openldap2 I get the error that ldap.h and other folders cannot be
found. This is because OpenLDAP for Windows port is compiled … Tried
using the ldap.h files from the Linux source, but not sure of the
command prompt for this … ?


#12

my goal is installing ruby with support for Mssql and LDAP on windows
XP:
//Already installed and tested:
ruby184-20.exe (on click installer)
dbi-0.1.1 (for driver ADO)

//related to my problem:
log4r-1.0.5 (installed)
Ruby-activeldap-0.7.4.gem (installed)

ruby-ldap-0.9.7 (Failed) =>
mkmf.log :

==============================================================================
have_header: checking for ldap.h… -------------------- no

“cl -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -MD -Zi -O2b2xg- -G6
conftest.c -P”
checked program was:
/* begin /
#include <ldap.h>
/
end */


have_header: checking for lber.h… -------------------- no

“cl -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -MD -Zi -O2b2xg- -G6
conftest.c -P”
checked program was:
/* begin /
#include <lber.h>
/
end */


have_header: checking for ldap_ssl.h… -------------------- no

“cl -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -MD -Zi -O2b2xg- -G6
conftest.c -P”
checked program was:
/* begin /
#include <ldap_ssl.h>
/
end */


==============================================================================

i looked into c:\ruby and i can’t find any of this files.
Am i missing a step ?


#13

As far as I can recall I was able to install the MSSQL support without
incident using the Ruby DBI project in my 1.8.2 One-Click Installer for
Windows environment. As for LDAP I struggled for awhile trying to build
the Ruby/LDAP library and recently was able to stumble across the
Net::LDAP library which installs right from the command prompt without
requiring compliation.


#14

On 8/28/06, Rcmn R. removed_email_address@domain.invalid wrote:

ruby-ldap-0.9.7 (Failed) =>
mkmf.log :

Sorry for the offtopic, but you may find that the Net::LDAP library
meets your needs. It’s pure Ruby and doesn’t require a compiler.


#15

i’ve seen net::ruby like i’ve seen so many duplicate project.Since the
activity for net::ruby is only 76% i thought maybe it was a better
choice going with activeldap.Thank you for the pointer i will go with
Net:ruby instead.

As far as ADO i’m 100% sure i had to reinstall it.I uninstall/reinstall
ruby 3 time.For each step i have a script ready to test my install.Each
time it complain on the driver.So i had to intall --dbd_ado and it
worked after that.Also a lot of post relate on that problem.


#16

Francis C. wrote:

On 8/28/06, Rcmn R. removed_email_address@domain.invalid wrote:

i’ve seen net::ruby like i’ve seen so many duplicate project.Since the
activity for net::ruby is only 76% i thought maybe it was a better
choice going with activeldap.Thank you for the pointer i will go with
Net:ruby instead.

Net::LDAP is definitely active. I just checked some new features into
it this evening. As far as ActiveLDAP is concerned, I’ve talked
several times with Will Drewry about refactoring it to run above
Net::LDAP. One of these days, someone will get around to doing that,
and then ActiveLDAP will also be usable without requiring a compiler.

actually u’re right about Net::LDAP i just check it and noticed it too.

That would be great if ActiveLdap get accessible without compiling.
Because i almost choose to do this project with python.I was done with
my test in less than 3 hours installation included. I was ready to go
with it but i found active_directory ,a python module, easy to use but
also very limitated.

So i decided to stick with ruby a little longer.But if net::ldap is to
much to get around in short periode i’ll have to change direction.
Meanwhile rdoc and this forum are valuable resources and i’m confident
i’ll be able to get it done with R.


#17

On 8/28/06, Rcmn 73 removed_email_address@domain.invalid wrote:

That would be great if ActiveLdap get accessible without compiling.
Because i almost choose to do this project with python.I was done with
my test in less than 3 hours installation included. I was ready to go
with it but i found active_directory ,a python module, easy to use but
also very limitated.

Out of curiosity, what were the specific limitations you found with
the python module active_directory? I want to make sure I didn’t leave
similar limitations in Net::LDAP :-).


#18

On 8/28/06, Rcmn R. removed_email_address@domain.invalid wrote:

i’ve seen net::ruby like i’ve seen so many duplicate project.Since the
activity for net::ruby is only 76% i thought maybe it was a better
choice going with activeldap.Thank you for the pointer i will go with
Net:ruby instead.

Net::LDAP is definitely active. I just checked some new features into
it this evening. As far as ActiveLDAP is concerned, I’ve talked
several times with Will Drewry about refactoring it to run above
Net::LDAP. One of these days, someone will get around to doing that,
and then ActiveLDAP will also be usable without requiring a compiler.


#19

Rcmn 73 wrote:

Francis C. wrote:

On 8/28/06, Rcmn 73 removed_email_address@domain.invalid wrote:

That would be great if ActiveLdap get accessible without compiling.
Because i almost choose to do this project with python.I was done with
my test in less than 3 hours installation included. I was ready to go
with it but i found active_directory ,a python module, easy to use but
also very limitated.

Out of curiosity, what were the specific limitations you found with
the python module active_directory? I want to make sure I didn’t leave
similar limitations in Net::LDAP :-).

this module allow to just search.No add/remove function .And i run into
a limitation, 1500 max returns(That’s just what i’ve been experiencing).

I think ActiveLDAP would be more to compare with active_directory than
Net::LDAP.

http://tgolden.sc.sabren.com/python/active_directory.html


#20

Francis C. wrote:

On 8/28/06, Rcmn 73 removed_email_address@domain.invalid wrote:

That would be great if ActiveLdap get accessible without compiling.
Because i almost choose to do this project with python.I was done with
my test in less than 3 hours installation included. I was ready to go
with it but i found active_directory ,a python module, easy to use but
also very limitated.

Out of curiosity, what were the specific limitations you found with
the python module active_directory? I want to make sure I didn’t leave
similar limitations in Net::LDAP :-).

this module allow to just search.No add/remove function .And i run into
a limitation, 1500 max returns(That’s just what i’ve been experiencing).