windows/mac help wanted

A

Ara.T.Howard

rubyists-

i'd really like to see an interface to posix locking available in ruby for all
(most) platforms ruby runs on.

i have an extension for this that should compile fine on any *nix system
(testers wanted) avialable at

http://raa.ruby-lang.org/project/posixlock/

if anyone would like to volunteer to help compile/port this extenstion to
windows/mac - i would __greatly__ appreciate it. it is a very simple
extension containing only two methods, so it shouldn't be painful. i would be
happy to do this myself but do not have access to either windows or mac nodes.

kind regards.

-a
--
===============================================================================
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it.
| --Dogen
===============================================================================
 
R

Rando Christensen

Compiles fine on my mac:

vivi ~/src/posixlock-0.0.1 % ruby extconf.rb
creating Makefile
vivi ~/src/posixlock-0.0.1 % make
gcc -fno-common -g -Os -pipe -no-cpp-precomp -fno-common
-DHAVE_INTTYPES_H -pipe -pipe -I.
-I/usr/lib/ruby/1.6/powerpc-darwin7.0 -I. -c -o posixlock.o posixlock.c
cc -fno-common -g -Os -pipe -no-cpp-precomp -fno-common
-DHAVE_INTTYPES_H -pipe -pipe -dynamic -bundle -undefined suppress
-flat_namespace -L/usr/lib/ruby/1.6/powerpc-darwin7.0 -L/usr/lib -o
posixlock.bundle posixlock.o -ldl -lobjc
vivi ~/src/posixlock-0.0.1 % sudo make install
posixlock.bundle -> /usr/lib/ruby/1.6/powerpc-darwin7.0/posixlock.bundle
chmod 0755 /usr/lib/ruby/1.6/powerpc-darwin7.0/posixlock.bundle
vivi ~/src/posixlock-0.0.1 %

How should I test it?
 
A

Ara.T.Howard

Compiles fine on my mac:
thanks!


vivi ~/src/posixlock-0.0.1 % ruby extconf.rb
creating Makefile
vivi ~/src/posixlock-0.0.1 % make
gcc -fno-common -g -Os -pipe -no-cpp-precomp -fno-common
-DHAVE_INTTYPES_H -pipe -pipe -I.
-I/usr/lib/ruby/1.6/powerpc-darwin7.0 -I. -c -o posixlock.o posixlock.c
cc -fno-common -g -Os -pipe -no-cpp-precomp -fno-common
-DHAVE_INTTYPES_H -pipe -pipe -dynamic -bundle -undefined suppress
-flat_namespace -L/usr/lib/ruby/1.6/powerpc-darwin7.0 -L/usr/lib -o
posixlock.bundle posixlock.o -ldl -lobjc
vivi ~/src/posixlock-0.0.1 % sudo make install
posixlock.bundle -> /usr/lib/ruby/1.6/powerpc-darwin7.0/posixlock.bundle
chmod 0755 /usr/lib/ruby/1.6/powerpc-darwin7.0/posixlock.bundle
vivi ~/src/posixlock-0.0.1 %
How should I test it?

require 'posixlock'
def lock_test
pid = Process.pid
42.times do
open(__FILE__,'r+'){|f| f.posixlock(File::LOCK_EX) and puts "locked by <#{ pid }>"}
end
end
fork ? lock_test && Process.wait : lock_test


it is nice to run this on an nfs mounted file system - but not required...

-a
--
===============================================================================
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it.
| --Dogen
===============================================================================
 
R

Rando Christensen

Ara.T.Howard said:
require 'posixlock'
def lock_test
pid = Process.pid
42.times do
open(__FILE__,'r+'){|f| f.posixlock(File::LOCK_EX) and puts
"locked by <#{ pid }>"}
end
end
fork ? lock_test && Process.wait : lock_test

I don't have nfs to test on currently, but I assume this means it worked? :

vivi ~/src/posixlock-0.0.1 % ruby test.rb
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1277>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1276>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
locked by <1277>
 
A

Ara.T.Howard

I don't have nfs to test on currently, but I assume this means it worked? :

vivi ~/src/posixlock-0.0.1 % ruby test.rb
locked by <1276>
locked by <1276>

yup.

thanks a bunch. mac __are__ nice i guess! now all i have to do is deal with
the windows thing...

regards.

-a
--
===============================================================================
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it.
| --Dogen
===============================================================================
 
D

Dan Janowski

Windows seems to exclusive lock when a file is opened for writing by
default. I have been unable to find a way around it. There cannot be a
reader, and then another process open the file for writing.

I may have missed something, but maybe you need to only hold open a
file for writing.

If this is not the case, or there is a way around it, I am interested
to know.

Dan


I don't have nfs to test on currently, but I assume this means it
worked? :

vivi ~/src/posixlock-0.0.1 % ruby test.rb
locked by <1276>
locked by <1276>

yup.

thanks a bunch. mac __are__ nice i guess! now all i have to do is
deal with
the windows thing...

regards.

-a
--
=======================================================================
========
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it. | --Dogen
=======================================================================
========
 
A

Ara.T.Howard

Windows seems to exclusive lock when a file is opened for writing by
default. I have been unable to find a way around it. There cannot be a
reader, and then another process open the file for writing.

I may have missed something, but maybe you need to only hold open a
file for writing.

If this is not the case, or there is a way around it, I am interested
to know.

i know nothing of windows but, in my case, i'm using posixlock to lock an
empty nfs mounted semaphore file. i'm guessin the windows nfs client is that
quite smart enough to know that some process on another machine is holding a
lock...

also LockFile exists for windows according to some of the source i've looked
at...

but, like i said, i know _nothing_ of windows. please enlighten if you have
further comments!

cheers.

-a
Dan


Ara.T.Howard wrote:
require 'posixlock'
def lock_test
pid = Process.pid
42.times do
open(__FILE__,'r+'){|f| f.posixlock(File::LOCK_EX) and puts
"locked by <#{ pid }>"}
end
end
fork ? lock_test && Process.wait : lock_test

I don't have nfs to test on currently, but I assume this means it
worked? :

vivi ~/src/posixlock-0.0.1 % ruby test.rb
locked by <1276>
locked by <1276>

yup.

thanks a bunch. mac __are__ nice i guess! now all i have to do is
deal with
the windows thing...

regards.

-a
--
=======================================================================
========
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it. | --Dogen
=======================================================================
========

-a
--
===============================================================================
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| A flower falls, even though we love it;
| and a weed grows, even though we do not love it.
| --Dogen
===============================================================================
 
R

Rando Christensen

Ara.T.Howard said:
yup.

thanks a bunch. mac __are__ nice i guess!

As I understand it, most of the problems (I'd estimate somewhere around
80%, but I have nothing to back that number up) involved in porting unix
software to osx (not taking the gui into account at all, of course) are
the differences in how libraries work and small tweaks to the compiler
to account for it, and a surprising number of things really do work
exactly how they'd work in a freebsd system.

Which is very nice indeed. :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Config::CONFIG['SHELL'] - windows/*nix/mac 2
tk tabbed pane 1
[ANN] nfsstore-0.4.0 0
latest instiki err 2
determining ruby interpreter 4
[ANN] posixlock-0.0.1 0
openssl examples and docs 12
stable-snapshot.tgz 1

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top