Git commit 9b8ccbfe26bc751f42df49b2dc15f4a1ea886480 by Andrew Shark.
Committed on 14/01/2024 at 02:38.
Pushed by ashark into branch 'master'.

Eliminate distinction between `prefix` and `install-dir`

We will not use `--prefix` cli option or `prefix` config option anymore, 
because it means same thing what `install-dir` was meant for.

- For those who used '$MODULE' or '${MODULE}' in the `prefix` config option, we 
now will make that substitution in `install-dir` config option.
- Add a warning message if the prefix config option still found in user config

Closes #141

M  +1    -1    data/build-include/qt5.ksb
M  +1    -1    data/build-include/qt6.ksb
M  +7    -17   doc/conf-options-table.docbook
M  +0    -18   doc/man-kdesrc-build.1.docbook
M  +3    -4    doc/supported-cmdline-params.docbook
M  +3    -0    modules/ksb/Application.pm
M  +0    -1    modules/ksb/BuildContext.pm
M  +4    -4    modules/ksb/BuildSystem/KDECMake.pm
M  +6    -6    modules/ksb/BuildSystem/Qt5.pm
M  +3    -5    modules/ksb/Cmdline.pm
M  +3    -9    modules/ksb/Module.pm

https://invent.kde.org/sdk/kdesrc-build/-/commit/9b8ccbfe26bc751f42df49b2dc15f4a1ea886480

diff --git a/data/build-include/qt5.ksb b/data/build-include/qt5.ksb
index f90f241d..7dee09f2 100644
--- a/data/build-include/qt5.ksb
+++ b/data/build-include/qt5.ksb
@@ -15,7 +15,7 @@ module-set qt5-set
     # ignore-modules qtwebengine
 
     # install path. This *MUST* match your qtdir setting in kdesrc-buildrc!
-    prefix ${qtdir}
+    install-dir ${qtdir}
 
     configure-flags -release -reduce-relocations -force-debug-info 
-separate-debug-info -skip qtdocgallery
 
diff --git a/data/build-include/qt6.ksb b/data/build-include/qt6.ksb
index 35cedc94..4259b401 100644
--- a/data/build-include/qt6.ksb
+++ b/data/build-include/qt6.ksb
@@ -10,7 +10,7 @@ module-set qt6-set
     branch     6.6
 
     # install path. This *MUST* match your qtdir setting in kdesrc-buildrc!
-    prefix ${qtdir}
+    install-dir ${qtdir}
 
     # These have been manually placed in dependency order based on the
     # .gitmodules file in https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules
diff --git a/doc/conf-options-table.docbook b/doc/conf-options-table.docbook
index e74858b1..86e35dbb 100644
--- a/doc/conf-options-table.docbook
+++ b/doc/conf-options-table.docbook
@@ -791,11 +791,17 @@ flag.</para>
 <member>Type</member><member>String</member>
 <member>Default value</member><member><filename 
class="directory">~/kde/usr</filename></member>
 </simplelist>
-<para>This option sets the directory that &kde; will be installed to after it
+<para>This option controls where to install the module after it
 is built. If you
 change this to a directory needing root access, you may want to read about the
 <link linkend="conf-make-install-prefix">make-install-prefix</link> option as
 well.</para>
+<para>
+Changing this option for specific module allows you to install it to a 
different directory than
+where the &kde; Platform libraries are installed, such as if you were using
+&kdesrc-build; only to build applications.</para>
+<para>You can use <varname>${MODULE}</varname> or <varname>$MODULE</varname>
+in the path to have them expanded to the module's name.</para>
 </entry>
 </row>
 
@@ -1001,22 +1007,6 @@ the auto-detection. In this case you can manually 
specify the correct build type
 </entry>
 </row>
 
-<row id="conf-prefix">
-<entry>prefix</entry>
-<entry>
-<simplelist type='horiz' columns='2'>
-<member>Type</member><member>String</member>
-</simplelist>
-<para>This option controls where to install the module (normally the
-<option><link linkend="conf-install-dir">install-dir</link></option> setting 
is used).
-Using this option allows you to install a module to a different directory than
-where the KDE Platform libraries are installed, such as if you were using
-&kdesrc-build; only to build applications.</para>
-<para>You can use <varname>${MODULE}</varname> or <varname>$MODULE</varname>
-in the path to have them expanded to the module's name.</para>
-</entry>
-</row>
-
 <row id="conf-purge-old-logs">
 <entry>purge-old-logs</entry>
 <entry>
diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook
index fd0cb45f..59279ee1 100644
--- a/doc/man-kdesrc-build.1.docbook
+++ b/doc/man-kdesrc-build.1.docbook
@@ -606,24 +606,6 @@ Edit the "~/.bashrc" (or other shell rc file) to add 
&kdesrc-build; to your $PAT
 </listitem>
 </varlistentry>
 
-<varlistentry>
-<term>
-<option>--prefix=<replaceable>foo</replaceable></option>
-</term>
-
-<listitem>
-<para>
-    Overrides the <option>install-dir</option> setting to be
-    <replaceable>foo</replaceable> for this run. In addition, implies
-    <option>--reconfigure</option>. It <emphasis>does not</emphasis> actually
-    perform the action you would think it does (overriding the
-    <option>prefix</option> option to change where modules are installed),
-    although by default modules are installed to the 
<option>install-dir</option>
-    setting if <option>prefix</option> is not set.
-</para>
-</listitem>
-</varlistentry>
-
 <varlistentry>
 <term>
 <option>--nice=<replaceable>foo</replaceable></option>
diff --git a/doc/supported-cmdline-params.docbook 
b/doc/supported-cmdline-params.docbook
index ab7923bc..71993bdc 100644
--- a/doc/supported-cmdline-params.docbook
+++ b/doc/supported-cmdline-params.docbook
@@ -526,11 +526,10 @@ 
linkend="cmdline-refresh-build">--refresh-build</link></parameter> is used.
 </para></listitem>
 </varlistentry>
 
-<varlistentry id="cmdline-prefix">
-<term><option>--prefix <replaceable>/path/to/kde</replaceable></option></term>
+<varlistentry id="cmdline-install-dir">
+<term><option>--install-dir <replaceable>path</replaceable></option></term>
 <listitem><para>
-This allows you to change the directory that &kde; will be installed to from
-the command line.  This option implies <link
+This allows you to change the directory where modules will be installed to. 
This option implies <link
 linkend="cmdline-reconfigure"><option>--reconfigure</option></link>,
 but using <link 
linkend="cmdline-refresh-build"><option>--refresh-build</option></link>
 may still be required.
diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm
index 2a99c248..92c63258 100644
--- a/modules/ksb/Application.pm
+++ b/modules/ksb/Application.pm
@@ -960,6 +960,9 @@ sub _parseModuleOptions ($ctx, $fileReader, $module, 
$endRE=undef)
             if ($option eq "kdedir") {  # todo This message is temporary. 
Remove it after 09.04.2024.
                 error "r[Please edit your config. Replace \"b[kdedir]r[\" with 
\"b[install-dir]r[\".";
             }
+            if ($option eq "prefix") {  # todo This message is temporary. 
Remove it after 14.04.2024.
+                error "r[Please edit your config. Replace \"b[prefix]r[\" with 
\"b[install-dir]r[\".";
+            }
             die ksb::BuildException::Config->new($option, "Unrecognized option 
\"$option\" found at $current_file:$.");
         }
 
diff --git a/modules/ksb/BuildContext.pm b/modules/ksb/BuildContext.pm
index 932f3c64..cd074ef7 100644
--- a/modules/ksb/BuildContext.pm
+++ b/modules/ksb/BuildContext.pm
@@ -108,7 +108,6 @@ my %internalGlobalOptions = (
     "manual-update"        => "",
     "niceness"             => "10",
     "no-src"               => "",
-    "prefix"               => "", # Override installation prefix.
     "pretend"              => "",
     "reconfigure"          => "",
     "refresh-build"        => "",
diff --git a/modules/ksb/BuildSystem/KDECMake.pm 
b/modules/ksb/BuildSystem/KDECMake.pm
index 67bc51c2..be94fe58 100644
--- a/modules/ksb/BuildSystem/KDECMake.pm
+++ b/modules/ksb/BuildSystem/KDECMake.pm
@@ -542,13 +542,13 @@ sub _safe_run_cmake
         push @commands, "-DCMAKE_CXX_FLAGS:STRING=$cxxflags";
     }
 
-    my $prefix = $module->installationPath();
+    my $installdir = $module->installationPath();
 
-    push @commands, "-DCMAKE_INSTALL_PREFIX=$prefix";
+    push @commands, "-DCMAKE_INSTALL_PREFIX=$installdir";
 
-    # Add custom Qt to the prefix (but don't overwrite a user-set prefix)
+    # Add custom Qt to the prefix (but don't overwrite a user-set install-dir)
     my $qtdir = $module->getOption('qtdir');
