ElucidataInc / ElMaven

LC-MS data processing tool for large-scale metabolomics experiments.
https://resources.elucidata.io/elmaven/
GNU General Public License v2.0
88 stars 52 forks source link

Compile error v0.7.0 and beyond #1063

Closed lparsons closed 5 years ago

lparsons commented 5 years ago

Describe the bug I'm trying to build the latest ElMaven versions (anything 0.7.0 and beyond) and I'm running into a compile issue. Perhaps something I'm missing?

Project ERROR: Unknown module(s) in QT: multimedia multimediawidgets
Makefile:578: recipe for target 'Makefile' failed
make[2]: *** [Makefile] Error 3
make[2]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src/gui/mzroll'
Makefile:175: recipe for target 'sub-gui-mzroll-make_first-ordered' failed
make[1]: *** [sub-gui-mzroll-make_first-ordered] Error 2
make[1]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src'
Makefile:131: recipe for target 'sub-src-make_first-ordered' failed
make: *** [sub-src-make_first-ordered] Error 2
getEIC(Q1,CE,Q3): srm195 305

To Reproduce Steps to reproduce the behavior:

  1. git checkout develop
  2. ./run.sh

Expected behavior Successful build

System (please complete the following information):

shubhra-agrawal commented 5 years ago

@lparsons we have updated the README for Linux distros to take care of this. You can just copy paste the installation command. It should install any missing components, and will leave the already existing components as they are.

If you still run into any issues, please let us know

lparsons commented 5 years ago

@shubhra-agrawal Thanks so much. I figured something was updated. I ran through updating those packages but still run into issues:

make[2]: Entering directory '/home/lparsons/Documents/projects/maven/ElMaven/src/common'
g++ -c -m64 -pipe -g -fPIC -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../src -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I/home/lparsons/Documents/projects/maven/build/tmp/common -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o /home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o downloadmanager.cpp
/usr/lib/x86_64-linux-gnu/qt5/bin/moc -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/lparsons/Documents/projects/maven/ElMaven/src/common -I/home/lparsons/Documents/projects/maven/ElMaven/src -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include downloadmanager.h -o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.cpp
g++ -c -m64 -pipe -g -fPIC -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../src -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I/home/lparsons/Documents/projects/maven/build/tmp/common -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.cpp
downloadmanager.cpp:11:5: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
     _reply(nullptr),
     ^
In file included from downloadmanager.cpp:2:0:
../../src/pollyCLI/pollyintegration.h:7:1: warning: scoped enums only available with -std=c++11 or -std=gnu++11
 enum class PollyApp: int
 ^
../../src/pollyCLI/pollyintegration.h:7:22: warning: scoped enums only available with -std=c++11 or -std=gnu++11
 enum class PollyApp: int
                      ^
../../src/pollyCLI/pollyintegration.h:15:1: warning: scoped enums only available with -std=c++11 or -std=gnu++11
 enum class ErrorStatus: int
 ^
../../src/pollyCLI/pollyintegration.h:15:25: warning: scoped enums only available with -std=c++11 or -std=gnu++11
 enum class ErrorStatus: int
                         ^
../../src/pollyCLI/pollyintegration.h:187:49: error: ‘>>’ should be ‘> >’ within a nested template argument list
     QPair<ErrorStatus, QMap<QString, QStringList>> _fetchAppLicense();
                                                 ^
downloadmanager.cpp: In constructor ‘DownloadManager::DownloadManager()’:
downloadmanager.cpp:11:12: error: ‘nullptr’ was not declared in this scope
     _reply(nullptr),
            ^
In file included from downloadmanager.cpp:1:0:
downloadmanager.h:40:20: warning: ‘DownloadManager::_reply’ will be initialized after [-Wreorder]
     QNetworkReply* _reply;
                    ^
downloadmanager.h:18:10: warning:   ‘bool DownloadManager::err’ [-Wreorder]
     bool err;
          ^
downloadmanager.cpp:9:1: warning:   when initialized here [-Wreorder]
 DownloadManager::DownloadManager():
 ^
