#6329 [epel7] package builds fail on ppc
Closed: Invalid None Opened 8 years ago by piotrp.

Many of the nodejs-packages fail on ppc builders, when building for epel7.

As I understand the exclusivearch directive should prevent the packages from being built on not-supported platforms:
https://lists.fedoraproject.org/archives/list/nodejs%40lists.fedoraproject.org/thread/E6L65XQ6KIMKRHZIQAHUZTFCD5HSUOYR/

The packges have:
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
The macro is available on epel7

This only happens on the epel7 branch, Fedora and el6 branches don't have this issue, this issues started occuring since the new ppcle architecture has been added.

Example of failure:
http://koji.fedoraproject.org/koji/taskinfo?taskID=12513190
Same package succeeds:
http://koji.fedoraproject.org/koji/taskinfo?taskID=12513317


The issue is

ExclusiveArch: %{nodejs_arches} noarch

by adding noarch to the end of the statement it basically overrides %{nodejs_arches} to say build it on what ever builders are available. An ExclusiveArch should only ever reference explicit arches that it's meant to support, noarch isn't really relevant in this case, if it's noarch the ExclusiveArch should be dropped.

To further Peter's comment noarch means any arch as it comes to building.

also note there's plans to add noejs4 to EPEL which supports PPC arches, which would also deal with this, but it actually a packaging bug and hence would re-appear if we ever add a new architecture to EPEL that doesn't support nodejs (such as s390)

But to be clear, the package guidelines are incorrect?

If yes, I will request a change to the guidelines and we will have to update all nodejs modules.

The packaging guidelines are incorrect yes

The current scheme (with noarch added) was adopted precisely because the noarch packages didn't build properly otherwise. Some relevant lists posts from back then:

https://lists.fedoraproject.org/pipermail/nodejs/2013-May/000025.html

and:

https://lists.fedoraproject.org/pipermail/epel-devel/2013-May/008482.html

https://lists.fedoraproject.org/pipermail/epel-devel/2013-May/008483.html

the posts you reference a problem definitions, there's no detail in the referenced posts of an agreed solution and the ultimate agreed solution to the problem which added (if it's there) the solution to the packaging guidelines (I've read all the threads, just the explicit linked emails)

I'm also wondering why is this only failing on epel7 and not on Fedora (or el6). Fedora also has PPC builders?

primary fedora all arches have nodejs support.
for epel6 it is likely a problem also

I never have seen this issue on el6.

epel7 also worked fine until the new ppc builders were added in November/December 2015.

If noarch is removed from ExclusiveArch I can still reproduce the fedpkg local issue reported before:

{{{
fedpkg local
error: Architecture is not included: noarch
}}}

on EL7. The error message is coming from the rpmbuild command. Wouldn't this occur on the builders as well?

https://fedoraproject.org/wiki/Packaging:Guidelines#Noarch_with_unported_dependencies

It seems the only supported method is ExcludeArch or making the package arch specific. So it does appear that the nodejs guidelines are incorrect.

Replying to [comment:11 piotrp]:

I never have seen this issue on el6.

epel7 also worked fine until the new ppc builders were added in November/December 2015.

But Fedora has PPC builders right, and it works there?

I've done some digging now and https://lists.fedoraproject.org/pipermail/nodejs/2013-June/000039.html is the message where the current scheme was first documented, apparently based on offline discussion with a bunch of experts.

But Fedora has PPC builders right, and it works there?

Yes, Fedora has PPC builders, none of nodejs is currently built on those builders. That will change in the next couple of days once nodejs 4 lands, it's not supported in the prior 0.10 release on PPC

Replying to [comment:17 pbrobinson]:

But Fedora has PPC builders right, and it works there?

Yes, Fedora has PPC builders, none of nodejs is currently built on those builders. That will change in the next couple of days once nodejs 4 lands, it's not supported in the prior 0.10 release on PPC
It does not get built on Fedora PPC builders, but it does get built (and fails) on EPEL 7 PPC builders.

Why is it trying to build it on EPEL 7 PPC builders and not Fedora PPC builders?

The Fedora PPC builders are running on a separate standalone koji instance

Replying to [comment:14 orion]:

https://fedoraproject.org/wiki/Packaging:Guidelines#Noarch_with_unported_dependencies

It seems the only supported method is ExcludeArch or making the package arch specific. So it does appear that the nodejs guidelines are incorrect.

I've read this again and think I get it. The nodejs packages which don't have tests enabled can be built on any platform. But if the tests are enabled it requires npm(engine) which is only available on specifice %nodejs_arches

So packages without tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
}}}
with tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches}
}}}

Correct or am I missing something?

Replying to [comment:20 piotrp]:

I've read this again and think I get it. The nodejs packages which don't have tests enabled can be built on any platform. But if the tests are enabled it requires npm(engine) which is only available on specifice %nodejs_arches

So packages without tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
}}}
with tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches}
}}}

Correct or am I missing something?

No I don't think you are.

Firstly, it's not just tests, it would be anything which runs node, so if the build step runs uglify or something then that would be an issue.

Secondly, if the arch really doesn't matter because node is never run, then you can get rid of the ExclusiveArch altogether.

As I understand it the idea is that the "noarch" has to be in ExclusiveArch because some tools expect to see the BuildArch there, but for that when koji checks if a builder can be used it always matches the real arch of the builder against the ExclusiveArch list even if there is a BuildArch set in the package.

At least I believe that was the intention.

As such a PPC builder wouldn't be used because it's not listed in ExclusiveArch.

Replying to [comment:21 tomh]:

Replying to [comment:20 piotrp]:

I've read this again and think I get it. The nodejs packages which don't have tests enabled can be built on any platform. But if the tests are enabled it requires npm(engine) which is only available on specifice %nodejs_arches

So packages without tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
}}}
with tests:
{{{
BuildArch: noarch
ExclusiveArch: %{nodejs_arches}
}}}

Correct or am I missing something?

No I don't think you are.

Firstly, it's not just tests, it would be anything which runs node, so if the build step runs uglify or something then that would be an issue.

clear

Secondly, if the arch really doesn't matter because node is never run, then you can get rid of the ExclusiveArch altogether.

ok

As I understand it the idea is that the "noarch" has to be in ExclusiveArch because some tools expect to see the BuildArch there, but for that when koji checks if a builder can be used it always matches the real arch of the builder against the ExclusiveArch list even if there is a BuildArch set in the package.

Aren't this then bugs in those tools and need to be fixed there?

At least I believe that was the intention.

As such a PPC builder wouldn't be used because it's not listed in ExclusiveArch.

Replying to [comment:22 piotrp]:

Replying to [comment:21 tomh]:

As I understand it the idea is that the "noarch" has to be in ExclusiveArch because some tools expect to see the BuildArch there, but for that when koji checks if a builder can be used it always matches the real arch of the builder against the ExclusiveArch list even if there is a BuildArch set in the package.

Aren't this then bugs in those tools and need to be fixed there?

Perhaps. I've filed http://rpm.org/ticket/901

Progress on the rpm front allowing noarch with ExclusiveArch, see https://bugzilla.redhat.com/show_bug.cgi?id=1298668

Still need koji support, see: https://fedorahosted.org/koji/ticket/327

Login to comment on this ticket.

Metadata