-    if ($qtdir && $qtdir ne $prefix &&
+    if ($qtdir && $qtdir ne $installdir &&
         !grep { /^\s*-DCMAKE_PREFIX_PATH/ } (@commands)
        )
     {
diff --git a/modules/ksb/BuildSystem/Qt5.pm b/modules/ksb/BuildSystem/Qt5.pm
index fdf4e695..658fe633 100644
--- a/modules/ksb/BuildSystem/Qt5.pm
+++ b/modules/ksb/BuildSystem/Qt5.pm
@@ -44,23 +44,23 @@ sub configureInternal
     my $cxxflags = $module->getOption('cxxflags');
     $module->buildContext()->queueEnvironmentVariable('CXXFLAGS', $cxxflags);
 
-    my $prefix = $module->getOption('prefix');
+    my $installdir = $module->getOption('install-dir');
     my $qtdir  = $module->getOption('qtdir');
 
-    if ($prefix && $qtdir && $prefix ne $qtdir) {
+    if ($installdir && $qtdir && $installdir ne $qtdir) {
         warning (<<EOF);
 b[y[*]
 b[y[*] Building the Qt module, but the install directory for Qt is not set to 
the
 b[y[*] Qt directory to use.
-b[y[*]   install directory ('prefix' option): b[$prefix]
+b[y[*]   install directory ('install-dir' option): b[$installdir]
 b[y[*]   Qt install to use ('qtdir'  option): b[$qtdir]
 b[y[*]
-b[y[*] Try setting b[qtdir] to the same setting as the Qt module's b[prefix].
+b[y[*] Try setting b[qtdir] to the same setting as the Qt module's 
b[install-dir].
 b[y[*]
 EOF
     }
 
-    $prefix ||= $qtdir; # Use qtdir for install if prefix not set
+    $installdir ||= $qtdir; # Use qtdir for install if install-dir not set
 
     # Some users have added -prefix manually to their flags, they
     # probably shouldn't anymore. :)
@@ -75,7 +75,7 @@ b[y[*]
 EOF
     }
 
-    push @commands, "-prefix", $prefix;
+    push @commands, "-prefix", $installdir;
     unshift @commands, $script;
 
     my $builddir = $module->fullpath('build');
diff --git a/modules/ksb/Cmdline.pm b/modules/ksb/Cmdline.pm
index daa04aa7..b7ab22bf 100644
--- a/modules/ksb/Cmdline.pm
+++ b/modules/ksb/Cmdline.pm
@@ -186,10 +186,9 @@ sub readCommandLineOptionsAndSelectors (@options)
             $opts->{run_mode} = 'install';
             $phases->phases('install');
         },
-        prefix => sub {
+        'install-dir' => sub {
             my ($optName, $arg) = @_;
-            $auxOptions{prefix} = $arg;
-            $foundOptions{'install-dir'} = $arg; #TODO: Still needed for 
compat?
+            $auxOptions{'install-dir'} = $arg;
             $foundOptions{reconfigure} = 1;
         },
         query => sub {
@@ -202,7 +201,7 @@ sub readCommandLineOptionsAndSelectors (@options)
             # Add useful aliases
             $arg = 'source-dir'  if $arg =~ /^src-?dir$/;
             $arg = 'build-dir'   if $arg =~ /^build-?dir$/;
-            $arg = 'install-dir' if $arg eq 'prefix';
+            $arg = 'install-dir' if $arg =~ /^install-?dir$/;
 
             $opts->{run_mode} = 'query';
             $auxOptions{query} = $arg;
@@ -455,7 +454,6 @@ sub _supportedOptions
         'no-metadata',
         'no-src|S',
         'no-tests',
-        'prefix=s',
         'pretend|dry-run|p',
         'print-modules',
         'query=s',
diff --git a/modules/ksb/Module.pm b/modules/ksb/Module.pm
index e1665e8c..6d831d29 100644
--- a/modules/ksb/Module.pm
+++ b/modules/ksb/Module.pm
@@ -1022,19 +1022,13 @@ sub destDir ($self)
 
 # Subroutine to return the installation path of a given module (the value
 # that is passed to the CMAKE_INSTALL_PREFIX CMake option).
-# It is based on the "prefix" and, if it is not set, the "install-dir" option.
-# The user may use '$MODULE' or '${MODULE}' in the "prefix" option to have
+# It is based on the "install-dir" option.
+# The user may use '$MODULE' or '${MODULE}' in the "install-dir" option to have
 # them replaced by the name of the module in question.
 sub installationPath
 {
     my $self = assert_isa(shift, 'ksb::Module');
-    my $path = $self->getOption('prefix');
-
-    if (!$path)
-    {
-        return $self->getOption('install-dir');
-    }
-
+    my $path = $self->getOption('install-dir');
     my $moduleName = $self->name();
     $path =~ s/(\$\{MODULE})|(\$MODULE\b)/$moduleName/g;
 

Reply via email to