Rakefile in rhodes-7.1.17 vs Rakefile in rhodes-7.4.1
- old
+ new
@@ -22,10 +22,14 @@
# THE SOFTWARE.
#
# http://rhomobile.com
#------------------------------------------------------------------------
+task :gem do
+ load 'lib/build/buildgem.rb'
+end
+
require_relative 'lib/build/rho_packages.rb'
require File.join(File.dirname(__FILE__), 'lib/build/required_time.rb')
# RequiredTime.hook()
@@ -45,12 +49,12 @@
require 'openssl'
require 'pathname'
require 'rexml/document'
require 'securerandom'
require 'uri'
-require 'logger'
require 'rake'
+require 'logger'
# It does not work on Mac OS X. rake -T prints nothing. So I comment this hack out.
# NB: server build scripts depend on proper rake -T functioning.
=begin
#Look, another big fat hack. Make it so we can remove tasks from rake -T by setting comment to nil
@@ -80,11 +84,10 @@
$startdir.gsub!('\\', '/')
$push_type = -1
chdir File.dirname(__FILE__), :verbose => (Rake.application.options.trace == true)
-
require File.join(pwd, 'lib/build/jake.rb')
require File.join(pwd, 'lib/build/RhoLogger.rb')
require File.join(pwd, 'lib/build/GeneratorTimeChecker.rb')
require File.join(pwd, 'lib/build/GeneralTimeChecker.rb')
require File.join(pwd, 'lib/build/CheckSumCalculator.rb')
@@ -95,12 +98,29 @@
require File.join(pwd, 'lib/build/BuildConfig.rb')
require File.join(pwd, 'lib/build/RhoHubAccount.rb')
require File.join(pwd, 'lib/build/rhoDevelopment.rb')
+$logger = Logger.new(STDOUT)
+if Rake.application.options.trace
+ ENV["RHODES_BUILD_LOGGER_LEVEL"]= "DEBUG"
+ $logger.level = Logger::DEBUG
+else
+ ENV["RHODES_BUILD_LOGGER_LEVEL"]= "INFO"
+ $logger.level = Logger::INFO
+end
+$logger.formatter = proc do |severity,datetime,progname,msg|
+ "[#{severity}]\t#{msg}\n"
+end
+
+Jake.set_logger( $logger )
+
+
+
+
$timestamp_start_milliseconds = 0
module Rake
class Application
@@ -114,32 +134,13 @@
end
end #class Task
end #module Rake
-
-
-$logger = Logger.new(STDOUT)
-if Rake.application.options.trace
- ENV["RHODES_BUILD_LOGGER_LEVEL"]= "DEBUG"
- $logger.level = Logger::DEBUG
-else
- ENV["RHODES_BUILD_LOGGER_LEVEL"]= "INFO"
- $logger.level = Logger::INFO
-end
-
-
Rake::FileUtilsExt.verbose(Rake.application.options.trace == true)
-$logger.formatter = proc do |severity,datetime,progname,msg|
- "[#{severity}]\t#{msg}\n"
-end
-
-Jake.set_logger( $logger )
-
-
def print_timestamp(msg = 'just for info')
if $timestamp_start_milliseconds == 0
$timestamp_start_milliseconds = (Time.now.to_f*1000.0).to_i
end
curmillis = (Time.now.to_f*1000.0).to_i - $timestamp_start_milliseconds
@@ -153,17 +154,35 @@
load File.join(pwd, 'lib/commonAPI/printing_zebra/ext/platform/wm/PrintingService/PrintingService/installer/Rakefile')
#load File.join(pwd, 'platform/bb/build/bb.rake')
load File.join(pwd, 'platform/android/build/android.rake')
load File.join(pwd, 'platform/iphone/rbuild/iphone.rake')
load File.join(pwd, 'platform/wm/build/wm.rake')
+load File.join(pwd, 'platform/win32/build/win32.rake')
load File.join(pwd, 'platform/linux/tasks/linux.rake')
load File.join(pwd, 'platform/wp8/build/wp.rake')
load File.join(pwd, 'platform/uwp/build/uwp.rake')
load File.join(pwd, 'platform/osx/build/osx.rake')
load File.join(pwd, 'platform/sailfish/build/sailfish.rake')
+module OS
+ def OS.windows?
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
+ end
+ def OS.mac?
+ (/darwin/ =~ RUBY_PLATFORM) != nil
+ end
+
+ def OS.unix?
+ !OS.windows?
+ end
+
+ def OS.linux?
+ OS.unix? and not OS.mac?
+ end
+end
+
#------------------------------------------------------------------------
def get_dir_hash(dir, init = nil)
hash = init
hash = Digest::SHA2.new if hash.nil?
@@ -196,11 +215,11 @@
puts `#{rhoruby} -I#{File.expand_path('spec/framework_spec/app/')} -I#{File.expand_path('lib/framework')} -I#{File.expand_path('lib/test')} -Clib/test framework_test.rb`
end
end
-$application_build_configs_keys = ['encrypt_files_key', 'nodejs_application', 'rubynodejs_application', 'security_token', 'encrypt_database', 'use_deprecated_encryption','android_title', 'iphone_db_in_approot', 'iphone_set_approot', 'iphone_userpath_in_approot', "iphone_use_new_ios7_status_bar_style", "iphone_full_screen", "webkit_outprocess", "webengine", "iphone_enable_startup_logging"]
+$application_build_configs_keys = ['encrypt_files_key', 'nodejs_application', 'rubynodejs_application', 'security_token', 'encrypt_database', 'use_deprecated_encryption','android_title', 'iphone_db_in_approot', 'iphone_set_approot', 'iphone_userpath_in_approot', "iphone_use_new_ios7_status_bar_style", "iphone_full_screen", "webkit_outprocess", "webengine", "iphone_enable_startup_logging", "local_https_server_with_client_checking"]
$winxpe_build = false
def make_application_build_config_header_file
f = StringIO.new("", "w+")
@@ -285,11 +304,11 @@
end
f.puts ''
if $js_application || $nodejs_application
- puts '#define RHO_NO_RUBY' if USE_TRACES
+ $logger.debug '#define RHO_NO_RUBY'
f.puts '#define RHO_NO_RUBY'
f.puts '#define RHO_NO_RUBY_API'
else
$logger.debug '//#define RHO_NO_RUBY'
end
@@ -2034,14 +2053,16 @@
extpaths << File.join($startdir, "../rho-tau-extensions-"+ENV['rhodes_version']+"/libs")
$app_config["extpaths"] = extpaths
if $app_config["build"] and $app_config["build"].casecmp("release") == 0
$debug = false
+ elsif $app_config["build"] and $app_config["build"].casecmp("debug") == 0
+ $debug = true
else
+ puts "\n\n\n\n\nYou must choose configuration manually in build.yml file. Type 'build: release' or 'build: debug' in root section!\n\n\n\n"
$debug = true
end
-
# merge extensions from platform list to global one
$app_config['extensions'] = [] unless $app_config['extensions'] and $app_config['extensions'].is_a? Array
if $app_config[$config['platform']] and $app_config[$config['platform']]['extensions'] and $app_config[$config['platform']]['extensions'].is_a? Array
$app_config['extensions'] = $app_config['extensions'] | $app_config[$config['platform']]['extensions']
end
@@ -2052,13 +2073,21 @@
if ($current_platform == "iphone") || ($current_platform == "android")
extensions << "decryptstub"
else
puts "do not checking for encrypt/decrypt because not iOS/Android 1"
end
- extensions << "zlib" if $current_platform == "win32" # required by coreapi on win32 for gzip support in Network
+ if $current_platform == "win32"
+ extensions << "zlib" # required by coreapi on win32 for gzip support in Network
+ extensions << "openssl.so" if $rhosimulator_build
+ extensions << "openssl" if $rhosimulator_build
+ extensions << "digest" if $rhosimulator_build
+ extensions << "digest-sha2" if $rhosimulator_build
+ end
+
extensions += get_extensions
extensions << "rhoconnect-client" if $rhosimulator_build
+
extensions << "json"
# filter list of extensions with main extensions list (regardless of case!)
downcased = extensions.map(&:downcase)
$app_config['extensions'].reject! { |ext| downcased.include?(ext.downcase) }
@@ -2168,10 +2197,11 @@
end
if $current_platform == "uwp"
$app_config['extensions'] = $app_config['extensions'] | ['barcode']
end
+
end
if $current_platform == "android"
if $app_config['extensions'].index('rhoelementsext')
$app_config['extensions'].delete('rhoelementsext')
@@ -2336,11 +2366,11 @@
def copy_assets(asset, file_map)
dest = File.join($srcdir,'apps/public')
- cp_r asset + "/.", dest, :preserve => true, :remove_destination => true, :verbose => USE_TRACES
+ cp_r asset + "/.", dest, :preserve => true, :remove_destination => true, :verbose => Rake.application.options.trace
end
def clear_linker_settings
if $config["platform"] == "iphone"
# outfile = ""
@@ -2353,10 +2383,11 @@
# end
# File.open($startdir + "/platform/iphone/rhorunner.xcodeproj/project.pbxproj","w") {|f| f.write outfile}
# ENV["EXTENSIONS_LDFLAGS"] = ""
$ldflags = ""
+ $ldflags_array = []
end
end
def add_linker_library(libraryname)
@@ -2369,23 +2400,29 @@
# outfile << line
# end
# end
# File.open($startdir + "/platform/iphone/rhorunner.xcodeproj/project.pbxproj","w") {|f| f.write outfile}
# end
- simulator = $sdk =~ /iphonesimulator/
+ if $config["platform"] == "iphone"
+ simulator = $sdk =~ /iphonesimulator/
- if ENV["TARGET_TEMP_DIR"] and ENV["TARGET_TEMP_DIR"] != ""
- tmpdir = ENV["TARGET_TEMP_DIR"]
- else
- tmpdir = File.join($app_path, 'project/iphone') + "/build/rhorunner.build/#{$configuration}-" +
- ( simulator ? "iphonesimulator" : "iphoneos") + "/rhorunner.build"
+ if ENV["TARGET_TEMP_DIR"] and ENV["TARGET_TEMP_DIR"] != ""
+ tmpdir = ENV["TARGET_TEMP_DIR"]
+ else
+ tmpdir = File.join($app_path, 'project/iphone') + "/build/rhorunner.build/#{$configuration}-" +
+ ( simulator ? "iphonesimulator" : "iphoneos") + "/rhorunner.build"
+ end
+ #$ldflags << "#{tmpdir}/#{libraryname}\n" unless $ldflags.nil?
+ $ldflags_array << "#{tmpdir}/#{libraryname}"
end
- $ldflags << "#{tmpdir}/#{libraryname}\n" unless $ldflags.nil?
end
def add_inker_library_absolute(fulllibraryfilepath)
+ if $config["platform"] == "iphone"
$ldflags << fulllibraryfilepath + "\n" unless $ldflags.nil?
+ #$ldflags_array << fulllibraryfilepath
+ end
end
def set_linker_flags
if $config["platform"] == "iphone"
simulator = $sdk =~ /iphonesimulator/
@@ -2785,15 +2822,15 @@
extjsmodulefiles << f
end
end
Dir.glob(extpath + "/public/api/generated/*.js").each do |f|
- if /(rho\.orm)|(rho\.ruby\.runtime)|(rho\.rhosim\.fix)/i.match(f.downcase())
- puts "add #{f} to extjsmodulefiles_opt.." if USE_TRACES
+ if /(rho\.orm)|(rho\.ruby\.runtime)|(rho\.rhosim\.fix)/i.match(f.downcase())
+ $logger.debug "add #{f} to extjsmodulefiles_opt.."
extjsmodulefiles_opt << f
else
- puts "add #{f} to extjsmodulefiles.." if USE_TRACES
+ $logger.debug "add #{f} to extjsmodulefiles.."
extjsmodulefiles << f
end
end
end
#end
@@ -2862,11 +2899,11 @@
mkdir_p rhoapi_nodejs_folder
end
#
if !$skip_build_js_api_files
if extjsmodulefiles.count > 0
- puts 'extjsmodulefiles=' + extjsmodulefiles.to_s if USE_TRACES
+ $logger.debug "extjsmodulefiles=#{extjsmodulefiles.to_s}"
write_modules_js(rhoapi_js_folder, "rhoapi-modules.js", extjsmodulefiles, do_separate_js_modules)
$ebfiles_shared_rt_js_appliction = ($js_application and ($current_platform == "wm" or $current_platform == "android") and $app_config["capabilities"].index('shared_runtime'))
if $use_shared_runtime || $ebfiles_shared_rt_js_appliction
start_path = Dir.pwd
@@ -2886,11 +2923,11 @@
write_modules_js(rhoapi_nodejs_folder, "rhoapi.js", extnodejsmodulefiles, false)
end
# make rhoapi-modules-ORM.js only if not shared-runtime (for WM) build
if !$shared_rt_js_appliction
if extjsmodulefiles_opt.count > 0
- puts 'extjsmodulefiles_opt=' + extjsmodulefiles_opt.to_s if USE_TRACES
+ $logger.debug 'extjsmodulefiles_opt=' + extjsmodulefiles_opt.to_s
#write_modules_js(rhoapi_js_folder, "rhoapi-modules-ORM.js", extjsmodulefiles_opt, do_separate_js_modules)
write_orm_modules_js(rhoapi_js_folder, extjsmodulefiles_opt)
end
end
end
@@ -2997,11 +3034,11 @@
def public_folder_cp_r(src_dir, dst_dir, level, file_map, start_path)
return if src_dir == dst_dir
- mkdir_p dst_dir, :verbose => USE_TRACES if not File.exists? dst_dir
+ mkdir_p dst_dir, :verbose => Rake.application.options.trace if not File.exists? dst_dir
Dir.foreach(src_dir) do |filename|
next if filename.eql?('.') || filename.eql?('..')
next if filename.eql?('api') && level == 0
@@ -3028,11 +3065,11 @@
puts "map_items=" + map_items.to_s if Rake.application.options.trace
puts "new_time=" + new_time.to_s if Rake.application.options.trace
puts "old_time=" + old_time.to_s if Rake.application.options.trace
end
- cp filepath, dst_path, :preserve => true, :verbose => USE_TRACES
+ cp filepath, dst_path, :preserve => true, :verbose => Rake.application.options.trace
end
end
end
def common_bundle_start( startdir, dest)
@@ -3518,11 +3555,11 @@
minify_inplace_batch(files_to_minify) if files_to_minify.length>0
end
def minify_inplace_batch(files_to_minify)
- puts "minifying file list: #{files_to_minify}" if USE_TRACES
+ $logger.debug "minifying file list: #{files_to_minify}"
cmd = "java -jar #{$minifier} -o \"x$:x\""
files_to_minify.each { |f| cmd += " #{f}" }
@@ -3532,25 +3569,25 @@
error = nil
begin
output, error, status = Open3.capture3(cmd)
rescue Exception => e
- puts "Minify error: #{e.inspect}"
+ $logger.debug "Minify error: #{e.inspect}"
error = e.inspect
end
- puts "Minification done: #{status}" if USE_TRACES
+ $logger.debug "Minification done: #{status}"
if !status || !status.exitstatus.zero?
- puts "WARNING: Minification error!" if USE_TRACES
+ $logger.debug "WARNING: Minification error!"
error = output if error.nil?
BuildOutput.warning(["Minification errors occured. Minificator stderr output: \n" + error], 'Minification error')
end
end
def minify_inplace(filename,type)
- puts "minify file: #{filename}" if USE_TRACES
+ $logger.debug "minify file: #{filename}"
f = StringIO.new("", "w+")
f.write(File.read(filename))
f.rewind()
@@ -3583,11 +3620,11 @@
error = e.inspect
#raise e
end
if !status || !status.exitstatus.zero?
- puts "WARNING: Minification error!" if USE_TRACES
+ $logger.debug "WARNING: Minification error!"
error = output if error.nil?
BuildOutput.warning(['Failed to minify ' + filename, 'Output: ' + error], 'Minification error')
@@ -3867,33 +3904,10 @@
end
end
end
-task :gem do
- puts "Removing old gem"
- rm_rf Dir.glob("rhodes*.gem")
- puts "Copying Rakefile"
- cp "Rakefile", "rakefile.rb"
-
- puts "Building manifest"
- out = ""
- Dir.glob("**/*") do |fname|
- # TODO: create exclusion list
- next unless File.file? fname
- next if fname =~ /rhoconnect-client/
- next if fname =~ /^spec\/api_generator_spec/
- next if fname =~ /ruby-standalone/
-
- out << fname + "\n"
- end
- File.open("Manifest.txt",'w') {|f| f.write(out)}
-
- puts "Building gem"
- Jake.run3('gem build rhodes.gemspec')
-end
-
namespace "rhomobile-debug" do
task :gem do
puts "Removing old gem"
rm_rf Dir.glob("rhomobile-debug*.gem")
rm_rf "rhomobile-debug"
@@ -3924,23 +3938,29 @@
task :tasks do
Rake::Task.tasks.each {|t| puts t.to_s.ljust(27) + "# " + t.comment.to_s}
end
-task :switch_app do
- puts "Preparing rhobuild.yml"
+task :switch_app => [ 'config:load' ] do
+
+ $logger.info "Configuring app location: #{$app_path}"
+ $config["env"]["app"] = $app_path.gsub(/\\/,"/")
+
+=begin
+ $logger.info "Preparing rhobuild.yml"
rhobuildyml = File.dirname(__FILE__) + "/rhobuild.yml"
if File.exists? rhobuildyml
config = YAML::load_file(rhobuildyml)
else
- puts "Cant find rhobuild.yml"
- exit 1
+ $logger.warn "Cant find rhobuild.yml"
end
config["env"]["app"] = $app_path.gsub(/\\/,"/")
File.open( rhobuildyml, 'w' ) do |out|
YAML.dump( config, out )
end
+=end
+
end
#Rake::RDocTask.new do |rd|
#RDoc::Task.new do |rd|
# rd.main = "README.textile"
@@ -4076,11 +4096,11 @@
startJSModules = []
startJSModules_opt = []
endJSModules = []
rhoapi_js_folder = File.join( $app_path, "public/api" )
- puts "rhoapi_js_folder: #{rhoapi_js_folder}" if USE_TRACES
+ $logger.debug "rhoapi_js_folder: #{rhoapi_js_folder}"
do_separate_js_modules = Jake.getBuildBoolProp("separate_js_modules", $app_config, false)
# TODO: checker init
gen_checker = GeneratorTimeChecker.new
@@ -4188,14 +4208,14 @@
extjsmodulefiles << f
end
end
Dir.glob(extpath + "/public/api/generated/*.js").each do |f|
if /(rho\.orm)|(rho\.ruby\.runtime)|(rho\.rhosim\.fix)/i.match(f.downcase())
- puts "add #{f} to extjsmodulefiles_opt.." if USE_TRACES
+ $logger.debug "add #{f} to extjsmodulefiles_opt.."
extjsmodulefiles_opt << f
else
- puts "add #{f} to extjsmodulefiles.." if USE_TRACES
+ $logger.debug "add #{f} to extjsmodulefiles.."
extjsmodulefiles << f
end
end
end
@@ -4215,16 +4235,16 @@
rm_rf rhoapi_js_folder if Dir.exist?(rhoapi_js_folder)
mkdir_p rhoapi_js_folder
end
#
if extjsmodulefiles.count > 0
- puts "extjsmodulefiles: #{extjsmodulefiles}" if USE_TRACES
+ $logger.debug "extjsmodulefiles: #{extjsmodulefiles}"
write_modules_js(rhoapi_js_folder, "rhoapi-modules.js", extjsmodulefiles, do_separate_js_modules)
end
#
if extjsmodulefiles_opt.count > 0
- puts "extjsmodulefiles_opt: #{extjsmodulefiles_opt}" if USE_TRACES
+ $logger.debug "extjsmodulefiles_opt: #{extjsmodulefiles_opt}"
#write_modules_js(rhoapi_js_folder, "rhoapi-modules-ORM.js", extjsmodulefiles_opt, do_separate_js_modules)
write_orm_modules_js(rhoapi_js_folder, extjsmodulefiles_opt)
end
sim_conf += "ext_path=#{config_ext_paths}\r\n" if config_ext_paths && config_ext_paths.length() > 0
@@ -4267,33 +4287,36 @@
args << "-security_token=#{ENV['security_token']}" if !ENV['security_token'].nil?
path = ''
cmd = ''
if RUBY_PLATFORM =~ /(win|w)32$/
+
+ path = File.join( $startdir, "platform/win32/RhoSimulator" )
+ unless File.directory?( path )
+ downloadRhosim( path )
+ end
+
if $config['env']['paths']['rhosimulator'] and $config['env']['paths']['rhosimulator'].length() > 0
path = File.join( $config['env']['paths']['rhosimulator'], "rhosimulator.exe" )
else
path = File.join( $startdir, "platform/win32/RhoSimulator/rhosimulator.exe" )
end
oldDir = File.join( $startdir, "platform/win32/RhoSimulator" )
newDir = oldDir
- #newDir = File.join( $startdir, "platform/win32/RhoSimulatorRunnable" )
- #rm_rf newDir if Dir.exist?(newDir)
- #FileUtils.mkpath newDir
-
- #cp_r File.join(oldDir, "."), newDir
-
qtdir = ENV['QTDIR']
- #if !qtdir.nil?
- #cp File.join(qtdir, "bin/Qt5Core.dll"), newDir
- args << "-remote-debugging-port=9090"
- #end
- #Jake.run "taskkill /f /im RhoSimulator.exe"
+ args << "-remote-debugging-port=9090"
+
cmd = File.join(newDir, 'rhosimulator.exe')
elsif RUBY_PLATFORM =~ /darwin/
+
+ path = File.join( $startdir, "platform/osx/bin/RhoSimulator" )
+ unless File.directory?( path )
+ downloadRhosim( path )
+ end
+
if $config['env']['paths']['rhosimulator'] and $config['env']['paths']['rhosimulator'].length() > 0
path = File.join( $config['env']['paths']['rhosimulator'], "RhoSimulator.app" )
else
path = File.join( $startdir, "platform/osx/bin/RhoSimulator/RhoSimulator.app" )
end
@@ -4424,9 +4447,66 @@
$rhodes_version = File.read(File.join($startdir,'version')).chomp
File.open(File.join($startdir, 'platform/shared/qt/rhodes/RhoSimulatorVersion.h'), "wb") do |fversion|
fversion.write( "#define RHOSIMULATOR_VERSION \"#{$rhodes_version}\"\n" )
end
end
+end
+
+def downloadRhosim( targetPath )
+ require 'tempfile'
+
+ commit = `git rev-parse HEAD`.strip
+ branch = `git rev-parse --abbrev-ref HEAD`.strip
+
+ if RUBY_PLATFORM =~ /(win|w)32$/
+ url = "https://tau-autobuilds.s3.eu-central-1.amazonaws.com/rhomobile/rhodes/#{branch}/#{commit}/win32-RhoSimulator/RhoSimulator.zip"
+ elsif RUBY_PLATFORM =~ /darwin/
+ url = "https://tau-autobuilds.s3.eu-central-1.amazonaws.com/rhomobile/rhodes/#{branch}/#{commit}/osx-rhosimulator_osx-/RhoSimulator.app.zip"
+ else
+ return
+ end
+
+ $logger.info "Downloading rhosim from #{url}"
+
+ file = Tempfile.new('rhosim.zip')
+ file.binmode
+
+ uri = URI.parse(url)
+
+ http = Net::HTTP.new(uri.host, uri.port)
+ http.use_ssl = true
+
+ http.request_get(uri.path) do |response|
+ length = response['Content-Length'].to_i
+ x = 0
+
+ response.read_body do |fragment|
+ x += fragment.length
+ file.write(fragment)
+ end
+ end
+
+ file.flush
+ file.close
+
+ $logger.info "Unzipping #{file.path} to #{targetPath}"
+
+ mkdir_p( targetPath )
+
+ require 'zip'
+
+ zipfile = file.path
+ file.close
+
+ Zip::File.open(zipfile) do |zip_file|
+ zip_file.each do |f|
+ fpath = File.join(targetPath, f.name)
+ zip_file.extract(f, fpath)
+ end
+ end
+
+ file.delete
+
end
#------------------------------------------------------------------------
namespace :run do