On Tue, Aug 4, 2020 at 7:32 AM Till Hofmann <thofmann(a)fedoraproject.org> wrote:
Hi all,
I have a number of packages that are FTBFS due to
https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds.
None of my packages has seen any commits for that change. I've read on
the list that packages that are considered "a complete mess" are not
touched. Are all my packages "a complete mess"?
More seriously, are we expected to fix this ourselves? What happened to
"proposal owners will fix as many Fedora packages as possible"? Should I
just re-assign the bug to cmake?
I don't generally mind fixing my packages, but I'm confused by the lack
of communication here.
There are only a few packages that were considered a complete mess,
mostly packages that did crazy build process scripting in the %build
and %install sections. Most packages don't fall in that category.
Basically if I can't understand how it works, I don't want to touch
it.
The reason yours hadn't been touched yet is because neither Igor nor
myself managed to get to yours before the mass rebuild.
It would be ideal if you can fix your own packages if we hadn't gotten
to them, as you know your packages. :)
The general advice I would give is that if you did the following:
%cmake .
%make_build
%make_install
Then you should change it to the following:
%cmake
%cmake_build
%cmake_install
(Note the lack of "." as an argument to %cmake)
If you are doing something like the following:
mkdir -p %{_target_platform}
pushd %{_target_platform}
%cmake ..
popd
%make_build -C %{_target_platform}
%make_install -C %{_target_platform}
Or like the following
mkdir -p %{_target_platform}
pushd %{_target_platform}
%cmake ..
popd
pushd %{_target_platform}
%make_build
popd
pushd %{_target_platform}
%make_install
popd
Then you should do the following:
%undefine __cmake_in_source_build
%cmake
%cmake_build
%cmake_install
The %undefine is only needed if you reuse your spec on F32 and older
(including EPEL). Note that EPEL7 with cmake3 requires also undefining
%__cmake3_in_source_build, since all macros use "cmake3" instead of
"cmake" in that instance.
--
真実はいつも一つ!/ Always, there's only one truth!