Re: Fedora 33 System-Wide Change proposal: CMake to do out-of-source builds

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On Tue, 2020-07-07 at 11:57 -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@xxxxxxxxxxxxxxxxx, 
> > besser82@xxxxxxxxxxxxxxxxx,
> > ngompa13@xxxxxxxxx
> > 
> > == 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 the plan for EPEL8/7 compatibility?

Ask people that work on EPEL :) The change talks only about Fedora
backports that have been done already and are sitting in the testing
now.

> 
> 
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxxxxxxxxxx

- -- 
Igor Raits <ignatenkobrain@xxxxxxxxxxxxxxxxx>
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEcwgJ58gsbV5f5dMcEV1auJxcHh4FAl8FjaUACgkQEV1auJxc
Hh4GsA/+JdsKTLlIBWTyPwYa5owD5qbgFA/biaRyS0aad9LQJ+00URn5zonMvKvB
gFlAf1GYQqdH2cVBNescWOA4Ho8VBmmQI7IXk0pU27CS81T2G52WieEy0v1yAatS
lob64DjrBtRVRtmPNY+vN2vDdc46zu6ny26DDyuRDxniXzZAyYGFvE0rkh05CJRg
FCQThSU8watCKsx9JT49rfsn0BpBJt0VEykaoQukg/agdanTNFO7q1eHDvqBWZjO
uuOGewgbUBtmVM7oYYdFntoFA2A/yYInHg0seatEioOEu+KIdJhLiurG2o8uzvOC
miF9V9OIaaAL4tt3lVg9gGv8Nzif7VW0Qvnd3lpk6tbb1pz30M2D1bXJ+XEqhtok
Tu4mLAMCju6uwc4BHfmyt4bf8+qSnz1gJLSYHOL8GM9PtwmzxZ3qSUEjzVssY39F
kSd03WdTZSMVLQ0xa2gc1Kqj8rOERrFB36NE1ahImW8LkDYFfTmRUf5XWWG69ngZ
ND0z6DqwtD1ok43iMNKc7871oZREhQtmtn2Gq4Qh4LTsPSdJR4hqr6lZ0r1YjkuC
fsC2TMGkHy0JOa0K9S96oSwh9AU5ih6EGvW/Sd/aKNEkUO+vQrGRutXXJnLa2d+F
Cl+hwjwP/SnxtMI3eRsNnzvWtRsTC1OFnmeqZQGj7Qpy9IpaBc4=
=vxzK
-----END PGP SIGNATURE-----
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux