[sdk/kdesrc-build] /: Remove unused svn vcs
Nate Graham
null at kde.org
Thu Nov 9 16:51:06 GMT 2023
Git commit 4be60be81152d46ac311759e5b5bff289085a324 by Nate Graham, on behalf of Andrew Shark.
Committed on 09/11/2023 at 17:51.
Pushed by ngraham into branch 'master'.
Remove unused svn vcs
We have every module in git now
M +2 -2 Internals.txt
M +49 -103 doc/index.docbook
M +4 -8 doc/man-kdesrc-build.1.docbook
M +1 -1 doc/source-reference/index.adoc
M +3 -3 doc/source-reference/ksb/Module.adoc
M +1 -1 modules/ksb/Application.pm
M +2 -4 modules/ksb/BuildContext.pm
M +2 -2 modules/ksb/Cmdline.pm
M +3 -31 modules/ksb/Module.pm
M +2 -2 modules/ksb/TaskManager.pm
M +3 -3 modules/ksb/Updater/Git.pm
D +0 -622 modules/ksb/Updater/Svn.pm
M +0 -1 modules/ksb/Util.pm
M +1 -1 org.kde.kdesrc-build.metainfo.xml
M +0 -1 t/smoke/load-all-ksb-modules.t
M +2 -2 vim/syntax/kdesrc-buildrc.vim
https://invent.kde.org/sdk/kdesrc-build/-/commit/4be60be81152d46ac311759e5b5bff289085a324
diff --git a/Internals.txt b/Internals.txt
index 4dca7450..08198e6d 100644
--- a/Internals.txt
+++ b/Internals.txt
@@ -21,11 +21,11 @@ one.
So a graphical overview of configuration file modules
-> svn, git, setA/git, setA/git, setA/git, setB/proj
+> git, setA/git, setA/git, setA/git, setB/proj
which is proj-expanded to form (for instance)
-> svn, git, setA/git, setA/git, setA/git, setB/git, setB/git
+> git, setA/git, setA/git, setA/git, setB/git, setB/git
and is then filtered (respecting --resume-{from,after})
diff --git a/doc/index.docbook b/doc/index.docbook
index 2559c4a9..65d979eb 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -30,7 +30,6 @@
<!ENTITY ninja '<application>Ninja</application>'>
<!ENTITY ssh '<application>SSH</application>'>
<!ENTITY cron '<application>Cron</application>'>
- <!ENTITY subversion '<application>Subversion</application>'>
<!ENTITY sudo '<application>Sudo</application>'>
<!ENTITY url '<acronym>URL</acronym>'>
@@ -51,8 +50,7 @@
<!ENTITY tag '<link linkend="conf-tag">tag</link>'>
<!ENTITY branch '<link linkend="conf-branch">branch</link>'>
<!ENTITY do-not-compile '<link linkend="conf-do-not-compile">do-not-compile</link>'>
- <!ENTITY checkout-only '<link linkend="conf-checkout-only">checkout-only</link>'>
- <!ENTITY svn-server '<link linkend="conf-svn-server">svn-server</link>'>
+ <!ENTITY repository '<link linkend="conf-repository">repository</link>'>
<!ENTITY make-install-prefix '<link linkend="conf-make-install-prefix">make-install-prefix</link>'>
<!ENTITY niceness '<link linkend="conf-niceness">niceness</link>'>
<!ENTITY set-env '<link linkend="conf-set-env">set-env</link>'>
@@ -123,13 +121,8 @@ directly from the &kde; project's source code repositories.</para>
<keywordset>
<keyword>KDE</keyword>
<keyword>kdesdk</keyword>
-<keyword>SVN</keyword>
-<keyword>Subversion</keyword>
<keyword>git</keyword>
<keyword>KDE development</keyword>
-<!-- Older names for the software -->
-<keyword>kdesvn-build</keyword>
-<keyword>kdecvs-build</keyword>
</keywordset>
</bookinfo>
@@ -146,8 +139,7 @@ directly from the &kde; project's source code repositories.</para>
<para>
&kdesrc-build; is a script to help the &kde; community install <ulink
url="https://www.kde.org/">&kde;</ulink> software from its <ulink
-url="https://git-scm.com/">&git;</ulink> and <ulink
-url="https://subversion.apache.org">&subversion;</ulink> source repositories,
+url="https://git-scm.com/">&git;</ulink> source repositories,
and continue to update that software afterwards.
It is particularly intended to support those who need to supporting testing and
development of &kde; software, including users testing bugfixes and developers
@@ -1286,11 +1278,9 @@ doing, try using the <option>--debug</option> option.
</para></listitem>
<listitem><para>
-&kdesrc-build; can (with the assistance of the &kde; FTP server) allow for
-speedy checkouts of
-some Subversion modules. If the module you are checking out has already been
-packaged at the website, then &kdesrc-build; will download the snapshot and
-prepare it for use on your computer.
+&kdesrc-build; allows you to checkout modules quickly. If the module you are checking out
+has already been checked out previously, then &kdesrc-build; will download only commits
+that are not yet on your computer.
</para>
<tip><para>There is generally no need for any special preparation to perform
@@ -1299,7 +1289,7 @@ downloaded anyways, so it is easy for the server to determine what to
send.</para></tip>
<para>This is faster for you, and helps to ease the load on the kde.org
-anonymous &subversion; servers.</para>
+anonymous &git; servers.</para>
</listitem>
<listitem><para>
@@ -1353,7 +1343,7 @@ large module.
<listitem><para>
For developers: &kdesrc-build; will <link linkend="ssh-agent-reminder">remind
-you</link> if you use svn+ssh:// but <application>ssh-agent</application> is
+you</link> if you use git+ssh:// but <application>ssh-agent</application> is
not running, as this will lead to repeated password requests from
&ssh;.
</para></listitem>
@@ -1437,12 +1427,6 @@ log of a script run. Also, a special symlink called latest is created to
always point to the most recent log entry in the log directory.
</para></listitem>
-<listitem><para>
-You can check out only a portion of a &kde; &subversion; module. For example,
-you could check out only the <application>taglib</application> from
-<application>kdesupport</application>.
-</para></listitem>
-
</itemizedlist>
</sect1>
@@ -1495,8 +1479,8 @@ and not under <filename class="directory"><symbol>${log-dir}</symbol>/latest/kde
<para>In each module log directory, you will find a set of files for each
operation that &kdesrc-build; performs. If &kdesrc-build; updates a module,
-you may see filenames such as <filename>svn-co.log</filename> (for a
-module checkout) or <filename>svn-up.log</filename> (when updating a module
+you may see filenames such as <filename>git-checkout-update.log</filename> (for a
+module checkout or when updating a module
that has already been checked out). If the <command>configure</command>
command was run, then you would expect to see a <filename>configure.log</filename>
in that directory.</para>
@@ -1518,7 +1502,7 @@ none.</para>
<para>Also, some commands will evade &kdesrc-build;'s output redirection and
bypass the log file in certain circumstances (normally when performing the
-first &subversion; checkout), and the error output in that case is not in the log file
+first &git; checkout), and the error output in that case is not in the log file
but is instead at the &konsole; or terminal where you ran &kdesrc-build;.</para>
</tip>
@@ -1596,10 +1580,10 @@ end module-set
for Git-based modules</emphasis>.</para></important>
<para>
-For Subversion modules, <replaceable>module-name</replaceable> must be a module
-from the &kde; &subversion; repository (for example, kdeartwork or
+For Git modules, <replaceable>module-name</replaceable> must be a module
+from the &kde; &git; repository (for example, kdeartwork or
kde-wallpapers), although it is possible to get around this if you
-<link linkend="conf-override-url">manually specify the &subversion; URL</link>.
+<link linkend="conf-override-url">manually specify the &git; URL</link>.
</para>
<para>
@@ -1748,7 +1732,7 @@ option to find out more about it. To see the full list of options, see
<itemizedlist>
<listitem><para><link linkend="conf-cmake-options">cmake-options</link> to define what flags to configure a module with using &cmake;.</para></listitem>
-<listitem><para><link linkend="conf-branch">branch</link>, to checkout from a branch instead of /trunk (for &subversion;) or <literal>master</literal> (for Git).</para></listitem>
+<listitem><para><link linkend="conf-branch">branch</link>, to checkout from a branch instead of <literal>master</literal>.</para></listitem>
<listitem><para><link linkend="conf-configure-flags">configure-flags</link> to define what flags to configure &Qt; with.</para></listitem>
<listitem><para><link linkend="conf-kdedir">kdedir</link>, to set the directory to install &kde; to.</para></listitem>
<listitem><para><link linkend="conf-make-options">make-options</link>, to pass options to the &make; program (such as number of CPUs to use).</para></listitem>
@@ -1840,8 +1824,7 @@ may use the tilde (~) for any paths you add using this option.</para>
<entry>branch</entry>
<entry>Module setting overrides global</entry>
<entry><para>Set this option to checkout from a branch of &kde; instead of the
-default of <replaceable>master</replaceable> (for &git; modules) or
-<replaceable>trunk</replaceable> (for &subversion;), where &kde; development
+default of <replaceable>master</replaceable> where &kde; development
occurs.</para>
<para>
@@ -1921,7 +1904,7 @@ are three different ways to use it:
<orderedlist>
-<listitem><para>Relative to the &kde; &subversion; source directory (see <link
+<listitem><para>Relative to the &kde; &git; source directory (see <link
linkend="conf-source-dir">the source-dir option</link>). This is the default,
and is selected if you type a directory name that does not start with a tilde
(~) or a slash (/).</para> <para>The default value is <filename
@@ -1971,14 +1954,6 @@ change at all.</para></important>
</entry>
</row>
-<row id="conf-checkout-only">
-<entry>checkout-only</entry>
-<entry>Module setting overrides global</entry>
-<entry><para>This option was removed in January 2022. It used to control
-the ability to checkout subsets of a module from a Subversion repository.</para>
-</entry>
-</row>
-
<row id="conf-cmake-generator">
<entry>cmake-generator</entry>
<entry>Module setting overrides global</entry>
@@ -2150,8 +2125,8 @@ or directory separators in the name as this will interfere with any
<row id="conf-disable-agent-check">
<entry>disable-agent-check</entry>
<entry>Cannot be overridden</entry>
-<entry>Normally if you are using &ssh; to download the &subversion; sources
-(such as if you are using the svn+ssh protocol), &kdesrc-build; will try and
+<entry>Normally if you are using &ssh; to download the &git; sources
+(such as if you are using the git+ssh protocol), &kdesrc-build; will try and
make sure that if you are using ssh-agent, it is actually managing some &ssh;
identities. This is to try and prevent &ssh; from asking for your pass phrase
for every module. You can disable this check by setting
@@ -2595,7 +2570,7 @@ setting.</para>
<entry>Module setting overrides global</entry>
<entry>Set the option value to <userinput>true</userinput> to keep the
build process from attempting to build this module. It will still be kept
-up-to-date when updating from &subversion;. This option is exactly equivalent
+up-to-date when updating from &git;. This option is exactly equivalent
to the <link linkend="cmdline-no-build"><option>--no-build</option></link>
command line option.
</entry>
@@ -2616,17 +2591,17 @@ commented it out.
<entry>Module setting overrides global</entry>
<entry><para>Set this option to override &kdesrc-build;'s default directory path to the
module in question. This can be used, for example, to pull specific branches
-or tagged versions of libraries. <ulink url="https://websvn.kde.org/">The &kde;
+or tagged versions of libraries. <ulink url="https://invent.kde.org/">The &kde;
Source Viewer</ulink> is invaluable in helping to pick the right path.</para>
<para>Note that &kdesrc-build; constructs the final path according to the
following template:
-<filename class="directory"><varname>$svn-server</varname>/home/kde/<varname>$module-base-path</varname></filename>.
+<filename class="directory"><varname>$repository</varname>/home/kde/<varname>$module-base-path</varname></filename>.
</para>
<para>The default value is either <filename
-class="directory">trunk/<varname>$module</varname></filename> or <filename
-class="directory">trunk/KDE/<varname>$module</varname></filename>, depending on
+class="directory"><varname>$module</varname></filename> or <filename
+class="directory">KDE/<varname>$module</varname></filename>, depending on
the module name.</para>
<tip><para>Use the <link linkend="conf-branch">branch</link> or <link
@@ -2674,11 +2649,11 @@ end options
</entry>
</row>
-<row id="conf-no-svn">
-<entry>no-svn</entry>
+<row id="conf-no-src">
+<entry>no-src</entry>
<entry>Module setting overrides global</entry>
<entry>If this option is set to true then &kdesrc-build; will not update the
-source code for the module automatically. It will still try to build the
+source code for the module automatically. It will still try to build the
module if it normally would have tried anyways.</entry>
</row>
@@ -2784,7 +2759,7 @@ the auto-detection. In this case you can manually specify the correct build type
<entry>override-url</entry>
<entry>Module setting overrides global</entry>
<entry>If you set this option, &kdesrc-build; will use its value as the &url;
-to pass to &subversion; <emphasis>completely unchanged</emphasis>. You should
+to pass to &git; <emphasis>completely unchanged</emphasis>. You should
generally use this if you want to download a specific release but &kdesrc-build;
cannot figure out what you mean using <link linkend="conf-branch">branch</link>.
</entry>
@@ -2929,8 +2904,8 @@ globally).</para>
<entry>source-dir</entry>
<entry>Module setting overrides global</entry>
<entry>This option is used to set the directory on your computer to store the &kde;
-&subversion; sources at. If you do not specify this value, the default is
-<filename class="directory">~/kdesrc</filename>. You may use the tilde (~)
+&git; sources at. If you do not specify this value, the default is
+<filename class="directory">~/kde/src</filename>. You may use the tilde (~)
to represent the home directory if using this option.
</entry>
</row>
@@ -2956,17 +2931,6 @@ after an error occurs during the build or install process. This option is true b
</entry>
</row>
-<row id="conf-svn-server">
-<entry>svn-server</entry>
-<entry>Module setting overrides global</entry>
-<entry><para>This option is used to set the server used to check out from &subversion;.
-The default is the anonymous &subversion; repository, <filename>svn://anonsvn.kde.org/</filename></para>
-<note><para>If you are developing for KDE, use the &subversion; repository that
-was provided to you when you received your developer account, instead of the
-anonymous repository.</para></note>
-</entry>
-</row>
-
<row id="conf-tag">
<entry>tag</entry>
<entry>Module setting overrides global</entry>
@@ -3351,10 +3315,9 @@ Be very descriptive about what is going on, and what &kdesrc-build; is doing.
</varlistentry>
<varlistentry id="cmdline-src-only">
-<term><parameter>--src-only</parameter> (or <parameter>--svn-only</parameter> or <parameter>-s</parameter>)</term>
+<term><parameter>--src-only</parameter> (or <parameter>-s</parameter>)</term>
<listitem><para>
-Only perform the source update. (The <parameter>--svn-only</parameter> is
-only supported for compatibility with older scripts).
+Only perform the source update.
</para></listitem>
</varlistentry>
@@ -3430,11 +3393,9 @@ a few).
</varlistentry>
<varlistentry id="cmdline-no-src">
-<term><parameter>--no-src</parameter> (or <parameter>--no-svn</parameter> or <parameter>-S</parameter>)</term>
+<term><parameter>--no-src</parameter> (or <parameter>-S</parameter>)</term>
<listitem><para>
-Skip contacting the &subversion; server. (The <parameter>--no-svn</parameter>
-parameter is only supported for compatibility with older versions of the
-script).
+Skip contacting the &git; server.
</para></listitem>
</varlistentry>
@@ -3810,7 +3771,7 @@ may still be required.
<term><parameter>--revision</parameter></term>
<listitem><para>
This option causes &kdesrc-build; to checkout a specific numbered revision
-for each &subversion; module, overriding any <link linkend="conf-branch">branch</link>,
+for each &git; module, overriding any <link linkend="conf-branch">branch</link>,
<link linkend="conf-tag">tag</link>, or <link linkend="conf-revision">revision</link>
options already set for these modules.</para>
@@ -3864,8 +3825,7 @@ contain user data, so that the module can be re-downloaded. This would normally
only be useful for &kde; developers (who might have local changes that would be
deleted).</para>
-<para>This is currently only used to checkout modules that have been converted
-from &subversion; to &git;. You should not use this option normally,
+<para>You should not use this option normally,
&kdesrc-build; will prompt to be re-run with it if it is needed.</para>
</listitem>
</varlistentry>
@@ -4137,7 +4097,7 @@ end global
</para>
<screen>
-module <replaceable>svn-module-name</replaceable>
+module <replaceable>some-module-name</replaceable>
&make-install-prefix; <replaceable>sudo</replaceable>
end module
</screen>
@@ -4212,7 +4172,7 @@ end module
<sect3 id="branches-and-tags">
<title>What are branches and tags?</title>
-<para>&subversion; supports managing the history of the &kde; source code. &kde;
+<para>&git; supports managing the history of the &kde; source code. &kde;
uses this support to create branches for development, and to tag the repository
every so often with a new version release.
</para>
@@ -4220,7 +4180,7 @@ every so often with a new version release.
<para>For example, the &kmail; developers may be working on a new feature in
a different branch in order to avoid breaking the version being used by most
developers. This branch has development ongoing inside it, even while the
-main branch (called /trunk) may have development going on inside of it.
+main branch (called master) may have development going on inside of it.
</para>
<para>A tag, on the other hand, is a snapshot of the source code repository
@@ -4229,12 +4189,6 @@ off a version of code suitable for release and still allow the developers to
work on the code.
</para>
-<para>In &subversion;, there is no difference between branches, tags, or trunk within
-the code. It is only a convention used by the developers. This makes it
-difficult to properly support branches and tags within &kdesrc-build;. However,
-there are some things that can be done.
-</para>
-
</sect3>
<sect3 id="branch-support">
@@ -4289,7 +4243,7 @@ guess the correct path improperly: &module-base-path; and &override-url;.
<listitem><para>
&module-base-path; is used to help &kdesrc-build; fill in the missing part of
a module's path. In the &kde; repository, all of the paths are of the form
-<filename class="directory">svnRoot/module-base-path/<replaceable>module-name</replaceable></filename>. Normally &kdesrc-build;
+<filename class="directory">gitRoot/module-base-path/<replaceable>module-name</replaceable></filename>. Normally &kdesrc-build;
can figure out the appropriate middle part by itself. When it cannot, you can use
&module-base-path;, like this:
</para>
@@ -4304,7 +4258,7 @@ end module
</screen>
<para>This would cause &kdesrc-build; to download kdesupport from (in this example),
-<filename>svn://anonsvn.kde.org/home/kde/<replaceable>tags/kdesupport-for-4.5</replaceable></filename>.
+<filename>git://invent.kde.org/home/kde/<replaceable>tags/kdesupport-for-4.5</replaceable></filename>.
</para>
</informalexample>
<tip><para>In previous versions of &kdesrc-build;, the &module-base-path; was
@@ -4317,13 +4271,13 @@ expects by using the <link linkend="cmdline-pretend">--pretend</link> option.
<listitem><para>The &override-url; option, on the other hand, requires you to
specify the exact path to download from. However, this allows you to pull from
paths that previous versions of &kdesrc-build; would have no hope of downloading from.
-Currently, the &module-base-path; option should be sufficient for any Subversion
+Currently, the &module-base-path; option should be sufficient for any Git
source URL.
</para>
<important><para>
&kdesrc-build; will not touch or correct the value you specify for &override-url;
-at all, so if you change your &svn-server; setting, you may need to update this
+at all, so if you change your &repository; setting, you may need to update this
as well.
</para></important>
@@ -4651,9 +4605,7 @@ so by default &kdesrc-build; will check if the Agent is running before
performing source updates.
</para>
-<note><para>This is only done for &kde; developers using &ssh;. This is because
-no password is required for the default anonymous checkout. &subversion; will
-handle passwords for the second possible protocol for &kde; developers, https.
+<note><para>This is only done for &kde; developers using &ssh;.
</para></note>
<para>You may wish to disable the &ssh; Agent check, in case of situations where
@@ -4729,7 +4681,7 @@ end global
<title>Removing unneeded directories after a build</title>
<para>Are you short on disk space but still want to run a bleeding-edge
&kde; checkout? &kdesrc-build; can help reduce your disk usage when building
-&kde; from &subversion;.</para>
+&kde; from &git;.</para>
<note><para>Be aware that building &kde; does take a lot of space. There are
several major space-using pieces when using &kdesrc-build;:</para></note>
@@ -4749,12 +4701,6 @@ if you are actually using them, at least until you are done using
the odds are good that you do), you probably do not need to install the
qt module. That will shave about 200 megabytes off of the on-disk source
size.</para>
-
-<para>One thing to note is that due to the way &subversion; works: there are actually
-two files on disk for every file checked-out from the repository. &kdesrc-build;
-does not have code at this point to try and minimize the source size when the
-source is not being used.
-</para>
</listitem>
<listitem>
@@ -4884,7 +4830,7 @@ tested, and installed.
<title>Individual modules</title>
<para>It is easy to set &kdesrc-build; to build a single module. The following
-listing is an example of what a declaration for a Subversion-based module would
+listing is an example of what a declaration for a Git-based module would
look like in <link linkend="kdesrc-buildrc">the configuration
file</link>.</para>
@@ -4894,7 +4840,7 @@ module <replaceable>kdefoo</replaceable>
end module
</programlisting>
-<tip><para>This is a Subversion-based module since it doesn't use a <link
+<tip><para>This is a Git-based module since it doesn't use a <link
linkend="conf-repository">repository</link> option. Also, the
<option>cmake-options</option> option is listed as an example only, it is not
required.</para></tip>
@@ -5065,10 +5011,10 @@ If you are not using a dedicated user, set a different $<envar>KDEHOME</envar>
for your new environment in your <filename>.bash_profile</filename>:
<programlisting>
-export KDEHOME="${HOME}/.kde-svn"
+export KDEHOME="${HOME}/.kde-git"
# Create it if needed
-[ ! -e ~/.kde-svn ] && mkdir ~/.kde-svn
+[ ! -e ~/.kde-git ] && mkdir ~/.kde-git
</programlisting>
</para>
@@ -5145,7 +5091,7 @@ You can run the &kde; from sources and the old &kde; at the same time! Log in
using your regular user, start the stable &kde; desktop. Press <keycombo
action="simul">&Ctrl;&Alt;<keycap>F2</keycap></keycombo> (or
<keycap>F1</keycap>, <keycap>F3</keycap>, etc..), and you will be presented
-with a text terminal. Log in using the dedicated &kde; &subversion; user and
+with a text terminal. Log in using the dedicated &kde; &git; user and
type:</para>
<screen>
diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook
index e303ce15..0c1f38ef 100644
--- a/doc/man-kdesrc-build.1.docbook
+++ b/doc/man-kdesrc-build.1.docbook
@@ -49,9 +49,9 @@
<refsect1>
<title>DESCRIPTION</title>
-<para>The <command>kdesrc-build</command> command is used in order to build
-&kde; software directly from its source repositories. It can download from
-Subversion or Git repositories, interfaces with the &kde; project database, and
+<para>The <command>kdesrc-build</command> command is used in order to download and build
+&kde; software directly from its source Git repositories.
+It interfaces with the &kde; project database, and
supports controlling which options are passed to <command>make</command>(1) and
<command>cmake</command>(1). The operation of <command>kdesrc-build</command>
is driven by a configuration file, typically <filename>~/.config/kdesrc-buildrc</filename>
@@ -188,8 +188,6 @@ combining short options into one at this point. (E.g. running
<listitem>
<para>
Skips the source update phase. Other phases are included as normal.
- <option>--no-svn</option> is a deprecated alias for this option and will be
- removed in a future release.
</para>
</listitem>
</varlistentry>
@@ -264,8 +262,6 @@ combining short options into one at this point. (E.g. running
<listitem>
<para>
Only performs the source update phase, does not build or install.
- <option>--svn-only</option> is a deprecated alias for this option and will
- be removed in a future release.
</para>
</listitem>
</varlistentry>
@@ -1160,7 +1156,7 @@ others
<listitem>
<para>
Many programs are used by <command>kdesrc-build</command> in the course of
- its execution, including <command>svn</command>(1),
+ its execution, including
<command>git</command>(1), <command>make</command>(1), and
<command>cmake</command>(1). Each of these programs may have their own
response to environment variables being set.
diff --git a/doc/source-reference/index.adoc b/doc/source-reference/index.adoc
index c8cb6d05..4353d56c 100644
--- a/doc/source-reference/index.adoc
+++ b/doc/source-reference/index.adoc
@@ -18,7 +18,7 @@ Some basic concepts are assumed throughout for brevity.
kdesrc-build uses the "module" as the most granular level of buildable
software. Each module has a name, unique in the list of all modules.
Each module can have a specific source control system plugin (Git,
-KDE's git, Subversion, etc.) and a build system plugin (qmake, CMake, KDE's
+KDE's git, etc.) and a build system plugin (qmake, CMake, KDE's
CMake, autotools, etc.)
=== Build Phases
diff --git a/doc/source-reference/ksb/Module.adoc b/doc/source-reference/ksb/Module.adoc
index 1dd1d60b..a1c65fe1 100644
--- a/doc/source-reference/ksb/Module.adoc
+++ b/doc/source-reference/ksb/Module.adoc
@@ -37,7 +37,7 @@ change settings, etc.
* ``setModuleSet``, optional, specifies the ksb::ModuleSet this module was
spawned from.
-* ``setScmType``, sets the source control plugin (git, svn, kde-projects) based
+* ``setScmType``, sets the source control plugin (git, kde-projects) based
on the given scmType name. Normally auto-detection is used instead, this
permits manual setup.
@@ -93,7 +93,7 @@ object.
determined by buildSystem(), which can itself cause an autodetection pass.
* ``currentScmRevision``, returns a string with an scm-specific revision ID.
- Can be a Git-style SHA, SVN-style sequential ID, or something else entirely.
+ Can be a Git-style SHA or something else entirely.
Can case an autodetection of the scm plugin.
==== PATHS
@@ -126,7 +126,7 @@ just from the method name, sadly.
* ``destDir``, returns the 'dest-dir' for the module. dest-dir is effectively
just a way to modify the on-disk module name. It used to be used more heavily
- to allow for having multiple build/source directories for a given CVS/SVN
+ to allow for having multiple build/source directories for a given
module (varying by branch or tag), but even with git this value may change
for KDE-based repositories to set subdirectories that match KDE project
paths. Supports expanding '$MODULE' or '${MODULE}' sequences to what
diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm
index 515e0b4d..e0789139 100644
--- a/modules/ksb/Application.pm
+++ b/modules/ksb/Application.pm
@@ -1407,7 +1407,7 @@ sub _updateModulePhases
whisper ("Filtering out module phases.");
for my $module (@_) {
if ($module->getOption('manual-update') ||
- $module->getOption('no-svn') || $module->getOption('no-src'))
+ $module->getOption('no-src'))
{
$module->phases()->clear();
next;
diff --git a/modules/ksb/BuildContext.pm b/modules/ksb/BuildContext.pm
index 88a69a22..12edbd72 100644
--- a/modules/ksb/BuildContext.pm
+++ b/modules/ksb/BuildContext.pm
@@ -98,7 +98,6 @@ my %internalGlobalOptions = (
"async" => 1,
"build-system-only" => "",
"build-when-unchanged" => 1, # Safe default
- "checkout-only" => "",
"colorful-output" => 1, # Use color by default.
"debug-level" => ksb::Debug::INFO,
"filter-out-phases" => '',
@@ -109,13 +108,13 @@ my %internalGlobalOptions = (
"manual-build" => "",
"manual-update" => "",
"niceness" => "10",
- "no-svn" => "", # TODO: Rename to no-src
+ "no-src" => "",
"prefix" => "", # Override installation prefix.
"pretend" => "",
"reconfigure" => "",
"refresh-build" => "",
"repository" => '', # module's git repo
- "revision" => '', # Only useful for Subversion modules at cmdline
+ "revision" => '', # Was only useful for Subversion modules at cmdline. TODO Implement for git?
"set-env" => { }, # Hash of environment vars to set
"ssh-identity-file" => '', # If set, is passed to ssh-add.
"use-modules" => "",
@@ -178,7 +177,6 @@ our %defaultGlobalOptions = (
"qtdir" => "",
"remove-after-install" => "none", # { none, builddir, all }
"source-dir" => "$ENV{HOME}/kdesrc",
- "svn-server" => "svn://anonsvn.kde.org/home/kde",
"tag" => "",
);
diff --git a/modules/ksb/Cmdline.pm b/modules/ksb/Cmdline.pm
index a06ae453..a3e6430a 100644
--- a/modules/ksb/Cmdline.pm
+++ b/modules/ksb/Cmdline.pm
@@ -468,7 +468,7 @@ sub _supportedOptions
'D', # --no-include-dependencies, which is already pulled in via ksb::BuildContext::defaultGlobalFlags
'no-install',
'no-metadata',
- 'no-src|no-svn|S',
+ 'no-src|S',
'no-tests',
'prefix=s',
'pretend|dry-run|p',
@@ -486,7 +486,7 @@ sub _supportedOptions
'revision=i',
'set-module-option-value=s',
'show-info',
- 'src-only|svn-only|s',
+ 'src-only|s',
'start-program|run=s{,}',
'stop-after|to=s',
'stop-before|until=s',
diff --git a/modules/ksb/Module.pm b/modules/ksb/Module.pm
index efc75cc5..e186666e 100644
--- a/modules/ksb/Module.pm
+++ b/modules/ksb/Module.pm
@@ -31,7 +31,6 @@ use ksb::IPC;
use ksb::Debug;
use ksb::Util qw(:DEFAULT :await);
-use ksb::Updater::Svn;
use ksb::Updater::Git;
use ksb::Updater::KDEProject;
use ksb::Updater::KDEProjectMetadata;
@@ -231,32 +230,7 @@ sub scm
return $self->{scm_obj} if $self->{scm_obj};
- # Look for specific setting of repository and svn-server. If both is
- # set it's a bug, if one is set, that's the type (because the user says
- # so...). Don't use getOption($key) as it will try to fallback to
- # global options.
-
- my $svn_status = $self->getOption('svn-server', 'module');
- my $repository = $self->getOption('repository', 'module') // '';
- my $rcfile = $self->buildContext()->rcFile();
-
- if ($svn_status && $repository) {
- error (<<EOF);
-You have specified both y[b[svn-server] and y[b[repository] options for the
-b[$self] module in $rcfile.
-
-You should only specify one or the other -- a module cannot be both types
-- svn-server uses Subversion.
-- repository uses git.
-EOF
- die (make_exception('Config', 'svn-server and repository both set'));
- }
-
- # If it needs a repo it's git. Everything else is svn for now.
- $self->{scm_obj} //=
- $repository
- ? ksb::Updater::Git->new($self)
- : ksb::Updater::Svn->new($self);
+ $self->{scm_obj} //= ksb::Updater::Git->new($self);
return $self->{scm_obj};
}
@@ -270,7 +244,6 @@ sub setScmType
if ($scmType eq 'git') { $newType = ksb::Updater::Git->new($self); }
elsif ($scmType eq 'proj') { $newType = ksb::Updater::KDEProject->new($self); }
elsif ($scmType eq 'metadata') { $newType = ksb::Updater::KDEProjectMetadata->new($self); }
- elsif ($scmType eq 'svn') { $newType = ksb::Updater::Svn->new($self); }
elsif ($scmType eq 'qt5') { $newType = ksb::Updater::Qt5->new($self); }
else { $newType = undef; }
@@ -278,7 +251,7 @@ sub setScmType
}
# Returns a string describing the scm platform of the given module.
-# Return value: 'git' or 'svn' at this point, as appropriate.
+# Return value: 'git' at this point, as appropriate.
sub scmType
{
my $self = shift;
@@ -625,8 +598,7 @@ sub install
return 1;
}
-# Handles uninstalling this module (or its sub-directories as given by the checkout-only
-# option).
+# Handles uninstalling this module
#
# Returns boolean false on failure, boolean true otherwise.
sub uninstall
diff --git a/modules/ksb/TaskManager.pm b/modules/ksb/TaskManager.pm
index 84a5a825..a76a6cc5 100644
--- a/modules/ksb/TaskManager.pm
+++ b/modules/ksb/TaskManager.pm
@@ -490,8 +490,8 @@ sub _handle_async_build ($ipc, $ctx)
whisper ("Some modules were updated but not built");
}
- # It's possible if build fails on first module that git or svn is still
- # running. Make them stop too.
+ # It's possible if build fails on first module that git is still
+ # running. Make it stop too.
if (waitpid ($monitorPid, WNOHANG) == 0) {
kill 'INT', $monitorPid;
diff --git a/modules/ksb/Updater/Git.pm b/modules/ksb/Updater/Git.pm
index 0ff55cb4..8ecfe7c1 100644
--- a/modules/ksb/Updater/Git.pm
+++ b/modules/ksb/Updater/Git.pm
@@ -190,9 +190,9 @@ FILES IN THE DIRECTORY.
EOF
- if (-e "$srcdir/.svn") {
- error ("svn status of $srcdir:");
- system('svn', 'st', '--non-interactive', $srcdir);
+ if (-e "$srcdir/.git") {
+ error ("git status of $srcdir:");
+ system('git', 'status', $srcdir);
}
croak_runtime('Conflicting source-dir present');
diff --git a/modules/ksb/Updater/Svn.pm b/modules/ksb/Updater/Svn.pm
deleted file mode 100644
index 6382d5a0..00000000
--- a/modules/ksb/Updater/Svn.pm
+++ /dev/null
@@ -1,622 +0,0 @@
-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.
-
-use ksb;
-
-use parent qw(ksb::Updater);
-
-use ksb::BuildException;
-use ksb::Debug;
-use ksb::Util;
-
-use IPC::Open3 qw(open3);
-
-# Returns true if a module has a base component to their name (e.g. KDE/,
-# extragear/, or playground). Note that modules that aren't in trunk/KDE
-# don't necessary meet this criteria (e.g. kdereview is a module itself).
-sub _has_base_module
-{
- my $moduleName = shift;
-
- return $moduleName =~ /^(extragear|playground|KDE)(\/[^\/]+)?$/;
-}
-
-# Subroutine to return the branch prefix. i.e. the part before the branch
-# name and module name.
-#
-# The first parameter is the module name in question.
-# The second parameter should be 'branches' if we're dealing with a branch
-# or 'tags' if we're dealing with a tag.
-#
-# Ex: 'kdelibs' => 'branches/KDE'
-# 'kdevelop' => 'branches/kdevelop'
-sub _branch_prefix
-{
- my $moduleName = shift;
- my $type = shift;
-
- # These modules seem to have their own subdir in /tags.
- my @tag_components = qw/arts koffice amarok kst qt taglib/;
-
- # The map call adds the kde prefix to the module names because I don't feel
- # like typing them all in.
- my @kde_module_list = ((map {'kde' . $_} qw/-base-artwork -wallpapers accessibility
- addons admin artwork base bindings edu games graphics libs
- network pim pimlibs plasma-addons sdk toys utils webdev/));
-
- # If the user already has the module in the form KDE/foo, it's already
- # done.
- return "$type/KDE" if $moduleName =~ /^KDE\//;
-
- # KDE proper modules seem to use this pattern.
- return "$type/KDE" if list_has(\@kde_module_list, $moduleName);
-
- # KDE extragear / playground modules use this pattern
- return "$type" if _has_base_module($moduleName);
-
- # If we doing a tag just return 'tags' because the next part is the actual
- # tag name, which is added by the caller, unless the module has its own
- # subdirectory in /tags.
- return "$type" if $type eq 'tags' and not list_has(\@tag_components, $moduleName);
-
- # Everything else.
- return "$type/$moduleName";
-}
-
-# This subroutine is responsible for stripping the KDE/ part from the
-# beginning of modules that were entered by the user like "KDE/kdelibs"
-# instead of the normal "kdelibs". That way you can search for kdelibs
-# without having to strip KDE/ everywhere.
-sub _moduleBaseName
-{
- my $moduleName = shift;
- $moduleName =~ s/^KDE\///;
-
- return $moduleName;
-}
-
-# Subroutine to return a module URL for a module using the 'branch' option.
-# First parameter is the module in question.
-# Second parameter is the type ('tags' or 'branches')
-sub _handle_branch_tag_option
-{
- my $module = assert_isa(shift, 'ksb::Module');
- my $type = shift;
- my $branch = _branch_prefix($module->name(), $type);
- my $svn_server = $module->getOption('svn-server');
- my $branchname = $module->getOption($type eq 'branches' ? 'branch' : 'tag');
-
- # Remove trailing slashes.
- $svn_server =~ s/\/*$//;
-
- # Remove KDE/ prefix for module name.
- my $moduleName = _moduleBaseName($module->name());
-
- # KDE modules have a different module naming scheme than the rest it seems.
- return "$svn_server/$branch/$branchname/$moduleName" if $branch =~ /\/KDE\/?$/;
-
- # Non-trunk translations happen in a single branch. Assume all non-trunk
- # global branches are intended for the stable translations.
- if ($moduleName =~ /^l10n-kde4\/?/ && $branch ne 'trunk') {
- return "$svn_server/branches/stable/$moduleName";
- }
-
- # Otherwise don't append the module name by default since it makes more
- # sense to branch this way in many situations (i.e. kdesupport tags, phonon)
- return "$svn_server/$branch/$branchname";
-}
-
-# Subroutine to return the appropriate SVN URL for a given module, based on
-# the user settings. For example, 'kdelibs' ->
-# https://svn.kde.org/home/kde/trunk/KDE/kdelibs
-#
-# This operates under a double hierarchy:
-# 1. If any module-specific option is present, it wins.
-# 2. If only global options are present, the order override-url, tag,
-# branch, module-base-path, is preferred.
-sub svn_module_url
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
- my $svn_server = $module->getOption('svn-server');
- my $modulePath;
-
- foreach my $levelLimit ('module', 'allow-inherit') {
- $modulePath = $module->getOption('module-base-path', $levelLimit);
-
- # Allow user to override normal processing of the module in a few ways,
- # to make it easier to still be able to use kdesrc-build even when I
- # can't be there to manually update every little special case.
- if($module->getOption('override-url', $levelLimit))
- {
- return $module->getOption('override-url', $levelLimit);
- }
-
- if($module->getOption('tag', $levelLimit))
- {
- return _handle_branch_tag_option($module, 'tags');
- }
-
- my $branch = $module->getOption('branch', $levelLimit);
- if($branch and $branch ne 'trunk')
- {
- return _handle_branch_tag_option($module, 'branches');
- }
-
- my $moduleName = _moduleBaseName($module->name());
-
- # The following modules are in /trunk, not /trunk/KDE. There are others,
- # but these are the important ones.
- my @non_trunk_modules = qw(extragear kdesupport koffice icecream kde-common
- playground KDE kdereview www l10n-kde4);
-
- my $module_root = $moduleName;
- $module_root =~ s/\/.*//; # Remove everything after the first slash
-
- if (not $modulePath and $levelLimit eq 'allow-inherit')
- {
- $modulePath = "trunk/KDE/$moduleName";
- $modulePath = "trunk/$moduleName" if list_has(\@non_trunk_modules, $module_root);
- $modulePath =~ s/^\/*//; # Eliminate / at beginning of string.
- $modulePath =~ s/\/*$//; # Likewise at the end.
- }
-
- last if $modulePath;
- }
-
- # Remove trailing slashes.
- $svn_server =~ s/\/*$//;
-
- # Note that the module name is no longer appended if module-base-path is used (i.e.
- # $branch variable was set. This is a change as of version 1.8.
- return "$svn_server/$modulePath";
-}
-
-# Subroutine to determine whether or not the given module has the correct
-# URL. If not, a warning is printed out.
-# First parameter: module to check.
-# Return: Nothing.
-sub _verifyCorrectServerURL
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
-
- my $module_expected_url = $self->svn_module_url();
- my $module_actual_url = $self->svnInfo('URL');
-
- if (!$module_actual_url) {
- croak_runtime ("Unable to determine working copy's svn URL for $module");
- }
-
- $module_expected_url =~ s{/+$}{}; # Remove trailing slashes
- $module_actual_url =~ s{/+$}{}; # Remove trailing slashes
-
- if ($module_actual_url ne $module_expected_url)
- {
- # Check if the --src-only flag was passed.
- my $module = $self->module();
- if ($module->buildContext()->getOption('#allow-auto-repo-move'))
- {
- note ("g[$module] is checked out from a different location than expected.");
- note ("Attempting to correct to $module_expected_url");
-
- my ($expected_host, $expected_path) =
- ($module_expected_url =~ m{://([^/]+)/(.*)$});
- my ($actual_host, $actual_path) =
- ($module_actual_url =~ m{://([^/]+)/(.*)$});
-
- # If the path didn't change but the host info did try --relocate
- # otherwise try regular svn switch.
- if (($expected_path eq $actual_path) && ($expected_host ne $actual_host)) {
- log_command($module, 'svn-switch', [
- 'svn', 'switch', '--relocate',
- $module_actual_url, $module_expected_url]);
- }
- else {
- log_command($module, 'svn-switch', [
- 'svn', 'switch', $module_expected_url]);
- }
- return;
- }
-
- warning (<<EOF);
-y[!!]
-y[!!] g[$module] seems to be checked out from somewhere other than expected.
-y[!!]
-
-kdesrc-build expects: y[$module_expected_url]
-The module is actually from: y[$module_actual_url]
-
-If the module location is incorrect, you can fix it by either deleting the
-g[b[source] directory, or by changing to the source directory and running
-svn switch $module_expected_url
-
-If the module is fine, please update your configuration file.
-
-If you use kdesrc-build with --src-only it will try switching for you (might not work
-correctly).
-EOF
- }
- else { # The two URLs match, but are they *right*? Things changed June 2013
- my ($uid, $url);
- # uid might be empty, we use $url to see if the match succeeds.
- ($uid, $url) = $module_actual_url =~ m{^svn\+ssh://(?:([a-z]+)\@)?(svn\.kde\.org)};
-
- if ($url && (!$uid || $uid ne 'svn')) {
- error ("SVN login scheme has changed for y[b[$module] as of 2013-06-21");
- error ("\tPlease see https://mail.kde.org/pipermail/kde-cvs-announce/2013/000112.html");
- error ("\tPlease update your b[svn-server] option to be:");
- error ("\tb[g[svn+ssh://svn\@svn.kde.org/home/kde");
- error ("\n\tThen, re-run kdesrc-build with the b[--src-only] option to complete the repair.");
-
- if (!$uid) {
- error (" r[b[* * *]: Note that your SVN URL has *no* username");
- error (" r[b[* * *]: You should probably also double-check ~/.ssh/config");
- error (" r[b[* * *]: for b[svn.kde.org] to ensure the correct default user (svn)");
- }
-
- croak_runtime ("SVN server has changed login scheme, see error message");
- }
- }
-}
-
-# This procedure should be run before any usage of a local working copy to
-# ensure it is valid. This should only be run if there's actually a local
-# copy.
-#
-# Any errors will be fatal, so a 'Runtime' exception would be raised.
-sub check_module_validity
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
-
- # svn 1.7 has a different working copy format that must be manually
- # converted. This will mess up everything else so make this our first
- # check.
- p_chdir($module->fullpath('source'));
-
- # gensym makes a symbol that can be made a filehandle by open3
- use Symbol qw(gensym);
-
- # Can't use filter_program_output as that doesn't capture STDERR on
- # purpose. We, on the other hand, just want STDERR.
- my $stderrReader = gensym();
- my $pid = open3(undef, undef, $stderrReader,
- 'svn', '--non-interactive', 'status');
-
- my @errorLines = grep { /:\s*E155036:/ } (<$stderrReader>);
- waitpid ($pid, 0);
-
- if (@errorLines) {
- warning (<<EOF);
-y[*] A new version of svn has been installed which requires a b[one-time] update
-y[*] Currently running b[svn upgrade], this may take some time but should only
-y[*] be needed once.
-EOF
-
- if (0 != log_command($module, 'svn-upgrade', ['svn', '--non-interactive', 'upgrade'])) {
- error (<<EOF);
-r[*] Unable to run b[svn upgrade] for b[r[$module]!
-r[*] If you have no local changes you should try deleting the $module
-r[*] source directory, and re-run b[kdesrc-build], which will re-download.
-r[*]
-r[*] There is no way for kdesrc-build to safely make this check for you as
-r[*] the old version of b[svn] is required to read the current repository!
-EOF
- croak_runtime("Unable to run svn upgrade for $module");
- }
-
- # By this point svn-upgrade should have run successfully, unless
- # we're in pretend mode.
- if (pretending()) {
- croak_runtime("Unable to use --pretend for svn module $module until svn-upgrade is run");
- }
- }
-
- # Ensure the URLs are correct.
- $self->_verifyCorrectServerURL();
-}
-
-# Checkout a module that has not been checked out before.
-#
-# This function will throw an exception in the event of a failure to update.
-#
-# The first parameter is the module to checkout (including extragear and
-# playground modules).
-#
-# Returns number of files affected, or undef.
-sub checkout_module_path
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
- my %pathinfo = $module->getInstallPathComponents('source');
- my @args;
-
- if (not -e $pathinfo{'path'} and not super_mkdir($pathinfo{'path'}))
- {
- croak_runtime ("Unable to create path r[$pathinfo{path}]!");
- }
-
- p_chdir ($pathinfo{'path'});
-
- my $svn_url = $self->svn_module_url();
- my $modulename = $pathinfo{'module'}; # i.e. kdelibs for KDE/kdelibs as $module
-
- push @args, ('svn', 'co', '--non-interactive');
- push @args, $svn_url;
- push @args, $modulename;
-
- note ("Checking out g[$module]");
-
- my $count = $self->run_svn('svn-co', \@args);
-
- return $count;
-}
-
-# Update a module that has already been checked out.
-#
-# This function will throw an exception in the event of an update failure.
-#
-# The first parameter is the module to checkout (including extragear and
-# playground modules).
-sub update_module_path
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
- my $fullpath = $module->fullpath('source');
- my @args;
-
- p_chdir ($fullpath);
-
- push @args, ('svn', 'up', '--non-interactive');
-
- note ("Updating g[$module]");
-
- my $count = eval { $self->run_svn('svn-up', \@args); };
-
- # Update failed, try svn cleanup.
- if (had_an_exception() && $@->{exception_type} ne 'ConflictPresent')
- {
- info ("\tUpdate failed, trying a cleanup.");
- my $result = safe_system('svn', 'cleanup');
- $result == 0 or croak_runtime ("Unable to update $module, " .
- "svn cleanup failed with exit code $result");
-
- info ("\tCleanup complete.");
-
- # Now try again (allow exception to bubble up this time).
- $count = $self->run_svn('svn-up-2', \@args);
- }
-
- return $count;
-}
-
-# Run the svn command. This is a special subroutine so that we can munge
-# the generated output to see what files have been added, and adjust the
-# build according.
-#
-# This function will throw an exception in the event of a build failure.
-#
-# First parameter is the ksb::Module object we're building.
-# Second parameter is the filename to use for the log file.
-# Third parameter is a reference to a list, which is the command ('svn')
-# and all of its arguments.
-# Return value is the number of files update (may be undef if unable to tell)
-sub run_svn
-{
- my ($self, $logfilename, $arg_ref) = @_;
- assert_isa($self, 'ksb::Updater::Svn');
- my $module = $self->module();
-
- my $revision = $module->getOption('revision');
- if ($revision && $revision ne '0')
- {
- my @tmp = @{$arg_ref};
-
- # Insert after first two entries, deleting 0 entries from the
- # list.
- splice @tmp, 2, 0, '-r', $revision;
- $arg_ref = \@tmp;
- }
-
- my $count = 0;
- my $conflict = 0;
-
- my $callback = sub {
- return unless $_;
-
- # The check for capitalized letters in the second column is because
- # svn can use the first six columns for updates (the characters will
- # all be uppercase), which makes it hard to tell apart from normal
- # sentences (like "At Revision foo"
- $count++ if /^[UPDARGMC][ A-Z]/;
- $conflict = 1 if /^C[ A-Z]/;
- };
-
- # Do svn update.
- my $result = log_command($module, $logfilename, $arg_ref, { callback => $callback });
-
- return 0 if pretending();
-
- croak_runtime("Error updating $module!") unless $result == 0;
-
- if ($conflict)
- {
- warning ("Source code conflict exists in r[$module], this module will not");
- warning ("build until it is resolved.");
-
- die make_exception('ConflictPresent', "Source conflicts exist in $module");
- }
-
- return $count;
-}
-
-# Subroutine to check for subversion conflicts in a module. Basically just
-# runs svn st and looks for "^C".
-#
-# First parameter is the module to check for conflicts on.
-# Returns 0 if a conflict exists, non-zero otherwise.
-sub module_has_conflict
-{
- my $module = assert_isa(shift, 'ksb::Module');
- my $srcdir = $module->fullpath('source');
-
- if ($module->getOption('no-svn'))
- {
- whisper ("\tSource code conflict check skipped.");
- return 1;
- }
- else
- {
- info ("\tChecking for source conflicts... ");
- }
-
- my $pid = open my $svnProcess, "-|";
- if (!$pid)
- {
- error ("\tUnable to open check source conflict status: b[r[$!]");
- return 0; # false allows the build to proceed anyways.
- };
-
- if (0 == $pid)
- {
- close STDERR; # No broken pipe warnings
-
- disable_locale_message_translation();
- exec {'svn'} (qw/svn --non-interactive st/, $srcdir) or
- croak_runtime("Cannot execute 'svn' program: $!");
- # Not reached
- }
-
- while (<$svnProcess>)
- {
- if (/^C/)
- {
- error (<<EOF);
-The $module module has source code conflicts present. This can occur
-when you have made changes to the source code in the local copy
-at $srcdir
-that interfere with a change introduced in the source repository.
-EOF
-
- error (<<EOF);
-To fix this, y[if you have made no source changes that you haven't committed],
-run y[svn revert -R $srcdir]
-to bring the source directory back to a pristine state and trying building the
-module again.
-
-NOTE: Again, if you have uncommitted source code changes, running this command
-will delete your changes in favor of the version in the source repository.
-EOF
-
- kill "TERM", $pid; # Kill svn
- waitpid ($pid, 0);
- close $svnProcess;
- return 0;
- }
- }
-
- # conflicts cleared apparently.
- waitpid ($pid, 0);
- close $svnProcess;
- return 1;
-}
-
-# scm-specific update procedure.
-# May change the current directory as necessary.
-# Assumes called as part of a ksb::Module (i.e. $self->isa('ksb::Module') should be true.
-sub updateInternal
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
- my $fullpath = $module->fullpath('source');
-
- if (-e "$fullpath/.svn") {
- $self->check_module_validity();
- my $updateCount = $self->update_module_path();
-
- my $log_filter = sub {
- return unless defined $_;
- print $_ if /^C/;
- print $_ if /Checking for/;
- return;
- };
-
- # Use log_command as the check so that an error file gets created.
- if (0 != log_command($module, 'conflict-check',
- ['kdesrc-build', 'ksb::Updater::Svn::module_has_conflict',
- $module],
- { callback => $log_filter, no_translate => 1 })
- )
- {
- croak_runtime (" * Conflicts present in module $module");
- }
-
- return $updateCount;
- }
- else {
- return $self->checkout_module_path();
- }
-}
-
-sub name
-{
- return 'svn';
-}
-
-sub currentRevisionInternal
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- return $self->svnInfo('Revision');
-}
-
-# Returns a requested parameter from 'svn info'.
-#
-# First parameter is a string with the name of the parameter to retrieve (e.g. URL).
-# Each line of output from svn info is searched for the requested string.
-# Returns the string value of the parameter or undef if an error occurred.
-sub svnInfo
-{
- my $self = assert_isa(shift, 'ksb::Updater::Svn');
- my $module = $self->module();
-
- my $param = shift;
- my $srcdir = $module->fullpath('source');
- my $result; # Predeclare to outscope upcoming eval
-
- if (pretending() && ! -e $srcdir) {
- return 'Unknown';
- }
-
- # Search each line of output, ignore stderr.
- # eval since filter_program_output uses exceptions.
- eval
- {
- # Need to chdir into the srcdir, in case srcdir is a symlink.
- # svn info /path/to/symlink barfs otherwise.
- p_chdir ($srcdir);
-
- my @lines = filter_program_output(
- sub { /^$param:/ },
- 'svn', 'info', '--non-interactive', '.'
- );
-
- croak_runtime ("No svn info output!") unless @lines;
- chomp ($result = $lines[0]);
- $result =~ s/^$param:\s*//;
- };
-
- if($@)
- {
- error ("Unable to run r[b[svn], is the Subversion program installed?");
- error (" -- Error was: r[$@]");
- return undef;
- }
-
- return $result;
-}
-
-1;
-
diff --git a/modules/ksb/Util.pm b/modules/ksb/Util.pm
index 0c89c2ca..3a721f95 100644
--- a/modules/ksb/Util.pm
+++ b/modules/ksb/Util.pm
@@ -914,7 +914,6 @@ sub safe_lndir_p ($from, $to)
$dir =~ s/$from/$to/;
# Ignore version-control metadata
- return if $dir =~ m,/\.svn,;
return if $dir =~ m,/\.git,;
croak_runtime("Couldn't create directory $dir: $!")
diff --git a/org.kde.kdesrc-build.metainfo.xml b/org.kde.kdesrc-build.metainfo.xml
index c22b0583..97cb365b 100644
--- a/org.kde.kdesrc-build.metainfo.xml
+++ b/org.kde.kdesrc-build.metainfo.xml
@@ -147,7 +147,7 @@
<p xml:lang="x-test">xxFeatures:xx</p>
<p xml:lang="zh-CN">功能:</p>
<ul>
- <li>Will automatically checkout and update the KDE source code from its source repository. Both Subversion and git repository types are supported.</li>
+ <li>Will automatically checkout and update the KDE source code from its source repository.</li>
<li xml:lang="ca">Extraurà i actualitzarà automàticament el codi font del KDE des del seu repositori d'origen. Admet tant els tipus de repositori de Subversion com els Git.</li>
<li xml:lang="ca-valencia">Extraurà i actualitzarà automàticament el codi font de KDE des del seu repositori d'origen. Admet tant els tipus de repositori de Subversion com els Git.</li>
<li xml:lang="el">Θα φέρει αυτόματα και θα ενημερώσει τον πηγαίο κώδικα του KDE από το αποθετήριο. Και οι δύο τύποι αποθετηρίου, svn και git υποστηρίζονται.</li>
diff --git a/t/smoke/load-all-ksb-modules.t b/t/smoke/load-all-ksb-modules.t
index 16aeeaaf..c7ca9daa 100644
--- a/t/smoke/load-all-ksb-modules.t
+++ b/t/smoke/load-all-ksb-modules.t
@@ -43,7 +43,6 @@ use ksb::Updater::Git;
use ksb::Updater::KDEProject;
use ksb::Updater::KDEProjectMetadata;
use ksb::Updater::Qt5;
-use ksb::Updater::Svn;
use ksb::Util;
use ksb::Util::LoggedSubprocess;
use ksb::Version;
diff --git a/vim/syntax/kdesrc-buildrc.vim b/vim/syntax/kdesrc-buildrc.vim
index 3b14b3b9..297fcd76 100644
--- a/vim/syntax/kdesrc-buildrc.vim
+++ b/vim/syntax/kdesrc-buildrc.vim
@@ -36,12 +36,12 @@ setlocal iskeyword+=-
" Keywords
syn keyword ksbrcOption contained skipwhite nextgroup=ksbrcStringValue
- \ binpath branch build-dir checkout-only cmake-options configure-flags
+ \ binpath branch build-dir cmake-options configure-flags
\ custom-build-command cxxflags dest-dir do-not-compile kdedir libname
\ libpath log-dir make-install-prefix make-options module-base-path
\ cmake-generator cmake-toolchain ninja-options
\ override-build-system override-url prefix qtdir repository
- \ revision source-dir svn-server tag remove-after-install
+ \ revision source-dir tag remove-after-install
\ qmake-options git-user directory-layout
syn keyword ksbrcGlobalOption contained skipwhite nextgroup=ksbrcStringValue
More information about the kde-doc-english
mailing list