<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>30476</bug_id>
          
          <creation_ts>2014-11-17 10:32:18 +0300</creation_ts>
          <short_desc>%_deps_optimization can&apos;t be disabled</short_desc>
          <delta_ts>2014-11-20 19:08:39 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rpm-build</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="viy">viy</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148853</commentid>
    <comment_count>0</comment_count>
      <attachid>6173</attachid>
    <who name="viy">viy</who>
    <bug_when>2014-11-17 10:32:18 +0300</bug_when>
    <thetext>Created attachment 6173
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(&quot;%{?_deps_optimization}%{?!_deps_optimization:2}&quot;);
+    int optlevel = rpmExpandNumeric(&quot;%{?_deps_optimization}%{!?_deps_optimization:2}&quot;);
     if (optlevel &gt;= 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 (&quot;%{?_deps_optimization}%{?!_deps_optimization:1}&quot;);
+		enabled = rpmExpandNumeric (&quot;%{?_deps_optimization}%{!?_deps_optimization:1}&quot;);
 	}
 
 	return enabled;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148858</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-11-17 14:38:47 +0300</bug_when>
    <thetext>$ rpm --eval &apos;%{?!foobar:42}&apos;
42
$ rpm --eval &apos;%{!?foobar:42}&apos;
42</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148859</commentid>
    <comment_count>2</comment_count>
    <who name="viy">viy</who>
    <bug_when>2014-11-17 14:43:28 +0300</bug_when>
    <thetext>Гм. тогда в чем может быть проблема?
не могу отключить %_deps_optimization.
Пишу в спеке 
%define _deps_optimization 0
или в
~/.rpmmacros 
%_deps_optimization 0
а она все равно происходит.
Проблема обнаружилась на моем texlive,
где собственно сборка занимает 20 мин.
find requires/provides 3 часа,
а _deps_optimization -- несколько суток
и я никак не могу ее отключить :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148892</commentid>
    <comment_count>3</comment_count>
      <attachid>6175</attachid>
    <who name="viy">viy</who>
    <bug_when>2014-11-18 17:11:36 +0300</bug_when>
    <thetext>Created attachment 6175
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148893</commentid>
    <comment_count>4</comment_count>
    <who name="viy">viy</who>
    <bug_when>2014-11-18 17:14:26 +0300</bug_when>
    <thetext>Пеоедалал патч, чтобы %_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(&quot;%{?_deps_optimization}%{?!_deps_optimization:2}&quot;);