downloadmanager.cpp: In member function ‘void DownloadManager::download(bool)’:
downloadmanager.cpp:36:25: error: ‘QOverload’ was not declared in this scope
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                         ^
downloadmanager.cpp:36:62: error: expected primary-expression before ‘>’ token
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                              ^
downloadmanager.cpp:36:63: error: ‘::of’ has not been declared
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                               ^
downloadmanager.cpp:52:25: error: ‘QOverload’ was not declared in this scope
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                         ^
downloadmanager.cpp:52:62: error: expected primary-expression before ‘>’ token
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                              ^
downloadmanager.cpp:52:63: error: ‘::of’ has not been declared
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                               ^
Makefile:292: recipe for target '/home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o' failed
make[2]: *** [/home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o] Error 1
make[2]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src/common'
Makefile:90: recipe for target 'sub-common-make_first-ordered' failed
make[1]: *** [sub-common-make_first-ordered] Error 2
make[1]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src'
Makefile:131: recipe for target 'sub-src-make_first-ordered' failed
make: *** [sub-src-make_first-ordered] Error 2
/home/lparsons/Documents/projects/maven/ElMaven/3rdparty/google-breakpad/src/client/linux/handler/minidump_descriptor.h
lparsons commented 5 years ago

@shubhra-agrawal Looking a bit further, this seems to be a similar error to the current Travis Build Error: https://travis-ci.org/ElucidataInc/ElMaven/jobs/533290918#L1445-L1486

rish9511 commented 5 years ago

@lparsons Hey, we somehow missed this Will quickly patch it up and update you here Thanks for filing

rish9511 commented 5 years ago

@lparsons

I have pushed a fix for this in a separate branch, fix_linux_build. Could you please try it out and check if it works for you ?

Also, you will have to update your Qt version. Atm, it seems it's <= 5.5, you will need a version greater than that.

shubhra-agrawal commented 5 years ago

@lparsons Let us know if fix_linux_build is successfully compiling on your system. We'll merge that in the 0.7.1 final release in that case.

lparsons commented 5 years ago

Sorry for the delay, I had some other projects take priority. I'm still unable to build develop.

Processing 3rdparty/pugixml/src/tmp/pugixml.gcda
/home/lparsons/Documents/projects/maven/ElMaven/3rdparty/pugixml/src/tmp/pugixml.gcda:stamp mismatch with notes file
geninfo: WARNING: gcov did not create any files for /home/lparsons/Documents/projects/maven/ElMaven/3rdparty/pugixml/src/tmp/pugixml.gcda!
Finished .info-file creation
Reading data file ../coverage.info
Found 199 entries.
Found common filename prefix "/home/lparsons/Documents/projects/maven/ElMaven"
Writing .css and .png files.
Generating output.
Processing file 3rdparty/Eigen/src/Core/util/IntegralConstant.h
Processing file 3rdparty/Eigen/src/Core/util/IndexedViewHelper.h
Processing file 3rdparty/Eigen/src/Core/util/SymbolicIndex.h
Processing file 3rdparty/google-breakpad/src/client/linux/handler/minidump_descriptor.h
genhtml: ERROR: cannot read /home/lparsons/Documents/projects/maven/ElMaven/3rdparty/google-breakpad/src/client/linux/handler/minidump_descriptor.h

Perhaps someone could try a fresh checkout somewhere and see if they run into similar issues. Seems some things aren't in the repo?

rish9511 commented 5 years ago

@lparsons This is not a build failure. You are trying to get the test coverage information, which can only be carried out after the process of compilation is complete. Considering that to be that case, you must have got the the compiled binary. Please let us know if you don't have the binary as well

From the above message it seems the test coverage tools(genthml in this case) is trying to read files that now have been moved to a different folder. I would recommend you to do a clean build. Please follow the steps below for a clean build

