diff options
Diffstat (limited to 'libre')
-rw-r--r-- | libre/ark/PKGBUILD | 26 | ||||
-rw-r--r-- | libre/ark/ark-unar-06.patch | 236 | ||||
-rw-r--r-- | libre/ark/libre.patch | 23 |
3 files changed, 36 insertions, 249 deletions
diff --git a/libre/ark/PKGBUILD b/libre/ark/PKGBUILD index c17ff8bba..9b6122aa6 100644 --- a/libre/ark/PKGBUILD +++ b/libre/ark/PKGBUILD @@ -1,34 +1,34 @@ -# $Id: PKGBUILD 280288 2016-11-10 18:13:29Z arojas $ +# $Id: PKGBUILD 283325 2016-12-15 10:41:32Z arojas $ # Maintainer (Arch): Antonio Rojas <arojas@archlinux.org> # Maintainer (Arch): Felix Yan <felixonmars@archlinux.org> # Contributor (Arch): Andrea Scarpino <andrea@archlinux.org> # Maintainer: André Silva <emulatorman@parabola.nu> pkgname=ark -pkgver=16.08.3 +pkgver=16.12.0 pkgrel=1.parabola1 -#pkgdesc='Archiving Tool, with unar support' -pkgdesc='Archiving Tool, without unrar recommendation' +pkgdesc='Archiving Tool, with unar support' arch=(i686 x86_64 armv7h) url='http://kde.org/applications/utilities/ark/' license=(GPL) depends=(kparts kpty libarchive hicolor-icon-theme) makedepends=(extra-cmake-modules kdoctools python) -#optdepends=('p7zip: 7Z format support' 'zip: ZIP compression support' 'unzip: ZIP format support' 'unar: RAR format support') -optdepends=('p7zip: 7Z format support' 'zip: ZIP compression support' 'unzip: ZIP format support') +optdepends=('p7zip: 7Z format support' 'zip: ZIP compression support' 'unzip: ZIP format support' 'unar: RAR format support') conflicts=(kdeutils-ark) replaces=(kdeutils-ark) groups=(kde-applications kdeutils) -source=("http://download.kde.org/stable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz") -# 'ark-unar-06.patch') -md5sums=('6820a1ea9f3642b838db5b485ca77b25') -# 'f38dc71e385e9242899cbe032a983d81') +source=("http://download.kde.org/stable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig} + 'libre.patch') +md5sums=('4c0e09b5ec61bda3e722f446496f8cb3' + 'SKIP' + '24dd92f19aba961b01d6975af12f9b53') +validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7) # Albert Astals Cid <aacid@kde.org> prepare() { mkdir -p build -# cd $pkgname-$pkgver -# # This patch will allow Ark to use The Unarchiver command line utilities (unar/lsar) to operate on RAR files, particularly RARv3. -# patch -Np1 -i ../ark-unar-07.patch + cd $pkgname-$pkgver + patch -p1 -i ../libre.patch + rm -rv plugins/clirarplugin } build() { diff --git a/libre/ark/ark-unar-06.patch b/libre/ark/ark-unar-06.patch deleted file mode 100644 index ab2ef274f..000000000 --- a/libre/ark/ark-unar-06.patch +++ /dev/null @@ -1,236 +0,0 @@ -diff --git a/plugins/cliunarchiverplugin/kerfuffle_cliunarchiver.desktop b/plugins/cliunarchiverplugin/kerfuffle_cliunarchiver.desktop -new file mode 100644 -index 0000000..2b5bd9e ---- /dev/null -+++ b/plugins/cliunarchiverplugin/kerfuffle_cliunarchiver.desktop -@@ -0,0 +1,15 @@ -+[Desktop Entry] -+Type=Service -+X-KDE-ServiceTypes=Kerfuffle/Plugin -+X-KDE-Library=kerfuffle_cliunarchiver -+X-KDE-PluginInfo-Author=Luke Shumaker -+X-KDE-PluginInfo-Email=lukeshu@sbcglobal.net -+X-KDE-PluginInfo-Name= kerfuffle_cliunarchiver -+X-KDE-PluginInfo-Version=0.0.1 -+X-KDE-PluginInfo-Website=http://www.kde.org -+X-KDE-PluginInfo-License=GPLv2+ -+X-KDE-Priority=150 -+X-KDE-Kerfuffle-APIRevision=1 -+X-KDE-Kerfuffle-ReadWrite=false -+Name=The Unarchiver plugin -+MimeType=application/x-rar; -diff --git a/plugins/cliunarchiverplugin/cliplugin.cpp b/plugins/cliunarchiverplugin/cliplugin.cpp -new file mode 100644 -index 0000000..e0adcf7 ---- /dev/null -+++ b/plugins/cliunarchiverplugin/cliplugin.cpp -@@ -0,0 +1,170 @@ -+ /* -+ * ark -- archiver for the KDE project -+ * -+ * Copyright (C) 2011 Luke Shumaker <lukeshu@sbcglobal.net> -+ * -+ * 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. -+ * -+ */ -+ -+#include "kerfuffle/cliinterface.h" -+#include "kerfuffle/kerfuffle_export.h" -+ -+#include <KDebug> -+ -+#include <QDateTime> -+#include <QDir> -+#include <QRegExp> -+#include <QString> -+#include <QStringList> -+ -+using namespace Kerfuffle; -+ -+class CliPlugin: public CliInterface -+{ -+public: -+ explicit CliPlugin(QObject *parent, const QVariantList & args) -+ : CliInterface(parent, args) { -+ m_indentLevel = 0; -+ } -+ -+ virtual ~CliPlugin() { -+ } -+ -+ virtual ParameterList parameterList() const { -+ static ParameterList p; -+ if (p.isEmpty()) { -+ /* Limitations: -+ * 01 - creates an empty file upon entering wrong password -+ * 02 - unar detects if output is being redirected and then does not accept any input -+ */ -+ -+ ///////////////[ COMMON ]///////////// -+ -+ p[CaptureProgress] = false; -+ p[PasswordPromptPattern] = QLatin1String("Password (will not be shown): "); -+ -+ ///////////////[ LIST ]///////////// -+ -+ p[ListProgram] = QLatin1String("lsar"); -+ p[ListArgs] = QStringList() << QLatin1String("-json") << QLatin1String("$Archive"); -+ -+ ///////////////[ EXTRACT ]///////////// -+ -+ p[ExtractProgram] = QLatin1String("unar"); -+ p[ExtractArgs] = QStringList() << QLatin1String("$Archive") << QLatin1String("$Files") << QLatin1String("$PasswordSwitch") << QLatin1String("$RootNodeSwitch"); -+ p[NoTrailingSlashes] = true; -+ p[PasswordSwitch] = QStringList() << QLatin1String("-password") << QLatin1String("$Password"); -+ p[RootNodeSwitch] = QStringList() << QLatin1String("-output-directory") << QLatin1String("$Path"); -+ p[FileExistsExpression] = QLatin1String("^\\\"(.+)\\\" already exists."); -+ p[FileExistsInput] = QStringList() -+ << QLatin1String("o") //overwrite -+ << QLatin1String("s") //skip -+ << QLatin1String("O") //overwrite all -+ << QLatin1String("S") //autoskip -+ << QLatin1String("q") //cancel -+ ; -+ -+ ///////////////[ DELETE ]///////////// -+ -+ p[DeleteProgram] = QLatin1String("x-fakeprogram"); -+ //p[DeleteArgs] = -+ -+ ///////////////[ ADD ]///////////// -+ -+ p[AddProgram] = QLatin1String("x-fakeprogram"); -+ //p[AddArgs] = -+ -+ ///////////////[ ERRORS ]///////////// -+ -+ p[ExtractionFailedPatterns] = QStringList() -+ << QLatin1String("Failed! \\((.+)\\)$") -+ << QLatin1String("Segmentation fault$"); -+ -+ p[WrongPasswordPatterns] = QStringList() -+ << QLatin1String("Failed! \\((.+)\\)$"); -+ } -+ return p; -+ } -+ -+ QString m_entryFilename, m_internalId; -+ ArchiveEntry m_currentEntry; -+ int m_indentLevel; -+ -+ bool readListLine(const QString &line) { -+ /* lsar will give us JSON output. However, we actually parse based on -+ * the indentation. Ugly, I know, but -+ * 1. It's easier -+ * 2. lsar's JSON is invalid JSON, so actual parsers bork. -+ */ -+ -+ int spaces; -+ for(spaces=0;(spaces<line.size())&&(line[spaces]==QLatin1Char(' '));spaces++){} -+ // Since this is so ugly anyway, I'm not even going to check to -+ // make sure that spaces is even. I mean, what would I do about it? -+ int m_newIndentLevel = spaces/2; -+ -+ if (m_newIndentLevel>m_indentLevel) { -+ if (m_newIndentLevel==3) { -+ m_currentEntry.clear(); -+ m_currentEntry[IsDirectory] = false; -+ } -+ } else if (m_newIndentLevel<m_indentLevel) { -+ if ( (m_newIndentLevel<3) && (m_indentLevel>=3) ) { -+ EntryMetaDataType index = IsDirectory; -+ if (m_currentEntry[index].toBool()) { -+ m_currentEntry[FileName].toString().append(QLatin1String("/")); -+ } -+ kDebug() << "Added entry:" << m_currentEntry; -+ entry(m_currentEntry); -+ } -+ } -+ m_indentLevel = m_newIndentLevel; -+ -+ QRegExp rx(QLatin1String("^\\s*\"([^\"]*)\": (.*),$")); -+ if (rx.indexIn(line) >= 0) { -+ QRegExp rx_unquote(QLatin1String("^\"(.*)\"$")); -+ QString key = rx.cap(1); -+ QString value = rx.cap(2); -+ -+ if (false) { -+ } else if (key==QLatin1String("XADFileName")) { -+ rx_unquote.indexIn(value); -+ m_currentEntry[FileName] = m_currentEntry[InternalID] = rx_unquote.cap(1); -+ } else if (key==QLatin1String("XADFileSize")) { -+ m_currentEntry[Size] = value.toInt(); -+ } else if (key==QLatin1String("XADCompressedSize")) { -+ m_currentEntry[CompressedSize] = value.toInt(); -+ } else if (key==QLatin1String("XADLastModificationDate")) { -+ QDateTime ts(QDate::fromString(value, QLatin1String("\"YYYY-MM-DD hh:mm:ss"))); -+ m_currentEntry[Timestamp] = ts; -+ } else if (key==QLatin1String("XADIsDirectory")) { -+ m_currentEntry[IsDirectory] = (value==QLatin1String("1")); -+ } else if (key==QLatin1String("RARCRC32")) { -+ m_currentEntry[CRC] = value.toInt(); -+ } else if (key==QLatin1String("RARCompressionMethod")) { -+ m_currentEntry[Method] = value.toInt(); -+ } else if (key==QLatin1String("Encrypted")) { -+ m_currentEntry[IsPasswordProtected] = (value.toInt() != 0); -+ } -+ // TODO: add RAR version. ([Version]) -+ } -+ -+ return true; -+ } -+}; -+ -+KERFUFFLE_EXPORT_PLUGIN(CliPlugin) -+ -diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt -index 3619412..6368839 100644 ---- a/plugins/CMakeLists.txt -+++ b/plugins/CMakeLists.txt -@@ -20,6 +20,7 @@ if (LIBARCHIVE_FOUND) - endif (LIBARCHIVE_FOUND) - - add_subdirectory( clirarplugin ) -+add_subdirectory( cliunarchiverplugin ) - add_subdirectory( cli7zplugin ) - add_subdirectory( clizipplugin ) - add_subdirectory( libsinglefileplugin ) -diff --git a/plugins/cliunarchiverplugin/CMakeLists.txt b/plugins/cliunarchiverplugin/CMakeLists.txt -new file mode 100644 -index 0000000..ccd52e7 ---- /dev/null -+++ b/plugins/cliunarchiverplugin/CMakeLists.txt -@@ -0,0 +1,21 @@ -+ -+include_directories( -+ ${CMAKE_CURRENT_SOURCE_DIR}/../.. -+ ${CMAKE_CURRENT_BINARY_DIR}/../.. -+ ) -+ -+########### next target ############### -+ -+set(kerfuffle_cliunarchiver_SRCS cliplugin.cpp) -+ -+kde4_add_plugin(kerfuffle_cliunarchiver ${kerfuffle_cliunarchiver_SRCS}) -+ -+target_link_libraries(kerfuffle_cliunarchiver ${KDE4_KDECORE_LIBS} ${KDE4_KIO_LIBS} kerfuffle ) -+ -+ -+ -+########### install files ############### -+ -+install(TARGETS kerfuffle_cliunarchiver DESTINATION ${PLUGIN_INSTALL_DIR} ) -+install( FILES kerfuffle_cliunarchiver.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) -+ diff --git a/libre/ark/libre.patch b/libre/ark/libre.patch new file mode 100644 index 000000000..2dea56e67 --- /dev/null +++ b/libre/ark/libre.patch @@ -0,0 +1,23 @@ +diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt +index d821217..a41142b 100644 +--- a/plugins/CMakeLists.txt ++++ b/plugins/CMakeLists.txt +@@ -6,7 +6,6 @@ function(kerfuffle_add_plugin plugin) + endfunction() + + add_subdirectory( libarchive ) +-add_subdirectory( clirarplugin ) + add_subdirectory( cli7zplugin ) + add_subdirectory( clizipplugin ) + add_subdirectory( libsinglefileplugin ) +diff --git a/plugins/cliunarchiverplugin/CMakeLists.txt b/plugins/cliunarchiverplugin/CMakeLists.txt +index df7a2b7..cc64313 100644 +--- a/plugins/cliunarchiverplugin/CMakeLists.txt ++++ b/plugins/cliunarchiverplugin/CMakeLists.txt +@@ -33,5 +33,5 @@ find_program(UNAR unar) + if(UNAR) + message(STATUS "Found unar executable: ${UNAR}") + else() +- message(WARNING "Could not find the unar executable. Ark requires unar or unrar to extract RAR archives.") ++ message(WARNING "Could not find the unar executable. Ark requires unar to extract RAR archives.") + endif() |