-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
On Tue, 2020-07-07 at 12:07 -0600, Orion Poplawski wrote:
On 6/15/20 1:47 PM, Ben Cotton wrote:
>
https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds
>
> == Summary ==
> <code>%cmake</code> macro will be adjusted (<code>-B</code>
> parameter)
> to use separate build folder (already standardized
> <code>%{_vpath_builddir}</code> macro). Additionally,
> <code>%cmake_build</code>, <code>%cmake_install</code> and
> <code>%ctest</code> macro will be created (and backported to the
> older
> supported Fedora releases) to perform various operations that are
> commonly used with CMake in a backend-agnostic (Makefiles, Ninja,
> etc.) way.
>
> Packages that will stop building are trivial to fix and will be
> adjusted either by maintainers or change owners.
>
> == Owner ==
> * Name: [[User:ignatenkobrain|Igor Raits]], [[User:besser82|Björn
> Esser]], [[User:ngompa|Neal Gompa]]
> * Email: ignatenkobrain(a)fedoraproject.org,
> besser82(a)fedoraproject.org,
> ngompa13(a)gmail.com
>
> == Detailed Description ==
> Historically, software builds had a singular build configuration
> and
> required running the build within the project root. Nowadays, there
> are many build modes and options that can be configured in
> projects,
> different build settings (e.g. compiler flags) / types (release,
> debug) that can be applied and different tools that can be used to
> actually execute builds (compilers like gcc/clang, build job
> schedulers like make/ninja, and so on). Thus, CMake upstream
> strongly
> discourages users of doing in-source builds and recommends doing
> out-of-source builds.
>
> From <code>cmake.1</code>:
>
> <pre>
> To maintain a pristine source tree, perform an out-of-source build
> by
> using a separate dedicated build tree. An in-source build in which
> the
> build tree is placed in the same directory as the source tree is
> also
> supported, but discouraged.
> </pre>
>
> The other part of the change is introduction of additional macros
> is
> creation of set of macro that can build, install and run tests in a
> backend-agnostic, vpath-aware (out-of-source, in-source) way.
>
> === Migration ===
>
> ==== <code>%cmake</code> +
> <code>%(make|ninja)_(build|install)</code> ====
>
> There are multiple paths to complete the migration:
>
> * Add <code>-C "%{_vpath_builddir}"</code> to the
> <code>%(make|ninja)_*</code>
> * Replace <code>%(make|ninja)_build</code> and
> <code>%(make|ninja)_install</code> with
<code>%cmake_build</code>
> and
> <code>%cmake_install</code> respectively
> * Redefine vpath builddir <code>%global _vpath_builddir .</code> to
> continue performing in-source builds (and optionally converting to
> the
> <code>%cmake_*</code>)
>
> Depending on the package, one of these options may be used to adapt
> to
> this change.
>
> ==== <code>%cmake -B builddir</code> +
> <code>%(make|ninja)_(build|install) -C builddir</code> ====
>
> No changes are needed.
>
> == Benefit to Fedora ==
> * Follow CMake upstream recommendations when building packages
> * Brings Fedora package builds more in-line with how upstream
> projects
> expect them to be built
> * Improve compatibility with other RPM distributions that already
> do this
> * Support backend-agnostic way of building CMake projects
>
> == Scope ==
> * Proposal owners: Implement necessary macros, try to build
> packages
> that <code>BuildRequires: cmake</code> in a side tag, analyze
> failures
> and fix the relevant ones (introduced by this change).
> * Other developers: While proposal owners will try to fix all
> affected
> packages, there might be some cases where package is already FTBFS
> so
> the fix can't be performed. Other package maintainers will have to
> fix
> the issue themselves after they fix FTBFS.
> * Release engineering: [
https://pagure.io/releng/issue/9524 #9524]
> * Policies and guidelines: CMake page will be adjusted to mention
> newly created macros and the documentation about relevant VPATH
> macros
> needs to be restructured a bit (they are already documented on the
> Meson page, they need to be moved to the separate page and
> referenced
> both from CMake and Meson page).
> * Trademark approval: N/A (not needed for this Change)
>
> == Upgrade/compatibility impact ==
> Existing packages can (and most likely will) become FTBFS, but
> proposal owners will fix as many Fedora packages as possible.
> However
> fixing third-party packages is not possible and out of scope.
> Third-party packagers will need to adapt based on the
> recommendations
> noted in this Change.
What's with %{nil}? If we're writing macros that require the use of
%{nil} I think we have a problem.
%cmake3 \
%{?_with_cppunit: -DENABLE_CPPUNIT=ON} \
%{nil}
It is not strictly needed, but I wanted to avoid moving lines around to
keep diff as small as possible.
_______________________________________________
devel mailing list -- devel(a)lists.fedoraproject.org
To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org -----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEcwgJ58gsbV5f5dMcEV1auJxcHh4FAl8FjVYACgkQEV1auJxc
Hh4O4A//VCPO5EP33LBzmtaIKWliK1k5ad2v3YrCItmbW1otaxYB7MpQq5cpqapl
cmoUuLDN92mLiQDA24xPUS7MI10NKmytTW3NIKAN8555X9a3OiALjxDQJ7G81o9C
s+e++gLShs4zK1CTSfRe0ZdRGGj7NMR6EBEYf8I4TBv/XX5v0iVaerD0bVz2Mjod
WetGUJ0hqq7HO2J4Pc06xhqOA8RwS4noqiiu+hLrvZn7hseJhAKGA3BfuQz6aNO1
VS3bcOClcDTnoKHmKmqReLhxXhYo1m1BngjfvxEhXiRNkOqyMiUtufWqeGnRDlGZ
SkRqfmfxHujM98n/eU6BNIEFhxtJM0Qvw90EP2GHWvcIvAWhL7zi3fRvo4aKZx+A
J46h3QpW6pW4MJlhXkYp0nsqEuuyOW4bpq1GiYFgsindis4/biZqS6SJXnSoovVg
qVT9eHf1ZUW1VLD29vbbxGcovkAIUYYPngKdLgi1cNw3slAKgBrHsCInOiFM1Bvb
XoUbwI+4O/RxJMHNlyfXYwj8zLGjcPc8BhoG32rVC68gKNjAEd8x2U1rjYGK8C9o
iEepdkuM0huZSlzpplYwc3jblwze7x9kY+qcjyMBhYGcO4rnuo2W2pERvNZSrVQm
hFp5SUp3jF8fLmKGFMXoW2sv0Q32GMx2ozvUZND8DdeRKPamv70=
=LqWR
-----END PGP SIGNATURE-----