From 76841e9a11df50feff34718abf452d4e36f2dd90 Mon Sep 17 00:00:00 2001 From: tigro Date: Tue, 27 Aug 2024 08:10:11 +0300 Subject: [PATCH] Add macros.build-constraints to the buildroot --- SOURCES/macros.build-constraints | 42 ++++++++++++++++++++++++++++++++ SPECS/epel-rpm-macros.spec | 11 ++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 SOURCES/macros.build-constraints diff --git a/SOURCES/macros.build-constraints b/SOURCES/macros.build-constraints new file mode 100644 index 0000000..db99418 --- /dev/null +++ b/SOURCES/macros.build-constraints @@ -0,0 +1,42 @@ +# 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 +} diff --git a/SPECS/epel-rpm-macros.spec b/SPECS/epel-rpm-macros.spec index 9eb2ae7..05c5ca5 100644 --- a/SPECS/epel-rpm-macros.spec +++ b/SPECS/epel-rpm-macros.spec @@ -1,6 +1,6 @@ Name: epel-rpm-macros Version: 9 -Release: 14%{dist} +Release: 14%{dist}.inferit Summary: Extra Packages for Enterprise Linux RPM macros License: GPLv2 @@ -15,6 +15,8 @@ Source2: GPL #Add source for misc macros below here # https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/rawhide/f/macros.shell-completions Source3: macros.shell-completions +# macros.build-constraints +Source4: macros.build-constraints BuildArch: noarch @@ -62,14 +64,21 @@ install -Dpm 644 %{SOURCE1} \ install -Dpm 644 %{SOURCE3} \ %{buildroot}%{_rpmmacrodir}/macros.shell-completions +install -Dpm 644 %{SOURCE4} \ + %{buildroot}%{_rpmmacrodir}/macros.build-constraints + %files %license GPL %{_rpmmacrodir}/macros.epel-rpm-macros %{_sysconfdir}/rpm/macros.zzz-epel-override %{_rpmmacrodir}/macros.shell-completions +%{_rpmmacrodir}/macros.build-constraints %changelog +* Tue Aug 27 2024 Arkady L. Shane - 9-14.inferit +- Add macros.build-constraints to the buildroot + * Sat Mar 02 2024 Maxwell G - 9-14 - Add forge-srpm-macros to the buildroot