lib/autobuild/packages/gnumake.rb in autobuild-1.8.3 vs lib/autobuild/packages/gnumake.rb in autobuild-1.9.0.b1

- old
+ new

@@ -16,33 +16,32 @@ def self.make_has_gnumake_jobserver?(path = Autobuild.tool(:make)) make_is_gnumake?(path) end - def self.make_subcommand(pkg, phase, *options, &block) + def self.invoke_make_parallel(pkg, cmd_path = Autobuild.tool(:make)) reserved = nil - cmd_path = Autobuild.tool(:make) - cmd = [cmd_path] if make_has_j_option?(cmd_path) && pkg.parallel_build_level != 1 if manager = Autobuild.parallel_task_manager job_server = manager.job_server if !make_has_gnumake_jobserver?(cmd_path) || (pkg.parallel_build_level != Autobuild.parallel_build_level) reserved = pkg.parallel_build_level job_server.get(reserved - 1) # We already have one token taken by autobuild itself - cmd << "-j#{pkg.parallel_build_level}" - else - cmd << "--jobserver-fds=#{job_server.rio.fileno},#{job_server.wio.fileno}" << "-j" + yield("-j#{pkg.parallel_build_level}") end - else - cmd << "-j#{pkg.parallel_build_level}" + yield("--jobserver-fds=#{job_server.rio.fileno},#{job_server.wio.fileno}", "-j") end + yield("-j#{pkg.parallel_build_level}") + else yield end - - cmd.concat(options) - Subprocess.run(pkg, phase, *cmd, &block) - ensure if reserved job_server.put(reserved) + end + end + + def self.make_subcommand(pkg, phase, *options, &block) + invoke_make_parallel(pkg, Autobuild.tool(:make)) do |*make_parallel_options| + Subprocess.run(pkg, phase, Autobuild.tool(:make), *make_parallel_options, *options, &block) end end end