summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorCayetano Santos <csantosb@inventati.org>2026-06-22 11:14:18 +0200
committerCayetano Santos <csantosb@inventati.org>2026-06-28 10:53:58 +0200
commit69b54edd1818cd03bc299b979a74a5c348c36aab (patch)
tree89fd6fda8f21369c15a8498cedfc4f53d90e0472 /gnu
parentf11b5b17cfdf4dc9cb48ac068f5a369a4c18c462 (diff)
gnu: kicad: Disable check updates.
* gnu/packages/patches/kicad-disable-updates.patch: Add file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/electronics.scm (kicad)[source]: Add patch. Co-authored-by: Peter Polidoro <peter@polidoro.io> Merges guix/guix!9452
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/electronics.scm3
-rw-r--r--gnu/packages/patches/kicad-disable-updates.patch310
3 files changed, 314 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index b53cb4cfe4b..2d15b3df8af 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1740,6 +1740,7 @@ dist_patch_DATA = \
1740 %D%/packages/patches/kcontacts-incorrect-country-name.patch \ 1740 %D%/packages/patches/kcontacts-incorrect-country-name.patch \
1741 %D%/packages/patches/kde-cli-tools-delay-mime-db.patch \ 1741 %D%/packages/patches/kde-cli-tools-delay-mime-db.patch \
1742 %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \ 1742 %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \
1743 %D%/packages/patches/kicad-disable-updates.patch \
1743 %D%/packages/patches/kiki-level-selection-crash.patch \ 1744 %D%/packages/patches/kiki-level-selection-crash.patch \
1744 %D%/packages/patches/kiki-makefile.patch \ 1745 %D%/packages/patches/kiki-makefile.patch \
1745 %D%/packages/patches/kiki-missing-includes.patch \ 1746 %D%/packages/patches/kiki-missing-includes.patch \
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index 52b912d8166..49b61fa4e3f 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -1303,6 +1303,9 @@ characterization result in a liberty library file.")
1303 (sha256 1303 (sha256
1304 (base32 1304 (base32
1305 "1dp2rcblpz1i5hzrv5kb7cq91agha5msm2slhny3gf8x0gbzmawq")) 1305 "1dp2rcblpz1i5hzrv5kb7cq91agha5msm2slhny3gf8x0gbzmawq"))
1306 ;; See: https://gitlab.com/kicad/code/kicad/-/merge_requests/2659.
1307 (patches
1308 (search-patches "kicad-disable-updates.patch"))
1306 (file-name (git-file-name name version)))) 1309 (file-name (git-file-name name version))))
1307 (build-system cmake-build-system) 1310 (build-system cmake-build-system)
1308 (arguments 1311 (arguments
diff --git a/gnu/packages/patches/kicad-disable-updates.patch b/gnu/packages/patches/kicad-disable-updates.patch
new file mode 100644
index 00000000000..15cdb7043da
--- /dev/null
+++ b/gnu/packages/patches/kicad-disable-updates.patch
@@ -0,0 +1,310 @@
1From 8fef1fc6d10a6967358720325f0ae9e498eb9198 Mon Sep 17 00:00:00 2001
2From: Peter Polidoro <peter@polidoro.io>
3Date: Tue, 23 Jun 2026 13:27:14 -0400
4Subject: [PATCH] Add build options to disable update checks
5
6Add a KICAD_PCM_UPDATE_CHECK CMake option alongside the existing
7KICAD_UPDATE_CHECK option.
8
9When either update mechanism is disabled at build time, default its setting to
10false, hide the related setup/preferences controls, and skip the corresponding
11startup 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
23diff --git a/CMakeLists.txt b/CMakeLists.txt
24index af30c49174..3e321de38a 100644
25--- a/CMakeLists.txt
26+++ b/CMakeLists.txt
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> )
48diff --git a/common/dialogs/panel_packages_and_updates.cpp b/common/dialogs/panel_packages_and_updates.cpp
49index eac0bee3f6..3582312ce7 100644
50--- a/common/dialogs/panel_packages_and_updates.cpp
51+++ b/common/dialogs/panel_packages_and_updates.cpp
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();
85diff --git a/common/settings/kicad_settings.cpp b/common/settings/kicad_settings.cpp
86index ea350e02df..dbe78b5389 100644
87--- a/common/settings/kicad_settings.cpp
88+++ b/common/settings/kicad_settings.cpp
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
108diff --git a/common/startwizard/startwizard_provider_privacy.cpp b/common/startwizard/startwizard_provider_privacy.cpp
109index 1689482db3..cc7ae223d7 100644
110--- a/common/startwizard/startwizard_provider_privacy.cpp
111+++ b/common/startwizard/startwizard_provider_privacy.cpp
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 }
216diff --git a/common/startwizard/startwizard_provider_privacy.h b/common/startwizard/startwizard_provider_privacy.h
217index b3fa3b7265..441e5ffbe3 100644
218--- a/common/startwizard/startwizard_provider_privacy.h
219+++ b/common/startwizard/startwizard_provider_privacy.h
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
239diff --git a/include/settings/kicad_settings.h b/include/settings/kicad_settings.h
240index b337e09707..3b49fd3bef 100644
241--- a/include/settings/kicad_settings.h
242+++ b/include/settings/kicad_settings.h
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() {}
262diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp
263index 8743e5275a..e0634b3e90 100644
264--- a/kicad/kicad_manager_frame.cpp
265+++ b/kicad/kicad_manager_frame.cpp
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 )
286diff --git a/kicad/pcm/pcm.cpp b/kicad/pcm/pcm.cpp
287index ea97965b69..d333b92673 100644
288--- a/kicad/pcm/pcm.cpp
289+++ b/kicad/pcm/pcm.cpp
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--
309GitLab
310