From a3fcaa37272386040842d05a1eabbfef529b46f9 Mon Sep 17 00:00:00 2001 From: "Kazushi (Jam) Marukawa" Date: Sat, 28 Jan 2017 13:00:08 +0900 Subject: [PATCH] Change to use -j option in make to improve the speed. Users can specify their own usage of multiple cores by CREW_NPROC environment variable. If you set it 2, crew uses only 2 cores. --- crew | 7 +++++++ lib/package.rb | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/crew b/crew index b6f5c9067..d46e57d9a 100755 --- a/crew +++ b/crew @@ -15,6 +15,13 @@ CREW_CONFIG_PATH = CREW_PREFIX + '/etc/crew/' CREW_BREW_DIR = CREW_PREFIX + '/tmp/crew/' CREW_DEST_DIR = CREW_BREW_DIR + '/dest' +# Set CREW_NPROC from environment variable or `nproc` +if ENV["CREW_NPROC"].to_s == '' + CREW_NPROC = `nproc`.strip +else + CREW_NPROC = ENV["CREW_NPROC"] +end + ARCH = `uname -m`.strip #SHORTARCH = `getconf LONG_BIT`.strip # will refactor this line in the future case ARCH diff --git a/lib/package.rb b/lib/package.rb index d6c10e27a..bcb3646a0 100644 --- a/lib/package.rb +++ b/lib/package.rb @@ -33,6 +33,14 @@ class Package args = args.map {|s| s.gsub("-m32", "")} args = args.map {|s| s.gsub("lib32", "lib")} end + # add "-j#{CREW_NPROC}" argument to "make" + if args[0] == "make" + # modify ["make", "args", ...] into ["make", "-j#{CREW_NPROC}", "args", ...] + args.insert(1, "-j#{CREW_NPROC}") + elsif args.length == 1 + # modify ["make args..."] into ["make -j#{CREW_NPROC} args..."] + args[0].gsub!(/^make /, "make -j#{CREW_NPROC} ") + end Kernel.system(*args) exitstatus = $?.exitstatus raise InstallError.new("`#{args.join(" ")}` exited with #{exitstatus}") unless exitstatus == 0