From fd1fabe5746b60a7c62aa63ba1f3e2838d368f01 Mon Sep 17 00:00:00 2001 From: Luke Hill Date: Tue, 1 Oct 2019 11:13:58 +0200 Subject: [PATCH] [crazyfun] Move everything under one directory (No fixes) Signed-off-by: Alexei Barantsev --- Rakefile | 186 +++++++++- rakelib/bazel.rake => rake_tasks/bazel.rb | 4 +- {rakelib => rake_tasks}/bazel/task.rb | 0 .../copyright.rake => rake_tasks/copyright.rb | 30 -- rake_tasks/crazy_fun/mappings/common.rb | 2 +- rake_tasks/crazy_fun/mappings/folder.rb | 1 - rake_tasks/crazy_fun/mappings/gcc.rb | 331 +++++++++--------- rake_tasks/crazy_fun/mappings/javascript.rb | 7 +- rake_tasks/crazy_fun/mappings/rake.rb | 2 +- rake_tasks/python.rb | 21 ++ {rakelib => rake_tasks}/rake/dsl.rb | 0 rakelib/ide.rake | 25 -- rakelib/jruby.rake | 39 --- rakelib/node.rake | 46 --- rakelib/python.rake | 71 ---- 15 files changed, 375 insertions(+), 390 deletions(-) rename rakelib/bazel.rake => rake_tasks/bazel.rb (95%) rename {rakelib => rake_tasks}/bazel/task.rb (100%) rename rakelib/copyright.rake => rake_tasks/copyright.rb (69%) create mode 100644 rake_tasks/python.rb rename {rakelib => rake_tasks}/rake/dsl.rb (100%) delete mode 100644 rakelib/ide.rake delete mode 100644 rakelib/jruby.rake delete mode 100644 rakelib/node.rake delete mode 100644 rakelib/python.rake diff --git a/Rakefile b/Rakefile index 26bc557827cb6..082c455e9ca62 100644 --- a/Rakefile +++ b/Rakefile @@ -7,6 +7,7 @@ require 'rake_tasks/files' require 'net/telnet' require 'stringio' require 'fileutils' +require 'open-uri' include Rake::DSL @@ -33,6 +34,13 @@ require 'rake_tasks/selenium_rake/java_formatter' require 'rake_tasks/selenium_rake/cpp_formatter' require 'rake_tasks/selenium_rake/type_definitions_generator' +# Require the migrated rake files, which need to be tidied up further +# These are the final items mixed into the global NS +require 'rake_tasks/bazel' +require 'rake_tasks/copyright' +require 'rake_tasks/files' +require 'rake_tasks/python' + # Our modifications to the Rake library require 'rake_tasks/rake/task' @@ -81,7 +89,7 @@ crazy_fun.create_tasks(Dir["rb/**/build.desc"]) # If it looks like a bazel target, build it with bazel rule /\/\/.*/ do |task| - task.out = Bazel::execute("build", ["--workspace_status_command", "scripts/build-info.py"], task.name) + task.out = Bazel.execute("build", ["--workspace_status_command", "scripts/build-info.py"], task.name) end # Spoof tasks to get CI working with bazel @@ -449,6 +457,182 @@ task :authors do sh "(git log --use-mailmap --format='%aN <%aE>' ; cat .OLD_AUTHORS) | sort -uf > AUTHORS" end +namespace :copyright do + task :update do + Copyright.update( + FileList['javascript/**/*.js'].exclude( + 'javascript/atoms/test/jquery.min.js', + 'javascript/jsunit/**/*.js', + 'javascript/node/selenium-webdriver/node_modules/**/*.js', + 'javascript/selenium-core/lib/**/*.js', + 'javascript/selenium-core/scripts/ui-element.js', + 'javascript/selenium-core/scripts/ui-map-sample.js', + 'javascript/selenium-core/scripts/user-extensions.js', + 'javascript/selenium-core/scripts/xmlextras.js', + 'javascript/selenium-core/xpath/**/*.js' + ) + ) + Copyright.update(FileList['py/**/*.py'], style: '#') + Copyright.update( + FileList['rb/**/*.rb'], + style: '#', + prefix: ["# frozen_string_literal: true\n", "\n"] + ) + Copyright.update(FileList['java/**/*.java']) + end +end + +namespace :side do + task atoms: [ + '//javascript/atoms/fragments:find-element' + ] do + # TODO: move directly to IDE's directory once the repositories are merged + baseDir = 'build/javascript/atoms' + mkdir_p baseDir + + [ + Rake::Task['//javascript/atoms/fragments:find-element'].out + ].each do |atom| + name = File.basename(atom) + + puts "Generating #{atom} as #{name}" + File.open(File.join(baseDir, name), 'w') do |f| + f << "// GENERATED CODE - DO NOT EDIT\n" + f << 'module.exports = ' + f << IO.read(atom).strip + f << ";\n" + end + end + end +end + +namespace :jruby do + desc 'Update jruby version' + task :update do + jruby_version = '9.2.8.0' + jruby_gems = { 'inifile' => '3.0.0' } + jar_name = "jruby-complete-#{jruby_version}.jar" + url = "https://repo1.maven.org/maven2/org/jruby/jruby-complete/#{jruby_version}/#{jar_name}" + + Dir.chdir('third_party/jruby') do + puts "Downloading #{jar_name} from #{url}..." + File.open(jar_name, 'wb') do |write_file| + open(url, 'rb') do |read_file| + write_file.write(read_file.read) + end + end + + puts 'Installing gems...' + jruby_gems.each do |gem_name, gem_version| + sh 'java', '-jar', jar_name, '-S', 'gem', 'install', '-i', "./#{gem_name}", gem_name, '-v', gem_version + sh 'jar', 'uf', jar_name, '-C', gem_name, '.' + rm_rf gem_name + end + + puts 'Bumping VERSION...' + version = `java -jar #{jar_name} -v`.split("\n").first + File.write('VERSION', "#{version}\n") + + mv jar_name, 'jruby-complete.jar' + puts 'Done!' + end + end +end + +namespace :node do + task atoms: %w( + //javascript/atoms/fragments:is-displayed + //javascript/webdriver/atoms:get-attribute + ) do + baseDir = 'javascript/node/selenium-webdriver/lib/atoms' + mkdir_p baseDir + + [ + Rake::Task['//javascript/atoms/fragments:is-displayed'].out, + Rake::Task['//javascript/webdriver/atoms:get-attribute'].out + ].each do |atom| + name = File.basename(atom) + + puts "Generating #{atom} as #{name}" + File.open(File.join(baseDir, name), 'w') do |f| + f << "// GENERATED CODE - DO NOT EDIT\n" + f << 'module.exports = ' + f << IO.read(atom).strip + f << ";\n" + end + end + end + + task :build do + sh 'bazel build //javascript/node/selenium-webdriver' + end + + task 'dry-run': [ + 'node:build' + ] do + sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.pack' + end + + task deploy: [ + 'node:build' + ] do + sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.publish' + end + + task :docs do + sh 'node javascript/node/gendocs.js' + end +end + +namespace :py do + task prep: [ + '//javascript/atoms/fragments:is-displayed', + '//javascript/webdriver/atoms:get-attribute', + '//third_party/js/selenium:webdriver_xpi' + ] do + py_home = 'py/' + remote_py_home = py_home + 'selenium/webdriver/remote/' + firefox_py_home = py_home + 'selenium/webdriver/firefox/' + + if SeleniumRake::Checks.windows? + remote_py_home = remote_py_home.gsub(/\//, '\\') + firefox_py_home = firefox_py_home .gsub(/\//, '\\') + end + + cp Rake::Task['//javascript/atoms/fragments:is-displayed'].out, remote_py_home + "isDisplayed.js", verbose: true + cp Rake::Task['//javascript/webdriver/atoms:get-attribute'].out, remote_py_home + "getAttribute.js", verbose: true + + cp Rake::Task['//third_party/js/selenium:webdriver_xpi'].out, firefox_py_home, verbose: true + cp 'third_party/js/selenium/webdriver.json', firefox_py_home + 'webdriver_prefs.json', verbose: true + cp 'LICENSE', py_home + 'LICENSE', verbose: true + end + + bazel :unit do + Bazel.execute('test', [], '//py:unit') + end + + task docs: :prep do + sh 'tox -c py/tox.ini -e docs', verbose: true + end + + task install: :prep do + Dir.chdir('py') do + sh py_exe + ' setup.py install', verbose: true + end + end + + %w[chrome ff marionette ie edge blackberry remote_firefox safari].each do |browser| + browser_data = SeleniumRake::Browsers::BROWSERS[browser][:python] + deps = browser_data[:deps] || [] + deps += [:prep] + driver = browser_data[:driver] + + task "#{browser}_test" => deps do + tox_test driver + end + end +end + at_exit do if File.exist?(".git") && !SeleniumRake::Checks.windows? system "sh", ".git-fixfiles" diff --git a/rakelib/bazel.rake b/rake_tasks/bazel.rb similarity index 95% rename from rakelib/bazel.rake rename to rake_tasks/bazel.rb index 58ac633fc6528..417107b632b78 100644 --- a/rakelib/bazel.rake +++ b/rake_tasks/bazel.rb @@ -2,8 +2,8 @@ require 'open3' require 'rake/task' require 'rake_tasks/selenium_rake/checks' -require 'rakelib/bazel/task' -require 'rakelib/rake/dsl' +require 'rake_tasks/bazel/task' +require 'rake_tasks/rake/dsl' module Bazel class << self diff --git a/rakelib/bazel/task.rb b/rake_tasks/bazel/task.rb similarity index 100% rename from rakelib/bazel/task.rb rename to rake_tasks/bazel/task.rb diff --git a/rakelib/copyright.rake b/rake_tasks/copyright.rb similarity index 69% rename from rakelib/copyright.rake rename to rake_tasks/copyright.rb index d0a27ecab55b7..01a82bab2c6c2 100644 --- a/rakelib/copyright.rake +++ b/rake_tasks/copyright.rb @@ -1,35 +1,5 @@ # frozen_string_literal: true -namespace :copyright do - task :update do - Copyright.update( - FileList['javascript/**/*.js'].exclude( - 'javascript/atoms/test/jquery.min.js', - 'javascript/jsunit/**/*.js', - 'javascript/node/selenium-webdriver/node_modules/**/*.js', - 'javascript/selenium-core/lib/**/*.js', - 'javascript/selenium-core/scripts/ui-element.js', - 'javascript/selenium-core/scripts/ui-map-sample.js', - 'javascript/selenium-core/scripts/user-extensions.js', - 'javascript/selenium-core/scripts/xmlextras.js', - 'javascript/selenium-core/xpath/**/*.js' - ) - ) - Copyright.update( - FileList['py/**/*.py'], - style: '#' - ) - Copyright.update( - FileList['rb/**/*.rb'], - style: '#', - prefix: ["# frozen_string_literal: true\n", "\n"] - ) - Copyright.update( - FileList['java/**/*.java'] - ) - end -end - module Copyright module_function diff --git a/rake_tasks/crazy_fun/mappings/common.rb b/rake_tasks/crazy_fun/mappings/common.rb index 2f57c46eac79d..cb83c9ff12df9 100644 --- a/rake_tasks/crazy_fun/mappings/common.rb +++ b/rake_tasks/crazy_fun/mappings/common.rb @@ -1 +1 @@ -require_relative 'tasks' \ No newline at end of file +require_relative 'tasks' diff --git a/rake_tasks/crazy_fun/mappings/folder.rb b/rake_tasks/crazy_fun/mappings/folder.rb index a2e108f17150d..d3f462a606cde 100644 --- a/rake_tasks/crazy_fun/mappings/folder.rb +++ b/rake_tasks/crazy_fun/mappings/folder.rb @@ -1,6 +1,5 @@ require 'rake_tasks/crazy_fun/mappings/common' - require_relative 'folder_mappings' require_relative 'folder/add_dependencies' require_relative 'folder/check_preconditions' diff --git a/rake_tasks/crazy_fun/mappings/gcc.rb b/rake_tasks/crazy_fun/mappings/gcc.rb index 77e7f355e981b..2a518badbf439 100644 --- a/rake_tasks/crazy_fun/mappings/gcc.rb +++ b/rake_tasks/crazy_fun/mappings/gcc.rb @@ -18,217 +18,212 @@ def add_all(fun) end module Gcc + def Gcc::out_name(dir, args) + File.join("build", dir, args[:arch], "lib" + args[:name] + ".so") + end -def Gcc::out_name(dir, args) - File.join("build", dir, args[:arch], "lib" + args[:name] + ".so") -end - -class BaseGcc < Tasks - def gcc(fun, dir, srcs, args, link_args, out, is_32_bit) - if !gcc? - copy_prebuilt(fun, out) - return - end + class BaseGcc < Tasks + def gcc(fun, dir, srcs, args, link_args, out, is_32_bit) + if !gcc? + copy_prebuilt(fun, out) + return + end - obj_dir = "#{out}_temp/obj" + (is_32_bit ? "32" : "64") + obj_dir = "#{out}_temp/obj" + (is_32_bit ? "32" : "64") + + mkdir_p obj_dir + + is_cpp_code = false + srcs.each do |src| + FileList.new(File.join(dir, src)).each do |f| + ok = gccbuild_c(f, obj_dir, args, is_32_bit) + if (!ok) + copy_prebuilt(fun, out) + return + end + if (src =~ /\.cpp$/) + is_cpp_code = true + end + end + end - mkdir_p obj_dir + flags = "-shared -Os " + flags += (is_32_bit ? "-m32 " : "-m64 ") + flags += " " + link_args + " " if link_args - is_cpp_code = false - srcs.each do |src| - FileList.new(File.join(dir, src)).each do |f| - ok = gccbuild_c(f, obj_dir, args, is_32_bit) - if (!ok) + # if we've made it this far, try to link. If link fails, + # copy from prebuilt. + linker = is_cpp_code ? "g++" : "gcc" + linker_cmd = "#{linker} -o #{out} #{obj_dir}/*.o #{flags}" + sh linker_cmd do |link_ok, res| + if (!link_ok) copy_prebuilt(fun, out) return end - if (src =~ /\.cpp$/) - is_cpp_code = true - end end - end - flags = "-shared -Os " - flags += (is_32_bit ? "-m32 " : "-m64 ") - flags += " " + link_args + " " if link_args + rm_rf "#{out}_temp" + end - # if we've made it this far, try to link. If link fails, - # copy from prebuilt. - linker = is_cpp_code ? "g++" : "gcc" - linker_cmd = "#{linker} -o #{out} #{obj_dir}/*.o #{flags}" - sh linker_cmd do |link_ok, res| - if (!link_ok) - copy_prebuilt(fun, out) - return + def gccbuild_c(src_file, obj_dir, args, is_32_bit) + compiler = src_file =~ /\.c$/ ? "gcc" : "g++" + objname = src_file.split('/')[-1].sub(/\.c[p{2}]*?$/, ".o") + cmd = "#{compiler} #{src_file} -c -o #{obj_dir}/#{objname} " + cmd += (is_32_bit ? " -m32" : " -m64") + cmd += " " + args if args + sh cmd do |ok, res| + if !ok + puts "Unable to build. Aborting compilation" + return false + end end + true end - - rm_rf "#{out}_temp" end - def gccbuild_c(src_file, obj_dir, args, is_32_bit) - compiler = src_file =~ /\.c$/ ? "gcc" : "g++" - objname = src_file.split('/')[-1].sub(/\.c[p{2}]*?$/, ".o") - cmd = "#{compiler} #{src_file} -c -o #{obj_dir}/#{objname} " - cmd += (is_32_bit ? " -m32" : " -m64") - cmd += " " + args if args - sh cmd do |ok, res| - if !ok - puts "Unable to build. Aborting compilation" - return false + class CheckPreconditions + def handle(fun, dir, args) + if args[:arch] and !(args[:arch] == "i386" or args[:arch] == "amd64") + raise StandardError, "arch must be i386 or amd64" end - end - true - end -end -class CheckPreconditions - def handle(fun, dir, args) - if args[:arch] and !(args[:arch] == "i386" or args[:arch] == "amd64") - raise StandardError, "arch must be i386 or amd64" + raise StandardError, "No srcs specified" unless args[:srcs] end - - raise StandardError, "No srcs specified" unless args[:srcs] end -end -class CreateTask < Tasks - def handle(fun, dir, args) - name = task_name(dir, args[:name]) - out = Gcc::out_name(dir, args) + class CreateTask < Tasks + def handle(fun, dir, args) + name = task_name(dir, args[:name]) + out = Gcc::out_name(dir, args) - task name => out - Rake::Task[name].out = out - args[:srcs].each do |src| - file out => FileList[src] - end + task name => out + Rake::Task[name].out = out + args[:srcs].each do |src| + file out => FileList[src] + end - if (name.end_with? "#{args[:name]}:#{args[:name]}") - name = name.sub(/:.*$/, "") - task name => task_name(dir, args[:name]) - Rake::Task[name].out = out(dir, args) + if (name.end_with? "#{args[:name]}:#{args[:name]}") + name = name.sub(/:.*$/, "") + task name => task_name(dir, args[:name]) + Rake::Task[name].out = out(dir, args) + end end end -end -class Build < BaseGcc - def handle(fun, dir, args) - out = Gcc::out_name(dir, args) - default_flags = "-fPIC -Wall" - compiler_args = [args[:args], default_flags].join " " - linker_args = [args[:link_args], default_flags].join " " - - file out do - puts "Compiling: #{task_name(dir, args[:name])} as #{out}" - is_32_bit = "amd64" != args[:arch] - gcc(fun, dir, args[:srcs], compiler_args, linker_args, out, is_32_bit) + class Build < BaseGcc + def handle(fun, dir, args) + out = Gcc::out_name(dir, args) + default_flags = "-fPIC -Wall" + compiler_args = [args[:args], default_flags].join " " + linker_args = [args[:link_args], default_flags].join " " + + file out do + puts "Compiling: #{task_name(dir, args[:name])} as #{out}" + is_32_bit = "amd64" != args[:arch] + gcc(fun, dir, args[:srcs], compiler_args, linker_args, out, is_32_bit) + end end end -end + class CopyOutputToPrebuilt < Tasks + def handle(fun, dir, args) + out = Gcc::out_name(dir, args) -class CopyOutputToPrebuilt < Tasks - def handle(fun, dir, args) - out = Gcc::out_name(dir, args) - - file out do - dest = fun.find_prebuilt(out) - cp out, dest + file out do + dest = fun.find_prebuilt(out) + cp out, dest + end end end -end -module MozBinary + module MozBinary + def MozBinary::gecko_sdk_path(args) + if args[:arch] == "i386" + plat = "linux" + else + plat = "linux64" + end -def MozBinary::gecko_sdk_path(args) - if args[:arch] == "i386" - plat = "linux" - else - plat = "linux64" - end + return "third_party/gecko-#{args[:geckoversion]}/#{plat}" + end - return "third_party/gecko-#{args[:geckoversion]}/#{plat}" -end + class CheckPreconditions + def handle(fun, dir, args) + if args[:arch] and !(args[:arch] == "i386" or args[:arch] == "amd64") + raise StandardError, "arch must be i386 or amd64" + end -class CheckPreconditions - def handle(fun, dir, args) - if args[:arch] and !(args[:arch] == "i386" or args[:arch] == "amd64") - raise StandardError, "arch must be i386 or amd64" - end + if not args[:geckoversion] + raise StandardError, "Gecko SDK version must be specified." + end - if not args[:geckoversion] - raise StandardError, "Gecko SDK version must be specified." + raise StandardError, "No srcs specified" unless args[:srcs] + end end - raise StandardError, "No srcs specified" unless args[:srcs] - end -end - -class CreateTask < Tasks - def handle(fun, dir, args) - name = task_name(dir, args[:name]) - out = Gcc::out_name(dir, args) + class CreateTask < Tasks + def handle(fun, dir, args) + name = task_name(dir, args[:name]) + out = Gcc::out_name(dir, args) - task name => out - Rake::Task[name].out = out - args[:srcs].each do |src| - file out => FileList[src] - end + task name => out + Rake::Task[name].out = out + args[:srcs].each do |src| + file out => FileList[src] + end - if (name.end_with? "#{args[:name]}:#{args[:name]}") - name = name.sub(/:.*$/, "") - task name => task_name(dir, args[:name]) - Rake::Task[name].out = out(dir, args) + if (name.end_with? "#{args[:name]}:#{args[:name]}") + name = name.sub(/:.*$/, "") + task name => task_name(dir, args[:name]) + Rake::Task[name].out = out(dir, args) + end + end end - end -end -class AddDependencies < Tasks - def handle(fun, dir, args) - # Get the output file of this task - out_task = Rake::Task[task_name(dir, args[:name])].out + class AddDependencies < Tasks + def handle(fun, dir, args) + # Get the output file of this task + out_task = Rake::Task[task_name(dir, args[:name])].out - gecko_deps = MozBinary::gecko_sdk_path args - # Make the *output file* depend on the Gecko SDK, not this - # task itself - file out_task.to_sym => gecko_deps - end -end - -class Build < BaseGcc - def handle(fun, dir, args) - out = Gcc::out_name(dir, args) - gecko_sdk = MozBinary::gecko_sdk_path args - gecko_sdk += SeleniumRake::Checks.dir_separator - xpcom_lib = args[:xpcom_lib] || "xpcomglue_s_nomozalloc" - - file out do - puts "Compiling an xpcom component: #{task_name(dir, args[:name])} as #{out}" - is_32_bit = "amd64" != args[:arch] - # g++ 2.6 and below need c++0x, above needs c++11 - begin - std = `g++ --version`.split("\n")[0].split()[-1].split(".")[1].to_i > 6 ? "11" : "0x" - rescue - std = "" - end - base_compiler_args = "-Wall -fPIC -fshort-wchar -std=c++#{std} -Dunix -D__STDC_LIMIT_MACROS -I cpp/webdriver-interactions -I cpp/imehandler/common -I #{gecko_sdk}include -I #{gecko_sdk}include/nspr " + "`pkg-config gtk+-2.0 --cflags`" - if (args[:geckoversion].to_i < 29) - base_compiler_args += " -DWEBDRIVER_LEGACY_GECKO" + gecko_deps = MozBinary::gecko_sdk_path args + # Make the *output file* depend on the Gecko SDK, not this + # task itself + file out_task.to_sym => gecko_deps end - if (args[:geckoversion].to_i < 31) - base_compiler_args += " -DWEBDRIVER_GECKO_USES_ISUPPORTS1" - end - compiler_args = [args[:args], base_compiler_args].join " " - if (args[:geckoversion].to_i < 22) - linker_args = "-Wall -fshort-wchar -fno-rtti -fno-exceptions -shared -fPIC -L#{gecko_sdk}lib -L#{gecko_sdk}bin -Wl,-rpath-link,#{gecko_sdk}bin -l#{xpcom_lib} -lxpcom -lnspr4 -lrt `pkg-config gtk+-2.0 --libs`" - else - linker_args = "-Wall -fshort-wchar -fno-rtti -fno-exceptions -shared -fPIC -L#{gecko_sdk}lib -L#{gecko_sdk}bin -Wl,-rpath-link,#{gecko_sdk}bin -l#{xpcom_lib} -lnss3 -lrt `pkg-config gtk+-2.0 --libs`" - end - gcc(fun, dir, args[:srcs], compiler_args, linker_args, out, is_32_bit) end - end -end # End Build class - -end # end of MozBinary module + class Build < BaseGcc + def handle(fun, dir, args) + out = Gcc::out_name(dir, args) + gecko_sdk = MozBinary::gecko_sdk_path args + gecko_sdk += SeleniumRake::Checks.dir_separator + xpcom_lib = args[:xpcom_lib] || "xpcomglue_s_nomozalloc" + + file out do + puts "Compiling an xpcom component: #{task_name(dir, args[:name])} as #{out}" + is_32_bit = "amd64" != args[:arch] + # g++ 2.6 and below need c++0x, above needs c++11 + begin + std = `g++ --version`.split("\n")[0].split()[-1].split(".")[1].to_i > 6 ? "11" : "0x" + rescue + std = "" + end + base_compiler_args = "-Wall -fPIC -fshort-wchar -std=c++#{std} -Dunix -D__STDC_LIMIT_MACROS -I cpp/webdriver-interactions -I cpp/imehandler/common -I #{gecko_sdk}include -I #{gecko_sdk}include/nspr " + "`pkg-config gtk+-2.0 --cflags`" + if (args[:geckoversion].to_i < 29) + base_compiler_args += " -DWEBDRIVER_LEGACY_GECKO" + end + if (args[:geckoversion].to_i < 31) + base_compiler_args += " -DWEBDRIVER_GECKO_USES_ISUPPORTS1" + end + compiler_args = [args[:args], base_compiler_args].join " " + if (args[:geckoversion].to_i < 22) + linker_args = "-Wall -fshort-wchar -fno-rtti -fno-exceptions -shared -fPIC -L#{gecko_sdk}lib -L#{gecko_sdk}bin -Wl,-rpath-link,#{gecko_sdk}bin -l#{xpcom_lib} -lxpcom -lnspr4 -lrt `pkg-config gtk+-2.0 --libs`" + else + linker_args = "-Wall -fshort-wchar -fno-rtti -fno-exceptions -shared -fPIC -L#{gecko_sdk}lib -L#{gecko_sdk}bin -Wl,-rpath-link,#{gecko_sdk}bin -l#{xpcom_lib} -lnss3 -lrt `pkg-config gtk+-2.0 --libs`" + end + gcc(fun, dir, args[:srcs], compiler_args, linker_args, out, is_32_bit) + end + end + end # End Build class + end # end of MozBinary module end # end module Gcc diff --git a/rake_tasks/crazy_fun/mappings/javascript.rb b/rake_tasks/crazy_fun/mappings/javascript.rb index 3fbbf2a39421e..1f3aeac1e01b6 100644 --- a/rake_tasks/crazy_fun/mappings/javascript.rb +++ b/rake_tasks/crazy_fun/mappings/javascript.rb @@ -180,7 +180,6 @@ def add_all(fun) end module Javascript - class ClosureDeps # Describes the dependency info for a single file. @@ -326,6 +325,7 @@ def resolve_deps(file, symbol, result_list, seen_list) end private + @@ADD_DEP_REGEX = Regexp.new [ "^goog.addDependency\\s*\\(\\s*", "['\"]([^'\"]+)['\"]", # Relative path from Closure's base.js @@ -362,11 +362,9 @@ def record_provider(symbol, info) end @provided[symbol] = info end - end class BaseJs < Tasks - def js_name(dir, name) name = task_name(dir, name) js = "build/" + (name.slice(2 ... name.length)) @@ -561,7 +559,7 @@ def handle(fun, dir, args) " --js='" << all_deps.join("' --js='") << "'" - if (args[:externs]) + if args[:externs] args[:externs].each do |extern| expanded_flags << " --externs=#{File.join(dir, extern)} " end @@ -891,7 +889,6 @@ def compilation_level(minify) end class GenerateAtoms < BaseJs - MAX_LINE_LENGTH_CPP = 78 MAX_LINE_LENGTH_JAVA = 100 MAX_STR_LENGTH_CPP = MAX_LINE_LENGTH_CPP - " L\"\"\n".length diff --git a/rake_tasks/crazy_fun/mappings/rake.rb b/rake_tasks/crazy_fun/mappings/rake.rb index c87861879e84d..54f99932dd345 100644 --- a/rake_tasks/crazy_fun/mappings/rake.rb +++ b/rake_tasks/crazy_fun/mappings/rake.rb @@ -61,7 +61,7 @@ class CreateShortTask < Tasks def handle(fun, dir, args) name = task_name(dir, args[:name]) - if (name.end_with? "/#{args[:name]}:#{args[:name]}") + if name.end_with?("/#{args[:name]}:#{args[:name]}") short_name = name.sub(/:.*$/, "") task short_name => name diff --git a/rake_tasks/python.rb b/rake_tasks/python.rb new file mode 100644 index 0000000000000..32b3ad3b623bc --- /dev/null +++ b/rake_tasks/python.rb @@ -0,0 +1,21 @@ +require 'rake_tasks/selenium_rake/browsers' + +def py_exe + if ENV.key?('python') + ENV['python'] + else + SeleniumRake::Checks.windows? ? 'C:\\Python27\\python.exe' : '/usr/bin/python' + end +end + +def tox_test(driver) + python_version = ENV['pyversion'] || 'py27' + tox_args = ['tox', '-c', 'py/tox.ini', '-r'] + tox_args += ['-e', "#{python_version}-#{driver}".downcase] + tox_args += ['--'] + tox_args += ['-k=' + ENV['method']] if ENV['method'] + tox_args += ['--tb=' + ENV['traceback']] if ENV['traceback'] + tox_args += ["--junitxml=build/test_logs/python-#{Time.now.to_i}.xml"] + mkdir_p 'build/test_logs' + sh tox_args.join(' '), verbose: true +end diff --git a/rakelib/rake/dsl.rb b/rake_tasks/rake/dsl.rb similarity index 100% rename from rakelib/rake/dsl.rb rename to rake_tasks/rake/dsl.rb diff --git a/rakelib/ide.rake b/rakelib/ide.rake deleted file mode 100644 index 4e1f451ef1aaf..0000000000000 --- a/rakelib/ide.rake +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -namespace :side do - task atoms: [ - '//javascript/atoms/fragments:find-element' - ] do - # TODO: move directly to IDE's directory once the repositories are merged - baseDir = 'build/javascript/atoms' - mkdir_p baseDir - - [ - Rake::Task['//javascript/atoms/fragments:find-element'].out - ].each do |atom| - name = File.basename(atom) - - puts "Generating #{atom} as #{name}" - File.open(File.join(baseDir, name), 'w') do |f| - f << "// GENERATED CODE - DO NOT EDIT\n" - f << 'module.exports = ' - f << IO.read(atom).strip - f << ";\n" - end - end - end -end diff --git a/rakelib/jruby.rake b/rakelib/jruby.rake deleted file mode 100644 index f968ac0ee36dd..0000000000000 --- a/rakelib/jruby.rake +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require 'open-uri' - -jruby_version = '9.2.8.0' -jruby_gems = { - 'inifile' => '3.0.0' -} - -namespace :jruby do - desc 'Update jruby version' - task :update do - jar_name = "jruby-complete-#{jruby_version}.jar" - url = "https://repo1.maven.org/maven2/org/jruby/jruby-complete/#{jruby_version}/#{jar_name}" - - Dir.chdir('third_party/jruby') do - puts "Downloading #{jar_name} from #{url}..." - File.open(jar_name, 'wb') do |write_file| - open(url, 'rb') do |read_file| - write_file.write(read_file.read) - end - end - - puts 'Installing gems...' - jruby_gems.each do |gem_name, gem_version| - sh 'java', '-jar', jar_name, '-S', 'gem', 'install', '-i', "./#{gem_name}", gem_name, '-v', gem_version - sh 'jar', 'uf', jar_name, '-C', gem_name, '.' - rm_rf gem_name - end - - puts 'Bumping VERSION...' - version = `java -jar #{jar_name} -v`.split("\n").first - File.write('VERSION', "#{version}\n") - - mv jar_name, 'jruby-complete.jar' - puts 'Done!' - end - end -end diff --git a/rakelib/node.rake b/rakelib/node.rake deleted file mode 100644 index 7d96f42025106..0000000000000 --- a/rakelib/node.rake +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -namespace :node do - task atoms: %w( - //javascript/atoms/fragments:is-displayed - //javascript/webdriver/atoms:get-attribute - ) do - baseDir = 'javascript/node/selenium-webdriver/lib/atoms' - mkdir_p baseDir - - [ - Rake::Task['//javascript/atoms/fragments:is-displayed'].out, - Rake::Task['//javascript/webdriver/atoms:get-attribute'].out - ].each do |atom| - name = File.basename(atom) - - puts "Generating #{atom} as #{name}" - File.open(File.join(baseDir, name), 'w') do |f| - f << "// GENERATED CODE - DO NOT EDIT\n" - f << 'module.exports = ' - f << IO.read(atom).strip - f << ";\n" - end - end - end - - task :build do - sh 'bazel build //javascript/node/selenium-webdriver' - end - - task 'dry-run': [ - 'node:build' - ] do - sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.pack' - end - - task deploy: [ - 'node:build' - ] do - sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.publish' - end - - task :docs do - sh 'node javascript/node/gendocs.js' - end -end diff --git a/rakelib/python.rake b/rakelib/python.rake deleted file mode 100644 index de6e729a42494..0000000000000 --- a/rakelib/python.rake +++ /dev/null @@ -1,71 +0,0 @@ -require 'rake_tasks/selenium_rake/browsers' - -py_home = 'py/' - -def py_exe - if ENV.key?('python') - ENV['python'] - else - SeleniumRake::Checks.windows? ? 'C:\\Python27\\python.exe' : '/usr/bin/python' - end -end - -namespace :py do - task prep: [ - '//javascript/atoms/fragments:is-displayed', - '//javascript/webdriver/atoms:get-attribute', - '//third_party/js/selenium:webdriver_xpi' - ] do - remote_py_home = py_home + 'selenium/webdriver/remote/' - firefox_py_home = py_home + 'selenium/webdriver/firefox/' - - if SeleniumRake::Checks.windows? - remote_py_home = remote_py_home.gsub(/\//, '\\') - firefox_py_home = firefox_py_home .gsub(/\//, '\\') - end - - cp Rake::Task['//javascript/atoms/fragments:is-displayed'].out, remote_py_home + "isDisplayed.js", verbose: true - cp Rake::Task['//javascript/webdriver/atoms:get-attribute'].out, remote_py_home + "getAttribute.js", verbose: true - - cp Rake::Task['//third_party/js/selenium:webdriver_xpi'].out, firefox_py_home, verbose: true - cp 'third_party/js/selenium/webdriver.json', firefox_py_home + 'webdriver_prefs.json', verbose: true - cp 'LICENSE', py_home + 'LICENSE', verbose: true - end - - bazel :unit do - Bazel.execute('test', [], '//py:unit') - end - - task docs: :prep do - sh 'tox -c py/tox.ini -e docs', verbose: true - end - - task install: :prep do - Dir.chdir('py') do - sh py_exe + ' setup.py install', verbose: true - end - end - - %w[chrome ff marionette ie edge blackberry remote_firefox safari].each do |browser| - browser_data = SeleniumRake::Browsers::BROWSERS[browser][:python] - deps = browser_data[:deps] || [] - deps += [:prep] - driver = browser_data[:driver] - - task "#{browser}_test" => deps do - tox_test driver - end - end -end - -def tox_test(driver) - python_version = ENV['pyversion'] || 'py27' - tox_args = ['tox', '-c', 'py/tox.ini', '-r'] - tox_args += ['-e', "#{python_version}-#{driver}".downcase] - tox_args += ['--'] - tox_args += ['-k=' + ENV['method']] if ENV['method'] - tox_args += ['--tb=' + ENV['traceback']] if ENV['traceback'] - tox_args += ["--junitxml=build/test_logs/python-#{Time.now.to_i}.xml"] - mkdir_p 'build/test_logs' - sh tox_args.join(' '), verbose: true -end