[Bug 1091864] New: [RPM] The %make_install macro from marcos.cmake gets overwritten by macro.qt5
http://bugzilla.suse.com/show_bug.cgi?id=1091864 Bug ID: 1091864 Summary: [RPM] The %make_install macro from marcos.cmake gets overwritten by macro.qt5 Classification: openSUSE Product: openSUSE Tumbleweed Version: Current Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: Development Assignee: bnc-team-screening@forge.provo.novell.com Reporter: asn@cryptomilk.org QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- The cmake macros allow you to use ninja [1]. However it doesn't work if macros.qt5 is installed because it overwrite the macro. Instead of ninja, make is called. [1] https://en.opensuse.org/openSUSE:Build_system_recipes#cmake -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
Andreas Schneider
http://bugzilla.suse.com/show_bug.cgi?id=1091864
Weihua Du
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c1
Fabian Vogt
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c2
Marcus Rückert
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c3
--- Comment #3 from Fabian Vogt
maybe use the definition from cmake everywhere?
To me it looks like with the use of %__builder, the %make_jobs macro is now cmake-specific. It should IMO be renamed. %make_jobs should just invoke plain make with arguments, where that is defined then should not matter. Once that is done, the definition from macros.kde4 and macros.qt5 can be removed. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c4
--- Comment #4 from Marcus Rückert
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c5
--- Comment #5 from Fabian Vogt
yeah but the %__builder defaults to "make" no?
so we could avoid having to use yet another macro for it.
Yes, but there is a slim chance that that could break some builds. Qt 5.11 is checked in, so I'll do a submission and see what breaks. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c6
Fabian Vogt
(In reply to Marcus Rückert from comment #4)
yeah but the %__builder defaults to "make" no?
so we could avoid having to use yet another macro for it.
Yes, but there is a slim chance that that could break some builds.
Qt 5.11 is checked in, so I'll do a submission and see what breaks.
Everything, as it turns out. The %make_jobs from macros.cmake does not accept arguments. %make_jobs -C build ends up as %if "/usr/bin/make" == "/usr/bin/make" /usr/bin/make -j8 VERBOSE=1 %else ninja -v -j8 %endif -C asdf That needs to be fixed. While you're at it - can you move the file from /etc/rpm/macros.cmake to /usr/lib/rpm/macros.d/cmake? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c7
--- Comment #7 from Marcus Rückert
While you're at it - can you move the file from /etc/rpm/macros.cmake to /usr/lib/rpm/macros.d/cmake?
Does that work on code 11/code 12 already or is that code 15 and newer? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c8
--- Comment #8 from Fabian Vogt
While you're at it - can you move the file from /etc/rpm/macros.cmake to /usr/lib/rpm/macros.d/cmake?
Does that work on code 11/code 12 already or is that code 15 and newer?
It definitely worked on Leap 42.2 - not sure about CODE-11. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c9
Fabian Vogt
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c10
--- Comment #10 from Marcus Rückert
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c11
--- Comment #11 from Fabian Vogt
I would still push for a shared make_jobs macro that works for both.
I fully agree - but currently the cmake-provided macro breaks Qt builds while the Qt-provided macro doesn't break cmake builds (ninja isn't used yet). The %make_jobs macro implies that "make" is used any not "ninja", so IMO that macro needs to be renamed into %build_jobs or something else. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c12
--- Comment #12 from Marcus Rückert
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c13
--- Comment #13 from Simon Lees
(In reply to Marcus Rückert from comment #10)
I would still push for a shared make_jobs macro that works for both.
I fully agree - but currently the cmake-provided macro breaks Qt builds while the Qt-provided macro doesn't break cmake builds (ninja isn't used yet).
The %make_jobs macro implies that "make" is used any not "ninja", so IMO that macro needs to be renamed into %build_jobs or something else.
The macro has been renamed to %cmake_build in tumbleweed to be more consistent -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c14
--- Comment #14 from Simon Lees
macros.cmake in Leap 15.0 now breaks building Qt as it overrides %make_jobs with an incompatible macro.
Please fix ASAP.
As far as I can see the cmake package hasn't changed in Leap:15.0 or SLE:15:GA do you have any idea whats bought on this break now? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c15
--- Comment #15 from Marcus Rückert
(In reply to Fabian Vogt from comment #11)
(In reply to Marcus Rückert from comment #10)
I would still push for a shared make_jobs macro that works for both.
I fully agree - but currently the cmake-provided macro breaks Qt builds while the Qt-provided macro doesn't break cmake builds (ninja isn't used yet).
The %make_jobs macro implies that "make" is used any not "ninja", so IMO that macro needs to be renamed into %build_jobs or something else.
The macro has been renamed to %cmake_build in tumbleweed to be more consistent
did you check how many packages that will break? why not just use the version of the macro provided above which makes it work in all cases? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c16
--- Comment #16 from Simon Lees
(In reply to Simon Lees from comment #13)
(In reply to Fabian Vogt from comment #11)
(In reply to Marcus Rückert from comment #10)
I would still push for a shared make_jobs macro that works for both.
I fully agree - but currently the cmake-provided macro breaks Qt builds while the Qt-provided macro doesn't break cmake builds (ninja isn't used yet).
The %make_jobs macro implies that "make" is used any not "ninja", so IMO that macro needs to be renamed into %build_jobs or something else.
The macro has been renamed to %cmake_build in tumbleweed to be more consistent
did you check how many packages that will break?
why not just use the version of the macro provided above which makes it work in all cases?
Personally I didn't make the change Tomas did, for now the macro has a fallback mode and over the next couple of weeks he plans to go through and submit updates to all the affected packages then remove the fallback once they are all accepted into factory. His motivation wasn't fixing this issue but making the cmake macro's function in the same way as the macros for other build systems. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c17
--- Comment #17 from Simon Lees
(In reply to Marcus Rückert from comment #15)
(In reply to Simon Lees from comment #13)
(In reply to Fabian Vogt from comment #11)
(In reply to Marcus Rückert from comment #10)
I would still push for a shared make_jobs macro that works for both.
I fully agree - but currently the cmake-provided macro breaks Qt builds while the Qt-provided macro doesn't break cmake builds (ninja isn't used yet).
The %make_jobs macro implies that "make" is used any not "ninja", so IMO that macro needs to be renamed into %build_jobs or something else.
The macro has been renamed to %cmake_build in tumbleweed to be more consistent
did you check how many packages that will break?
why not just use the version of the macro provided above which makes it work in all cases?
Personally I didn't make the change Tomas did, for now the macro has a fallback mode and over the next couple of weeks he plans to go through and submit updates to all the affected packages then remove the fallback once they are all accepted into factory. His motivation wasn't fixing this issue but making the cmake macro's function in the same way as the macros for other build systems.
I have no problem with also making the macro behave in the way you had above, it just hadn't reached the top of my todo list yet. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c18
--- Comment #18 from Simon Lees
so the thing that is broken with the cmake version of the %make_jobs macro (compared to the version in the Qt package)
is
%make_jobs -C build/something
the params end up after the the %endif of the cmake make_jobs macro
the main difference between the 2 macros is enabling verbose mode and support for ninja. the first step is already handled by the __builder macro. but the verbose flag is why we need the %if, so my proposal would be the following change.
``` # added the %_make_output_sync from %make_build here as it is useful. %__builder_verbose \ %if "%__builder" == "%__make" \ %{?_make_output_sync} VERBOSE=1 \\\ %else \ -v \\\ %endif \ %{nil}
%make_jobs %__builder \\%__builder_verbose %{?_smp_mflags} ```
this makes Fabian's usecase work. now the question is on how do we make this change in a backwards compatible way. in ideal world we would just move the whole %make_jobs macro to the rpm macros file but that would require a maintenance update for rpm and everyone building against :Update.
or we just copy the macro around and have a comment that asks people to keep the macro in sync between the different places. thoughts?
Making it in a backwards compatible way is going to be hard because really the package should be shared with the SLE one we could split the macro out into a separate package "cmake-rpm-config" but that would still cause any cmake package to be listed for a rebuild which maintenance might not be too happy about, but it would probably be a way forward for Leap 15.1 -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c19
Simon Lees
so the thing that is broken with the cmake version of the %make_jobs macro (compared to the version in the Qt package)
is
%make_jobs -C build/something
the params end up after the the %endif of the cmake make_jobs macro
the main difference between the 2 macros is enabling verbose mode and support for ninja. the first step is already handled by the __builder macro. but the verbose flag is why we need the %if, so my proposal would be the following change.
``` # added the %_make_output_sync from %make_build here as it is useful. %__builder_verbose \ %if "%__builder" == "%__make" \ %{?_make_output_sync} VERBOSE=1 \\\ %else \ -v \\\ %endif \ %{nil}
%make_jobs %__builder \\%__builder_verbose %{?_smp_mflags} ```
this makes Fabian's usecase work. now the question is on how do we make this change in a backwards compatible way. in ideal world we would just move the whole %make_jobs macro to the rpm macros file but that would require a maintenance update for rpm and everyone building against :Update.
or we just copy the macro around and have a comment that asks people to keep the macro in sync between the different places. thoughts?
I am now preparing a cmake update for SLE 15 sp1 so i'll include this change unless you see a good reason not to. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c22
--- Comment #22 from Swamp Workflow Management
http://bugzilla.suse.com/show_bug.cgi?id=1091864
http://bugzilla.suse.com/show_bug.cgi?id=1091864#c23
Vladimir Siman
https://bugzilla.suse.com/show_bug.cgi?id=1091864
https://bugzilla.suse.com/show_bug.cgi?id=1091864#c26
Simon Lees
participants (2)
-
bugzilla_noreply@novell.com
-
bugzilla_noreply@suse.com