# Macros to constrain resource use during the build process # outputs build flag overrides to be used in conjunction with # %%make_build, %%cmake_build etc. # # if no override is needed, this macro outputs nothing # # - m memory limit in MBs per core; default is 1024 # # Usage: # e.g. %make_build %{limit_build -m 2048} # => /usr/bin/make -O -j16 V=1 VERBOSE=1 # %make_build %{limit_build -m 40960} # => /usr/bin/make -O -j16 V=1 VERBOSE=1 -j1 # %limit_build(m:) %{lua: local mem_per_process=rpm.expand("%{-m*}") if mem_per_process == "" then mem_per_process = 1024 else mem_per_process = tonumber(mem_per_process) end local mem_total = 0 for line in io.lines('/proc/meminfo') do if line:sub(1, 9) == "MemTotal:" then local tokens = {} for token in line:gmatch("%w+") do tokens[#tokens + 1] = token end mem_total = tonumber(tokens[2]) break end end local max_jobs = mem_total // (mem_per_process * 1024) if max_jobs < 1 then max_jobs = 1 end cur_max_jobs=tonumber(rpm.expand("%{_smp_build_ncpus}")) if cur_max_jobs > max_jobs then print("-j" .. max_jobs) end }