Bug 30476 - %_deps_optimization can't be disabled
Summary: %_deps_optimization can't be disabled
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-17 10:32 MSK by viy
Modified: 2014-11-20 19:08 MSK (History)
7 users (show)

See Also:


Attachments
proposed fix (892 bytes, patch)
2014-11-17 10:32 MSK, viy
no flags Details | Diff
v2 (1.32 KB, patch)
2014-11-18 17:11 MSK, viy
no flags Details | Diff
v3 (1.38 KB, patch)
2014-11-18 17:19 MSK, viy
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description viy 2014-11-17 10:32:18 MSK
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;
Comment 1 Dmitry V. Levin 2014-11-17 14:38:47 MSK
$ rpm --eval '%{?!foobar:42}'
42
$ rpm --eval '%{!?foobar:42}'
42
Comment 2 viy 2014-11-17 14:43:28 MSK
Гм. тогда в чем может быть проблема?
не могу отключить %_deps_optimization.
Пишу в спеке 
%define _deps_optimization 0
или в
~/.rpmmacros 
%_deps_optimization 0
а она все равно происходит.
Проблема обнаружилась на моем texlive,
где собственно сборка занимает 20 мин.
find requires/provides 3 часа,
а _deps_optimization -- несколько суток
и я никак не могу ее отключить :(
Comment 3 viy 2014-11-18 17:11:36 MSK
Created attachment 6175 [details]
v2
Comment 4 viy 2014-11-18 17:14:26 MSK
Пеоедалал патч, чтобы %_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;
Comment 5 viy 2014-11-18 17:19:20 MSK
Created attachment 6176 [details]
v3
Comment 6 viy 2014-11-18 17:20:53 MSK
исправленный патч чтобы соответствовать схеме

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;
Comment 7 Dmitry V. Levin 2014-11-19 02:47:25 MSK
(In reply to comment #6)
> исправленный патч чтобы соответствовать схеме
> 
> 0- отключено полностью
> 1- так как ранее при %_deps_optimization==0
> 2- так как ранее при %_deps_optimization==1
> 3- так как ранее при %_deps_optimization==2

Я могу надеяться на commit message?
Comment 8 viy 2014-11-19 09:40:21 MSK
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
Comment 9 Repository Robot 2014-11-19 20:43:15 MSK
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).