Created attachment 6173 [details] proposed fix %_deps_optimization is ignored due to misprint %{?! instead of %{!? proposed fix: diff --git a/build/interdep.c b/build/interdep.c index a8e10db..89fba05 100644 --- a/build/interdep.c +++ b/build/interdep.c @@ -779,7 +779,7 @@ int processInterdep(Spec spec) r = freeRequires(r); r = makeRequires(spec, 2); - int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:2}"); + int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{!?_deps_optimization:2}"); if (optlevel >= 2) { pruneExtraDeps(r, spec); pruneExtraRDeps(r, spec); diff --git a/build/reqprov.c b/build/reqprov.c index 46b9a88..4d7f3fa 100644 --- a/build/reqprov.c +++ b/build/reqprov.c @@ -16,7 +16,7 @@ deps_opt_enabled (void) if (!initialized) { initialized = 1; - enabled = rpmExpandNumeric ("%{?_deps_optimization}%{?!_deps_optimization:1}"); + enabled = rpmExpandNumeric ("%{?_deps_optimization}%{!?_deps_optimization:1}"); } return enabled;
$ rpm --eval '%{?!foobar:42}' 42 $ rpm --eval '%{!?foobar:42}' 42
Гм. тогда в чем может быть проблема? не могу отключить %_deps_optimization. Пишу в спеке %define _deps_optimization 0 или в ~/.rpmmacros %_deps_optimization 0 а она все равно происходит. Проблема обнаружилась на моем texlive, где собственно сборка занимает 20 мин. find requires/provides 3 часа, а _deps_optimization -- несколько суток и я никак не могу ее отключить :(
Created attachment 6175 [details] v2
Пеоедалал патч, чтобы %_deps_optimization действительно работал. пробил по сизифу, там этот макрос не использовался нигде. поэтому поднял значения 0- отключено полностью 1- так как ранее при %_deps_optimization==0 2- так как ранее при %_deps_optimization==1 3- так как ранее при %_deps_optimization==2 патч: diff --git a/build/interdep.c b/build/interdep.c index a8e10db..ecbc961 100644 --- a/build/interdep.c +++ b/build/interdep.c @@ -773,18 +773,20 @@ void pruneExtraRDeps(struct Req *r, Spec spec) int processInterdep(Spec spec) { - struct Req *r = makeRequires(spec, 1); - pruneDebuginfoSrc(r, spec); - liftDebuginfoDeps(r, spec); - r = freeRequires(r); - - r = makeRequires(spec, 2); - int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:2}"); - if (optlevel >= 2) { + struct Req *r; + int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:3}"); + if (optlevel >= 1) { + r = makeRequires(spec, 1); + pruneDebuginfoSrc(r, spec); + liftDebuginfoDeps(r, spec); + r = freeRequires(r); + } + if (optlevel >= 3) { + r = makeRequires(spec, 2); pruneExtraDeps(r, spec); pruneExtraRDeps(r, spec); + r = freeRequires(r); } - r = freeRequires(r); return 0; } diff --git a/build/reqprov.c b/build/reqprov.c index 46b9a88..024ca4f 100644 --- a/build/reqprov.c +++ b/build/reqprov.c @@ -16,7 +16,7 @@ deps_opt_enabled (void) if (!initialized) { initialized = 1; - enabled = rpmExpandNumeric ("%{?_deps_optimization}%{?!_deps_optimization:1}"); + enabled = rpmExpandNumeric ("%{?_deps_optimization}%{?!_deps_optimization:2}"); } return enabled;
Created attachment 6176 [details] v3
исправленный патч чтобы соответствовать схеме 0- отключено полностью 1- так как ранее при %_deps_optimization==0 2- так как ранее при %_deps_optimization==1 3- так как ранее при %_deps_optimization==2 diff --git a/build/interdep.c b/build/interdep.c index a8e10db..ecbc961 100644 --- a/build/interdep.c +++ b/build/interdep.c @@ -773,18 +773,20 @@ void pruneExtraRDeps(struct Req *r, Spec spec) int processInterdep(Spec spec) { - struct Req *r = makeRequires(spec, 1); - pruneDebuginfoSrc(r, spec); - liftDebuginfoDeps(r, spec); - r = freeRequires(r); - - r = makeRequires(spec, 2); - int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:2}"); - if (optlevel >= 2) { + struct Req *r; + int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:3}"); + if (optlevel >= 1) { + r = makeRequires(spec, 1); + pruneDebuginfoSrc(r, spec); + liftDebuginfoDeps(r, spec); + r = freeRequires(r); + } + if (optlevel >= 3) { + r = makeRequires(spec, 2); pruneExtraDeps(r, spec); pruneExtraRDeps(r, spec); + r = freeRequires(r); } - r = freeRequires(r); return 0; } diff --git a/build/reqprov.c b/build/reqprov.c index 46b9a88..049867e 100644 --- a/build/reqprov.c +++ b/build/reqprov.c @@ -15,8 +15,12 @@ deps_opt_enabled (void) if (!initialized) { + int optlevel = rpmExpandNumeric("%{?_deps_optimization}%{?!_deps_optimization:2}"); initialized = 1; - enabled = rpmExpandNumeric ("%{?_deps_optimization}%{?!_deps_optimization:1}"); + if (optlevel >= 2) + { + enabled = 1; + } } return enabled;
(In reply to comment #6) > исправленный патч чтобы соответствовать схеме > > 0- отключено полностью > 1- так как ранее при %_deps_optimization==0 > 2- так как ранее при %_deps_optimization==1 > 3- так как ранее при %_deps_optimization==2 Я могу надеяться на commit message?
commit c341c66290d4355752f0948bb05d995cbec1117c Author: Igor Vlasenko <viy@altlinux.org> Date: Wed Nov 19 08:31:11 2014 +0200 finer control for %_deps_optimization 0- disabled 1- old behaviour with %_deps_optimization=0 2- old behaviour with %_deps_optimization=1 3- old behaviour with %_deps_optimization=2
rpm-4.0.4-alt100.79 -> sisyphus: * Wed Nov 19 2014 Dmitry V. Levin <ldv@altlinux> 4.0.4-alt100.79 - rpmbuild: implemented finer control for %_deps_optimization (by viy@; closes: #30476).