Summary: | %_deps_optimization can't be disabled | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | viy <viy> | ||||||||
Component: | rpm-build | Assignee: | placeholder <placeholder> | ||||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||||
Severity: | normal | ||||||||||
Priority: | P3 | CC: | arseny, glebfm, imz, ldv, mike, placeholder, vt | ||||||||
Version: | unstable | ||||||||||
Hardware: | all | ||||||||||
OS: | Linux | ||||||||||
Attachments: |
|
$ 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 |
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;