-    if (optlevel &gt;= 2) {
+    struct Req *r;
+    int optlevel = rpmExpandNumeric(&quot;%{?_deps_optimization}%{?!_deps_optimization:3}&quot;);
+    if (optlevel &gt;= 1) {
+	r = makeRequires(spec, 1);
+	pruneDebuginfoSrc(r, spec);
+	liftDebuginfoDeps(r, spec);
+	r = freeRequires(r);
+    }
+    if (optlevel &gt;= 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 (&quot;%{?_deps_optimization}%{?!_deps_optimization:1}&quot;);
+		enabled = rpmExpandNumeric (&quot;%{?_deps_optimization}%{?!_deps_optimization:2}&quot;);
 	}
 
 	return enabled;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148894</commentid>
    <comment_count>5</comment_count>
      <attachid>6176</attachid>
    <who name="viy">viy</who>
    <bug_when>2014-11-18 17:19:20 +0300</bug_when>
    <thetext>Created attachment 6176
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148895</commentid>
    <comment_count>6</comment_count>
    <who name="viy">viy</who>
    <bug_when>2014-11-18 17:20:53 +0300</bug_when>
    <thetext>исправленный патч чтобы соответствовать схеме

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(&quot;%{?_deps_optimization}%{?!_deps_optimization:2}&quot;);
-    if (optlevel &gt;= 2) {
+    struct Req *r;
+    int optlevel = rpmExpandNumeric(&quot;%{?_deps_optimization}%{?!_deps_optimization:3}&quot;);
+    if (optlevel &gt;= 1) {
+	r = makeRequires(spec, 1);
+	pruneDebuginfoSrc(r, spec);
+	liftDebuginfoDeps(r, spec);
+	r = freeRequires(r);
+    }
+    if (optlevel &gt;= 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(&quot;%{?_deps_optimization}%{?!_deps_optimization:2}&quot;);
 		initialized = 1;
-		enabled = rpmExpandNumeric (&quot;%{?_deps_optimization}%{?!_deps_optimization:1}&quot;);
+		if (optlevel &gt;= 2)
+			{
+				enabled = 1;
+			}
 	}
 
 	return enabled;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148901</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-11-19 02:47:25 +0300</bug_when>
    <thetext>(In reply to comment #6)
&gt; исправленный патч чтобы соответствовать схеме
&gt; 
&gt; 0- отключено полностью
&gt; 1- так как ранее при %_deps_optimization==0
&gt; 2- так как ранее при %_deps_optimization==1
&gt; 3- так как ранее при %_deps_optimization==2

Я могу надеяться на commit message?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148904</commentid>
    <comment_count>8</comment_count>
    <who name="viy">viy</who>
    <bug_when>2014-11-19 09:40:21 +0300</bug_when>
    <thetext>commit c341c66290d4355752f0948bb05d995cbec1117c
Author: Igor Vlasenko &lt;viy@altlinux.org&gt;
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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148924</commentid>
    <comment_count>9</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2014-11-19 20:43:15 +0300</bug_when>
    <thetext>rpm-4.0.4-alt100.79 -&gt; sisyphus:

* Wed Nov 19 2014 Dmitry V. Levin &lt;ldv@altlinux&gt; 4.0.4-alt100.79
- rpmbuild: implemented finer control for %_deps_optimization
  (by viy@; closes: #30476).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6173</attachid>
            <date>2014-11-17 10:32:18 +0300</date>
            <delta_ts>2014-11-18 17:11:59 +0300</delta_ts>
            <desc>proposed fix</desc>
            <filename>deps_optimization.patch</filename>
            <type>text/plain</type>
            <size>892</size>
            <attacher name="viy">viy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2J1aWxkL2ludGVyZGVwLmMgYi9idWlsZC9pbnRlcmRlcC5jCmluZGV4IGE4
ZTEwZGIuLjg5ZmJhMDUgMTAwNjQ0Ci0tLSBhL2J1aWxkL2ludGVyZGVwLmMKKysrIGIvYnVpbGQv
aW50ZXJkZXAuYwpAQCAtNzc5LDcgKzc3OSw3IEBAIGludCBwcm9jZXNzSW50ZXJkZXAoU3BlYyBz
cGVjKQogICAgIHIgPSBmcmVlUmVxdWlyZXMocik7CiAKICAgICByID0gbWFrZVJlcXVpcmVzKHNw
ZWMsIDIpOwotICAgIGludCBvcHRsZXZlbCA9IHJwbUV4cGFuZE51bWVyaWMoIiV7P19kZXBzX29w
dGltaXphdGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjJ9Iik7CisgICAgaW50IG9wdGxldmVs
ID0gcnBtRXhwYW5kTnVtZXJpYygiJXs/X2RlcHNfb3B0aW1pemF0aW9ufSV7IT9fZGVwc19vcHRp
bWl6YXRpb246Mn0iKTsKICAgICBpZiAob3B0bGV2ZWwgPj0gMikgewogCXBydW5lRXh0cmFEZXBz
KHIsIHNwZWMpOwogCXBydW5lRXh0cmFSRGVwcyhyLCBzcGVjKTsKZGlmZiAtLWdpdCBhL2J1aWxk
L3JlcXByb3YuYyBiL2J1aWxkL3JlcXByb3YuYwppbmRleCA0NmI5YTg4Li40ZDdmM2ZhIDEwMDY0
NAotLS0gYS9idWlsZC9yZXFwcm92LmMKKysrIGIvYnVpbGQvcmVxcHJvdi5jCkBAIC0xNiw3ICsx
Niw3IEBAIGRlcHNfb3B0X2VuYWJsZWQgKHZvaWQpCiAJaWYgKCFpbml0aWFsaXplZCkKIAl7CiAJ
CWluaXRpYWxpemVkID0gMTsKLQkJZW5hYmxlZCA9IHJwbUV4cGFuZE51bWVyaWMgKCIlez9fZGVw
c19vcHRpbWl6YXRpb259JXs/IV9kZXBzX29wdGltaXphdGlvbjoxfSIpOworCQllbmFibGVkID0g
cnBtRXhwYW5kTnVtZXJpYyAoIiV7P19kZXBzX29wdGltaXphdGlvbn0leyE/X2RlcHNfb3B0aW1p
emF0aW9uOjF9Iik7CiAJfQogCiAJcmV0dXJuIGVuYWJsZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6175</attachid>
            <date>2014-11-18 17:11:36 +0300</date>
            <delta_ts>2014-11-18 17:19:20 +0300</delta_ts>
            <desc>v2</desc>
            <filename>deps_optimization.patch</filename>
            <type>text/plain</type>
            <size>1353</size>
            <attacher name="viy">viy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2J1aWxkL2ludGVyZGVwLmMgYi9idWlsZC9pbnRlcmRlcC5jCmluZGV4IGE4
ZTEwZGIuLmVjYmM5NjEgMTAwNjQ0Ci0tLSBhL2J1aWxkL2ludGVyZGVwLmMKKysrIGIvYnVpbGQv
aW50ZXJkZXAuYwpAQCAtNzczLDE4ICs3NzMsMjAgQEAgdm9pZCBwcnVuZUV4dHJhUkRlcHMoc3Ry
dWN0IFJlcSAqciwgU3BlYyBzcGVjKQogCiBpbnQgcHJvY2Vzc0ludGVyZGVwKFNwZWMgc3BlYykK
IHsKLSAgICBzdHJ1Y3QgUmVxICpyID0gbWFrZVJlcXVpcmVzKHNwZWMsIDEpOwotICAgIHBydW5l
RGVidWdpbmZvU3JjKHIsIHNwZWMpOwotICAgIGxpZnREZWJ1Z2luZm9EZXBzKHIsIHNwZWMpOwot
ICAgIHIgPSBmcmVlUmVxdWlyZXMocik7Ci0KLSAgICByID0gbWFrZVJlcXVpcmVzKHNwZWMsIDIp
OwotICAgIGludCBvcHRsZXZlbCA9IHJwbUV4cGFuZE51bWVyaWMoIiV7P19kZXBzX29wdGltaXph
dGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjJ9Iik7Ci0gICAgaWYgKG9wdGxldmVsID49IDIp
IHsKKyAgICBzdHJ1Y3QgUmVxICpyOworICAgIGludCBvcHRsZXZlbCA9IHJwbUV4cGFuZE51bWVy
aWMoIiV7P19kZXBzX29wdGltaXphdGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjN9Iik7Cisg
ICAgaWYgKG9wdGxldmVsID49IDEpIHsKKwlyID0gbWFrZVJlcXVpcmVzKHNwZWMsIDEpOworCXBy
dW5lRGVidWdpbmZvU3JjKHIsIHNwZWMpOworCWxpZnREZWJ1Z2luZm9EZXBzKHIsIHNwZWMpOwor
CXIgPSBmcmVlUmVxdWlyZXMocik7CisgICAgfQorICAgIGlmIChvcHRsZXZlbCA+PSAzKSB7CisJ
ciA9IG1ha2VSZXF1aXJlcyhzcGVjLCAyKTsKIAlwcnVuZUV4dHJhRGVwcyhyLCBzcGVjKTsKIAlw
cnVuZUV4dHJhUkRlcHMociwgc3BlYyk7CisJciA9IGZyZWVSZXF1aXJlcyhyKTsKICAgICB9Ci0g
ICAgciA9IGZyZWVSZXF1aXJlcyhyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
YnVpbGQvcmVxcHJvdi5jIGIvYnVpbGQvcmVxcHJvdi5jCmluZGV4IDQ2YjlhODguLjAyNGNhNGYg
MTAwNjQ0Ci0tLSBhL2J1aWxkL3JlcXByb3YuYworKysgYi9idWlsZC9yZXFwcm92LmMKQEAgLTE2
LDcgKzE2LDcgQEAgZGVwc19vcHRfZW5hYmxlZCAodm9pZCkKIAlpZiAoIWluaXRpYWxpemVkKQog
CXsKIAkJaW5pdGlhbGl6ZWQgPSAxOwotCQllbmFibGVkID0gcnBtRXhwYW5kTnVtZXJpYyAoIiV7
P19kZXBzX29wdGltaXphdGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjF9Iik7CisJCWVuYWJs
ZWQgPSBycG1FeHBhbmROdW1lcmljICgiJXs/X2RlcHNfb3B0aW1pemF0aW9ufSV7PyFfZGVwc19v
cHRpbWl6YXRpb246Mn0iKTsKIAl9CiAKIAlyZXR1cm4gZW5hYmxlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6176</attachid>
            <date>2014-11-18 17:19:20 +0300</date>
            <delta_ts>2014-11-18 17:19:20 +0300</delta_ts>
            <desc>v3</desc>
            <filename>deps_optimization.patch</filename>
            <type>text/plain</type>
            <size>1412</size>
            <attacher name="viy">viy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2J1aWxkL2ludGVyZGVwLmMgYi9idWlsZC9pbnRlcmRlcC5jCmluZGV4IGE4
ZTEwZGIuLmVjYmM5NjEgMTAwNjQ0Ci0tLSBhL2J1aWxkL2ludGVyZGVwLmMKKysrIGIvYnVpbGQv
aW50ZXJkZXAuYwpAQCAtNzczLDE4ICs3NzMsMjAgQEAgdm9pZCBwcnVuZUV4dHJhUkRlcHMoc3Ry
dWN0IFJlcSAqciwgU3BlYyBzcGVjKQogCiBpbnQgcHJvY2Vzc0ludGVyZGVwKFNwZWMgc3BlYykK
IHsKLSAgICBzdHJ1Y3QgUmVxICpyID0gbWFrZVJlcXVpcmVzKHNwZWMsIDEpOwotICAgIHBydW5l
RGVidWdpbmZvU3JjKHIsIHNwZWMpOwotICAgIGxpZnREZWJ1Z2luZm9EZXBzKHIsIHNwZWMpOwot
ICAgIHIgPSBmcmVlUmVxdWlyZXMocik7Ci0KLSAgICByID0gbWFrZVJlcXVpcmVzKHNwZWMsIDIp
OwotICAgIGludCBvcHRsZXZlbCA9IHJwbUV4cGFuZE51bWVyaWMoIiV7P19kZXBzX29wdGltaXph
dGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjJ9Iik7Ci0gICAgaWYgKG9wdGxldmVsID49IDIp
IHsKKyAgICBzdHJ1Y3QgUmVxICpyOworICAgIGludCBvcHRsZXZlbCA9IHJwbUV4cGFuZE51bWVy
aWMoIiV7P19kZXBzX29wdGltaXphdGlvbn0lez8hX2RlcHNfb3B0aW1pemF0aW9uOjN9Iik7Cisg
ICAgaWYgKG9wdGxldmVsID49IDEpIHsKKwlyID0gbWFrZVJlcXVpcmVzKHNwZWMsIDEpOworCXBy
dW5lRGVidWdpbmZvU3JjKHIsIHNwZWMpOworCWxpZnREZWJ1Z2luZm9EZXBzKHIsIHNwZWMpOwor
CXIgPSBmcmVlUmVxdWlyZXMocik7CisgICAgfQorICAgIGlmIChvcHRsZXZlbCA+PSAzKSB7CisJ
ciA9IG1ha2VSZXF1aXJlcyhzcGVjLCAyKTsKIAlwcnVuZUV4dHJhRGVwcyhyLCBzcGVjKTsKIAlw
cnVuZUV4dHJhUkRlcHMociwgc3BlYyk7CisJciA9IGZyZWVSZXF1aXJlcyhyKTsKICAgICB9Ci0g
ICAgciA9IGZyZWVSZXF1aXJlcyhyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
YnVpbGQvcmVxcHJvdi5jIGIvYnVpbGQvcmVxcHJvdi5jCmluZGV4IDQ2YjlhODguLjA0OTg2N2Ug
MTAwNjQ0Ci0tLSBhL2J1aWxkL3JlcXByb3YuYworKysgYi9idWlsZC9yZXFwcm92LmMKQEAgLTE1
LDggKzE1LDEyIEBAIGRlcHNfb3B0X2VuYWJsZWQgKHZvaWQpCiAKIAlpZiAoIWluaXRpYWxpemVk
KQogCXsKKwkJaW50IG9wdGxldmVsID0gcnBtRXhwYW5kTnVtZXJpYygiJXs/X2RlcHNfb3B0aW1p
emF0aW9ufSV7PyFfZGVwc19vcHRpbWl6YXRpb246Mn0iKTsKIAkJaW5pdGlhbGl6ZWQgPSAxOwot
CQllbmFibGVkID0gcnBtRXhwYW5kTnVtZXJpYyAoIiV7P19kZXBzX29wdGltaXphdGlvbn0lez8h
X2RlcHNfb3B0aW1pemF0aW9uOjF9Iik7CisJCWlmIChvcHRsZXZlbCA+PSAyKQorCQkJeworCQkJ
CWVuYWJsZWQgPSAxOworCQkJfQogCX0KIAogCXJldHVybiBlbmFibGVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>