| 1 | From 8fef1fc6d10a6967358720325f0ae9e498eb9198 Mon Sep 17 00:00:00 2001
|
| 2 | From: Peter Polidoro <[email protected]>
|
| 3 | Date: Tue, 23 Jun 2026 13:27:14 -0400
|
| 4 | Subject: [PATCH] Add build options to disable update checks
|
| 5 |
|
| 6 | Add a KICAD_PCM_UPDATE_CHECK CMake option alongside the existing
|
| 7 | KICAD_UPDATE_CHECK option.
|
| 8 |
|
| 9 | When either update mechanism is disabled at build time, default its setting to
|
| 10 | false, hide the related setup/preferences controls, and skip the corresponding
|
| 11 | startup background update checks.
|
| 12 | ---
|
| 13 | CMakeLists.txt | 7 ++-
|
| 14 | common/dialogs/panel_packages_and_updates.cpp | 12 ++--
|
| 15 | common/settings/kicad_settings.cpp | 5 +-
|
| 16 | .../startwizard_provider_privacy.cpp | 57 ++++++++++++++++---
|
| 17 | .../startwizard_provider_privacy.h | 10 ++++
|
| 18 | include/settings/kicad_settings.h | 12 ++++
|
| 19 | kicad/kicad_manager_frame.cpp | 4 ++
|
| 20 | kicad/pcm/pcm.cpp | 4 ++
|
| 21 | 8 files changed, 96 insertions(+), 15 deletions(-)
|
| 22 |
|
| 23 | diff --git a/CMakeLists.txt b/CMakeLists.txt
|
| 24 | index af30c49174..3e321de38a 100644
|
| 25 | |
| 26 | |
| 27 | @@ -119,7 +119,11 @@ option( KICAD_BUILD_QA_TESTS
|
| 28 | ON )
|
| 29 |
|
| 30 | option( KICAD_UPDATE_CHECK
|
| 31 | - "Build in update check"
|
| 32 | + "Build in KiCad application update check"
|
| 33 | + ON )
|
| 34 | +
|
| 35 | +option( KICAD_PCM_UPDATE_CHECK
|
| 36 | + "Build in Plugin and Content Manager package update check"
|
| 37 | ON )
|
| 38 |
|
| 39 | cmake_dependent_option( KICAD_WAYLAND
|
| 40 | @@ -311,6 +315,7 @@ add_compile_definitions( $<$<BOOL:${KICAD_USE_VALGRIND}>:KICAD_USE_VALGRIND> )
|
| 41 | add_compile_definitions( $<$<BOOL:${KICAD_GAL_PROFILE}>:KICAD_GAL_PROFILE> )
|
| 42 | add_compile_definitions( $<$<BOOL:${KICAD_WIN32_VERIFY_CODESIGN}>:KICAD_WIN32_VERIFY_CODESIGN> )
|
| 43 | add_compile_definitions( $<$<BOOL:${KICAD_UPDATE_CHECK}>:KICAD_UPDATE_CHECK> )
|
| 44 | +add_compile_definitions( $<$<BOOL:${KICAD_PCM_UPDATE_CHECK}>:KICAD_PCM_UPDATE_CHECK> )
|
| 45 |
|
| 46 | # Ensure DEBUG is defined for all platforms in Debug builds
|
| 47 | add_compile_definitions( $<$<CONFIG:Debug>:DEBUG> )
|
| 48 | diff --git a/common/dialogs/panel_packages_and_updates.cpp b/common/dialogs/panel_packages_and_updates.cpp
|
| 49 | index eac0bee3f6..3582312ce7 100644
|
| 50 | |
| 51 | |
| 52 | @@ -38,6 +38,10 @@ PANEL_PACKAGES_AND_UPDATES::PANEL_PACKAGES_AND_UPDATES( wxWindow* parent ) :
|
| 53 | m_staticline3->Hide();
|
| 54 | m_cbKicadUpdate->Hide();
|
| 55 | #endif
|
| 56 | +
|
| 57 | +#ifndef KICAD_PCM_UPDATE_CHECK
|
| 58 | + m_cbPcmUpdate->Hide();
|
| 59 | +#endif
|
| 60 | }
|
| 61 |
|
| 62 |
|
| 63 | @@ -45,8 +49,8 @@ bool PANEL_PACKAGES_AND_UPDATES::TransferDataToWindow()
|
| 64 | {
|
| 65 | if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
|
| 66 | {
|
| 67 | - m_cbKicadUpdate->SetValue( cfg->m_KiCadUpdateCheck );
|
| 68 | - m_cbPcmUpdate->SetValue( cfg->m_PcmUpdateCheck );
|
| 69 | + m_cbKicadUpdate->SetValue( KICAD_SETTINGS::DEFAULT_KICAD_UPDATE_CHECK && cfg->m_KiCadUpdateCheck );
|
| 70 | + m_cbPcmUpdate->SetValue( KICAD_SETTINGS::DEFAULT_PCM_UPDATE_CHECK && cfg->m_PcmUpdateCheck );
|
| 71 | m_libAutoAdd->SetValue( cfg->m_PcmLibAutoAdd );
|
| 72 | m_libAutoRemove->SetValue( cfg->m_PcmLibAutoRemove );
|
| 73 | m_libPrefix->SetValue( cfg->m_PcmLibPrefix );
|
| 74 | @@ -60,8 +64,8 @@ bool PANEL_PACKAGES_AND_UPDATES::TransferDataFromWindow()
|
| 75 | {
|
| 76 | if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
|
| 77 | {
|
| 78 | - cfg->m_KiCadUpdateCheck = m_cbKicadUpdate->GetValue();
|
| 79 | - cfg->m_PcmUpdateCheck = m_cbPcmUpdate->GetValue();
|
| 80 | + cfg->m_KiCadUpdateCheck = KICAD_SETTINGS::DEFAULT_KICAD_UPDATE_CHECK && m_cbKicadUpdate->GetValue();
|
| 81 | + cfg->m_PcmUpdateCheck = KICAD_SETTINGS::DEFAULT_PCM_UPDATE_CHECK && m_cbPcmUpdate->GetValue();
|
| 82 | cfg->m_PcmLibAutoAdd = m_libAutoAdd->GetValue();
|
| 83 | cfg->m_PcmLibAutoRemove = m_libAutoRemove->GetValue();
|
| 84 | cfg->m_PcmLibPrefix = m_libPrefix->GetValue();
|
| 85 | diff --git a/common/settings/kicad_settings.cpp b/common/settings/kicad_settings.cpp
|
| 86 | index ea350e02df..dbe78b5389 100644
|
| 87 | |
| 88 | |
| 89 | @@ -50,7 +50,8 @@ KICAD_SETTINGS::KICAD_SETTINGS() :
|
| 90 |
|
| 91 | m_params.emplace_back( new PARAM<wxString>( "system.last_update_check_time", &m_lastUpdateCheckTime, "" ) );
|
| 92 | m_params.emplace_back( new PARAM<wxString>( "system.last_received_update", &m_lastReceivedUpdate, "" ) );
|
| 93 | - m_params.emplace_back( new PARAM<bool>( "system.check_for_kicad_updates", &m_KiCadUpdateCheck, true ) );
|
| 94 | + m_params.emplace_back(
|
| 95 | + new PARAM<bool>( "system.check_for_kicad_updates", &m_KiCadUpdateCheck, DEFAULT_KICAD_UPDATE_CHECK ) );
|
| 96 |
|
| 97 | m_params.emplace_back( new PARAM<wxPoint>( "template.window.pos", &m_TemplateWindowPos, wxDefaultPosition ) );
|
| 98 | m_params.emplace_back( new PARAM<wxSize>( "template.window.size", &m_TemplateWindowSize, wxDefaultSize ) );
|
| 99 | @@ -159,7 +160,7 @@ KICAD_SETTINGS::KICAD_SETTINGS() :
|
| 100 | m_params.emplace_back(
|
| 101 | new PARAM<wxString>( "pcm.last_download_dir", &m_PcmLastDownloadDir, "" ) );
|
| 102 |
|
| 103 | - m_params.emplace_back( new PARAM<bool>( "pcm.check_for_updates", &m_PcmUpdateCheck, true ) );
|
| 104 | + m_params.emplace_back( new PARAM<bool>( "pcm.check_for_updates", &m_PcmUpdateCheck, DEFAULT_PCM_UPDATE_CHECK ) );
|
| 105 |
|
| 106 | m_params.emplace_back( new PARAM<bool>( "pcm.lib_auto_add", &m_PcmLibAutoAdd, true ) );
|
| 107 |
|
| 108 | diff --git a/common/startwizard/startwizard_provider_privacy.cpp b/common/startwizard/startwizard_provider_privacy.cpp
|
| 109 | index 1689482db3..cc7ae223d7 100644
|
| 110 | |
| 111 | |
| 112 | @@ -36,6 +36,19 @@ public:
|
| 113 | PANEL_STARTWIZARD_PRIVACY_BASE( aParent ),
|
| 114 | m_model( aModel )
|
| 115 | {
|
| 116 | +#ifndef KICAD_UPDATE_CHECK
|
| 117 | + m_cbAutoUpdateKiCad->Hide();
|
| 118 | +#endif
|
| 119 | +
|
| 120 | +#ifndef KICAD_PCM_UPDATE_CHECK
|
| 121 | + m_cbAutoUpdatePCM->Hide();
|
| 122 | +#endif
|
| 123 | +
|
| 124 | +#if !defined( KICAD_UPDATE_CHECK ) && !defined( KICAD_PCM_UPDATE_CHECK )
|
| 125 | + if( wxSizer* updatesSizer = m_stIntro->GetContainingSizer() )
|
| 126 | + updatesSizer->Show( false );
|
| 127 | +#endif
|
| 128 | +
|
| 129 | #ifndef KICAD_USE_SENTRY
|
| 130 | m_sizerDataCollection->Show( false );
|
| 131 | #endif
|
| 132 | @@ -80,31 +93,51 @@ STARTWIZARD_PROVIDER_PRIVACY::STARTWIZARD_PROVIDER_PRIVACY() :
|
| 133 |
|
| 134 | bool STARTWIZARD_PROVIDER_PRIVACY::NeedsUserInput() const
|
| 135 | {
|
| 136 | +#if defined( KICAD_UPDATE_CHECK ) || defined( KICAD_PCM_UPDATE_CHECK ) || defined( KICAD_USE_SENTRY )
|
| 137 | COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
|
| 138 |
|
| 139 | - return !commonSettings->m_DoNotShowAgain.update_check_prompt
|
| 140 | - || !commonSettings->m_DoNotShowAgain.data_collection_prompt;
|
| 141 | + bool needsInput = false;
|
| 142 | +
|
| 143 | +#if defined( KICAD_UPDATE_CHECK ) || defined( KICAD_PCM_UPDATE_CHECK )
|
| 144 | + needsInput |= !commonSettings->m_DoNotShowAgain.update_check_prompt;
|
| 145 | +#endif
|
| 146 | +
|
| 147 | +#ifdef KICAD_USE_SENTRY
|
| 148 | + needsInput |= !commonSettings->m_DoNotShowAgain.data_collection_prompt;
|
| 149 | +#endif
|
| 150 | +
|
| 151 | + return needsInput;
|
| 152 | +#else
|
| 153 | + return false;
|
| 154 | +#endif
|
| 155 | }
|
| 156 |
|
| 157 |
|
| 158 | wxPanel* STARTWIZARD_PROVIDER_PRIVACY::GetWizardPanel( wxWindow* aParent, STARTWIZARD* aWizard )
|
| 159 | {
|
| 160 | m_model = std::make_shared<STARTWIZARD_PROVIDER_PRIVACY_MODEL>();
|
| 161 | + m_model->m_autoUpdateKiCad = KICAD_SETTINGS::DEFAULT_KICAD_UPDATE_CHECK;
|
| 162 | + m_model->m_autoUpdatePCM = KICAD_SETTINGS::DEFAULT_PCM_UPDATE_CHECK;
|
| 163 | return new PANEL_STARTWIZARD_PRIVACY( m_model, aParent );
|
| 164 | }
|
| 165 |
|
| 166 |
|
| 167 | void STARTWIZARD_PROVIDER_PRIVACY::Finish()
|
| 168 | {
|
| 169 | - COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
|
| 170 | + [[maybe_unused]] COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
|
| 171 | KICAD_SETTINGS* settings = Pgm().GetSettingsManager().GetAppSettings<KICAD_SETTINGS>( "kicad" );
|
| 172 |
|
| 173 | - settings->m_KiCadUpdateCheck = m_model->m_autoUpdateKiCad;
|
| 174 | - settings->m_PcmUpdateCheck = m_model->m_autoUpdatePCM;
|
| 175 | + settings->m_KiCadUpdateCheck = KICAD_SETTINGS::DEFAULT_KICAD_UPDATE_CHECK && m_model->m_autoUpdateKiCad;
|
| 176 | + settings->m_PcmUpdateCheck = KICAD_SETTINGS::DEFAULT_PCM_UPDATE_CHECK && m_model->m_autoUpdatePCM;
|
| 177 | +
|
| 178 | +#if defined( KICAD_UPDATE_CHECK ) || defined( KICAD_PCM_UPDATE_CHECK )
|
| 179 | commonSettings->m_DoNotShowAgain.update_check_prompt = true;
|
| 180 | +#endif
|
| 181 |
|
| 182 | +#ifdef KICAD_USE_SENTRY
|
| 183 | APP_MONITOR::SENTRY::Instance()->SetSentryOptIn( m_model->m_enableSentry );
|
| 184 | commonSettings->m_DoNotShowAgain.data_collection_prompt = true;
|
| 185 | +#endif
|
| 186 |
|
| 187 | Pgm().GetSettingsManager().Save();
|
| 188 | }
|
| 189 | @@ -112,15 +145,23 @@ void STARTWIZARD_PROVIDER_PRIVACY::Finish()
|
| 190 |
|
| 191 | void STARTWIZARD_PROVIDER_PRIVACY::ApplyDefaults()
|
| 192 | {
|
| 193 | - COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
|
| 194 | + [[maybe_unused]] COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
|
| 195 | KICAD_SETTINGS* settings = Pgm().GetSettingsManager().GetAppSettings<KICAD_SETTINGS>( "kicad" );
|
| 196 |
|
| 197 | - settings->m_KiCadUpdateCheck = true;
|
| 198 | - settings->m_PcmUpdateCheck = true;
|
| 199 | + settings->m_KiCadUpdateCheck = KICAD_SETTINGS::DEFAULT_KICAD_UPDATE_CHECK;
|
| 200 | + settings->m_PcmUpdateCheck = KICAD_SETTINGS::DEFAULT_PCM_UPDATE_CHECK;
|
| 201 | +
|
| 202 | +#ifdef KICAD_USE_SENTRY
|
| 203 | APP_MONITOR::SENTRY::Instance()->SetSentryOptIn( false );
|
| 204 | +#endif
|
| 205 |
|
| 206 | +#if defined( KICAD_UPDATE_CHECK ) || defined( KICAD_PCM_UPDATE_CHECK )
|
| 207 | commonSettings->m_DoNotShowAgain.update_check_prompt = true;
|
| 208 | +#endif
|
| 209 | +
|
| 210 | +#ifdef KICAD_USE_SENTRY
|
| 211 | commonSettings->m_DoNotShowAgain.data_collection_prompt = true;
|
| 212 | +#endif
|
| 213 |
|
| 214 | Pgm().SaveCommonSettings();
|
| 215 | }
|
| 216 | diff --git a/common/startwizard/startwizard_provider_privacy.h b/common/startwizard/startwizard_provider_privacy.h
|
| 217 | index b3fa3b7265..441e5ffbe3 100644
|
| 218 | |
| 219 | |
| 220 | @@ -26,8 +26,18 @@
|
| 221 |
|
| 222 | struct STARTWIZARD_PROVIDER_PRIVACY_MODEL
|
| 223 | {
|
| 224 | +#ifdef KICAD_UPDATE_CHECK
|
| 225 | bool m_autoUpdateKiCad = true;
|
| 226 | +#else
|
| 227 | + bool m_autoUpdateKiCad = false;
|
| 228 | +#endif
|
| 229 | +
|
| 230 | +#ifdef KICAD_PCM_UPDATE_CHECK
|
| 231 | bool m_autoUpdatePCM = true;
|
| 232 | +#else
|
| 233 | + bool m_autoUpdatePCM = false;
|
| 234 | +#endif
|
| 235 | +
|
| 236 | bool m_enableSentry = false;
|
| 237 | };
|
| 238 |
|
| 239 | diff --git a/include/settings/kicad_settings.h b/include/settings/kicad_settings.h
|
| 240 | index b337e09707..3b49fd3bef 100644
|
| 241 | |
| 242 | |
| 243 | @@ -42,6 +42,18 @@ struct LIB_OVERRIDE
|
| 244 | class KICOMMON_API KICAD_SETTINGS : public APP_SETTINGS_BASE
|
| 245 | {
|
| 246 | public:
|
| 247 | +#ifdef KICAD_UPDATE_CHECK
|
| 248 | + static constexpr bool DEFAULT_KICAD_UPDATE_CHECK = true;
|
| 249 | +#else
|
| 250 | + static constexpr bool DEFAULT_KICAD_UPDATE_CHECK = false;
|
| 251 | +#endif
|
| 252 | +
|
| 253 | +#ifdef KICAD_PCM_UPDATE_CHECK
|
| 254 | + static constexpr bool DEFAULT_PCM_UPDATE_CHECK = true;
|
| 255 | +#else
|
| 256 | + static constexpr bool DEFAULT_PCM_UPDATE_CHECK = false;
|
| 257 | +#endif
|
| 258 | +
|
| 259 | KICAD_SETTINGS();
|
| 260 |
|
| 261 | virtual ~KICAD_SETTINGS() {}
|
| 262 | diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp
|
| 263 | index 8743e5275a..e0634b3e90 100644
|
| 264 | |
| 265 | |
| 266 | @@ -1495,8 +1495,11 @@ void KICAD_MANAGER_FRAME::OnIdle( wxIdleEvent& aEvent )
|
| 267 | pcbFrame->OnModify();
|
| 268 | }
|
| 269 |
|
| 270 | +#if defined( KICAD_PCM_UPDATE_CHECK ) || defined( KICAD_UPDATE_CHECK )
|
| 271 | KICAD_SETTINGS* settings = kicadSettings();
|
| 272 | +#endif
|
| 273 |
|
| 274 | +#ifdef KICAD_PCM_UPDATE_CHECK
|
| 275 | if( KIPLATFORM::POLICY::GetPolicyBool( POLICY_KEY_PCM ) != KIPLATFORM::POLICY::PBOOL::DISABLED
|
| 276 | && settings->m_PcmUpdateCheck )
|
| 277 | {
|
| 278 | @@ -1505,6 +1508,7 @@ void KICAD_MANAGER_FRAME::OnIdle( wxIdleEvent& aEvent )
|
| 279 |
|
| 280 | m_pcm->RunBackgroundUpdate();
|
| 281 | }
|
| 282 | +#endif
|
| 283 |
|
| 284 | #ifdef KICAD_UPDATE_CHECK
|
| 285 | if( !m_updateManager && settings->m_KiCadUpdateCheck )
|
| 286 | diff --git a/kicad/pcm/pcm.cpp b/kicad/pcm/pcm.cpp
|
| 287 | index ea97965b69..d333b92673 100644
|
| 288 | |
| 289 | |
| 290 | @@ -1183,6 +1183,9 @@ struct UPDATE_CANCELLER
|
| 291 |
|
| 292 | void PLUGIN_CONTENT_MANAGER::RunBackgroundUpdate()
|
| 293 | {
|
| 294 | +#ifndef KICAD_PCM_UPDATE_CHECK
|
| 295 | + return;
|
| 296 | +#else
|
| 297 | // If the thread is already running don't create it again
|
| 298 | if( m_updateThread.joinable() )
|
| 299 | return;
|
| 300 | @@ -1253,6 +1256,7 @@ void PLUGIN_CONTENT_MANAGER::RunBackgroundUpdate()
|
| 301 | // Update the badge on PCM button
|
| 302 | m_availableUpdateCallback( availableUpdateCount );
|
| 303 | } );
|
| 304 | +#endif
|
| 305 | }
|
| 306 |
|
| 307 |
|
| 308 | --
|
| 309 | GitLab
|
| 310 |
|