#7671 Builders does not respect ExclusiveArch
Closed: Fixed 4 years ago by kevin. Opened 5 years ago by vondruch.

A while ago, there was a change in packaging guidelines:

https://pagure.io/packaging-committee/issue/751

And the ticket started with a claim:

A while back, Koji was fixed to actually pay attention to ExcludeArch: and ExclusiveArch: when choosing the host to build a noarch package.

I don't think that it works, testing with either this:

diff --git a/rubygem-mongo.spec b/rubygem-mongo.spec
index 1d436d7..82a9e00 100644
--- a/rubygem-mongo.spec
+++ b/rubygem-mongo.spec
@@ -26,6 +26,9 @@ BuildRequires: %{_bindir}/mongod
 BuildRequires: rubygem(bson) >= 4.3.0
 BuildRequires: rubygem(rspec)
 BuildArch: noarch
+# MongoDB serverved does not support all architectures. Use x86_64 for build
+# to be sure Koji build is always successful.
+ExclusiveArch: x86_64 noarch

 %description
 A Ruby driver for MongoDB.

https://koji.fedoraproject.org/koji/taskinfo?taskID=28734500

or

diff --git a/rubygem-mongo.spec b/rubygem-mongo.spec
index 1d436d7..82a9e00 100644
--- a/rubygem-mongo.spec
+++ b/rubygem-mongo.spec
@@ -26,6 +26,9 @@ BuildRequires: %{_bindir}/mongod
 BuildRequires: rubygem(bson) >= 4.3.0
 BuildRequires: rubygem(rspec)
 BuildArch: noarch
+# MongoDB serverved does not support all architectures. Use x86_64 for build
+# to be sure Koji build is always successful.
+ExclusiveArch: x86_64

 %description
 A Ruby driver for MongoDB.

https://koji.fedoraproject.org/koji/taskinfo?taskID=28734626

Both builds were done on i686 builders while only x86_64 builders should be used.


The i686 builders are only x86_64 and those builders can be used for either arch and are configured as such so this is working at expected.

It's also my understanding that since mongodb moved from v8 to mozjs that it now supports all architectures

The i686 builders are only x86_64 and those builders can be used for either arch and are configured as such so this is working at expected.

If i686 builds run on x86_64 builder is implementation detail IMO. I understand, that it might be the reason why ExclusiveArch does not work, but this hardly means that my expectations are wrong. Every time when some arch is specified somewhere in RPM, it really means that specific architecture. You could hardly justify that PPC is used where PPC64 is expected and vice versa.

It's also my understanding that since mongodb moved from v8 to mozjs that it now supports all architectures

https://bugzilla.redhat.com/show_bug.cgi?id=1549025#c4

@vondruch in the case of PPC a build (where it's still supported) would actually run on a ppc64 builder, there's maps for compatibility. See the hosts in koji:

PPC example: https://koji.fedoraproject.org/koji/hostinfo?hostID=229
x86 example: https://koji.fedoraproject.org/koji/hostinfo?hostID=229

But in the case of ARMv7 vs aarch64 the underlying hosts are not compatible so you won't get a armv7hl build land on an aarch64 host for example, see all hosts and the allows arches in the koji hosts list:
https://koji.fedoraproject.org/koji/hosts?start=50&state=enabled&order=name

So how can I force my package to be built in x86_64 buildroot? If I understand it correctly, I can't ATM. Is there a chance to fix it?

Also this means that this guideline change is wrong:

https://fedoraproject.org/w/index.php?title=Packaging:Guidelines&diff=516423&oldid=511591

@vondruch Just looked at some of it, and I believe this is a koji bug, since koji uses the wrong arch bit of the build to determine which arch to build for (look further down on the taskinfo page, and it says "Arch: x86_64").
So I don't think the guideline is wrong, this is just a bug/edge-case.

Sorry, my last comment on how it's not there was me not reading the patches and not seeing that this was rubygem-mongo, sorry.

Is there any chance you could attach the full spec file you're building with?

Is there any chance you could attach the full spec file you're building with?

https://src.fedoraproject.org/rpms/rubygem-mongo/blob/master/f/rubygem-mongo.spec

Unfortunately, the package is currently FTBFS (and that is why I am back to this issue actually) on all arches anyway.

I fixed the FTBFS, but the ExlusiveArch issues still persist:

https://koji.fedoraproject.org/koji/taskinfo?taskID=29631670

Metadata Update from @syeghiay:
- Issue assigned to mohanboddu

5 years ago

Since Eclipse went to 64bit only I am constantly hitting this issue with Eclipse packages.

Noarch Eclipse plug-ins now have to have this in their spec:

# Upstream Eclipse no longer supports non-64bit arches
ExcludeArch: s390 %{arm} %{ix86}
BuildArch:      noarch

And maybe 1 in 10 builds get erroneously done in a i686 buildroot, e.g: https://koji.fedoraproject.org/koji/taskinfo?taskID=35429122

@kevin can you get koji deployed with this fix please? I'll do some changes in Rust packaging with this.

I'd like to, but we are in final freeze, so I would prefer to wait until we have a f31 GA done.

Once we are go and have tagged things, I'd be happy to try and get a freeze break to get this landed.

The upstream fix here was merged and was in a release and we are running it now.

Please let us know if you have any problems with it.

Metadata Update from @kevin:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

4 years ago

Thx for update :tada:

Just FTR, I am not sure about the current guidelines and how to properly use ExcludeArch therefore I have opened another upstream ticket asking for clarification:

https://pagure.io/koji/issue/2090

Login to comment on this ticket.

Metadata