diff options
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | .gitignore | 7 | ||||
-rwxr-xr-x | PKGBUILD | 63 | ||||
-rw-r--r-- | fix_shared_ptr_crashes.patch | 709 | ||||
-rw-r--r-- | quazip-fix-build-with-qt-511.patch | 33 |
5 files changed, 49 insertions, 785 deletions
@@ -1,17 +1,23 @@ pkgbase = multimc5 pkgdesc = Minecraft launcher with ability to manage multiple instances. pkgver = 0.6.13 - pkgrel = 1 + pkgrel = 2 url = https://multimc.org/ arch = i686 arch = x86_64 license = Apache makedepends = cmake makedepends = java-environment + makedepends = git depends = zlib depends = libgl depends = qt5-base + depends = qt5-x11extras depends = java-runtime + depends = qt5-svg + depends = xorg-xrandr + depends = zenity + depends = wget optdepends = mcedit: Allows editing of minecraft worlds optdepends = visualvm: Profiling support optdepends = xorg-xrandr: for older minecraft versions @@ -19,15 +25,13 @@ pkgbase = multimc5 optdepends = glfw: to use system GLFW libraries provides = multimc conflicts = multimc - source = multimc5-0.6.13.tar.gz::https://github.com/MultiMC/MultiMC5/archive/0.6.13.tar.gz - source = https://github.com/MultiMC/libnbtplusplus/archive/multimc-0.6.1.tar.gz - source = https://github.com/MultiMC/quazip/archive/multimc-3.tar.gz - source = quazip-fix-build-with-qt-511.patch + source = multimc5::git+https://github.com/MultiMC/Launcher#tag=0.6.13 + source = libnbtplusplus::git+https://github.com/MultiMC/libnbtplusplus#commit=dc72a20b7efd304d12af2025223fad07b4b78464 + source = quazip::git+https://github.com/MultiMC/quazip#commit=b1a72ac0bb5a732bf887a535ab75c6f9bedb6b6b source = modern-java.patch - sha512sums = c897f75d01c0e7f73a860166bce3b4efccb3e3f8ec8b811c7e465ac97986c67c0d1149130429fcccb4bdd9af323d01e687f3d7afb5cb7d2c0299e61c0298cad9 - sha512sums = 81a1640a069d88df7ba0abf72089aecbe1e9d791c88acaaa7e70c8f0bcd0512cf8698178342657e363524ce8488dd072368a0aa8cc091a24912d6f8b6b0f4f2d - sha512sums = 2e9074203c67bc7ad98621c551047e5367f06e54cacfecc755a5bf2c9f99266eab42ad972f86ae28ed7e1507f6d27d8d2680a87ce9fd5b1e93a18bcb627ec3f0 - sha512sums = ca7a350bdeecf65dbca7de8d6912c935c6ba603edcddcd4ffe71d8997e50e4046335dde6d1d7c629d35025073d18be4d112a960d43a8801de979687bc26e46d4 + sha512sums = SKIP + sha512sums = SKIP + sha512sums = SKIP sha512sums = ede87db7e1ce67184409123720b48f65d35884bac5dfff34cc099c5d7520fd9173be00997df82ad29da4640928134a7199ffdd1cbaa83a72101dbed72736508b pkgname = multimc5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..2772a8916edd --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.pkg.tar.zst +*.tar.gz +multimc5/ +libnbtplusplus/ +quazip/ +pkg/ +src/ @@ -1,21 +1,23 @@ -# Maintainer: xiretza <xiretza+aur@gmail.com> +# Maintainer: getchoo <getchoo at tuta dot io> # Contributor: vorpalblade77@gmail.com # Contributor: b.klettbach@gmail.com # Contributor: Patrik Plihal <patrik.plihal at gmail dot com> +# Contributor: xiretza <xiretza+aur@gmail.com> pkgname=multimc5 +_pkgname=multimc5 pkgver=0.6.13 -pkgrel=1 -__pkgver_libnbtplusplus=multimc-0.6.1 -__pkgver_quazip=multimc-3 +_nbtplusplusver=dc72a20b7efd304d12af2025223fad07b4b78464 +_quazipver=b1a72ac0bb5a732bf887a535ab75c6f9bedb6b6b +pkgrel=2 pkgdesc="Minecraft launcher with ability to manage multiple instances." arch=('i686' 'x86_64') url="https://multimc.org/" license=('Apache') -depends=('zlib' 'libgl' 'qt5-base' 'java-runtime') +depends=('zlib' 'libgl' 'qt5-base' 'qt5-x11extras' 'java-runtime' 'qt5-svg' 'xorg-xrandr' 'zenity' 'wget') +makedepends=('cmake' 'java-environment' 'git') provides=('multimc') conflicts=('multimc') -makedepends=('cmake' 'java-environment') optdepends=('mcedit: Allows editing of minecraft worlds' 'visualvm: Profiling support' 'xorg-xrandr: for older minecraft versions' @@ -23,37 +25,30 @@ optdepends=('mcedit: Allows editing of minecraft worlds' 'glfw: to use system GLFW libraries' ) -source=("$pkgname-$pkgver.tar.gz::https://github.com/MultiMC/MultiMC5/archive/${pkgver}.tar.gz" - "https://github.com/MultiMC/libnbtplusplus/archive/${__pkgver_libnbtplusplus}.tar.gz" - "https://github.com/MultiMC/quazip/archive/${__pkgver_quazip}.tar.gz" - "quazip-fix-build-with-qt-511.patch" +source=("${_pkgname}::git+https://github.com/MultiMC/Launcher#tag=${pkgver}" + "libnbtplusplus::git+https://github.com/MultiMC/libnbtplusplus#commit=${_nbtplusplusver}" + "quazip::git+https://github.com/MultiMC/quazip#commit=${_quazipver}" "modern-java.patch" ) -sha512sums=('c897f75d01c0e7f73a860166bce3b4efccb3e3f8ec8b811c7e465ac97986c67c0d1149130429fcccb4bdd9af323d01e687f3d7afb5cb7d2c0299e61c0298cad9' - '81a1640a069d88df7ba0abf72089aecbe1e9d791c88acaaa7e70c8f0bcd0512cf8698178342657e363524ce8488dd072368a0aa8cc091a24912d6f8b6b0f4f2d' - '2e9074203c67bc7ad98621c551047e5367f06e54cacfecc755a5bf2c9f99266eab42ad972f86ae28ed7e1507f6d27d8d2680a87ce9fd5b1e93a18bcb627ec3f0' - 'ca7a350bdeecf65dbca7de8d6912c935c6ba603edcddcd4ffe71d8997e50e4046335dde6d1d7c629d35025073d18be4d112a960d43a8801de979687bc26e46d4' +sha512sums=('SKIP' + 'SKIP' + 'SKIP' 'ede87db7e1ce67184409123720b48f65d35884bac5dfff34cc099c5d7520fd9173be00997df82ad29da4640928134a7199ffdd1cbaa83a72101dbed72736508b') prepare() { - cd "${srcdir}/MultiMC5-${pkgver}" + cd "${srcdir}/${_pkgname}" - patch -p1 < "${srcdir}/modern-java.patch" - - rmdir "libraries/libnbtplusplus" 2>/dev/null || true - ln -sfT "${srcdir}/libnbtplusplus-${__pkgver_libnbtplusplus}/" \ - "libraries/libnbtplusplus" + # https://wiki.archlinux.org/title/VCS_package_guidelines#Git_submodules + git submodule init + git config submodule.depends/libnbtplusplus.url "${srcdir}/libnbtplusplus" + git config submodule.libraries/quazip.url "${srcdir}/quazip" + git submodule update - rmdir "libraries/quazip" 2>/dev/null || true - ln -sfT "${srcdir}/quazip-${__pkgver_quazip}/" \ - "libraries/quazip" - - cd "libraries/quazip" - # https://github.com/MultiMC/quazip/pull/1 - patch -p1 < "${srcdir}/quazip-fix-build-with-qt-511.patch" + # update build target to modern java version + patch -p1 < "${srcdir}/modern-java.patch" } build() { - cd "${srcdir}/MultiMC5-${pkgver}" + cd "${srcdir}/${_pkgname}" mkdir -p build cd build @@ -66,15 +61,15 @@ build() { } check() { - cd "${srcdir}/MultiMC5-${pkgver}/build" + cd "${srcdir}/${_pkgname}/build" make test } package() { - cd "${srcdir}/MultiMC5-${pkgver}/build" + cd "${srcdir}/${_pkgname}/build" make install DESTDIR="${pkgdir}" - install -D "${srcdir}/MultiMC5-${pkgver}/launcher/resources/multimc/scalable/multimc.svg" "${pkgdir}/usr/share/pixmaps/multimc.svg" - install -D "${srcdir}/MultiMC5-${pkgver}/launcher/package/linux/multimc.desktop" "${pkgdir}/usr/share/applications/multimc.desktop" - install -D "${srcdir}/MultiMC5-${pkgver}/build/libMultiMC_quazip.so" "${pkgdir}/usr/lib/libMultiMC_quazip.so" - install -D "${srcdir}/MultiMC5-${pkgver}/build/libMultiMC_nbt++.so" "${pkgdir}/usr/lib/libMultiMC_nbt++.so" + install -D "${srcdir}/${_pkgname}/launcher/resources/multimc/scalable/multimc.svg" "${pkgdir}/usr/share/pixmaps/multimc.svg" + install -D "${srcdir}/${_pkgname}/launcher/package/linux/multimc.desktop" "${pkgdir}/usr/share/applications/multimc.desktop" + install -D "${srcdir}/${_pkgname}/build/libMultiMC_quazip.so" "${pkgdir}/usr/lib/libMultiMC_quazip.so" + install -D "${srcdir}/${_pkgname}/build/libMultiMC_nbt++.so" "${pkgdir}/usr/lib/libMultiMC_nbt++.so" } diff --git a/fix_shared_ptr_crashes.patch b/fix_shared_ptr_crashes.patch deleted file mode 100644 index 55dc9a389d09..000000000000 --- a/fix_shared_ptr_crashes.patch +++ /dev/null @@ -1,709 +0,0 @@ -From 70ed30f9e6b47fbfb3151078ca61a2bb419feccb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= <peterix@gmail.com> -Date: Sun, 7 Apr 2019 23:59:04 +0200 -Subject: [PATCH] GH-2591 less std::shared_ptr and more shared_qobject_ptr - -This eliminates some weird crashes. ---- - api/gui/icons/IconList.h | 2 +- - api/logic/BaseInstance.cpp | 7 +--- - api/logic/BaseInstance.h | 12 +++--- - api/logic/NullInstance.h | 23 ++++++------ - api/logic/java/JavaChecker.cpp | 4 +- - api/logic/java/JavaChecker.h | 6 ++- - api/logic/java/JavaCheckerJob.h | 2 +- - api/logic/java/JavaInstallList.cpp | 2 +- - api/logic/java/JavaInstallList.h | 4 +- - api/logic/java/launch/CheckJava.cpp | 2 +- - api/logic/launch/LaunchTask.cpp | 8 ++-- - api/logic/launch/LaunchTask.h | 8 ++-- - api/logic/minecraft/MinecraftInstance.cpp | 41 +++++++++------------ - api/logic/minecraft/MinecraftInstance.h | 2 +- - api/logic/minecraft/legacy/LegacyInstance.h | 3 +- - api/logic/tools/BaseProfiler.cpp | 3 +- - api/logic/tools/BaseProfiler.h | 5 ++- - api/logic/tools/JProfiler.cpp | 4 +- - api/logic/tools/JVisualVM.cpp | 4 +- - application/InstanceWindow.cpp | 2 +- - application/InstanceWindow.h | 4 +- - application/LaunchController.cpp | 2 +- - application/LaunchController.h | 2 +- - application/pages/instance/LogPage.cpp | 4 +- - application/pages/instance/LogPage.h | 6 +-- - 25 files changed, 79 insertions(+), 83 deletions(-) - -diff --git a/api/gui/icons/IconList.h b/api/gui/icons/IconList.h -index 2bacdac3b..274a9f022 100644 ---- a/api/gui/icons/IconList.h -+++ b/api/gui/icons/IconList.h -@@ -80,7 +80,7 @@ protected slots: - void fileChanged(const QString &path); - void SettingChanged(const Setting & setting, QVariant value); - private: -- std::shared_ptr<QFileSystemWatcher> m_watcher; -+ shared_qobject_ptr<QFileSystemWatcher> m_watcher; - bool is_watching; - QMap<QString, int> name_index; - QVector<MMCIcon> icons; -diff --git a/api/logic/BaseInstance.cpp b/api/logic/BaseInstance.cpp -index 469d0d9ff..7a95e2559 100644 ---- a/api/logic/BaseInstance.cpp -+++ b/api/logic/BaseInstance.cpp -@@ -175,11 +175,6 @@ QString BaseInstance::instanceRoot() const - return m_rootDir; - } - --InstancePtr BaseInstance::getSharedPtr() --{ -- return shared_from_this(); --} -- - SettingsObjectPtr BaseInstance::settings() const - { - return m_settings; -@@ -253,7 +248,7 @@ QStringList BaseInstance::extraArguments() const - return Commandline::splitArgs(settings()->get("JvmArgs").toString()); - } - --std::shared_ptr<LaunchTask> BaseInstance::getLaunchTask() -+shared_qobject_ptr<LaunchTask> BaseInstance::getLaunchTask() - { - return m_launchProcess; - } -diff --git a/api/logic/BaseInstance.h b/api/logic/BaseInstance.h -index 73500b1a9..3c342cb3f 100644 ---- a/api/logic/BaseInstance.h -+++ b/api/logic/BaseInstance.h -@@ -134,8 +134,6 @@ class MULTIMC_LOGIC_EXPORT BaseInstance : public QObject, public std::enable_sha - /// Sets the last launched time to 'val' milliseconds since epoch - void setLastLaunch(qint64 val = QDateTime::currentMSecsSinceEpoch()); - -- InstancePtr getSharedPtr(); -- - /*! - * \brief Gets this instance's settings object. - * This settings object stores instance-specific settings. -@@ -147,10 +145,10 @@ class MULTIMC_LOGIC_EXPORT BaseInstance : public QObject, public std::enable_sha - virtual shared_qobject_ptr<Task> createUpdateTask(Net::Mode mode) = 0; - - /// returns a valid launcher (task container) -- virtual std::shared_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) = 0; -+ virtual shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) = 0; - - /// returns the current launch task (if any) -- std::shared_ptr<LaunchTask> getLaunchTask(); -+ shared_qobject_ptr<LaunchTask> getLaunchTask(); - - /*! - * Create envrironment variables for running the instance -@@ -241,7 +239,7 @@ class MULTIMC_LOGIC_EXPORT BaseInstance : public QObject, public std::enable_sha - */ - void propertiesChanged(BaseInstance *inst); - -- void launchTaskChanged(std::shared_ptr<LaunchTask>); -+ void launchTaskChanged(shared_qobject_ptr<LaunchTask>); - - void runningStatusChanged(bool running); - -@@ -255,7 +253,7 @@ protected slots: - SettingsObjectPtr m_settings; - // InstanceFlags m_flags; - bool m_isRunning = false; -- std::shared_ptr<LaunchTask> m_launchProcess; -+ shared_qobject_ptr<LaunchTask> m_launchProcess; - QDateTime m_timeStarted; - - private: /* data */ -@@ -265,6 +263,6 @@ protected slots: - bool m_hasBrokenVersion = false; - }; - --Q_DECLARE_METATYPE(std::shared_ptr<BaseInstance>) -+Q_DECLARE_METATYPE(shared_qobject_ptr<BaseInstance>) - //Q_DECLARE_METATYPE(BaseInstance::InstanceFlag) - //Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags) -diff --git a/api/logic/NullInstance.h b/api/logic/NullInstance.h -index ff3551c5f..e9ba1a13c 100644 ---- a/api/logic/NullInstance.h -+++ b/api/logic/NullInstance.h -@@ -1,5 +1,6 @@ - #pragma once - #include "BaseInstance.h" -+#include "launch/LaunchTask.h" - - class NullInstance: public BaseInstance - { -@@ -11,46 +12,46 @@ class NullInstance: public BaseInstance - setVersionBroken(true); - } - virtual ~NullInstance() {}; -- virtual void saveNow() override -+ void saveNow() override - { - } -- virtual QString getStatusbarDescription() override -+ QString getStatusbarDescription() override - { - return tr("Unknown instance type"); - }; -- virtual QSet< QString > traits() const override -+ QSet< QString > traits() const override - { - return {}; - }; -- virtual QString instanceConfigFolder() const override -+ QString instanceConfigFolder() const override - { - return instanceRoot(); - }; -- virtual std::shared_ptr<LaunchTask> createLaunchTask(AuthSessionPtr) override -+ shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr) override - { - return nullptr; - } -- virtual shared_qobject_ptr< Task > createUpdateTask(Net::Mode mode) override -+ shared_qobject_ptr< Task > createUpdateTask(Net::Mode mode) override - { - return nullptr; - } -- virtual QProcessEnvironment createEnvironment() override -+ QProcessEnvironment createEnvironment() override - { - return QProcessEnvironment(); - } -- virtual QMap<QString, QString> getVariables() const override -+ QMap<QString, QString> getVariables() const override - { - return QMap<QString, QString>(); - } -- virtual IPathMatcher::Ptr getLogFileMatcher() override -+ IPathMatcher::Ptr getLogFileMatcher() override - { - return nullptr; - } -- virtual QString getLogFileRoot() override -+ QString getLogFileRoot() override - { - return instanceRoot(); - } -- virtual QString typeName() const override -+ QString typeName() const override - { - return "Null"; - } -diff --git a/api/logic/java/JavaChecker.cpp b/api/logic/java/JavaChecker.cpp -index 9ba3933f2..ca0f4bde7 100644 ---- a/api/logic/java/JavaChecker.cpp -+++ b/api/logic/java/JavaChecker.cpp -@@ -75,8 +75,8 @@ void JavaChecker::stderrReady() - void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) - { - killTimer.stop(); -- QProcessPtr _process; -- _process.swap(process); -+ QProcessPtr _process = process; -+ process.reset(); - - JavaCheckResult result; - { -diff --git a/api/logic/java/JavaChecker.h b/api/logic/java/JavaChecker.h -index d5d4b0de6..af0dcb90c 100644 ---- a/api/logic/java/JavaChecker.h -+++ b/api/logic/java/JavaChecker.h -@@ -3,6 +3,8 @@ - #include <QTimer> - #include <memory> - -+#include "QObjectPtr.h" -+ - #include "multimc_logic_export.h" - - #include "JavaVersion.h" -@@ -27,8 +29,8 @@ struct MULTIMC_LOGIC_EXPORT JavaCheckResult - } validity = Validity::Errored; - }; - --typedef std::shared_ptr<QProcess> QProcessPtr; --typedef std::shared_ptr<JavaChecker> JavaCheckerPtr; -+typedef shared_qobject_ptr<QProcess> QProcessPtr; -+typedef shared_qobject_ptr<JavaChecker> JavaCheckerPtr; - class MULTIMC_LOGIC_EXPORT JavaChecker : public QObject - { - Q_OBJECT -diff --git a/api/logic/java/JavaCheckerJob.h b/api/logic/java/JavaCheckerJob.h -index ab8a4bbcd..24d0d1b8f 100644 ---- a/api/logic/java/JavaCheckerJob.h -+++ b/api/logic/java/JavaCheckerJob.h -@@ -20,7 +20,7 @@ - #include "tasks/Task.h" - - class JavaCheckerJob; --typedef std::shared_ptr<JavaCheckerJob> JavaCheckerJobPtr; -+typedef shared_qobject_ptr<JavaCheckerJob> JavaCheckerJobPtr; - - // FIXME: this just seems horribly redundant - class JavaCheckerJob : public Task -diff --git a/api/logic/java/JavaInstallList.cpp b/api/logic/java/JavaInstallList.cpp -index a80ee2dac..a71a7dbea 100644 ---- a/api/logic/java/JavaInstallList.cpp -+++ b/api/logic/java/JavaInstallList.cpp -@@ -149,7 +149,7 @@ void JavaListLoadTask::executeTask() - JavaUtils ju; - QList<QString> candidate_paths = ju.FindJavaPaths(); - -- m_job = std::shared_ptr<JavaCheckerJob>(new JavaCheckerJob("Java detection")); -+ m_job = new JavaCheckerJob("Java detection"); - connect(m_job.get(), &Task::finished, this, &JavaListLoadTask::javaCheckerFinished); - connect(m_job.get(), &Task::progress, this, &Task::setProgress); - -diff --git a/api/logic/java/JavaInstallList.h b/api/logic/java/JavaInstallList.h -index fc7e7a921..b98908f38 100644 ---- a/api/logic/java/JavaInstallList.h -+++ b/api/logic/java/JavaInstallList.h -@@ -24,6 +24,8 @@ - #include "JavaCheckerJob.h" - #include "JavaInstall.h" - -+#include "QObjectPtr.h" -+ - #include "multimc_logic_export.h" - - class JavaListLoadTask; -@@ -75,7 +77,7 @@ public slots: - void javaCheckerFinished(); - - protected: -- std::shared_ptr<JavaCheckerJob> m_job; -+ shared_qobject_ptr<JavaCheckerJob> m_job; - JavaInstallList *m_list; - JavaInstall *m_currentRecommended; - }; -diff --git a/api/logic/java/launch/CheckJava.cpp b/api/logic/java/launch/CheckJava.cpp -index f4c852456..b75c6dc62 100644 ---- a/api/logic/java/launch/CheckJava.cpp -+++ b/api/logic/java/launch/CheckJava.cpp -@@ -60,7 +60,7 @@ void CheckJava::executeTask() - // if timestamps are not the same, or something is missing, check! - if (javaUnixTime != storedUnixTime || storedVersion.size() == 0 || storedArchitecture.size() == 0) - { -- m_JavaChecker = std::make_shared<JavaChecker>(); -+ m_JavaChecker = new JavaChecker(); - emit logLine(tr("Checking Java version..."), MessageLevel::MultiMC); - connect(m_JavaChecker.get(), &JavaChecker::checkFinished, this, &CheckJava::checkJavaFinished); - m_JavaChecker->m_path = realJavaPath; -diff --git a/api/logic/launch/LaunchTask.cpp b/api/logic/launch/LaunchTask.cpp -index d39a92083..841b83633 100644 ---- a/api/logic/launch/LaunchTask.cpp -+++ b/api/logic/launch/LaunchTask.cpp -@@ -33,9 +33,9 @@ void LaunchTask::init() - m_instance->setRunning(true); - } - --std::shared_ptr<LaunchTask> LaunchTask::create(InstancePtr inst) -+shared_qobject_ptr<LaunchTask> LaunchTask::create(InstancePtr inst) - { -- std::shared_ptr<LaunchTask> proc(new LaunchTask(inst)); -+ shared_qobject_ptr<LaunchTask> proc(new LaunchTask(inst)); - proc->init(); - return proc; - } -@@ -44,12 +44,12 @@ LaunchTask::LaunchTask(InstancePtr instance): m_instance(instance) - { - } - --void LaunchTask::appendStep(std::shared_ptr<LaunchStep> step) -+void LaunchTask::appendStep(shared_qobject_ptr<LaunchStep> step) - { - m_steps.append(step); - } - --void LaunchTask::prependStep(std::shared_ptr<LaunchStep> step) -+void LaunchTask::prependStep(shared_qobject_ptr<LaunchStep> step) - { - m_steps.prepend(step); - } -diff --git a/api/logic/launch/LaunchTask.h b/api/logic/launch/LaunchTask.h -index 4f6efe0a1..ee04bd9af 100644 ---- a/api/logic/launch/LaunchTask.h -+++ b/api/logic/launch/LaunchTask.h -@@ -45,11 +45,11 @@ class MULTIMC_LOGIC_EXPORT LaunchTask: public Task - }; - - public: /* methods */ -- static std::shared_ptr<LaunchTask> create(InstancePtr inst); -+ static shared_qobject_ptr<LaunchTask> create(InstancePtr inst); - virtual ~LaunchTask() {}; - -- void appendStep(std::shared_ptr<LaunchStep> step); -- void prependStep(std::shared_ptr<LaunchStep> step); -+ void appendStep(shared_qobject_ptr<LaunchStep> step); -+ void prependStep(shared_qobject_ptr<LaunchStep> step); - void setCensorFilter(QMap<QString, QString> filter); - - InstancePtr instance() -@@ -117,7 +117,7 @@ public slots: - protected: /* data */ - InstancePtr m_instance; - shared_qobject_ptr<LogModel> m_logModel; -- QList <std::shared_ptr<LaunchStep>> m_steps; -+ QList <shared_qobject_ptr<LaunchStep>> m_steps; - QMap<QString, QString> m_censorFilter; - int currentStep = -1; - State state = NotStarted; -diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp -index 449a2ed5b..0d97e4aff 100644 ---- a/api/logic/minecraft/MinecraftInstance.cpp -+++ b/api/logic/minecraft/MinecraftInstance.cpp -@@ -777,22 +777,22 @@ shared_qobject_ptr<Task> MinecraftInstance::createUpdateTask(Net::Mode mode) - return nullptr; - } - --std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr session) -+shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr session) - { -- auto process = LaunchTask::create(std::dynamic_pointer_cast<MinecraftInstance>(getSharedPtr())); -+ // FIXME: get rid of shared_from_this ... -+ auto process = LaunchTask::create(std::dynamic_pointer_cast<MinecraftInstance>(shared_from_this())); - auto pptr = process.get(); - - ENV.icons()->saveIcon(iconKey(), FS::PathCombine(gameRoot(), "icon.png"), "PNG"); - - // print a header - { -- process->appendStep(std::make_shared<TextPrint>(pptr, "Minecraft folder is:\n" + gameRoot() + "\n\n", MessageLevel::MultiMC)); -+ process->appendStep(new TextPrint(pptr, "Minecraft folder is:\n" + gameRoot() + "\n\n", MessageLevel::MultiMC)); - } - - // check java - { -- auto step = std::make_shared<CheckJava>(pptr); -- process->appendStep(step); -+ process->appendStep(new CheckJava(pptr)); - } - - // check launch method -@@ -800,14 +800,14 @@ std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr s - QString method = launchMethod(); - if(!validMethods.contains(method)) - { -- process->appendStep(std::make_shared<TextPrint>(pptr, "Selected launch method \"" + method + "\" is not valid.\n", MessageLevel::Fatal)); -+ process->appendStep(new TextPrint(pptr, "Selected launch method \"" + method + "\" is not valid.\n", MessageLevel::Fatal)); - return process; - } - - // run pre-launch command if that's needed - if(getPreLaunchCommand().size()) - { -- auto step = std::make_shared<PreLaunchCommand>(pptr); -+ auto step = new PreLaunchCommand(pptr); - step->setWorkingDirectory(gameRoot()); - process->appendStep(step); - } -@@ -815,42 +815,37 @@ std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr s - // if we aren't in offline mode,. - if(session->status != AuthSession::PlayableOffline) - { -- process->appendStep(std::make_shared<ClaimAccount>(pptr, session)); -- process->appendStep(std::make_shared<Update>(pptr, Net::Mode::Online)); -+ process->appendStep(new ClaimAccount(pptr, session)); -+ process->appendStep(new Update(pptr, Net::Mode::Online)); - } - else - { -- process->appendStep(std::make_shared<Update>(pptr, Net::Mode::Offline)); -+ process->appendStep(new Update(pptr, Net::Mode::Offline)); - } - - // if there are any jar mods - { -- auto step = std::make_shared<ModMinecraftJar>(pptr); -- process->appendStep(step); -+ process->appendStep(new ModMinecraftJar(pptr)); - } - - // print some instance info here... - { -- auto step = std::make_shared<PrintInstanceInfo>(pptr, session); -- process->appendStep(step); -+ process->appendStep(new PrintInstanceInfo(pptr, session)); - } - - // create the server-resource-packs folder (workaround for Minecraft bug MCL-3732) - { -- auto step = std::make_shared<CreateServerResourcePacksFolder>(pptr); -- process->appendStep(step); -+ process->appendStep(new CreateServerResourcePacksFolder(pptr)); - } - - // extract native jars if needed - { -- auto step = std::make_shared<ExtractNatives>(pptr); -- process->appendStep(step); -+ process->appendStep(new ExtractNatives(pptr)); - } - - // reconstruct assets if needed - { -- auto step = std::make_shared<ReconstructAssets>(pptr); -- process->appendStep(step); -+ process->appendStep(new ReconstructAssets(pptr)); - } - - { -@@ -858,14 +853,14 @@ std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr s - auto method = launchMethod(); - if(method == "LauncherPart") - { -- auto step = std::make_shared<LauncherPartLaunch>(pptr); -+ auto step = new LauncherPartLaunch(pptr); - step->setWorkingDirectory(gameRoot()); - step->setAuthSession(session); - process->appendStep(step); - } - else if (method == "DirectJava") - { -- auto step = std::make_shared<DirectJavaLaunch>(pptr); -+ auto step = new DirectJavaLaunch(pptr); - step->setWorkingDirectory(gameRoot()); - step->setAuthSession(session); - process->appendStep(step); -@@ -875,7 +870,7 @@ std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr s - // run post-exit command if that's needed - if(getPostExitCommand().size()) - { -- auto step = std::make_shared<PostLaunchCommand>(pptr); -+ auto step = new PostLaunchCommand(pptr); - step->setWorkingDirectory(gameRoot()); - process->appendStep(step); - } -diff --git a/api/logic/minecraft/MinecraftInstance.h b/api/logic/minecraft/MinecraftInstance.h -index d9fffe576..fac309c25 100644 ---- a/api/logic/minecraft/MinecraftInstance.h -+++ b/api/logic/minecraft/MinecraftInstance.h -@@ -78,7 +78,7 @@ class MULTIMC_LOGIC_EXPORT MinecraftInstance: public BaseInstance - - ////// Launch stuff ////// - shared_qobject_ptr<Task> createUpdateTask(Net::Mode mode) override; -- std::shared_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) override; -+ shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) override; - QStringList extraArguments() const override; - QStringList verboseDescription(AuthSessionPtr session) override; - QList<Mod> getJarMods() const; -diff --git a/api/logic/minecraft/legacy/LegacyInstance.h b/api/logic/minecraft/legacy/LegacyInstance.h -index 56602a1e5..8bbc2d887 100644 ---- a/api/logic/minecraft/legacy/LegacyInstance.h -+++ b/api/logic/minecraft/legacy/LegacyInstance.h -@@ -17,6 +17,7 @@ - - #include "BaseInstance.h" - #include "minecraft/Mod.h" -+#include "launch/LaunchTask.h" - - #include "multimc_logic_export.h" - -@@ -112,7 +113,7 @@ class MULTIMC_LOGIC_EXPORT LegacyInstance : public BaseInstance - { - return false; - } -- std::shared_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) override -+ shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) override - { - return nullptr; - } -diff --git a/api/logic/tools/BaseProfiler.cpp b/api/logic/tools/BaseProfiler.cpp -index c7d83549d..300d1a736 100644 ---- a/api/logic/tools/BaseProfiler.cpp -+++ b/api/logic/tools/BaseProfiler.cpp -@@ -1,4 +1,5 @@ - #include "BaseProfiler.h" -+#include "QObjectPtr.h" - - #include <QProcess> - -@@ -7,7 +8,7 @@ BaseProfiler::BaseProfiler(SettingsObjectPtr settings, InstancePtr instance, QOb - { - } - --void BaseProfiler::beginProfiling(std::shared_ptr<LaunchTask> process) -+void BaseProfiler::beginProfiling(shared_qobject_ptr<LaunchTask> process) - { - beginProfilingImpl(process); - } -diff --git a/api/logic/tools/BaseProfiler.h b/api/logic/tools/BaseProfiler.h -index f3e1ce3d9..da817f523 100644 ---- a/api/logic/tools/BaseProfiler.h -+++ b/api/logic/tools/BaseProfiler.h -@@ -1,6 +1,7 @@ - #pragma once - - #include "BaseExternalTool.h" -+#include "QObjectPtr.h" - - #include "multimc_logic_export.h" - -@@ -17,13 +18,13 @@ class MULTIMC_LOGIC_EXPORT BaseProfiler : public BaseExternalTool - - public - slots: -- void beginProfiling(std::shared_ptr<LaunchTask> process); -+ void beginProfiling(shared_qobject_ptr<LaunchTask> process); - void abortProfiling(); - - protected: - QProcess *m_profilerProcess; - -- virtual void beginProfilingImpl(std::shared_ptr<LaunchTask> process) = 0; -+ virtual void beginProfilingImpl(shared_qobject_ptr<LaunchTask> process) = 0; - virtual void abortProfilingImpl(); - - signals: -diff --git a/api/logic/tools/JProfiler.cpp b/api/logic/tools/JProfiler.cpp -index b50322fe9..1dc0d109f 100644 ---- a/api/logic/tools/JProfiler.cpp -+++ b/api/logic/tools/JProfiler.cpp -@@ -17,7 +17,7 @@ private slots: - void profilerFinished(int exit, QProcess::ExitStatus status); - - protected: -- void beginProfilingImpl(std::shared_ptr<LaunchTask> process); -+ void beginProfilingImpl(shared_qobject_ptr<LaunchTask> process); - - private: - int listeningPort = 0; -@@ -47,7 +47,7 @@ void JProfiler::profilerFinished(int exit, QProcess::ExitStatus status) - } - } - --void JProfiler::beginProfilingImpl(std::shared_ptr<LaunchTask> process) -+void JProfiler::beginProfilingImpl(shared_qobject_ptr<LaunchTask> process) - { - listeningPort = globalSettings->get("JProfilerPort").toInt(); - QProcess *profiler = new QProcess(this); -diff --git a/api/logic/tools/JVisualVM.cpp b/api/logic/tools/JVisualVM.cpp -index 108868570..b1acc3c0a 100644 ---- a/api/logic/tools/JVisualVM.cpp -+++ b/api/logic/tools/JVisualVM.cpp -@@ -18,7 +18,7 @@ private slots: - void profilerFinished(int exit, QProcess::ExitStatus status); - - protected: -- void beginProfilingImpl(std::shared_ptr<LaunchTask> process); -+ void beginProfilingImpl(shared_qobject_ptr<LaunchTask> process); - }; - - -@@ -45,7 +45,7 @@ void JVisualVM::profilerFinished(int exit, QProcess::ExitStatus status) - } - } - --void JVisualVM::beginProfilingImpl(std::shared_ptr<LaunchTask> process) -+void JVisualVM::beginProfilingImpl(shared_qobject_ptr<LaunchTask> process) - { - QProcess *profiler = new QProcess(this); - QStringList profilerArgs = -diff --git a/application/InstanceWindow.cpp b/application/InstanceWindow.cpp -index 8a9c3bdf4..cf445f121 100644 ---- a/application/InstanceWindow.cpp -+++ b/application/InstanceWindow.cpp -@@ -144,7 +144,7 @@ void InstanceWindow::on_btnLaunchMinecraftOffline_clicked() - MMC->launch(m_instance, false, nullptr); - } - --void InstanceWindow::on_InstanceLaunchTask_changed(std::shared_ptr<LaunchTask> proc) -+void InstanceWindow::on_InstanceLaunchTask_changed(shared_qobject_ptr<LaunchTask> proc) - { - m_proc = proc; - } -diff --git a/application/InstanceWindow.h b/application/InstanceWindow.h -index 792624e2c..e5bd4464f 100644 ---- a/application/InstanceWindow.h -+++ b/application/InstanceWindow.h -@@ -52,7 +52,7 @@ private - void on_btnKillMinecraft_clicked(); - void on_btnLaunchMinecraftOffline_clicked(); - -- void on_InstanceLaunchTask_changed(std::shared_ptr<LaunchTask> proc); -+ void on_InstanceLaunchTask_changed(shared_qobject_ptr<LaunchTask> proc); - void on_RunningState_changed(bool running); - void on_instanceStatusChanged(BaseInstance::Status, BaseInstance::Status newStatus); - -@@ -63,7 +63,7 @@ private - void updateLaunchButtons(); - - private: -- std::shared_ptr<LaunchTask> m_proc; -+ shared_qobject_ptr<LaunchTask> m_proc; - InstancePtr m_instance; - bool m_doNotSave = false; - PageContainer *m_container = nullptr; -diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp -index 0115bba46..8f3e6596f 100644 ---- a/application/LaunchController.cpp -+++ b/application/LaunchController.cpp -@@ -218,7 +218,7 @@ void LaunchController::launchInstance() - connect(m_launcher.get(), &LaunchTask::requestProgress, this, &LaunchController::onProgressRequested); - - -- m_launcher->prependStep(std::make_shared<TextPrint>(m_launcher.get(), "MultiMC version: " + BuildConfig.printableVersionString() + "\n\n", MessageLevel::MultiMC)); -+ m_launcher->prependStep(new TextPrint(m_launcher.get(), "MultiMC version: " + BuildConfig.printableVersionString() + "\n\n", MessageLevel::MultiMC)); - m_launcher->start(); - } - -diff --git a/application/LaunchController.h b/application/LaunchController.h -index 1434dec9b..1d879028d 100644 ---- a/application/LaunchController.h -+++ b/application/LaunchController.h -@@ -57,5 +57,5 @@ private slots: - QWidget * m_parentWidget = nullptr; - InstanceWindow *m_console = nullptr; - AuthSessionPtr m_session; -- std::shared_ptr <LaunchTask> m_launcher; -+ shared_qobject_ptr<LaunchTask> m_launcher; - }; -diff --git a/application/pages/instance/LogPage.cpp b/application/pages/instance/LogPage.cpp -index 0e480a3a6..94ada4248 100644 ---- a/application/pages/instance/LogPage.cpp -+++ b/application/pages/instance/LogPage.cpp -@@ -192,7 +192,7 @@ void LogPage::UIToModelState() - m_model->suspend(ui->trackLogCheckbox->checkState() != Qt::Checked); - } - --void LogPage::setInstanceLaunchTaskChanged(std::shared_ptr<LaunchTask> proc, bool initial) -+void LogPage::setInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc, bool initial) - { - m_process = proc; - if(m_process) -@@ -215,7 +215,7 @@ void LogPage::setInstanceLaunchTaskChanged(std::shared_ptr<LaunchTask> proc, boo - } - } - --void LogPage::onInstanceLaunchTaskChanged(std::shared_ptr<LaunchTask> proc) -+void LogPage::onInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc) - { - setInstanceLaunchTaskChanged(proc, false); - } -diff --git a/application/pages/instance/LogPage.h b/application/pages/instance/LogPage.h -index 34ed210a0..9c3b56a9a 100644 ---- a/application/pages/instance/LogPage.h -+++ b/application/pages/instance/LogPage.h -@@ -69,17 +69,17 @@ private slots: - void findNextActivated(); - void findPreviousActivated(); - -- void onInstanceLaunchTaskChanged(std::shared_ptr<LaunchTask> proc); -+ void onInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc); - - private: - void modelStateToUI(); - void UIToModelState(); -- void setInstanceLaunchTaskChanged(std::shared_ptr<LaunchTask> proc, bool initial); -+ void setInstanceLaunchTaskChanged(shared_qobject_ptr<LaunchTask> proc, bool initial); - - private: - Ui::LogPage *ui; - InstancePtr m_instance; -- std::shared_ptr<LaunchTask> m_process; -+ shared_qobject_ptr<LaunchTask> m_process; - - LogFormatProxyModel * m_proxy; - shared_qobject_ptr <LogModel> m_model; diff --git a/quazip-fix-build-with-qt-511.patch b/quazip-fix-build-with-qt-511.patch deleted file mode 100644 index 14b58438f8d6..000000000000 --- a/quazip-fix-build-with-qt-511.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 469b97b618314ec009a37cad22e9d2541d6481f7 Mon Sep 17 00:00:00 2001 -From: Sergey Shatunov <me@prok.pw> -Date: Fri, 1 Jun 2018 21:07:13 +0700 -Subject: [PATCH] Fix build with Qt 5.11+ - ---- - CMakeLists.txt | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 376583c..7c0c6eb 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -44,10 +44,9 @@ endif() - - add_library(MultiMC_quazip SHARED ${QUAZIP_SRC}) - target_include_directories(MultiMC_quazip PUBLIC "quazip" "${CMAKE_CURRENT_BINARY_DIR}" PRIVATE ${ZLIB_INCLUDE_DIRS}) --target_link_libraries(MultiMC_quazip ${ZLIB_LIBRARIES}) -+target_link_libraries(MultiMC_quazip Qt5::Core ${ZLIB_LIBRARIES}) - target_compile_definitions(MultiMC_quazip PRIVATE "-DQUAZIP_BUILD") - set_target_properties(MultiMC_quazip PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1) --qt5_use_modules(MultiMC_quazip Core) - - # Install it - install( -@@ -84,6 +83,5 @@ set(QUAZIP_TEST_SRC - ) - - add_executable(MultiMC_quazip_test ${QUAZIP_TEST_SRC}) --target_link_libraries(MultiMC_quazip_test MultiMC_quazip) --qt5_use_modules(MultiMC_quazip_test Network Test) -+target_link_libraries(MultiMC_quazip_test MultiMC_quazip Qt5::Network Qt5::Test) - add_test(NAME quazip_testsuite COMMAND MultiMC_quazip_test) |