diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/dependencies.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/dependencies.rb --- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/dependencies.rb 2004-12-27 13:17:55.000000000 +0100 +++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/dependencies.rb 2005-01-13 23:07:30.000000000 +0100 @@ -14,7 +14,7 @@ todo2.each do |file| File.open(file, "rb") do |f| strings = f.read.scan(/[\w\-\.]+/) # Hack ??? - strings.delete_if{|s| s !~ /\.dll$/i} + strings.delete_if{|s| s !~ /\.(so|o|dll)$/i} strings.each do |lib| lib = File.expand_path(lib, path) diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb --- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/ev/ftools.rb 2004-12-27 13:17:55.000000000 +0100 +++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/ev/ftools.rb 2005-01-13 23:07:30.000000000 +0100 @@ -1,22 +1,12 @@ require "ftools" class Dir - def self.mkdirrec(dir) - pdir = File.dirname(dir) - - if not pdir.empty? and not File.directory?(pdir) - Dir.mkdirrec(pdir) - end - - Dir.mkdir(dir) rescue nil - end - def self.copy(from, to) if File.directory?(from) pdir = Dir.pwd todir = File.expand_path(to) - mkdirrec(todir) + File.mkpath(todir) Dir.chdir(from) Dir.new(".").each do |e| @@ -26,7 +16,7 @@ else todir = File.dirname(File.expand_path(to)) - mkdirrec(todir) + File.mkpath(todir) File.copy(from, to) end @@ -47,16 +37,24 @@ end Dir.chdir(pdir) - Dir.delete(entry) + begin + Dir.delete(entry) + rescue => e + $stderr.puts e.message + end else - File.delete(entry) + begin + File.delete(entry) + rescue => e + $stderr.puts e.message + end end end def self.find(entry=nil, mask=nil) entry = "." if entry.nil? - entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil? + entry = entry.gsub(/[\/\\]*$/, "") unless entry.nil? mask = /^#{mask}$/i if mask.kind_of?(String) @@ -77,8 +75,8 @@ ensure Dir.chdir(pdir) end - rescue Errno::EACCES => error - puts error + rescue Errno::EACCES => e + $stderr.puts e.message end else res += [entry] if mask.nil? or entry =~ mask @@ -99,7 +97,7 @@ # Rollback if File.file?(backupfile) and File.file?(controlfile) - $stdout.puts "Restoring #{file}..." + $stderr.puts "Restoring #{file}..." File.copy(backupfile, file) # Rollback from phase 3 end diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb --- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/init.rb 2004-12-26 22:50:56.000000000 +0100 +++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/init.rb 2005-01-11 22:53:53.000000000 +0100 @@ -1,3 +1,7 @@ +$: << File.dirname(File.expand_path(__FILE__)) + +required = $".collect{|a| "-r " + a} + require "ev/oldandnewlocation" require "ev/dependencies" require "ev/ftools" @@ -26,6 +30,11 @@ Config::CONFIG["target_os"] or "" end +RUBY = ARGV.include?("--rubyscript2exe-ruby") +RUBYW = ARGV.include?("--rubyscript2exe-rubyw") + +ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/} + script = ARGV.shift if script.nil? @@ -44,10 +53,8 @@ rubyw = false rubyw = true if script =~ /\.rbw$/ -rubyw = false if ARGV.include?("--rubyscript2exe-ruby") -rubyw = true if ARGV.include?("--rubyscript2exe-rubyw") - -ARGV.delete_if{|arg| arg =~ /^--rubyscript2exe-/} +rubyw = false if RUBY +rubyw = true if RUBYW bindir1 = Config::CONFIG["bindir"] libdir1 = Config::CONFIG["libdir"] @@ -60,10 +67,10 @@ $stderr.puts "Tracing #{app}..." -libs = $:.collect{|a| " -I " + a} +libs = $:.collect{|a| "-I " + a} oldlocation do - system(backslashes("#{bindir1}/ruby #{libs.join(" ")} -r ´#{newlocation("require2lib.rb")}´ ´#{script}´ ´#{libdir2}´ ") + ARGV.collect{|a| "´" + a + "´"}.join(" ")) + system(backslashes("#{bindir1}/ruby") + " #{required.join(" ")} #{libs.join(" ")} -r ´#{newlocation("require2lib.rb")}´ ´#{script}´ ´#{bindir2}´ ´#{libdir2}´ --require2lib-quiet" + " " + ARGV.collect{|a| "´" + a + "´"}.join(" ")) end $stderr.puts "Copying files..." @@ -92,7 +99,7 @@ file = File.basename(s1) s2 = File.expand_path(file, bindir2) - $stderr.puts "Copying #{s1} ..." + #$stderr.puts "Copying #{s1} ..." File.copy(s1, s2) unless File.file?(s2) end @@ -100,21 +107,21 @@ s1 = oldlocation(script) s2 = File.expand_path("app.rb", appdir2) - $stderr.puts "Copying #{s1} ..." + #$stderr.puts "Copying #{s1} ..." File.copy(s1, s2) unless File.file?(s2) end if linux? - tocopy = Dir.find(libdir2, /\.so$/).collect{|file| ldds(file)}.flatten.sort.uniq + tocopy = Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| ldds(file)}.flatten.sort.uniq else - tocopy = Dir.find(libdir2, /\.so$/).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq + tocopy = Dir.find(libdir2, /\.(so|o|dll)$/i).collect{|file| dlls(file, bindir1)}.flatten.sort.uniq end tocopy.each do |s1| file = File.basename(s1) s2 = File.expand_path(file, bindir2) - $stderr.puts "Copying #{s1} ..." + #$stderr.puts "Copying #{s1} ..." File.copy(s1, s2) unless File.file?(s2) end @@ -141,8 +148,8 @@ 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 "lib = File.expand_path(File.dirname(__FILE__)) + ´/lib´" + f.puts "lib.sub!(/^.:/, ´/cygdrive/%s´ % $&[0..0].downcase) if lib =~ /^.:/" if cygwin? f.puts "$:.clear" f.puts "$: << lib" end diff -ur rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb --- rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/require2lib.rb 2004-12-27 13:17:55.000000000 +0100 +++ rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/require2lib.rb 2005-01-13 23:07:30.000000000 +0100 @@ -1,6 +1,8 @@ -require "ftools" +require "ev/ftools" require "rbconfig" +exit if __FILE__ == $0 + $require2lib_loaded = [] module Kernel @@ -13,17 +15,17 @@ end module Require - JUSTEV = ARGV.include?("--require2lib-justev") JUSTRUBYLIB = ARGV.include?("--require2lib-justrubylib") JUSTSITELIB = ARGV.include?("--require2lib-justsitelib") + RUBYGEMS = (not JUSTRUBYLIB) VERBOSE = ARGV.include?("--require2lib-verbose") + QUIET = (ARGV.include?("--require2lib-quiet") and not VERBOSE) - ARGV.delete_if do |arg| - arg =~ /^--require2lib-/ - end + ARGV.delete_if{|arg| arg =~ /^--require2lib-/} ORGDIR = Dir.pwd THISFILE = File.expand_path(__FILE__) + BINDIR = File.expand_path(ARGV.shift) LIBDIR = File.expand_path(ARGV.shift) RUBYLIBDIR = Config::CONFIG["rubylibdir"] SITELIBDIR = Config::CONFIG["sitelibdir"] @@ -39,81 +41,148 @@ File.makedirs(LIBDIR) + if RUBYGEMS + begin + Gem::dir + rubygems = true + rescue NameError + rubygems = false + end + else + rubygems = false + end + pureruby = true - ($" + $require2lib_loaded).each do |req| - if not JUSTEV or req =~ /^ev\// - unless req =~ /^rubygems[\.\/]/ - catch :found do - $:.each do |lib| - fromfile = File.expand_path(req, lib) - tofile = File.expand_path(req, LIBDIR) + if rubygems + autorequire = {} + dependencies = {} + requirelibs = [] + requireablefiles = [] + + Gem::Specification.list.each do |gem| + if gem.loaded? + $stderr.puts "Found gem #{gem.name} (#{gem.version})." if VERBOSE + + fromdir = gem.full_gem_path + todir = File.expand_path(File.join("rubyscript2exe.gems", gem.full_name), LIBDIR) + + Dir.copy(fromdir, todir) + + autorequire[gem.name] = gem.autorequire if gem.autorequire + + dependencies[gem.name] = [] + gem.dependencies.each do |dep| + dependencies[gem.name] << dep.name + end - if File.file?(fromfile) - unless fromfile == tofile or fromfile == THISFILE + #gem.require_paths << gem.bindir if gem.bindir + #gem.require_paths.each do |lib| + #lib = File.join("rubyscript2exe.gems", gem.full_name, lib) + #requirelibs << lib unless requirelibs.include?(lib) + #end + + $:.reverse.each do |lib| + gemdir = File.join(Gem.dir, "gems") + if lib =~ /^#{gemdir}/ + lib = lib[(gemdir.size+1)..-1] + lib = File.join("rubyscript2exe.gems", lib) + + requirelibs << lib unless requirelibs.include?(lib) + end + end + + Dir.find(todir).each do |file| + if File.file?(file) + gem.require_paths.each do |lib| + unless lib.empty? + lib = File.expand_path(lib, todir) + lib = lib + "/" + + requireablefiles << file[lib.length..-1] if file =~ /^#{lib}/ + end + end + end + end + end + end + + File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f| + f.puts "module Kernel" + f.puts " def require_gem(file, version=nil)" + f.puts " autorequire = %s" % autorequire.inspect + f.puts " dependencies = %s" % dependencies.inspect + f.puts "" + f.puts " (dependencies[file] or []).each do |dep|" + f.puts " require_gem(dep)" + f.puts " end" + f.puts "" + f.puts " if autorequire.include?(file)" + f.puts " file = autorequire[file]" + f.puts " require(file)" + f.puts " end" + f.puts " end" + f.puts "end" + f.puts "" + f.puts "requirelibs = %s" % requirelibs.inspect + f.puts "" + f.puts "requirelibs.each do |lib|" + f.puts " $:.unshift(File.expand_path(lib, File.expand_path(File.dirname(__FILE__))))" + f.puts "end" + end + end + + ($" + $require2lib_loaded).each do |req| + unless req =~ /^rubygems[\.\/]/ + catch :found do + $:.each do |lib| + fromfile = File.expand_path(req, lib) + tofile = File.expand_path(req, LIBDIR) + + if File.file?(fromfile) + unless fromfile == tofile or fromfile == THISFILE + unless (rubygems and requireablefiles.include?(req)) # ??? requireablefiles might be a little dangerous. if (not JUSTRUBYLIB and not JUSTSITELIB) or (JUSTRUBYLIB and fromfile.include?(RUBYLIBDIR)) or (JUSTSITELIB and fromfile.include?(SITELIBDIR)) $stderr.puts "Found #{fromfile} ." if VERBOSE - File.makedirs(File.dirname(tofile)) + File.makedirs(File.dirname(tofile)) unless File.directory?(File.dirname(tofile)) File.copy(fromfile, tofile) - pureruby = false unless req =~ /\.rb$/i + pureruby = false unless req =~ /\.(rbw?|ruby)$/i else $stderr.puts "Skipped #{fromfile} ." if VERBOSE end end - - throw :found end - end - $stderr.puts "Can´t find #{req} ." unless req =~ /^ev\// + throw :found + end end + + #$stderr.puts "Can´t find #{req} ." unless req =~ /^ev\// + #$stderr.puts "Can´t find #{req} ." unless req =~ /^(\w:)?[\/\\]/ end end end - $stderr.puts "Not all copied files are pure Ruby." unless pureruby + $stderr.puts "Not all required files are pure Ruby." unless pureruby or QUIET - if $".include?("rubygems.rb") or $".include?("rubygems.so") - autorequire = {} + if defined?(RUBYSCRIPT2EXE_DLLS) + [RUBYSCRIPT2EXE_DLLS].flatten.each do |dll| + fromfile = File.expand_path(dll, ORGDIR) + tofile = File.expand_path(File.basename(dll), BINDIR) + + if File.file?(fromfile) + unless fromfile == tofile + $stderr.puts "Found #{fromfile} ." if VERBOSE - Gem::Specification.list.each do |gem| - - unless gem.autorequire.nil? - unless $".collect{|s| (s =~ /^#{gem.autorequire}\.\w+$/)}.compact.empty? - autorequire[gem.name] = gem.autorequire - - gem.require_paths.flatten.each do |lib| - lib = File.expand_path(lib, gem.full_gem_path) - - gem.files.each do |file| - fromfile = File.expand_path(file, gem.full_gem_path) - tofile = File.expand_path(file, File.dirname(LIBDIR)) - - if fromfile.include?(lib) and File.file?(fromfile) - $stderr.puts "Found #{fromfile} ." if VERBOSE - - File.makedirs(File.dirname(tofile)) - File.copy(fromfile, tofile) - end - end - end + File.makedirs(File.dirname(tofile)) unless File.directory?(File.dirname(tofile)) + File.copy(fromfile, tofile) end end end - - File.open(File.expand_path("rubygems.rb", LIBDIR), "w") do |f| - f.puts "module Kernel" - f.puts " def require_gem(file, version=nil)" - f.puts " autorequire = %s" % autorequire.inspect - f.puts " file = autorequire[file] if autorequire.include?(file)" - f.puts " require(file)" - f.puts " end" - f.puts "end" - end end end end Binary files rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eee.exe and rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eee.exe differ Binary files rubyscript2exe-0.3.0.tar.gz/rubyscript2exe/eeew.exe and rubyscript2exe-0.3.1.tar.gz/rubyscript2exe/eeew.exe differ