diff --git a/pavelib/prereqs.py b/pavelib/prereqs.py index 60766bb1ac..014a23e3e5 100644 --- a/pavelib/prereqs.py +++ b/pavelib/prereqs.py @@ -85,20 +85,22 @@ def prereq_cache(cache_name, paths, install_func): raise with open(cache_file_path, "w") as cache_file: - cache_file.write(new_hash) - + # Since the pip requirement files are modified during the install + # process, we need to store the hash generated AFTER the installation + post_install_hash = compute_fingerprint(paths) + cache_file.write(post_install_hash) else: print('{cache} unchanged, skipping...'.format(cache=cache_name)) -def install_ruby_prereqs(): +def ruby_prereqs_installation(): """ Installs Ruby prereqs """ sh('bundle install --quiet') -def install_node_prereqs(): +def node_prereqs_installation(): """ Installs Node prerequisites """ @@ -106,8 +108,7 @@ def install_node_prereqs(): sh('npm install') -@task -def install_python_prereqs(): +def python_prereqs_installation(): """ Installs Python prerequisites """ @@ -115,6 +116,30 @@ def install_python_prereqs(): sh("pip install -q --exists-action w -r {req_file}".format(req_file=req_file)) +@task +def install_ruby_prereqs(): + """ + Installs Ruby prereqs + """ + prereq_cache("Ruby prereqs", ["Gemfile"], ruby_prereqs_installation) + + +@task +def install_node_prereqs(): + """ + Installs Node prerequisites + """ + prereq_cache("Node prereqs", ["package.json"], node_prereqs_installation) + + +@task +def install_python_prereqs(): + """ + Installs Python prerequisites + """ + prereq_cache("Python prereqs", PYTHON_REQ_FILES + [sysconfig.get_python_lib()], python_prereqs_installation) + + @task def install_prereqs(): """ @@ -123,6 +148,6 @@ def install_prereqs(): if os.environ.get("NO_PREREQ_INSTALL", False): return - prereq_cache("Ruby prereqs", ["Gemfile"], install_ruby_prereqs) - prereq_cache("Node prereqs", ["package.json"], install_node_prereqs) - prereq_cache("Python prereqs", PYTHON_REQ_FILES + [sysconfig.get_python_lib()], install_python_prereqs) + install_ruby_prereqs() + install_node_prereqs() + install_python_prereqs() diff --git a/rakelib/js_test.rake b/rakelib/js_test.rake index 361129a19c..3e15d43e8c 100644 --- a/rakelib/js_test.rake +++ b/rakelib/js_test.rake @@ -60,7 +60,7 @@ end namespace :'test:js' do desc "Run the JavaScript tests and print results to the console" - task :run, [:env] => [:clean_test_files, JS_REPORT_DIR] do |t, args| + task :run, [:env] => [:clean_test_files, JS_REPORT_DIR, :install_node_prereqs] do |t, args| compile_coffeescript() if args[:env].nil? @@ -71,7 +71,7 @@ namespace :'test:js' do end desc "Run the JavaScript tests in your default browser" - task :dev, [:env] => [:clean_test_files] do |t, args| + task :dev, [:env] => [:clean_test_files, :install_node_prereqs] do |t, args| compile_coffeescript() if args[:env].nil? @@ -83,7 +83,7 @@ namespace :'test:js' do end desc "Run all JavaScript tests and collect coverage information" - task :coverage => [:clean_reports_dir, :clean_test_files, JS_REPORT_DIR] do + task :coverage => [:clean_reports_dir, :clean_test_files, JS_REPORT_DIR, :install_node_prereqs] do compile_coffeescript() js_test_tool(nil, 'run', true) end diff --git a/rakelib/prereqs_deprecated.rake b/rakelib/prereqs_deprecated.rake index 8f9a8f5154..57701c150c 100644 --- a/rakelib/prereqs_deprecated.rake +++ b/rakelib/prereqs_deprecated.rake @@ -15,7 +15,7 @@ def deprecated(deprecated, deprecated_by) end deprecated('install_prereqs','paver install_prereqs') -deprecated('install_node_prereqs','paver install_prereqs') -deprecated('install_ruby_prereqs','paver install_prereqs') -deprecated('install_python_prereqs','paver install_prereqs') +deprecated('install_node_prereqs','paver install_node_prereqs') +deprecated('install_ruby_prereqs','paver install_ruby_prereqs') +deprecated('install_python_prereqs','paver install_python_prereqs')