| 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;