Git commit 0f4cc4b9d2836d7d8fd35c1730a287b71d19f64a by Michael Pyne. Committed on 07/01/2019 at 01:28. Pushed by mpyne into branch 'non-kde-deps'.
first-run: Remove kde-language support. This requires File::Find which interferes with --initial-setup on at least Debian. And frankly the option is almost surely broken for some time now; it's already been removed in the make_it_mojo branch. M +0 -1 CMakeLists.txt M +5 -16 doc/index.docbook M +0 -92 kdesrc-build M +0 -50 modules/ksb/Application.pm M +0 -7 modules/ksb/BuildSystem.pm M +1 -4 modules/ksb/Module.pm M +0 -4 modules/ksb/ModuleResolver.pm M +1 -2 modules/ksb/Updater/Svn.pm D +0 -221 modules/ksb/l10nSystem.pm M +4 -4 vim/syntax/kdesrc-buildrc.vim https://invent.kde.org/kde/kdesrc-build/commit/0f4cc4b9d2836d7d8fd35c1730a287b71d19f64a diff --git a/CMakeLists.txt b/CMakeLists.txt index 5af80d9..27c5642 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,7 +53,6 @@ if (KDESRC_BUILD_INSTALL_MODULES) modules/ksb/Updater.pm modules/ksb/Util.pm modules/ksb/Version.pm - modules/ksb/l10nSystem.pm DESTINATION ${KDESRC_BUILD_MODULE_INSTALL_PREFIX}/ksb) install(FILES diff --git a/doc/index.docbook b/doc/index.docbook index 4fbfe1b..8eabbd9 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -2385,24 +2385,13 @@ well.</entry> <row id="conf-kde-languages"> <entry>kde-languages</entry> <entry>Cannot be overridden</entry> -<entry><para>This option allows you to choose to download and install -localization packages along with &kde;. You might do this if you do not live in -the United States and would like to use &kde; translated into your native -language.</para> - -<para>To use this option, set it to a space-separated list of languages to -install. Each language has a language code associated with it, which you -can look up at this page: <ulink -url="http://l10n.kde.org/teams-list.php">http://l10n.kde.org/teams-list.php</ulink>. +<entry><para>This option was intended to allow for building language packs from +the &kde; repository but has been removed due to brokenness. Interested users +should follow the <ulink +url="https://l10n.kde.org/docs/translation-howto/">normal translation build +instructions instead</ulink>. </para> -<para>It is alright to choose only one language. By default, none are -downloaded, which means &kde; will display in American English.</para> - -<para>For instance, to choose to install French, you would set the option to -something like: <userinput><option>kde-languages</option> -<replaceable>fr</replaceable></userinput>. You would still need to use -&systemsettings; in order to choose the French language, however.</para> </entry> </row> diff --git a/kdesrc-build b/kdesrc-build index ab3f99a..badcea7 100755 --- a/kdesrc-build +++ b/kdesrc-build @@ -123,7 +123,6 @@ DONE # enough to cause errors. eval { use Carp; - use File::Find; # For our lndir reimplementation. use File::Path qw(remove_tree); require ksb::Debug; @@ -172,97 +171,6 @@ ksb::Version->path($baseBinDir); # # Everything else should be in an appropriate class. -# Subroutine to recursively symlink a directory into another location, in a -# similar fashion to how the XFree/X.org lndir() program does it. This is -# reimplemented here since some systems lndir doesn't seem to work right. -# -# Used from ksb::l10nSystem -# -# As a special exception to the GNU GPL, you may use and redistribute this -# function however you would like (i.e. consider it public domain). -# -# The first parameter is the directory to symlink from. -# The second parameter is the destination directory name. -# -# e.g. if you have $from/foo and $from/bar, lndir would create $to/foo and -# $to/bar. -# -# All intervening directories will be created as needed. In addition, you -# may safely run this function again if you only want to catch additional files -# in the source directory. -# -# Note that this function will unconditionally output the files/directories -# created, as it is meant to be a close match to lndir. -# -# RETURN VALUE: Boolean true (non-zero) if successful, Boolean false (0, "") -# if unsuccessful. -sub safe_lndir -{ - my ($from, $to) = @_; - - # Create destination directory. - if (not -e $to) - { - print "$to\n"; - if (not pretending() and not super_mkdir($to)) - { - error ("Couldn't create directory r[$to]: b[r[$!]"); - return 0; - } - } - - # Create closure callback subroutine. - my $wanted = sub { - my $dir = $File::Find::dir; - my $file = $File::Find::fullname; - $dir =~ s/$from/$to/; - - # Ignore the .svn directory and files. - return if $dir =~ m,/\.svn,; - - # Create the directory. - if (not -e $dir) - { - print "$dir\n"; - - if (not pretending()) - { - super_mkdir ($dir) or croak_runtime("Couldn't create directory $dir: $!"); - } - } - - # Symlink the file. Check if it's a regular file because File::Find - # has no qualms about telling you you have a file called "foo/bar" - # before pointing out that it was really a directory. - if (-f $file and not -e "$dir/$_") - { - print "$dir/$_\n"; - - if (not pretending()) - { - symlink $File::Find::fullname, "$dir/$_" or - croak_runtime("Couldn't create file $dir/$_: $!"); - } - } - }; - - # Recursively descend from source dir using File::Find - eval { - find ({ 'wanted' => $wanted, - 'follow_fast' => 1, - 'follow_skip' => 2}, - $from); - }; - - if ($@) - { - error ("Unable to symlink $from to $to: $@"); - return 0; - } - - return 1; -} - # Subroutine to delete recursively, everything under the given directory, # unless we're in pretend mode. # diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm index 0513c52..0cd260c 100644 --- a/modules/ksb/Application.pm +++ b/modules/ksb/Application.pm @@ -458,10 +458,6 @@ sub generateModuleList else { # Build everything in the rc-file, in the order specified. @modules = $moduleResolver->expandModuleSets(@optionModulesAndSets); - - if ($ctx->getOption('kde-languages')) { - @modules = _expandl10nModules($ctx, @modules); - } } # If modules were on the command line then they are effectively forced to @@ -1971,52 +1967,6 @@ sub _defineNewModuleFactory }; } -# This function converts any 'l10n' references on the command line to return a l10n -# module with the proper build system, scm type, etc. -# -# The languages are selected using global/kde-languages (which should be used -# exclusively from the configuration file). -sub _expandl10nModules -{ - my ($ctx, @modules) = @_; - my $l10n = 'l10n-kde4'; - - assert_isa($ctx, 'ksb::BuildContext'); - - # Only filter if 'l10n' is actually present in list. - my @matches = grep {$_->name() =~ /^(?:$l10n|l10n)$/} @modules; - my @langs = split(' ', $ctx->getOption('kde-languages')); - - return @modules if (!@matches || !@langs); - - my $l10nModule; - for my $match (@matches) - { - # Remove all instances of l10n. - @modules = grep {$_->name() ne $match->name()} @modules; - - # Save l10n module if user had it in config. We only save the first - # one encountered though. - $l10nModule //= $match; - } - - # No l10n module? Just create one. - $l10nModule //= ksb::Module->new($ctx, $l10n); - - whisper ("\tAdding languages ", join(';', @langs), " to build."); - - $l10nModule->setScmType('l10n'); - my $scm = $l10nModule->scm(); - - # Add all required directories to the l10n module. Its buildsystem should - # know to skip scripts and templates. - $scm->setLanguageDirs(qw/scripts templates/, @langs); - $l10nModule->setBuildSystem($scm); - - push @modules, $l10nModule; - return @modules; -} - # Updates the built-in phase list for all Modules passed into this function in # accordance with the options set by the user. sub _updateModulePhases diff --git a/modules/ksb/BuildSystem.pm b/modules/ksb/BuildSystem.pm index 2053f3b..08bb1a7 100644 --- a/modules/ksb/BuildSystem.pm +++ b/modules/ksb/BuildSystem.pm @@ -274,13 +274,6 @@ sub createBuildSystem return 0; } - if ($builddir ne $srcdir && $self->needsBuilddirHack() && 0 != log_command($module, 'lndir', - ['kdesrc-build', 'main::safe_lndir', $srcdir, $builddir])) - { - error ("\tUnable to setup symlinked build directory for r[$module]!!"); - return 0; - } - return 1; } diff --git a/modules/ksb/Module.pm b/modules/ksb/Module.pm index bf4f77d..721d816 100644 --- a/modules/ksb/Module.pm +++ b/modules/ksb/Module.pm @@ -16,8 +16,6 @@ use ksb::IPC; use ksb::Debug; use ksb::Util; -use ksb::l10nSystem; - use ksb::Updater::Svn; use ksb::Updater::Git; use ksb::Updater::Bzr; @@ -253,7 +251,6 @@ sub setScmType when('git') { $newType = ksb::Updater::Git->new($self); } when('proj') { $newType = ksb::Updater::KDEProject->new($self); } when('metadata') { $newType = ksb::Updater::KDEProjectMetadata->new($self); } - when('l10n') { $newType = ksb::l10nSystem->new($self); } when('svn') { $newType = ksb::Updater::Svn->new($self); } when('bzr') { $newType = ksb::Updater::Bzr->new($self); } default { $newType = undef; } @@ -372,7 +369,7 @@ sub setBuildSystem } # Current possible build system types: -# KDE (i.e. cmake), Qt, l10n (KDE language buildsystem), autotools (either +# KDE (i.e. cmake), Qt, autotools (either # configure or autogen.sh). A final possibility is 'pendingSource' which # simply means that we don't know yet. # diff --git a/modules/ksb/ModuleResolver.pm b/modules/ksb/ModuleResolver.pm index b6b36b2..6a765ad 100644 --- a/modules/ksb/ModuleResolver.pm +++ b/modules/ksb/ModuleResolver.pm @@ -245,10 +245,6 @@ sub _resolveSingleSelector $selector = ksb::Module->new($ctx, $selectorName); $selector->phases()->phases($ctx->phases()->phases()); - if ($selectorName eq 'l10n') { - $_->setScmType('l10n') - } - $selector->setScmType('proj'); $selector->setOption('#guessed-kde-project', 1); $selector->setOption('#selected-by', 'initial-guess'); diff --git a/modules/ksb/Updater/Svn.pm b/modules/ksb/Updater/Svn.pm index 383f470..969d914 100644 --- a/modules/ksb/Updater/Svn.pm +++ b/modules/ksb/Updater/Svn.pm @@ -1,7 +1,6 @@ package ksb::Updater::Svn 0.10; -# Module responsible for source code updates on Subversion modules. Used as a -# superclass for our l10n update/build system as well. +# Module responsible for source code updates on Subversion modules. use strict; use warnings; diff --git a/modules/ksb/l10nSystem.pm b/modules/ksb/l10nSystem.pm deleted file mode 100644 index f2a0ea1..0000000 --- a/modules/ksb/l10nSystem.pm +++ /dev/null @@ -1,221 +0,0 @@ -package ksb::l10nSystem 0.10; - -# This class is an implementation of both the source and build interfaces needed to -# support building KDE l10n modules. - -use strict; -use warnings; -use 5.014; - -use parent qw(ksb::Updater::Svn ksb::BuildSystem); - -use ksb::Debug; -use ksb::Util; - -sub new -{ - my ($class, $module) = @_; - - # Ensure associated module updates from the proper svn path. - # TODO: Support different localization branches? - - $module->setOption('module-base-path', 'trunk/l10n-kde4'); - my $refreshMessage = "an update happened"; - return bless { module => $module, needsRefreshed => $refreshMessage }, $class; -} - -sub module -{ - my $self = shift; - return $self->{module}; -} - -sub configuredModuleFileName -{ - # Not quite correct (we should be looking at each individual language - # but it at least keeps the process going. - return 'teamnames'; -} - -# Sets the directories that are to be checked out/built/etc. -# There should be one l10nSystem for the entire l10n build (i.e. add -# all required support dirs and languages). -sub setLanguageDirs -{ - my ($self, @languageDirs) = @_; - $self->{l10n_dirs} = \@languageDirs; -} - -# Returns true if the given subdirectory (reference from the module's root source directory) -# can be built or not. Should be reimplemented by subclasses as appropriate. -sub isSubdirBuildable -{ - my ($self, $subdir) = @_; - return ($subdir ne 'scripts' && $subdir ne 'templates'); -} - -sub prepareModuleBuildEnvironment -{ - my ($ctx, $module, $prefix) = @_; - - $ctx->prependEnvironmentValue('CMAKE_PREFIX_PATH', $prefix); -} - -# scm-specific update procedure. -# May change the current directory as necessary. -sub updateInternal -{ - my $self = assert_isa(shift, 'ksb::Updater'); - my $module = $self->module(); - my $fullpath = $module->fullpath('source'); - my @dirs = @{$self->{l10n_dirs}}; - - if (-e "$fullpath/.svn") { - $self->check_module_validity(); - my $count = $self->update_module_path(@dirs); - - $self->{needsRefreshed} = '' if $count == 0; - return $count; - } - else { - return $self->checkout_module_path(@dirs); - } -} - -sub name -{ - return 'l10n'; -} - -# Returns a list of just the languages to install. -sub languages -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - my @langs = @{$self->{l10n_dirs}}; - - return grep { $self->isSubdirBuildable($_); } (@langs); -} - -# Buildsystem support section - -sub needsRefreshed -{ - my $self = shift; - - # Should be a 'reason' string except if no update happened. - return $self->{needsRefreshed}; -} - -sub buildInternal -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - my $builddir = $self->module()->fullpath('build'); - my @langs = $self->languages(); - my $result = ($self->safe_make({ - target => undef, - message => "Building localization for language...", - logbase => "build", - subdirs => \@langs, - }))->{was_successful}; - - return $result; -} - -sub configureInternal -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - - my $builddir = $self->module()->fullpath('build'); - my @langs = $self->languages(); - my $result = 0; - - for my $lang (@langs) { - my $prefix = $self->module()->installationPath(); - p_chdir("$builddir/$lang"); - - info ("\tConfiguring to build language $lang"); - $result = (log_command($self->module(), "cmake-$lang", - ['cmake', '-DCMAKE_INSTALL_PREFIX=' . $prefix]) == 0) || $result; - } - - return $result; -} - -sub installInternal -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - my $builddir = $self->module()->fullpath('build'); - my @langs = $self->languages(); - - return ($self->safe_make({ - target => 'install', - message => "Installing language...", - logbase => "install", - subdirs => \@langs, - }) == 0); -} - -# Subroutine to link a source directory into an alternate directory in -# order to fake srcdir != builddir for modules that don't natively support -# it. The first parameter is the module to prepare. -# -# The return value is true (non-zero) if it succeeded, and 0 (false) if it -# failed. -# -# On return from the subroutine the current directory will be in the build -# directory, since that's the only directory you should touch from then on. -sub prepareFakeBuilddir -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - my $module = $self->module(); - my $builddir = $module->fullpath('build'); - my $srcdir = $module->fullpath('source'); - - # List reference, not a real list. The initial kdesrc-build does *NOT* - # fork another kdesrc-build using exec, see sub log_command() for more - # info. - my $args = [ 'kdesrc-build', 'main::safe_lndir', $srcdir, $builddir ]; - - info ("\tSetting up alternate build directory for l10n"); - return (0 == log_command ($module, 'create-builddir', $args)); -} - -# Subroutine to create the build system for a module. This involves making -# sure the directory exists and then running any preparatory steps (like -# for l10n modules). This subroutine assumes that the module is already -# downloaded. -# -# Return convention: boolean (inherited) -sub createBuildSystem -{ - my $self = assert_isa(shift, 'ksb::l10nSystem'); - my $module = $self->module(); - my $builddir = $module->fullpath('build'); - - # l10n doesn't support srcdir != builddir, fake it. - whisper ("\tFaking builddir for g[$module]"); - if (!$self->prepareFakeBuilddir()) - { - error ("Error creating r[$module] build system!"); - return 0; - } - - p_chdir ($builddir); - - my @langs = @{$self->{l10n_dirs}}; - @langs = grep { $self->isSubdirBuildable($_) } (@langs); - - foreach my $lang (@langs) { - my $cmd_ref = [ './scripts/autogen.sh', $lang ]; - if (log_command ($module, "build-system-$lang", $cmd_ref)) - { - error ("\tUnable to create build system for r[$module]"); - } - } - - $module->setOption('#reconfigure', 1); # Force reconfigure of the module - - return 1; -} - -1; diff --git a/vim/syntax/kdesrc-buildrc.vim b/vim/syntax/kdesrc-buildrc.vim index 6cd4808..bc1495f 100644 --- a/vim/syntax/kdesrc-buildrc.vim +++ b/vim/syntax/kdesrc-buildrc.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: kdesrc-build configuration file " Maintainer: Michael Pyne <[email protected]> -" Latest Revision: 23 July 2017 +" Latest Revision: 6 January 2019 -" Copyright (c) 2014-2017 Michael Pyne <[email protected]> +" Copyright (c) 2014-2019 Michael Pyne <[email protected]> " Redistribution and use in source and binary forms, with or without " modification, are permitted provided that the following conditions " are met: @@ -45,13 +45,13 @@ syn keyword ksbrcOption contained skipwhite nextgroup=ksbrcStringValue syn keyword ksbrcGlobalOption contained skipwhite nextgroup=ksbrcStringValue \ branch-group git-desired-protocol git-repository-base http-proxy - \ kde-languages niceness debug-level persistent-data-file set-env + \ niceness debug-level persistent-data-file set-env " MUST BE CONSISTENT WITH ABOVE. Used when a module-set option is used in the " wrong spot to highlight the error. syn keyword ksbrcErrorGlobalOption contained skipwhite nextgroup=ksbrcStringValue \ branch-group git-desired-protocol git-repository-base http-proxy - \ kde-languages niceness debug-level persistent-data-file set-env + \ niceness debug-level persistent-data-file set-env syn keyword ksbrcModuleSetOption contained skipwhite nextgroup=ksbrcStringValue \ use-modules ignore-modules
