Bug 2102298
Summary: | adapt automake to removal of java on i686 | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | jiri vanek <jvanek> |
Component: | automake | Assignee: | Frédéric Bérat <fberat> |
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | urgent | Docs Contact: | |
Priority: | urgent | ||
Version: | rawhide | CC: | dan, fberat, fjanus, jjanco, karsten, kasal, odubaj, panovotn, praiskup |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | automake-1.16.5-7.fc37 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2022-07-13 15:40:39 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 2083750 |
Description
jiri vanek
2022-06-29 15:28:23 UTC
On automake, the java_devel packages are only needed for the test phase. The tests that need it only make sense if there can be packages that would need java JDK as build requirement (obviously). If java JDK is removed from i686, then there is no point having these tests for i686. The solution would therefore be to condition the java-devel BuildRequires on the architecture the package is being build for (i.e. not i686) . In theory, if the package isn't here, the corresponding tests will simply be skipped and the build will go forward silently. Good! That wil make my sleeping much much more easy. Note that you really have to ifarch the depndece out, so you do not randomly fail becasue of BR not satisfied if your builder wil be i686, which can happen. (In reply to jiri vanek from comment #2) > Good! That wil make my sleeping much much more easy. > Note that you really have to ifarch the depndece out, so you do not randomly > fail becasue of BR not satisfied if your builder wil be i686, which can > happen. Or simply move to ExclusiveArch: %{java_arches} noarch and you are done. (In reply to jiri vanek from comment #3) > (In reply to jiri vanek from comment #2) > > Good! That wil make my sleeping much much more easy. > > Note that you really have to ifarch the depndece out, so you do not randomly > > fail becasue of BR not satisfied if your builder wil be i686, which can > > happen. > > Or simply move to ExclusiveArch: %{java_arches} noarch > and you are done. If I understand well hoe ExclusiveArch works, that solution would also imply that the automake package would not be available in i686 repositories, which is not what you want. I'm not excited about this, but: %if 0%(exp=`uname -m`; for arch in %java_arches; do test $exp = $arch && echo 1 && break ; done) BuildRequires: java-devel %endif Or write this in Lua. It would be nice if there was a system macro (sister of %java_arches) like %java_supported_arch => 1/0. What we really need here though is a way to tell the build-system not to pick the "i686" builders. (In reply to Pavel Raiskup from comment #5) > I'm not excited about this, but: > %if 0%(exp=`uname -m`; for arch in %java_arches; do test $exp = $arch && > echo 1 && break ; done) > BuildRequires: java-devel > %endif That looks complicated, I actually wonder if keeping this BuildRequires at all is worth the effort. (In reply to Frédéric Bérat from comment #4) > (In reply to jiri vanek from comment #3) > > (In reply to jiri vanek from comment #2) > > > Good! That wil make my sleeping much much more easy. > > > Note that you really have to ifarch the depndece out, so you do not randomly > > > fail becasue of BR not satisfied if your builder wil be i686, which can > > > happen. > > > > Or simply move to ExclusiveArch: %{java_arches} noarch > > and you are done. > > If I understand well hoe ExclusiveArch works, that solution would also imply > that the automake package would not be available in i686 repositories, which > is not what you want. I think not. Automake is noarch. So the ExclusiveArch will only limit build time architectures. (In reply to Pavel Raiskup from comment #6) > What we really need here though is a way to tell the build-system > not to pick the "i686" builders. Yah, thats what ExclusiveArch should do. (In reply to jiri vanek from comment #8) > (In reply to Frédéric Bérat from comment #4) > > (In reply to jiri vanek from comment #3) > > > (In reply to jiri vanek from comment #2) > > > > Good! That wil make my sleeping much much more easy. > > > > Note that you really have to ifarch the depndece out, so you do not randomly > > > > fail becasue of BR not satisfied if your builder wil be i686, which can > > > > happen. > > > > > > Or simply move to ExclusiveArch: %{java_arches} noarch > > > and you are done. > > > > If I understand well hoe ExclusiveArch works, that solution would also imply > > that the automake package would not be available in i686 repositories, which > > is not what you want. > > I think not. Automake is noarch. So the ExclusiveArch will only limit build > time architectures. I'm afraid not only, if I believe the doc: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_noarch_with_unported_dependencies "you run into a situation where you may need to exclude your package from certain architectures' package repositories or prevent it from building on certain architectures in the buildsystem." "You can limit both the architectures used to build a noarch package, and the repositories to which the built noarch package will be added, by using either the ExcludeArch: or ExclusiveArch: tags:" They explicitly specify that both the builder and the repositories are filtered. I think there is no simple solution if automake should stay available on i686. The one from comment #5 might work, but if the java-devel dependency is used for some java specific parts of automake and not for some general functionality, then I would drop the BR and skip the tests. I think java support in automake is used only very rarely (if at all in the Fedora packages). I'm pretty sure that both #c10 #c11 are wrong. ExclusiveArch: %{java_arches} noarch should do all the job, and automake will remain available on all arches as runtime requires allows. Here java is only BR so it will be ok, and include i686 For the arhfull pkg you are of course correct, and different workaround would need to come to play - see eg graphvviz - https://src.fedoraproject.org/rpms/graphviz/pull-request/9#request_diff I am pretty sure the "noarch arch" combo worked as described in the docs (I used it personally for some EPEL packages), so if such rpms are being put into all repos, then it's a bug in the current compose tools (pungi) and I would not rely on it. Ok. Will elaborate on this topic. mock -r fedora-rawhide-i386 --install ant ... Installing: ant noarch 1.10.12-6.fc37 ... Running transaction Running scriptlet: copy-jdk-configs-4.0-3.fc36.noarch Running scriptlet: java-17-openjdk-headless-1:17.0.3.0.7-5.fc37.i686 Installing : javapackages-filesystem-6.1.0-1.fc37.noarch Preparing : Installing : javapackages-tools-6.1.0-1.fc37.noarch Installing : ant-lib-1.10.12-6.fc37.noarch Installing : ant-1.10.12-6.fc37.noarch ... This version of ant is 100% with %{java_arches} noarch: https://src.fedoraproject.org/rpms/ant/blob/rawhide/f/ant.spec#_44 Is it enough as a proof? (In reply to Dan Horák from comment #14) > I am pretty sure the "noarch arch" combo worked as described in the docs (I > used it personally for some EPEL packages), so if such rpms are being put > into all repos, then it's a bug in the current compose tools (pungi) and I > would not rely on it. Maybe it is based on fact, that if you honor depndencie's arches, the cdepndnecy itself is not on that arch, and thus indeed you cannot be installed here? (In reply to jiri vanek from comment #16) > mock -r fedora-rawhide-i386 --install ant > ... > Installing: > ant noarch > 1.10.12-6.fc37 > ... > Running transaction > Running scriptlet: copy-jdk-configs-4.0-3.fc36.noarch > Running scriptlet: java-17-openjdk-headless-1:17.0.3.0.7-5.fc37.i686 > Installing : javapackages-filesystem-6.1.0-1.fc37.noarch > Preparing : > Installing : javapackages-tools-6.1.0-1.fc37.noarch > Installing : ant-lib-1.10.12-6.fc37.noarch > Installing : ant-1.10.12-6.fc37.noarch > ... > > This version of ant is 100% with %{java_arches} noarch: > https://src.fedoraproject.org/rpms/ant/blob/rawhide/f/ant.spec#_44 > > Is it enough as a proof? I got confirmation that this behavior is due to a bug that got introduced by switching to Pungi, and that this behavior was different before Pungi was used. https://pagure.io/fesco/issue/2772#comment-804351 Therefore, either the doc is outdated, or we can't rely on this behavior of the composer. Thanx. That is important info which I underestimated, and will affect the text mass bugzilla swarming I will do as soon as possible. Still, i686 repo is no longer here, only remains as multi-lib in x86_64 so all (except build root?) will remain ok. Anyway, yu are right that packages like autoconf can not use "ExclusiveArch: %{java_arches} noarch" workaround. Generally you have two options, if you don't build on %{java_arches}, do to require java and skip (subset of) tests xor remove javadepndence and skip (subset of) tests always. Luckily for us, its "jsut test". Thanx a lof for vlauable fedback! |