Git commit 900a08a7d8421452be08d0e0967d46975541cb21 by Michael Pyne. Committed on 15/03/2014 at 22:51. Pushed by mpyne into branch 'master'.
kde-projects: Add --no-metadata command line option. BUG:331939 FIXED-IN:1.16 M +12 -0 doc/index.docbook M +20 -0 doc/man-kdesrc-build.1.docbook M +11 -7 modules/ksb/Application.pm M +1 -1 modules/ksb/BuildContext.pm http://commits.kde.org/kdesrc-build/900a08a7d8421452be08d0e0967d46975541cb21 diff --git a/doc/index.docbook b/doc/index.docbook index 2808bf2..ccdac0a 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -2855,6 +2855,18 @@ Skip the build process. </para></listitem> </varlistentry> +<varlistentry id="cmdline-no-metadata"> +<term><parameter>--no-metadata</parameter></term> +<listitem><para> +Do not automatically download the extra metadata needed for &kde; git modules. +The source updates for the modules themselves will still occur unless you pass +<link linkend="cmdline-no-src">--no-src</link> as well. +</para><para> +This can be useful if you are frequently re-running &kdesrc-build; since the +metadata does not change very often. +</para></listitem> +</varlistentry> + <varlistentry id="cmdline-no-install"> <term><parameter>--no-install</parameter></term> <listitem><para> diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook index f58b619..7a6a642 100644 --- a/doc/man-kdesrc-build.1.docbook +++ b/doc/man-kdesrc-build.1.docbook @@ -163,6 +163,26 @@ combining short options into one at this point. (E.g. running <varlistentry> <term> +<option>--no-metadata</option> +</term> + +<listitem> +<para> + Skips the metadata update phase for KDE modules. Other phases (including + the source update phase) are included as normal. If you wish to avoid all network + updates you should also pass <option>--no-src</option>. +</para> + +<para> + This option can be useful if you are frequently running + <command>kdesrc-build</command> since the metadata itself does not change + very often. +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term> <option>--no-install</option> </term> diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm index 6046ed6..0ee640b 100644 --- a/modules/ksb/Application.pm +++ b/modules/ksb/Application.pm @@ -259,7 +259,7 @@ DONE GetOptionsFromArray(\@options, \%foundOptions, 'version', 'author', 'help', 'disable-snapshots|no-snapshots', 'install', 'uninstall', 'no-src|no-svn', 'no-install', 'no-build', - 'no-tests', 'build-when-unchanged|force-build', + 'no-tests', 'build-when-unchanged|force-build', 'no-metadata', 'verbose|v', 'quiet|quite|q', 'really-quiet', 'debug', 'reconfigure', 'colorful-output|color!', 'async!', 'src-only|svn-only', 'build-only', 'install-only', 'build-system-only', @@ -609,9 +609,9 @@ sub generateModuleList return @modules; } -# Causes kde-projects metadata to be downloaded (unless --pretend or --no-src -# is in effect, although we'll download even in --pretend if nothing is -# available). +# Causes kde-projects metadata to be downloaded (unless --pretend, --no-src, or +# --no-metadata is in effect, although we'll download even in --pretend if +# nothing is available). # # No return value. sub _downloadKDEProjectMetadata @@ -624,13 +624,17 @@ sub _downloadKDEProjectMetadata my $sourceDir = $metadataModule->getSourceDir(); super_mkdir($sourceDir); + my $updateDesired = !$ctx->getOption('no-metadata') && $ctx->phases()->has('update'); my $updateNeeded = (! -e "$sourceDir/dependency-data-common"); - if (!$ctx->phases()->has('update') && $updateNeeded) { - warning (" r[b[*] Skipping build metadata update due to b[--no-src], but this is apparently required!"); + my $lastUpdate = $ctx->getPersistentOption('global', 'last-metadata-update') // 0; + + if (!$updateDesired && $updateNeeded && (time - ($lastUpdate)) >= 7200) { + warning (" r[b[*] Skipping build metadata update, but it hasn't been updated recently!"); } - if ($ctx->phases()->has('update') && (!pretending() || $updateNeeded)) { + if ($updateDesired && (!pretending() || $updateNeeded)) { $metadataModule->scm()->updateInternal(); + $ctx->setPersistentOption('global', 'last-metadata-update', time); } }; diff --git a/modules/ksb/BuildContext.pm b/modules/ksb/BuildContext.pm index c5f25e4..5b92bc5 100644 --- a/modules/ksb/BuildContext.pm +++ b/modules/ksb/BuildContext.pm @@ -878,7 +878,7 @@ sub getKDEProjectMetadataFilehandle # Must use ->phases() directly to tell if we will be updating since # modules are not all processed until after this function is called... - my $updating = grep { /^update$/ } (@{$self->phases()}); + my $updating = grep { /^update$/ } (@{$self->phases()}) && !$self->getOption('no-metadata'); if (!pretending() && $updating) { info (" * Downloading projects.kde.org project database..."); $result = download_file($url, $file, $self->getOption('http-proxy'));
