add lbzip2 output processor for exports
authorAriel T. Glenn <ariel@wikimedia.org>
Wed, 20 Mar 2019 05:25:06 +0000 (07:25 +0200)
committerAriel T. Glenn <ariel@wikimedia.org>
Sat, 23 Mar 2019 23:20:04 +0000 (01:20 +0200)
Bug: T214293
Change-Id: I98e26b833df473bbeb3dc1b881f428174d776b64

autoload.php
includes/export/DumpLBZip2Output.php [new file with mode: 0644]
maintenance/includes/BackupDumper.php

index 4172ed3..f3ece6a 100644 (file)
@@ -426,6 +426,7 @@ $wgAutoloadLocalClasses = [
        'DumpFilter' => __DIR__ . '/includes/export/DumpFilter.php',
        'DumpGZipOutput' => __DIR__ . '/includes/export/DumpGZipOutput.php',
        'DumpIterator' => __DIR__ . '/maintenance/dumpIterator.php',
+       'DumpLBZip2Output' => __DIR__ . '/includes/export/DumpLBZip2Output.php',
        'DumpLatestFilter' => __DIR__ . '/includes/export/DumpLatestFilter.php',
        'DumpLinks' => __DIR__ . '/maintenance/dumpLinks.php',
        'DumpMessages' => __DIR__ . '/maintenance/language/dumpMessages.php',
diff --git a/includes/export/DumpLBZip2Output.php b/includes/export/DumpLBZip2Output.php
new file mode 100644 (file)
index 0000000..b923995
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Sends dump output via the lbzip2 compressor.
+ *
+ * Copyright © 2003, 2005, 2006 Brion Vibber <brion@pobox.com>
+ * Copyright © 2019 Wikimedia Foundation Inc.
+ * https://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * @ingroup Dump
+ * @since 1.33
+ */
+class DumpLBZip2Output extends DumpPipeOutput {
+       /**
+        * @param string $file
+        */
+       function __construct( $file ) {
+               # use only one core
+               parent::__construct( "lbzip2 -n 1", $file );
+       }
+}
index 45786d8..34ec315 100644 (file)
@@ -86,6 +86,7 @@ abstract class BackupDumper extends Maintenance {
                $this->registerOutput( 'gzip', DumpGZipOutput::class );
                $this->registerOutput( 'bzip2', DumpBZip2Output::class );
                $this->registerOutput( 'dbzip2', DumpDBZip2Output::class );
+               $this->registerOutput( 'lbzip2', DumpLBZip2Output::class );
                $this->registerOutput( '7zip', Dump7ZipOutput::class );
 
                $this->registerFilter( 'latest', DumpLatestFilter::class );
@@ -96,7 +97,7 @@ abstract class BackupDumper extends Maintenance {
                $this->addOption( 'plugin', 'Load a dump plugin class. Specify as <class>[:<file>].',
                        false, true, false, true );
                $this->addOption( 'output', 'Begin a filtered output stream; Specify as <type>:<file>. ' .
-                       '<type>s: file, gzip, bzip2, 7zip, dbzip2', false, true, false, true );
+                       '<type>s: file, gzip, bzip2, 7zip, dbzip2, lbzip2', false, true, false, true );
                $this->addOption( 'filter', 'Add a filter on an output branch. Specify as ' .
                        '<type>[:<options>]. <types>s: latest, notalk, namespace', false, true, false, true );
                $this->addOption( 'report', 'Report position and speed after every n pages processed. ' .