aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-01-20 20:40:56 +0100
committerSefa Eyeoglu <contact@scrumplex.net>2022-01-31 21:40:59 +0100
commitefa414c442a77735a5f972b7103e8ce866a6bdd1 (patch)
treedbefe8703aeed2f40e95fb2d5dac5a0ad0f794f0
parentc39da093bf5f4d73f2cfbc1b030d5c1e8297f5a2 (diff)
downloadPrismLauncher-efa414c442a77735a5f972b7103e8ce866a6bdd1.tar.gz
PrismLauncher-efa414c442a77735a5f972b7103e8ce866a6bdd1.tar.bz2
PrismLauncher-efa414c442a77735a5f972b7103e8ce866a6bdd1.zip
refactor: initial migration to QuaZip 1.2
Let's move off our custom QuaZip. In the olden times we needed the custom version of QuaZip, as it was basically unmaintained and on SourceForge (eww). But nowadays it's maintained and on GitHub. See new GitHub page: https://github.com/stachenov/quazip
-rw-r--r--.gitmodules4
-rw-r--r--CMakeLists.txt3
-rw-r--r--launcher/InstanceImportTask.cpp2
-rw-r--r--launcher/MMCZip.cpp102
-rw-r--r--launcher/MMCZip.h8
-rw-r--r--launcher/minecraft/MinecraftLoadAndCheck.h2
-rw-r--r--launcher/minecraft/MinecraftUpdate.h2
-rw-r--r--launcher/minecraft/World.cpp6
-rw-r--r--launcher/minecraft/launch/ExtractNatives.cpp4
-rw-r--r--launcher/minecraft/launch/ModMinecraftJar.cpp8
-rw-r--r--launcher/minecraft/mod/LocalModParseTask.cpp4
-rw-r--r--launcher/modplatform/atlauncher/ATLPackInstallTask.cpp2
-rw-r--r--launcher/modplatform/legacy_ftb/PackInstallTask.h4
-rw-r--r--launcher/modplatform/technic/SingleZipPackInstallTask.h2
-rw-r--r--launcher/modplatform/technic/TechnicPackProcessor.cpp6
-rw-r--r--launcher/ui/dialogs/ExportInstanceDialog.cpp7
-rw-r--r--libraries/classparser/src/classparser.cpp2
m---------libraries/quazip0
18 files changed, 39 insertions, 129 deletions
diff --git a/.gitmodules b/.gitmodules
index 6b90601f..cff26810 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,7 +2,3 @@
path = libraries/libnbtplusplus
url = https://github.com/MultiMC/libnbtplusplus.git
pushurl = git@github.com:MultiMC/libnbtplusplus.git
-[submodule "libraries/quazip"]
- path = libraries/quazip
- url = https://github.com/PolyMC/quazip.git
- pushurl = git@github.com:PolyMC/quazip.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6a9511b3..35deff04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -103,6 +103,8 @@ find_package(Qt5Network REQUIRED)
find_package(Qt5Test REQUIRED)
find_package(Qt5Xml REQUIRED)
+find_package(QuaZip-Qt5 REQUIRED)
+
# The Qt5 cmake files don't provide its install paths, so ask qmake.
include(QMakeQuery)
query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
@@ -249,7 +251,6 @@ add_subdirectory(libraries/hoedown) # markdown parser
add_subdirectory(libraries/launcher) # java based launcher part for Minecraft
add_subdirectory(libraries/javacheck) # java compatibility checker
add_subdirectory(libraries/xz-embedded) # xz compression
-add_subdirectory(libraries/quazip) # zip manipulation library
add_subdirectory(libraries/rainbow) # Qt extension for colors
add_subdirectory(libraries/iconfix) # fork of Qt's QIcon loader
add_subdirectory(libraries/LocalPeer) # fork of a library from Qt solutions
diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp
index 8cd68d7b..6e2dd912 100644
--- a/launcher/InstanceImportTask.cpp
+++ b/launcher/InstanceImportTask.cpp
@@ -29,7 +29,7 @@
#include "modplatform/flame/FileResolvingTask.h"
#include "modplatform/flame/PackManifest.h"
#include "Json.h"
-#include <quazipdir.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipdir.h>
#include "modplatform/technic/TechnicPackProcessor.h"
#include "icons/IconList.h"
diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp
index b25c61e7..e1906a0c 100644
--- a/launcher/MMCZip.cpp
+++ b/launcher/MMCZip.cpp
@@ -13,17 +13,16 @@
* limitations under the License.
*/
-#include <quazip.h>
-#include <quazipdir.h>
-#include <quazipfile.h>
-#include <JlCompress.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipdir.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipfile.h>
#include "MMCZip.h"
#include "FileSystem.h"
#include <QDebug>
// ours
-bool MMCZip::mergeZipFiles(QuaZip *into, QFileInfo from, QSet<QString> &contained, const JlCompress::FilterFunction filter)
+bool MMCZip::mergeZipFiles(QuaZip *into, QFileInfo from, QSet<QString> &contained, const FilterFunction filter)
{
QuaZip modZip(from.filePath());
modZip.open(QuaZip::mdUnzip);
@@ -75,99 +74,6 @@ bool MMCZip::mergeZipFiles(QuaZip *into, QFileInfo from, QSet<QString> &containe
}
// ours
-bool MMCZip::createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<Mod>& mods)
-{
- QuaZip zipOut(targetJarPath);
- if (!zipOut.open(QuaZip::mdCreate))
- {
- QFile::remove(targetJarPath);
- qCritical() << "Failed to open the minecraft.jar for modding";
- return false;
- }
- // Files already added to the jar.
- // These files will be skipped.
- QSet<QString> addedFiles;
-
- // Modify the jar
- QListIterator<Mod> i(mods);
- i.toBack();
- while (i.hasPrevious())
- {
- const Mod &mod = i.previous();
- // do not merge disabled mods.
- if (!mod.enabled())
- continue;
- if (mod.type() == Mod::MOD_ZIPFILE)
- {
- if (!mergeZipFiles(&zipOut, mod.filename(), addedFiles))
- {
- zipOut.close();
- QFile::remove(targetJarPath);
- qCritical() << "Failed to add" << mod.filename().fileName() << "to the jar.";
- return false;
- }
- }
- else if (mod.type() == Mod::MOD_SINGLEFILE)
- {
- // FIXME: buggy - does not work with addedFiles
- auto filename = mod.filename();
- if (!JlCompress::compressFile(&zipOut, filename.absoluteFilePath(), filename.fileName()))
- {
- zipOut.close();
- QFile::remove(targetJarPath);
- qCritical() << "Failed to add" << mod.filename().fileName() << "to the jar.";
- return false;
- }
- addedFiles.insert(filename.fileName());
- }
- else if (mod.type() == Mod::MOD_FOLDER)
- {
- // FIXME: buggy - does not work with addedFiles
- auto filename = mod.filename();
- QString what_to_zip = filename.absoluteFilePath();
- QDir dir(what_to_zip);
- dir.cdUp();
- QString parent_dir = dir.absolutePath();
- if (!JlCompress::compressSubDir(&zipOut, what_to_zip, parent_dir, addedFiles))
- {
- zipOut.close();
- QFile::remove(targetJarPath);
- qCritical() << "Failed to add" << mod.filename().fileName() << "to the jar.";
- return false;
- }
- qDebug() << "Adding folder " << filename.fileName() << " from "
- << filename.absoluteFilePath();
- }
- else
- {
- // Make sure we do not continue launching when something is missing or undefined...
- zipOut.close();
- QFile::remove(targetJarPath);
- qCritical() << "Failed to add unknown mod type" << mod.filename().fileName() << "to the jar.";
- return false;
- }
- }
-
- if (!mergeZipFiles(&zipOut, QFileInfo(sourceJarPath), addedFiles, [](const QString key){return !key.contains("META-INF");}))
- {
- zipOut.close();
- QFile::remove(targetJarPath);
- qCritical() << "Failed to insert minecraft.jar contents.";
- return false;
- }
-
- // Recompress the jar
- zipOut.close();
- if (zipOut.getZipError() != 0)
- {
- QFile::remove(targetJarPath);
- qCritical() << "Failed to finalize minecraft.jar!";
- return false;
- }
- return true;
-}
-
-// ours
QString MMCZip::findFolderOfFileInZip(QuaZip * zip, const QString & what, const QString &root)
{
QuaZipDir rootDir(zip, root);
diff --git a/launcher/MMCZip.h b/launcher/MMCZip.h
index 9c47fa11..5260f856 100644
--- a/launcher/MMCZip.h
+++ b/launcher/MMCZip.h
@@ -21,17 +21,21 @@
#include "minecraft/mod/Mod.h"
#include <functional>
-#include <JlCompress.h>
+//#include <QuaZip-Qt5-1.2/quazip/JlCompress.h>
+// TODO: Blocked by https://github.com/stachenov/quazip/pull/141
+// For now, checkout https://github.com/Scrumplex/quazip/tree/expose-jlcompress-fns at ../../quazip
+#include <../../quazip/quazip/JlCompress.h>
#include <nonstd/optional>
namespace MMCZip
{
+ using FilterFunction = std::function<bool(const QString &)>;
/**
* Merge two zip files, using a filter function
*/
bool mergeZipFiles(QuaZip *into, QFileInfo from, QSet<QString> &contained,
- const JlCompress::FilterFunction filter = nullptr);
+ const FilterFunction filter = nullptr);
/**
* take a source jar, add mods to it, resulting in target jar
diff --git a/launcher/minecraft/MinecraftLoadAndCheck.h b/launcher/minecraft/MinecraftLoadAndCheck.h
index bfeae46b..4e673a4b 100644
--- a/launcher/minecraft/MinecraftLoadAndCheck.h
+++ b/launcher/minecraft/MinecraftLoadAndCheck.h
@@ -20,7 +20,7 @@
#include <QUrl>
#include "tasks/Task.h"
-#include <quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
#include "QObjectPtr.h"
diff --git a/launcher/minecraft/MinecraftUpdate.h b/launcher/minecraft/MinecraftUpdate.h
index fadebff9..a1df4b3f 100644
--- a/launcher/minecraft/MinecraftUpdate.h
+++ b/launcher/minecraft/MinecraftUpdate.h
@@ -22,7 +22,7 @@
#include "net/NetJob.h"
#include "tasks/Task.h"
#include "minecraft/VersionFilterData.h"
-#include <quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
class MinecraftVersion;
class MinecraftInstance;
diff --git a/launcher/minecraft/World.cpp b/launcher/minecraft/World.cpp
index a2b4dac7..95892d43 100644
--- a/launcher/minecraft/World.cpp
+++ b/launcher/minecraft/World.cpp
@@ -26,9 +26,9 @@
#include <io/stream_reader.h>
#include <tag_string.h>
#include <tag_primitive.h>
-#include <quazip.h>
-#include <quazipfile.h>
-#include <quazipdir.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipfile.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipdir.h>
#include <QCoreApplication>
diff --git a/launcher/minecraft/launch/ExtractNatives.cpp b/launcher/minecraft/launch/ExtractNatives.cpp
index 8cd439b1..744e7ac6 100644
--- a/launcher/minecraft/launch/ExtractNatives.cpp
+++ b/launcher/minecraft/launch/ExtractNatives.cpp
@@ -17,8 +17,8 @@
#include <minecraft/MinecraftInstance.h>
#include <launch/LaunchTask.h>
-#include <quazip.h>
-#include <quazipdir.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipdir.h>
#include "MMCZip.h"
#include "FileSystem.h"
#include <QDir>
diff --git a/launcher/minecraft/launch/ModMinecraftJar.cpp b/launcher/minecraft/launch/ModMinecraftJar.cpp
index 93de9d59..c8796f01 100644
--- a/launcher/minecraft/launch/ModMinecraftJar.cpp
+++ b/launcher/minecraft/launch/ModMinecraftJar.cpp
@@ -42,6 +42,7 @@ void ModMinecraftJar::executeTask()
emitFailed(tr("Couldn't remove stale jar file: %1").arg(finalJarPath));
}
+ /*
// create temporary modded jar, if needed
auto components = m_inst->getPackProfile();
auto profile = components->getProfile();
@@ -53,12 +54,13 @@ void ModMinecraftJar::executeTask()
mainJar->getApplicableFiles(currentSystem, jars, temp1, temp2, temp3, m_inst->getLocalLibraryPath());
auto sourceJarPath = jars[0];
if(!MMCZip::createModdedJar(sourceJarPath, finalJarPath, jarMods))
- {
+ { */
+ // TODO: add back support for modded jar
emitFailed(tr("Failed to create the custom Minecraft jar file."));
return;
- }
+ /*}
}
- emitSucceeded();
+ emitSucceeded();*/
}
void ModMinecraftJar::finalize()
diff --git a/launcher/minecraft/mod/LocalModParseTask.cpp b/launcher/minecraft/mod/LocalModParseTask.cpp
index 8ac5885f..fa3a4538 100644
--- a/launcher/minecraft/mod/LocalModParseTask.cpp
+++ b/launcher/minecraft/mod/LocalModParseTask.cpp
@@ -4,8 +4,8 @@
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
-#include <quazip.h>
-#include <quazipfile.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipfile.h>
#include <toml.h>
#include "settings/INIFile.h"
diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
index e5db512e..30a61026 100644
--- a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
+++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
@@ -19,7 +19,7 @@
#include <QtConcurrent/QtConcurrent>
-#include <quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
#include "MMCZip.h"
#include "minecraft/OneSixVersionFormat.h"
diff --git a/launcher/modplatform/legacy_ftb/PackInstallTask.h b/launcher/modplatform/legacy_ftb/PackInstallTask.h
index 305635a1..6797971c 100644
--- a/launcher/modplatform/legacy_ftb/PackInstallTask.h
+++ b/launcher/modplatform/legacy_ftb/PackInstallTask.h
@@ -1,8 +1,8 @@
#pragma once
#include "InstanceTask.h"
#include "net/NetJob.h"
-#include "quazip.h"
-#include "quazipdir.h"
+#include "QuaZip-Qt5-1.2/quazip/quazip.h"
+#include "QuaZip-Qt5-1.2/quazip/quazipdir.h"
#include "meta/Index.h"
#include "meta/Version.h"
#include "meta/VersionList.h"
diff --git a/launcher/modplatform/technic/SingleZipPackInstallTask.h b/launcher/modplatform/technic/SingleZipPackInstallTask.h
index 74f60941..58594136 100644
--- a/launcher/modplatform/technic/SingleZipPackInstallTask.h
+++ b/launcher/modplatform/technic/SingleZipPackInstallTask.h
@@ -18,7 +18,7 @@
#include "InstanceTask.h"
#include "net/NetJob.h"
-#include "quazip.h"
+#include "QuaZip-Qt5-1.2/quazip/quazip.h"
#include <QFutureWatcher>
#include <QStringList>
diff --git a/launcher/modplatform/technic/TechnicPackProcessor.cpp b/launcher/modplatform/technic/TechnicPackProcessor.cpp
index 52979b7c..f5c011f5 100644
--- a/launcher/modplatform/technic/TechnicPackProcessor.cpp
+++ b/launcher/modplatform/technic/TechnicPackProcessor.cpp
@@ -19,9 +19,9 @@
#include <Json.h>
#include <minecraft/MinecraftInstance.h>
#include <minecraft/PackProfile.h>
-#include <quazip.h>
-#include <quazipdir.h>
-#include <quazipfile.h>
+#include <QuaZip-Qt5-1.2/quazip/quazip.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipdir.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipfile.h>
#include <settings/INISettingsObject.h>
#include <memory>
diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp
index 1a164875..59ae0a76 100644
--- a/launcher/ui/dialogs/ExportInstanceDialog.cpp
+++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp
@@ -378,6 +378,7 @@ void SaveIcon(InstancePtr m_instance)
bool ExportInstanceDialog::doExport()
{
+ /*
auto name = FS::RemoveInvalidFilenameChars(m_instance->name());
const QString output = QFileDialog::getSaveFileName(
@@ -404,11 +405,11 @@ bool ExportInstanceDialog::doExport()
auto & blocked = proxyModel->blockedPaths();
using std::placeholders::_1;
if (!JlCompress::compressDir(output, m_instance->instanceRoot(), name, std::bind(&SeparatorPrefixTree<'/'>::covers, blocked, _1)))
- {
+ { */
QMessageBox::warning(this, tr("Error"), tr("Unable to export instance"));
return false;
- }
- return true;
+ /*}
+ return true;*/
}
void ExportInstanceDialog::done(int result)
diff --git a/libraries/classparser/src/classparser.cpp b/libraries/classparser/src/classparser.cpp
index 8825ea39..a47d1aad 100644
--- a/libraries/classparser/src/classparser.cpp
+++ b/libraries/classparser/src/classparser.cpp
@@ -18,7 +18,7 @@
#include "classparser.h"
#include <QFile>
-#include <quazipfile.h>
+#include <QuaZip-Qt5-1.2/quazip/quazipfile.h>
#include <QDebug>
namespace classparser
diff --git a/libraries/quazip b/libraries/quazip
deleted file mode 160000
-Subproject c9ef32de19bceb58d236f5c22382698deaec69f