The mcrl2-202106.0.tar.gz tarball has been updated in place: --8<---------------cut here---------------start------------->8--- $ wget -qO- https://bayfront.guix.gnu.org/nar/lzip/ch8mqirm3jzndh4668dr0nj9ij2d4zzf-mcrl2-202106.0.tar.gz| lzip -d |guix archive -x /tmp/good.tgz $ (cd /tmp; wget -qO bad.tgz https://www.mcrl2.org/download/release/mcrl2-202106.0.tar.gz) $ diffoscope /tmp/{good,bad}.tgz --- /tmp/good.tgz +++ /tmp/bad.tgz ├── filetype from file(1) │ @@ -1 +1 @@ │ -gzip compressed data, last modified: Mon Jun 14 13:31:21 2021, from Unix │ +gzip compressed data, last modified: Tue Jul 13 11:27:28 2021, from Unix
[...] │ ├── mcrl2-202106.0/build/SourceVersion │ │ @@ -1,4 +1,4 @@ │ │ # This file contains the version for the MCRL2 source package. │ │ # This file is used to generate the version number if the sources originate │ │ # from a make package_source command. │ │ -set(MCRL2_SOURCE_PACKAGE_REVISION 54fa1483c9) │ │ +set(MCRL2_SOURCE_PACKAGE_REVISION c335fb2d5f) │ ├── mcrl2-202106.0/tools/release/mcrl2-gui/mainwindow.cpp │ │ @@ -5,15 +5,17 @@ │ │ // Distributed under the Boost Software License, Version 1.0. │ │ // (See accompanying file LICENSE_1_0.txt or copy at │ │ // http://www.boost.org/LICENSE_1_0.txt) │ │ // │ │ │ │ #include "mainwindow.h" │ │ #include "mcrl2/utilities/logger.h" │ │ +#include "mcrl2/utilities/platform.h" │ │ │ │ +#include <QtGlobal> │ │ #include <QMessageBox> │ │ #include <QSettings> │ │ │ │ #include "toolaction.h" │ │ #include "toolinstance.h" │ │ #include "fileinformation.h" │ │ │ │ @@ -39,33 +41,48 @@ │ │ connect(m_ui.treeFiles, SIGNAL(openProperties(QString)), this, SLOT(createFileInformation(QString))); │ │ │ │ m_catalog.load(); │ │ m_ui.treeFiles->setCatalog(m_catalog); │ │ │ │ createToolMenu(); │ │ │ │ +// workaround for QTBUG-57687 │ │ +#if QT_VERSION > QT_VERSION_CHECK(5, 10, 0) || not defined MCRL2_PLATFORM_WINDOWS │ │ fileMenu->addSeparator(); │ │ fileMenu->addAction(QString("Open mcrl2ide"), this, SLOT(onOpenIDE())); │ │ +#endif │ │ │ │ m_state = saveState(); │ │ QSettings settings("mCRL2", "mCRL2-gui"); │ │ restoreGeometry(settings.value("geometry").toByteArray()); │ │ restoreState(settings.value("windowState").toByteArray()); │ │ m_ui.treeFiles->restore(settings); │ │ } │ │ │ │ void MainWindow::onOpenIDE() │ │ { │ │ +// workaround for QTBUG-57687 │ │ +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) || not defined MCRL2_PLATFORM_WINDOWS │ │ QDir appDir = QDir(QCoreApplication::applicationDirPath()); │ │ QString path = appDir.absoluteFilePath("mcrl2ide"); │ │ + │ │ +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) │ │ + QProcess* p = new QProcess(); │ │ + p->setProgram(path); │ │ + if (!p->startDetached()) │ │ + { │ │ + QMessageBox::warning(this, "mCRL2-gui", "Failed to start mcrl2ide: " + p->errorString()); │ │ + } │ │ +#else │ │ if (!QProcess::startDetached(path)) │ │ { │ │ - QMessageBox::warning(this, "mCRL2-gui", "Failed to start mrl2ide: could " │ │ - "not find its executable"); │ │ + QMessageBox::warning(this, "mCRL2-gui", "Failed to start mcrl2ide: could not find its executable"); │ │ } │ │ +#endif │ │ +#endif │ │ } │ │ │ │ void MainWindow::closeEvent(QCloseEvent *event) │ │ { │ │ QSettings settings("mCRL2", "mCRL2-gui"); │ │ settings.setValue("geometry", saveGeometry()); │ │ settings.setValue("windowState", saveState()); │ ├── mcrl2-202106.0/tools/release/ltsgraph/bezier.h │ │ @@ -181,68 +181,68 @@ │ │ static_cast<Scalar>(0), static_cast<Scalar>(1), │ │ std::numeric_limits<Scalar>::digits * .6); │ │ } │ │ }; │ │ │ │ // Implementation for cubic bezier curves │ │ │ │ -template <> constexpr Vector Bezier<3>::at(Scalar t) const │ │ +template <> inline constexpr Vector Bezier<3>::at(Scalar t) const │ │ { │ │ const Scalar t2 = t * t, │ │ t3 = t2 * t, │ │ tn = 1.0f - t, │ │ tn2 = tn * tn, │ │ tn3 = tn2 * tn; │ │ return m_control[0] * tn3 │ │ + m_control[1] * 3.0f * tn2 * t │ │ + m_control[2] * 3.0f * tn * t2 │ │ + m_control[3] * t3; │ │ } │ │ │ │ -template <> constexpr Vector Bezier<3>::tangent(Scalar t) const │ │ +template <> inline constexpr Vector Bezier<3>::tangent(Scalar t) const │ │ { │ │ const Scalar t2 = t * t, │ │ tn = 1.0f - t, │ │ tn2 = tn * tn; │ │ return (m_control[1] - m_control[0]) * 3.0f * tn2 │ │ + (m_control[2] - m_control[1]) * 6.0f * tn * t │ │ + (m_control[3] - m_control[2]) * 3.0f * t2; │ │ } │ │ │ │ -template <> constexpr std::array<Vector, 7> Bezier<3>::interpolate(Scalar t) const │ │ +template <> inline constexpr std::array<Vector, 7> Bezier<3>::interpolate(Scalar t) const │ │ { │ │ const QVector3D p01 = lerp(m_control[0], m_control[1], t), │ │ p12 = lerp(m_control[1], m_control[2], t), │ │ p23 = lerp(m_control[2], m_control[3], t), │ │ p012 = lerp(p01, p12, t), │ │ p123 = lerp(p12, p23, t), │ │ p0123 = lerp(p012, p123, t); │ │ return {m_control[0], p01, p012, p0123, p123, p23, m_control[3]}; │ │ } │ │ │ │ // Implementation for quadratic bezier curves │ │ │ │ -template <> constexpr Vector Bezier<2>::at(Scalar t) const │ │ +template <> inline constexpr Vector Bezier<2>::at(Scalar t) const │ │ { │ │ const Scalar t2 = t * t, │ │ tn = 1.0f - t, │ │ tn2 = tn * tn; │ │ return m_control[0] * tn2 │ │ + m_control[1] * 2.0f * tn * t │ │ + m_control[2] * t2; │ │ } │ │ │ │ -template <> constexpr Vector Bezier<2>::tangent(Scalar t) const │ │ +template <> inline constexpr Vector Bezier<2>::tangent(Scalar t) const │ │ { │ │ const Scalar tn = 1.0f - t; │ │ return (m_control[1] - m_control[0]) * 2.0f * tn │ │ + (m_control[2] - m_control[1]) * 2.0f * t; │ │ } │ │ │ │ -template <> constexpr std::array<Vector, 5> Bezier<2>::interpolate(Scalar t) const │ │ +template <> inline constexpr std::array<Vector, 5> Bezier<2>::interpolate(Scalar t) const │ │ { │ │ const QVector3D p01 = lerp(m_control[0], m_control[1], t), │ │ p12 = lerp(m_control[1], m_control[2], t), │ │ p012 = lerp(p01, p12, t); │ │ return {m_control[0], p01, p012, p12, m_control[2]}; │ │ } --8<---------------cut here---------------end--------------->8--- The changes correspond to the 54fa1483c9..c335fb2d5f diff at <https://github.com/mCRL2org/mCRL2>. I’ll update the tarball hash. Ludo’.