From e51f8454c247f057f0eea4c90e2fb5727fc7f265 Mon Sep 17 00:00:00 2001 From: Oreolek Date: Thu, 8 Sep 2011 19:42:39 +0700 Subject: [PATCH] Finally! It packages. Some build errors on Debian - I'll fix 'em soon. --- README | 4 +- Rakefile | 113 +++++++++++++++++++++++++++++++++---------------------- 2 files changed, 70 insertions(+), 47 deletions(-) diff --git a/README b/README index a127460..62ce83a 100644 --- a/README +++ b/README @@ -4,7 +4,7 @@ Powerful text-oriented game engine in SDL and Lua. Dependencies ============ -- rake (for building sources) +- rake 1.9 (for building sources) - gtk+-2.0 - sdl - sdl-mixer @@ -24,7 +24,7 @@ Typically you just can use the following command (as root): rake install --silent -It works even on Windows. +In some distros it's "rake1.9.1". It works even on Windows. You can use "rake -T" to see list of available build options. diff --git a/Rakefile b/Rakefile index 4751b80..bfdcda6 100644 --- a/Rakefile +++ b/Rakefile @@ -157,33 +157,38 @@ namespace :build do end end -directory "#{$prefix}/share/doc/steed/" -directory "#{$prefix}/bin" -directory "#{$prefix}" -directory "#{$prefix}/share/steed" -directory "#{$prefix}/share/man/man6" - -task :man => "#{$prefix}/share/man/man6" do - Dir.chdir("doc") do - FileList["*.6"].each do |file| - cp file, "#{$prefix}/share/man/man6" - end +task :man do + mkdir_p "#{$prefix}/share/man/man6" + FileList["doc/*.6"].each do |file| + cp file, "#{$prefix}/share/man/man6" end end -task :data => "#{$prefix}/share/steed" do - FileList["lang/*.ini", "stead/*.lua", "themes/*/*.(ini|jpg|png|ogg|wav|ttf)"].each do |file| - cp file,"#{$prefix}/share/steed" +task :data do + mkdir_p "#{$prefix}/share/steed/lang" + mkdir_p "#{$prefix}/share/steed/stead" + FileList["lang/*.ini"].each do |file| + cp file,"#{$prefix}/share/steed/lang" + end + FileList["stead/*.lua"].each do |file| + cp file,"#{$prefix}/share/steed/stead" + end + FileList["themes/(*)/*.(ini|jpg|png|ogg|wav|ttf)"].each do |file| + mkdir_p "#{$prefix}/themes/#{$1}" + cp file,"#{$prefix}/themes/#{$1}" end end -task :steed => "#{$prefix}/bin" do #if I do that as file task it thinks it's already done +task :steed do #if I do that as file task it thinks it's already done + mkdir_p "#{$prefix}/bin" cp "src/steed/steed", "#{$prefix}/bin" File.chmod(0755, "#{$prefix}/bin/steed") end -task :doc => "#{$prefix}/share/doc/steed/" do - Dir.chdir("doc") do - FileList["modules/*.txt","*.html", "*.txt", "*.pdf"].each do |file| - cp file, "#{$prefix}/share/doc/steed/" - end +task :doc do + mkdir_p "#{$prefix}/share/doc/steed/" + FileList["doc/*.(html|txt|pdf)"].each do |file| + cp file, "#{$prefix}/share/doc/steed/" + end + FileList["doc/modules/*.txt"].each do |file| + cp file, "#{$prefix}/share/doc/steed/modules" end end @@ -281,12 +286,13 @@ end namespace :packaging do desc "Packaging for Android" - task :android, [:version] do |t, args| - args.with_defaults(:version => VERSION) + task :android do end desc "Packaging for Windows (mingw)" - task :windows, [:version] do |t, args| - args.with_defaults(:version => VERSION) + task :windows do + print "Enter version [#{VERSION}]" + version = STDIN.gets.chomp + if version.empty? then version = VERSION end $cc = "i486-mingw32-gcc" $ar = "i486-mingw32-ar rc" $ranlib = "i486-mingw32-ranlib" @@ -302,40 +308,57 @@ namespace :packaging do end sh "#{$cc} #{$cflags.join(" ")} #{sources.ext("o").join(" ")} #{$libs.join(" ")} -o steed" end - Rake::Task[$prefix].invoke - FileList["lang/*.ini", "stead/*.lua", "themes/*/*.(ini|jpg|png|ogg|wav|ttf)"].each do |file| - cp file,"#{$prefix}" - end - FileList["modules/*.txt","*.html", "*.txt", "*.pdf"].each do |file| - cp file, "#{$prefix}/doc" - end - puts "Packaging complete." + #... end + desc "Packaging for Linux (generic)" - task :linux, [:version] do |t, args| - args.with_defaults(:version => VERSION) + task :linux do + print "Enter version [#{VERSION}]" + version = STDIN.gets.chomp + if version.empty? then version = VERSION end $prefix = "./package/unix" - Rake::Task[$prefix].invoke - FileList["lang/*.ini", "stead/*.lua", "themes/*/*.(ini|jpg|png|ogg|wav|ttf)"].each do |file| - cp file,"#{$prefix}" + Rake::Task["rake:clean"].invoke + mkdir_p "#{$prefix}/lang" + mkdir_p "#{$prefix}/stead" + mkdir_p "#{$prefix}/doc/modules" + FileList["lang/*.ini"].each do |file| + cp file,"#{$prefix}/lang" end - FileList["modules/*.txt","*.html", "*.txt", "*.pdf"].each do |file| + FileList["stead/*.lua"].each do |file| + cp file,"#{$prefix}/stead" + end + FileList["doc/modules/*.txt"].each do |file| + cp file, "#{$prefix}/doc/modules" + end + FileList["doc/*.txt","doc/*.html","doc/*.pdf"].each do |file| cp file, "#{$prefix}/doc" end - FileList["src/*/*.(c|h)"].each do |file| - cp file, "#{$prefix}/src" + mkdir_p "#{$prefix}/src" + Dir.glob("src/*/*.{c,h}").each do |file| + mkdir_p $prefix + "/src/" + file.split("/").at(-2) + cp file, $prefix + "/src/" + file.split("/").at(-2) + end + Dir.glob("games/*/*.{ini,jpg,png,ogg,wav,ttf}").each do |file| + mkdir_p $prefix + "/games/" + file.split("/").at(-2) + cp file, $prefix + "/games/" + file.split("/").at(-2) + end + Dir.glob("themes/*/*.{ini,jpg,png,ogg,wav,ttf}").each do |file| + mkdir_p $prefix + "/themes/" + file.split("/").at(-2) + cp file, $prefix + "/themes/" + file.split("/").at(-2) end cp "Rakefile", $prefix - File.open("#{$prefix}/Rakefile", 'r+') { |f| newstr = f.read.gsub (Q(VERSION = "#{VERSION}"), Q(VERSION = "#{:version}")); f.rewind; f.puts(newstr) } + File.open("#{$prefix}/Rakefile", 'r+') do |f| + newstr = f.read.gsub("VERSION = \"#{VERSION}\"", "VERSION = \"#{version}\"") + f.rewind + f.puts(newstr) + end puts "Packaging complete." end desc "Packaging for Debian and Ubuntu" - task :debian, [:version] do |t, args| - args.with_defaults(:version => VERSION) + task :debian do end desc "Packaging for Arch Linux" - task :arch, [:version] do |t, args| - args.with_defaults(:version => VERSION) + task :arch do end task :all => [:android, :windows, :linux, :debian, :arch] do end