Qt CMake API Review: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Created page with "== CMake API Review change creation == Currently the collection of which new API needs to be reviewed is not scripted and done manually. Below is a list of commands that can...")
 
No edit summary
Line 1: Line 1:
[[Category:Developing Qt::Qt Build System]]
== CMake API Review change creation ==
== CMake API Review change creation ==



Revision as of 10:37, 21 January 2022


CMake API Review change creation

Currently the collection of which new API needs to be reviewed is not scripted and done manually.

Below is a list of commands that can help with determining / filtering for new API for a new Qt minor version.

Requirements:

Commands:

fd Macros.cmake # 1
tig origin/6.2..origin/6.3 -- '*Macros.cmake' '*Public*.cmake' # 2
git diff origin/6.2..origin/6.3 -- '*Macros.cmake' '*Public*.cmake' # 3
git log -p -Sdefine_property origin/6.2..origin/6.3 # 4
git log -p -Sfunction\(qt6_add_ origin/6.2..origin/6.3 # 5

# 6
git checkout origin/6.2
git checkout origin/6.3 -- '*Macros.cmake' '*Public*.cmake'
git commit -m "WIP: CMake public API review" -m "Task-number: QTBUG-100099"
git push gerrit HEAD:refs/for/6.3

Most of our public CMake API is contained in files called Qt6FooMacros.cmake. These can be found with fd as done in #1.

Some of them might also be in files called QtFooPublicHelpers.cmake. #2 uses tig to show commits that touched such files between two minor Qt versions, 6.2 and 6.3. To view the diff, #3 can be used.

A few more heuristics are shown in #4 and #5 which try to look for new properties and newly introduced functions that start with qt6_add_.

To follow the example of how API review is done for Qt C++ code, we might want to push the 6.2 -> 6.3 diff of relevant files, where the parent commit is the tip of origin/6.2, as done by the scripts in qtqa.git/scripts/api-review/ See https://bugreports.qt.io/browse/QTBUG-99883 and http://quips-qt-io.herokuapp.com/quip-0010-API-review.html for some details on how those are generated and what they look like.

To do that manually for CMake, one can run the commands as shown in #6.