This should, hopefully, get rid of the all the old and new build files that are present on your system. Post this you can build El-MAVEN again. All the build files, .o, gcno, .lib that are generated after compilation and .gcda files that are generated after running Maventests should be present inside XYZ-PATH/build/*. Once this is done you should be able to generate the test coverage information

lparsons commented 5 years ago

Thanks @rish9511. I followed those steps and then ran ./run.sh. However, I now run into a new error (on the develop branch):

make[2]: Entering directory '/home/lparsons/Documents/projects/maven/ElMaven/src/common'
g++ -c -m64 -pipe -std=c++11 -O2 -fPIC -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../src -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I/home/lparsons/Documents/projects/maven/build/tmp/common -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o /home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o downloadmanager.cpp
/usr/lib/x86_64-linux-gnu/qt5/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/lparsons/Documents/projects/maven/ElMaven/src/common -I/home/lparsons/Documents/projects/maven/ElMaven/src -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include downloadmanager.h -o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.cpp
g++ -c -m64 -pipe -std=c++11 -O2 -fPIC -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../src -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I/home/lparsons/Documents/projects/maven/build/tmp/common -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.o /home/lparsons/Documents/projects/maven/build/tmp/common/moc_downloadmanager.cpp
In file included from downloadmanager.cpp:1:0:
downloadmanager.h: In constructor ‘DownloadManager::DownloadManager()’:
downloadmanager.h:40:20: warning: ‘DownloadManager::_reply’ will be initialized after [-Wreorder]
     QNetworkReply* _reply;
                    ^
downloadmanager.h:18:10: warning:   ‘bool DownloadManager::err’ [-Wreorder]
     bool err;
          ^
downloadmanager.cpp:9:1: warning:   when initialized here [-Wreorder]
 DownloadManager::DownloadManager():
 ^
downloadmanager.cpp: In member function ‘void DownloadManager::download(bool)’:
downloadmanager.cpp:36:25: error: ‘QOverload’ was not declared in this scope
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                         ^
downloadmanager.cpp:36:62: error: expected primary-expression before ‘>’ token
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                              ^
downloadmanager.cpp:36:63: error: ‘::of’ has not been declared
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                               ^
downloadmanager.cpp:52:25: error: ‘QOverload’ was not declared in this scope
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                         ^
downloadmanager.cpp:52:62: error: expected primary-expression before ‘>’ token
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                              ^
downloadmanager.cpp:52:63: error: ‘::of’ has not been declared
         connect(_reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),
                                                               ^
Makefile:292: recipe for target '/home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o' failed
make[2]: *** [/home/lparsons/Documents/projects/maven/build/tmp/common/downloadmanager.o] Error 1
make[2]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src/common'
Makefile:90: recipe for target 'sub-common-make_first-ordered' failed
make[1]: *** [sub-common-make_first-ordered] Error 2
make[1]: Leaving directory '/home/lparsons/Documents/projects/maven/ElMaven/src'
Makefile:131: recipe for target 'sub-src-make_first-ordered' failed
make: *** [sub-src-make_first-ordered] Error 2
lparsons commented 5 years ago

@rish9511 The error I get is, in fact, the same error that occurs on the Travis builds: https://travis-ci.org/ElucidataInc/ElMaven/builds/539351377#L1432

It seems there is something broken in the current build.

lparsons commented 5 years ago

I can also confirm that I have no trouble building v0.6.1.1.

rish9511 commented 5 years ago

@lparsons The error you are getting now is because of the older version of Qt. QOverload has been introduced in Qt5.7. If you are not sure what version of Qt is installed on your system, you can check it by qmake -v. So, most probably updating your version of Qt should fix the issue

Travis is also failing for the same reason, it's using Qt v5.2. We need to fix that as well

I can also confirm that I have no trouble building v0.6.1.1

Yes, that's because we were not using QOverload macro before v0.7.0.

README currently does not explicitly mentions what version of Qt to install, we will update that as well

lparsons commented 5 years ago

OK, I've made some progress on this, but have yet to get things to complie. There are a number of changes to dependencies it seems. At least qt5.9 is needed (not sure exactly which things are being built with though). Also, libpulse-dev is a new package dependency. However, I'm not stuck at this error:

linking ../../../bin/El-MAVEN
/home/travis/build/lparsons/ElMaven/../build/libs//libprojectDB.a(projectversioning.o): In function `ProjectVersioning::backupFile(std::string const&, std::string const&)':
projectversioning.cpp:(.text+0x7c3): undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'
collect2: error: ld returned 1 exit status

See my Travis build: https://travis-ci.org/lparsons/ElMaven/builds/542916264

lparsons commented 5 years ago

Also, I have a different problem on my personal 16.04 laptop:

/home/lparsons/Documents/projects/maven/build/tmp/mzroll/mainwindow.o:(.qtversion[qt_version_tag]+0x0): undefined reference to `qt_version_tag'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/metabolite_node.o: In function `MetaboliteNode::dropEvent(QGraphicsSceneDragDropEvent*)':
metabolite_node.cpp:(.text+0x800): undefined reference to `operator<<(QDebug, QWidget const*)'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/pathwaywidget.o: In function `QDataStream& QtPrivate::readAssociativeContainer<QMap<int, QVariant> >(QDataStream&, QMap<int, QVariant>&)':
pathwaywidget.cpp:(.text._ZN9QtPrivate24readAssociativeContainerI4QMapIi8QVariantEEER11QDataStreamS5_RT_[_ZN9QtPrivate24readAssociativeContainerI4QMapIi8QVariantEEER11QDataStreamS5_RT_]+0x3b): undefined reference to `QIODevice::isTransactionStarted() const'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/tabledockwidget.o:(.data.rel.ro._ZTV8ListView[_ZTV8ListView]+0xc8): undefined reference to `QListView::wheelEvent(QWheelEvent*)'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/pollyelmaveninterface.o: In function `PollyElmavenInterfaceDialog::_callInitialEPIForm()':
pollyelmaveninterface.cpp:(.text+0x913): undefined reference to `QWidget::setWindowFlag(Qt::WindowType, bool)'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/qcustomplot.o: In function `QCPAxisTickerPi::fractionToString(int, int) const':
qcustomplot.cpp:(.text+0x89ab): undefined reference to `QString::arg(QLatin1String, int, QChar) const'
qcustomplot.cpp:(.text+0x8b1c): undefined reference to `QString::arg(QLatin1String, int, QChar) const'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/qcustomplot.o: In function `QCPAxisPainterPrivate::getTickLabelData(QFont const&, QString const&) const':
qcustomplot.cpp:(.text+0xd08c): undefined reference to `QString::operator=(QLatin1String)'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/qcustomplot.o: In function `QCPAxisTickerTime::QCPAxisTickerTime()':
qcustomplot.cpp:(.text+0x2835a): undefined reference to `QString::operator=(QLatin1String)'
qcustomplot.cpp:(.text+0x28381): undefined reference to `QString::operator=(QLatin1String)'
qcustomplot.cpp:(.text+0x283a8): undefined reference to `QString::operator=(QLatin1String)'
qcustomplot.cpp:(.text+0x283cf): undefined reference to `QString::operator=(QLatin1String)'
/home/lparsons/Documents/projects/maven/build/tmp/mzroll/qcustomplot.o:qcustomplot.cpp:(.text+0x283f6): more undefined references to `QString::operator=(QLatin1String)' follow
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libmaven.a(mzAligner.o): In function `Aligner::updateSampleRts(QJsonObject&)':
mzAligner.cpp:(.text+0x22d): undefined reference to `QJsonObject::detach2(unsigned int)'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libmaven.a(mzAligner.o): In function `Aligner::updateGroupsRts(QJsonObject&)':
mzAligner.cpp:(.text+0x2d28): undefined reference to `QJsonObject::detach2(unsigned int)'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libpollyCLI.a(pollyintegration.o): In function `PollyIntegration::_hasError(QList<QByteArray>)':
pollyintegration.cpp:(.text+0x12ee): undefined reference to `QJsonValue::toString() const'
pollyintegration.cpp:(.text+0x1387): undefined reference to `QJsonValue::toString() const'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libpollyCLI.a(pollyintegration.o): In function `PollyIntegration::obtainComponentId(PollyApp)':
pollyintegration.cpp:(.text+0x38b9): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x38c3): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x3975): undefined reference to `QJsonValue::toString() const'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libpollyCLI.a(pollyintegration.o): In function `PollyIntegration::obtainWorkflowId(PollyApp)':
pollyintegration.cpp:(.text+0x3d9a): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x3da4): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x3e5d): undefined reference to `QJsonValue::toString() const'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libpollyCLI.a(pollyintegration.o): In function `PollyIntegration::getComponentEndpoint(QString, QString, QString)':
pollyintegration.cpp:(.text+0x6bcc): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x6bd6): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x6d4f): undefined reference to `QJsonValue::toString() const'
/home/lparsons/Documents/projects/maven/ElMaven-fork/../build/libs//libpollyCLI.a(pollyintegration.o): In function `PollyIntegration::getWorkflowEndpoint(QString, QString, QString, QString, QString)':
pollyintegration.cpp:(.text+0x6fee): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x6ff8): undefined reference to `QJsonArray::detach2(unsigned int)'
pollyintegration.cpp:(.text+0x7172): undefined reference to `QJsonValue::toString() const'
collect2: error: ld returned 1 exit status
rish9511 commented 5 years ago

undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'

For this, you will have to update your libboost version to atleast 1.58

shubhra-agrawal commented 5 years ago

@lparsons If you still run into any compilation errors after this, let's get on a call so @rish9511 can resolve all of these at once? He is already working on adding minimum version requirements for all our dependencies in the README.

lparsons commented 5 years ago

I was finally able to get a build finished. I updated the .travis.yml so it actually builds in #1097. However, I strongly encourage you to adopt a transparent and automated build system like the one used in Maven (see #524).

shubhra-agrawal commented 5 years ago

@lparsons The CI branch is stable now and getting merged soon. We will start working on continuous deployment and packaging next week. Will let you know once that is ready.

Can I add you as a reviewer on the PR raised for fixing El-MAVEN CI? I've given you read rights to the repository, please accept it.

chubukov commented 5 years ago

@shubhra-agrawal I'm also having a devil of a time compiling, on windows with msys2. I'm on the v0.8.0-beta release

I upgraded to QT 5.12 and followed the readme. Additionally, I had to install

mingw-w64-x86_64-icu mingw-w64-x86_64-freetype mingw-w64-x86_64-szip mingw-w64-x86_64-openssl

I'm now able to compile, and run peakdetector. However, when I try to run the GUI, I get the error

The procedure entry point hb_font_set_ptem could not be located in the dynamic link library Qt5Gui.dll

I double checked that the same version of Qt5Gui.dll is being used at compilation and runtime. Any other ideas?

saifulbkhan commented 5 years ago

@chubukov It is possible that you might have more than one copy of the Qt5Gui.dll library from previous Qt installs, and that the one against which El-MAVEN GUI was compiled and the one that its linked to are different (the one linked is missing that hb_font_set_ptem procedure). I found two threads on Qt Forums that describe a very similar issue:

But if you want to avoid going through the trouble of debugging this dynamic linking error, you could start afresh (uninstall your msys2 completely and reinstall) following the instructions given in our README, which we have already tried on fresh Windows systems. Of course, if you use your msys2 env for other purposes, you might not want to completely nuke your current setup, in which case it might be worth looking into those threads.

Let us know, if we can help in any other way.

chubukov commented 5 years ago

@saifulbkhan Totally agree that that's what it looks like, I just couldn't track down where the discrepancy was. Will let you know if I get it.

chubukov commented 5 years ago

@saifulbkhan deleting dlls one by one, I was able to track this down to libharfbuzz-0.dll . Force reinstalling mingw-w64-x86_64-harfbuzz and recopying the dll did the trick. I am still not sure why the error message implicated the wrong dll.

saifulbkhan commented 5 years ago

@chubukov Glad it worked out for you.

Your solution makes sense to me because the procedure hb_font_set_ptem is in fact a symbol from the harfbuzz library. El-MAVEN itself does not directly use harfbuzz, but most text rendering libraries (such as QtGui) do. QtGui.dll must have itself been linked to a libharfbuzz-0.dll, which perhaps not being compiled in some particular fashion, was missing functions that were required and that is why you see a complaint from the parent library.