Skip to content

improve qt deploy for macapp#7329

Open
waruqi wants to merge 1 commit intodevfrom
qt
Open

improve qt deploy for macapp#7329
waruqi wants to merge 1 commit intodevfrom
qt

Conversation

@waruqi
Copy link
Member

@waruqi waruqi commented Feb 18, 2026

@waruqi waruqi added this to the v3.0.8 milestone Feb 18, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @waruqi, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refines the Qt deployment process for macOS applications by intelligently managing the -always-overwrite flag for the macdeployqt tool. Instead of always forcing an overwrite, the flag is now only activated when the application target has undergone a rebuild. This change aims to improve efficiency and reduce redundant operations during the build and deployment cycle, aligning with best practices for incremental builds.

Highlights

  • Conditional Deployment Flag: The -always-overwrite flag for macdeployqt is now applied conditionally, only when the target application has been rebuilt, preventing unnecessary overwrites during incremental builds.
  • Improved Build Performance: By making the -always-overwrite flag conditional, the deployment process for macOS applications using Qt is optimized, potentially reducing build times when only minor changes occur.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • xmake/rules/qt/deploy/macosx.lua
    • Modified the macdeployqt command line arguments to conditionally include the -always-overwrite flag based on whether the target has been rebuilt.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request aims to improve the Qt deployment process for macOS applications by conditionally using the -always-overwrite flag with macdeployqt. This is intended to speed up incremental builds.

My review found that while the intention is good, the change is currently ineffective due to an unconditional removal of the application bundle before deployment. I've provided a suggestion on how to fix this to achieve the desired performance improvement.

Comment on lines +169 to +172
local argv = {target_app}
if target:is_rebuilt() then
table.insert(argv, "-always-overwrite")
end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This change to conditionally add the -always-overwrite flag is a good optimization for incremental deployments. However, it appears to be ineffective because os.tryrm(target_app) is called unconditionally on line 137. This removes the entire .app bundle before macdeployqt runs, leaving nothing for it to incrementally update.

To make this change effective, the call to os.tryrm(target_app) should also be conditional. For example:

-- around line 137
if target:is_rebuilt() then
    os.tryrm(target_app)
end

With this adjustment, the existing .app bundle would be preserved when the target is not rebuilt, allowing macdeployqt to perform an incremental deployment as intended. When the target is rebuilt, the bundle would be removed for a clean deployment.

@GooRoo
Copy link
Contributor

GooRoo commented Feb 18, 2026

While the build with this code is faster for sure, gemini is right: at least Frameworks and Resources in the app bundle are cleaned up every time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments