diff -ur allinoneruby-0.1.1.tar.gz/allinoneruby/README allinoneruby-0.2.0.tar.gz/allinoneruby/README
--- allinoneruby-0.1.1.tar.gz/allinoneruby/README 2004-07-26 23:13:29.000000000 +0200
+++ allinoneruby-0.2.0.tar.gz/allinoneruby/README 2004-12-08 10:21:38.000000000 +0100
@@ -2,7 +2,9 @@
The latter is just for playing with the internals. Both are
available on the site.
- Usage: ruby init.rb [-d|-w|--ruby|--rubyw]
+ Usage: ruby init.rb [-d|-w|--ruby|--rubyw] [-s|--site]
+
+On Linux, there´s no difference between ruby and rubyw.
For more information, see
-http://www.erikveen.dds.nl/allinoneruby/ .
+http://www.erikveen.dds.nl/allinoneruby/index.html .
diff -ur allinoneruby-0.1.1.tar.gz/allinoneruby/ev/dependencies.rb allinoneruby-0.2.0.tar.gz/allinoneruby/ev/dependencies.rb
--- allinoneruby-0.1.1.tar.gz/allinoneruby/ev/dependencies.rb 2004-08-04 23:58:20.000000000 +0200
+++ allinoneruby-0.2.0.tar.gz/allinoneruby/ev/dependencies.rb 2004-12-27 13:34:11.000000000 +0100
@@ -1,6 +1,6 @@
def dlls(file, path=File.dirname(file))
- # Only the dependencies in the same directory as the executable.
+ # Only the dependencies in the same directory as the executable or the given directory.
todo = []
res = []
@@ -30,3 +30,44 @@
res
end
+
+def ldds(file, notthedefaults=true)
+
+ # All dependencies.
+
+ todo = []
+ res = []
+ tempfile = "/tmp/ev.dependencies.%d.tmp" % Process.pid
+
+ todo << File.expand_path(file)
+
+ while todo.length > 0
+ todo2 = todo
+ todo = []
+
+ todo2.each do |file|
+ File.copy(file, tempfile) # Libraries on Debian are no executables.
+ File.chmod(0755, tempfile)
+
+ `ldd #{tempfile}`.split(/\r*\n/).collect{|line| line.split(/\s+/)[3]}.each do |lib|
+ if not lib.nil? and File.file?(lib) and not res.include?(lib)
+ todo << lib
+ res << lib
+ end
+ end
+
+ File.delete(tempfile)
+ end
+ end
+
+ # http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB/rlibraries.html
+ # http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/IA32/spec/rlibraries.html
+
+ lsb_common = ["libX11.so.6", "libXt.so.6", "libGL.so.1", "libXext.so.6", "libICE.so.6", "libSM.so.6", "libdl.so.2", "libcrypt.so.1", "libz.so.1", "libncurses.so.5", "libutil.so.1", "libpthread.so.0", "libpam.so.0", "libgcc_s.so.1"]
+ lsb_ia32 = ["libm.so.6", "libdl.so.2", "libcrypt.so.1", "libc.so.6", "libpthread.so.0", "ld-lsb.so.1"]
+ lsb = lsb_common + lsb_ia32
+
+ res.delete_if{|s| lsb.include?(File.basename(s))} if notthedefaults
+
+ res
+end
diff -ur allinoneruby-0.1.1.tar.gz/allinoneruby/ev/ftools.rb allinoneruby-0.2.0.tar.gz/allinoneruby/ev/ftools.rb
--- allinoneruby-0.1.1.tar.gz/allinoneruby/ev/ftools.rb 2004-08-04 23:58:20.000000000 +0200
+++ allinoneruby-0.2.0.tar.gz/allinoneruby/ev/ftools.rb 2004-12-27 13:34:11.000000000 +0100
@@ -54,9 +54,11 @@
end
def self.find(entry=nil, mask=nil)
- entry = @dir if entry.nil?
+ entry = "." if entry.nil?
- entry.gsub!(/[\/\\]*$/, "") unless entry.nil?
+ entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil?
+
+ mask = /^#{mask}$/i if mask.kind_of?(String)
res = []
@@ -65,11 +67,19 @@
res += ["%s/" % entry] if mask.nil? or entry =~ mask
- Dir.chdir(entry)
- Dir.new(".").each do |e|
- res += Dir.find(e, mask).collect{|e| entry+"/"+e} unless [".", ".."].include?(e)
+ begin
+ Dir.chdir(entry)
+
+ begin
+ Dir.new(".").each do |e|
+ res += Dir.find(e, mask).collect{|e| entry+"/"+e} unless [".", ".."].include?(e)
+ end
+ ensure
+ Dir.chdir(pdir)
end
- Dir.chdir(pdir)
+ rescue Errno::EACCES => error
+ puts error
+ end
else
res += [entry] if mask.nil? or entry =~ mask
end
@@ -82,6 +92,7 @@
def self.rollbackup(file, mode=nil)
backupfile = file + ".RB.BACKUP"
controlfile = file + ".RB.CONTROL"
+ res = nil
File.touch(file) unless File.file?(file)
@@ -107,10 +118,10 @@
if block_given?
if mode.nil?
- yield
+ res = yield
else
File.open(file, mode) do |f|
- yield(f)
+ res = yield(f)
end
end
end
@@ -122,15 +133,17 @@
# Return, like File.open
- if block_given?
- return nil
- else
- return File.open(file, (mode or "r"))
- end
+ res = File.open(file, (mode or "r")) unless block_given?
+
+ res
end
def self.touch(file)
- File.open(file, "a"){|f|}
+ if File.exists?(file)
+ File.utime(Time.now, File.mtime(file), file)
+ else
+ File.open(file, "a"){|f|}
+ end
end
def self.which(file)
diff -ur allinoneruby-0.1.1.tar.gz/allinoneruby/ev/oldandnewlocation.rb allinoneruby-0.2.0.tar.gz/allinoneruby/ev/oldandnewlocation.rb
--- allinoneruby-0.1.1.tar.gz/allinoneruby/ev/oldandnewlocation.rb 2004-08-04 23:58:20.000000000 +0200
+++ allinoneruby-0.2.0.tar.gz/allinoneruby/ev/oldandnewlocation.rb 2004-12-27 13:34:11.000000000 +0100
@@ -1,5 +1,27 @@
+temp = (ENV["TMPDIR"] or ENV["TMP"] or ENV["TEMP"] or "/tmp").gsub(/\\/, "/")
+dir = "#{temp}/oldandnewlocation.#{Process.pid}"
+
ENV["OLDDIR"] = Dir.pwd unless ENV.include?("OLDDIR")
ENV["NEWDIR"] = File.dirname($0) unless ENV.include?("NEWDIR")
+ENV["TEMPDIR"] = dir unless ENV.include?("TEMPDIR")
+
+class Dir
+ def self.rm_rf(entry)
+ if File.ftype(entry) == "directory"
+ pdir = Dir.pwd
+
+ Dir.chdir(entry)
+ Dir.new(".").each do |e|
+ Dir.rm_rf(e) if not [".", ".."].include?(e)
+ end
+ Dir.chdir(pdir)
+
+ Dir.delete(entry)
+ else
+ File.delete(entry)
+ end
+ end
+end
begin
oldlocation
@@ -42,3 +64,37 @@
res
end
end
+
+begin
+ tmplocation
+rescue NameError
+ dir = ENV["TEMPDIR"]
+
+ Dir.rm_rf(dir) if File.directory?(dir)
+ Dir.mkdir(dir)
+
+ at_exit do
+ if File.directory?(dir)
+ Dir.chdir(dir)
+ Dir.chdir("..")
+ Dir.rm_rf(dir)
+ end
+ end
+
+ def tmplocation(file="")
+ dir = ENV["TEMPDIR"]
+ res = nil
+
+ if block_given?
+ pdir = Dir.pwd
+
+ Dir.chdir(dir)
+ res = yield
+ Dir.chdir(pdir)
+ else
+ res = File.expand_path(file, dir) unless file.nil?
+ end
+
+ res
+ end
+end
diff -ur allinoneruby-0.1.1.tar.gz/allinoneruby/init.rb allinoneruby-0.2.0.tar.gz/allinoneruby/init.rb
--- allinoneruby-0.1.1.tar.gz/allinoneruby/init.rb 2004-07-31 02:10:58.000000000 +0200
+++ allinoneruby-0.2.0.tar.gz/allinoneruby/init.rb 2004-12-26 20:09:53.000000000 +0100
@@ -10,8 +10,16 @@
s
end
+def linux?
+ not windows? and not cygwin? # Hack ???
+end
+
def windows?
- not (target_os.downcase =~ /32/).nil? # Hack ???
+ not (target_os.downcase =~ /32/).nil? # Hack ???
+end
+
+def cygwin?
+ not (target_os.downcase =~ /cyg/).nil? # Hack ???
end
def target_os
@@ -21,68 +29,141 @@
rubyw = false
rubyw = false if (ARGV.include?("-d") or ARGV.include?("--ruby"))
rubyw = true if (ARGV.include?("-w") or ARGV.include?("--rubyw"))
+site = false
+site = true if (ARGV.include?("-s") or ARGV.include?("--site"))
ARGV.delete_if{|s| s =~ /^-/}
+exefile = (ARGV.shift or (windows? ? "allinoneruby.exe" : "allinoneruby.bin"))
+
bindir1 = Config::CONFIG["bindir"]
libdir1 = Config::CONFIG["libdir"]
-bindir2 = "bin/"
-libdir2 = "lib/"
-exefile = (ARGV.shift or "allinoneruby.exe")
+bindir2 = tmplocation("bin/")
+libdir2 = tmplocation("lib/")
rubylibdir1 = Config::CONFIG["rubylibdir"]
+sitelibdir1 = Config::CONFIG["sitelibdir"]
-raise "#{bindir2} already exists." if File.directory?(bindir2)
-raise "#{libdir2} already exists." if File.directory?(libdir2)
+Dir.mkdir(bindir2) unless File.directory?(bindir2)
+Dir.mkdir(libdir2) unless File.directory?(libdir2)
-Dir.mkdir(bindir2)
-Dir.mkdir(libdir2)
+if linux?
+ rubyexe = "#{bindir1}/ruby"
+else
+ rubyexe = "#{bindir1}/ruby.exe"
+ rubywexe = "#{bindir1}/rubyw.exe"
+end
-rubyexe = "#{bindir1}/ruby.exe"
-rubywexe = "#{bindir1}/rubyw.exe"
+if linux?
+ tocopy = ldds(rubyexe)
+ tocopy << rubyexe if File.file?(rubyexe)
+else
+ tocopy = dlls(rubyexe)
+ tocopy << rubyexe if File.file?(rubyexe)
+ tocopy << rubywexe if File.file?(rubywexe)
+end
-([rubyexe, rubywexe] + dlls(rubyexe)).each do |s1|
+tocopy.each do |s1|
file = File.basename(s1)
s2 = File.expand_path(file, bindir2)
- puts "Copying #{s1} ..."
- File.copy(s1, s2)
+ $stderr.puts "Copying #{s1} ..."
+ File.copy(s1, s2) unless File.file?(s2)
end
-file = rubylibdir1[libdir1.length..-1].gsub(/^[\/\\]*/, "")
-s1 = rubylibdir1
-s2 = File.expand_path(file, libdir2)
+begin
+ file = rubylibdir1[libdir1.length..-1].gsub(/^[\/\\]*/, "")
+ s1 = rubylibdir1
+ s2 = File.expand_path(file, libdir2)
-puts "Copying #{s1}/ ..."
-Dir.copy(s1, s2)
+ $stderr.puts "Copying #{s1}/ ..."
+ Dir.copy(s1, s2) unless File.directory?(s2)
+end
+
+if site
+ file = sitelibdir1[libdir1.length..-1].gsub(/^[\/\\]*/, "")
+ s1 = sitelibdir1
+ s2 = File.expand_path(file, libdir2)
+
+ $stderr.puts "Copying #{s1}/ ..."
+ Dir.copy(s1, s2) unless File.directory?(s2)
+end
+
+if linux?
+ tocopy = Dir.find(libdir2, /\.so$/).collect{|file| ldds(file)}.flatten.sort.uniq
+else
+ tocopy = Dir.find(libdir2, /\.so$/).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq
+end
-Dir.find(libdir2, /\.so$/).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq.each do |s1|
+tocopy.each do |s1|
file = File.basename(s1)
s2 = File.expand_path(file, bindir2)
- puts "Copying #{s1} ..."
- File.copy(s1, s2)
+ $stderr.puts "Copying #{s1} ..."
+ File.copy(s1, s2) unless File.file?(s2)
end
-puts "Creating #{exefile} ..."
+eeeexe = "eee.exe"
+eeeexe = "eeew.exe" if rubyw
+eeeexe = "eee.bin" if linux?
+appexe = exefile
-File.open("allinoneruby.eee", "w") do |f|
- f.puts "r bin"
- f.puts "r lib"
+$stderr.puts "Creating #{appexe} ..."
+
+if linux?
+ File.open(tmplocation("eee.sh"), "w") do |f|
+ f.puts "PDIR=$1;shift"
+ f.puts "DIR=$(pwd)"
+ f.puts "cd $PDIR"
+ f.puts " chmod +x bin/ruby"
+ f.puts " export PATH=$(pwd)/bin:$PATH"
+ f.puts " export LD_LIBRARY_PATH=$(pwd)/bin:LD_LIBRARY_PATH"
+ f.puts "cd $DIR"
+ f.puts "$*"
+ end
+end
+
+File.open(tmplocation("eee.rb"), "w") do |f|
+ f.puts "lib = File.expand_path(File.dirname(__FILE__)) + ´/lib´"
+ f.puts "lib.sub!(/^.:/, ´/cygdrive/%s´ % $&[0..0].downcase) if lib =~ /^.:/" if cygwin?
+ f.puts "$:.clear"
+ $:.each do |s|
+ f.puts "$: << \"%s\"" % s.sub(libdir1, ´#{lib}´)
+ end
+end
+File.open(tmplocation("app.eee"), "w") do |f|
rubyexe = "ruby.exe"
rubyexe = "rubyw.exe" if rubyw
+ rubyexe = "ruby" if linux?
- f.puts "c %tempdir%/#{bindir2}/#{rubyexe} %quotedparms%"
+ f.puts "r bin"
+ f.puts "r lib"
+ f.puts "f eee.sh" if linux?
+ f.puts "f eee.rb"
+ if linux?
+ f.puts "c source %tempdir%/eee.sh %tempdir% %tempdir%/bin/#{rubyexe} -r %tempdir%/eee.rb %quotedparms%"
+ elsif cygwin?
+ f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir1%/eee.rb %quotedparms%"
+ else
+ f.puts "c %tempdir%\\bin\\#{rubyexe} -r %tempdir%\\eee.rb %quotedparms%"
+ end
end
-eeeexe = "eee.exe"
-eeeexe = "eeew.exe" if rubyw
+from = newlocation(eeeexe)
+to = tmplocation(eeeexe)
-system(backslashes("./eee allinoneruby.eee #{exefile} #{eeeexe}"))
+File.copy(from, to) unless from == to
+File.chmod(0755, to) if linux?
-oldlocation do
- from = newlocation(exefile)
- to = oldlocation(exefile)
+tmplocation do
+ ENV["EEEEXE"] = eeeexe
+ ENV["EEEDIR"] = Dir.pwd
- File.copy(from, to) unless from == to
+ system(backslashes("#{newlocation(linux? ? "eee.bin" : "eee")} app.eee #{appexe}"))
end
+
+from = tmplocation(appexe)
+to = oldlocation(appexe)
+
+File.copy(from, to) unless from == to
+File.chmod(0755, to) if linux?
Binary files allinoneruby-0.1.1.tar.gz/allinoneruby/eee.bin and allinoneruby-0.2.0.tar.gz/allinoneruby/eee.bin differ
Binary files allinoneruby-0.1.1.tar.gz/allinoneruby/eee.exe and allinoneruby-0.2.0.tar.gz/allinoneruby/eee.exe differ
Binary files allinoneruby-0.1.1.tar.gz/allinoneruby/eeew.exe and allinoneruby-0.2.0.tar.gz/allinoneruby/eeew.exe differ