Skip to content
This repository has been archived by the owner on Mar 29, 2024. It is now read-only.

Commit

Permalink
Merge pull request #73 from anlambert/travis-xenial-migration
Browse files Browse the repository at this point in the history
TravisCI: Migrate Linux builds from trusty to xenial
p-mary authored Jan 29, 2019
2 parents ecc03d5 + 7498ab0 commit b658a63
Showing 19 changed files with 169 additions and 223 deletions.
131 changes: 52 additions & 79 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# Tulip continuous integration on Linux and Mac OS platforms through TravisCI.
# Two type of builds are performed by os:
# - a "legacy" Tulip build using default system compiler (GCC 4.8 on Linux, clang 3.5 on Mac OS), C++11 standard Qt 5 and Python 2.7
# - a "modern" Tulip build using a recent compiler (GCC 7.1 on linux, clang from Xcode10.1 on Mac OS), C++11 standard,
# Qt 5.10 on Linux / Qt 5.12 on Mac OS, and Python 3.6 on Linux / Python 2.7 on Mac OS
# As TravisCI limits build jobs to 45 minutes timeout, we build Tulip in two successive build stages:
# - a "legacy" Tulip build using :
# * default system compiler (GCC 5.4 on Linux, clang from Xcode7.3 on Mac OS)
# * Qt 5.5 on Linux, Qt 5.9 on MacOS
# * Python 2.7
# - a "modern" Tulip build using:
# * recent compiler (GCC 8.1 on Linux, clang 7.0 from MacPorts or Homebrew on Mac OS)
# * Qt 5.11 on Linux, Qt 5.12 on MacOS
# * Python 3.7 on Linux, Python 2.7 on MacOS
# As TravisCI limits build job times to 45 minutes, Tulip is built in two successive stages
# to avoid timeouts (which happened often with MacOs builds):
# - a core build with no Tulip OpenGL and Qt components
# - a complete build including OpenGL and Qt components
# The trick is to use travis build cache and ccache to cache already compiled object files between stages
# and thus not exceeding Travis build timeout limits (which systematically happens
# before when compiling Tulip on MacOS with C++11 standard activated).
# The trick is to use travis build cache and ccache to cache already compiled object
# files between stages and thus not exceeding Travis build timeout limits

# inform travis that we are building a cpp project
language: cpp
@@ -26,7 +31,7 @@ jobs:
- stage: Tulip core build (Linux)
# legacy Tulip core build on Linux
os: linux
dist: trusty
dist: xenial
compiler: gcc
cache: ccache
addons:
@@ -43,19 +48,6 @@ jobs:
- libpython2.7-dev
- libcppunit-dev
- binutils-dev
# the dependencies below are not required for a Tulip core build but travis build cache does not work
# as expected in the complete build stage that follows (due to cache slug depending on the environment),
# so install them anyway
- qt5-default
- libqt5webkit5-dev
- libglew-dev
- libpng-dev
- libjpeg-dev
- libfreetype6-dev
- python-pip
install:
# install sphinx in order to have the same build environment as in the complete build (for cache slug)
- sudo pip install sphinx
env:
# use Python 2.7
- PYTHON_EXECUTABLE=/usr/bin/python2.7
@@ -74,49 +66,35 @@ jobs:
# modern Tulip core build on Linux
-
os: linux
dist: trusty
dist: xenial
compiler: gcc
cache: ccache
addons:
apt:
# we get GCC 7.x and Python 3.6 from external ppas
# we get GCC 8.x and Python 3.7 from external ppas
sources:
- ubuntu-toolchain-r-test
- deadsnakes
# install Tulip build dependencies
packages:
- g++-7
- g++-8
- cmake
- ccache
- ninja-build
- libqhull-dev
- libyajl-dev
- python3.6
- libpython3.6-dev
- python3.7
- libpython3.7-dev
- libcppunit-dev
- binutils-dev
# the dependencies below are not required for a Tulip core build but travis build cache does not work
# as expected in the complete build stage that follows (as cache slug depends on the environment),
# so install them anyway
- libglew-dev
- libpng-dev
- libjpeg-dev
- libfreetype6-dev
before_install:
# set up external ppa for Qt 5.10.1 not registered in travis
- sudo add-apt-repository -y ppa:beineri/opt-qt-5.10.1-trusty
# update packages list
- sudo apt-get -qy update
# force the use of GCC 7
# force the use of GCC 8
- eval "${MATRIX_EVAL}"
install:
# install Qt 5.10 from external ppa (not required for this build though but needed for travis build cache to work correctly between builds stages)
- sudo apt-get -qy install qt510-meta-minimal qt510webengine
env:
# use Python 3.6
- PYTHON_EXECUTABLE=/usr/bin/python3.6
# use Python 3.7
- PYTHON_EXECUTABLE=/usr/bin/python3.7
# use GCC 7
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
script:
# create build directory
- mkdir build && cd build
@@ -133,9 +111,11 @@ jobs:
- stage: Tulip complete build (Linux)
# legacy Tulip complete build on Linux, we also build the documentation in this one
os: linux
dist: trusty
dist: xenial
compiler: gcc
cache: ccache
services:
- xvfb
addons:
apt:
# install Tulip build dependencies
@@ -152,7 +132,9 @@ jobs:
- libcppunit-dev
- binutils-dev
- qt5-default
- libqt5opengl5-dev
- libqt5webkit5-dev
- libquazip5-dev
- libglew-dev
- libpng-dev
- libjpeg-dev
@@ -163,11 +145,6 @@ jobs:
env:
# use Python 2.7
- PYTHON_EXECUTABLE=/usr/bin/python2.7
before_script:
# run xvfb to simulate a display (needed to instantiate a QApplication for unit tests)
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start
script:
# create build directory
- mkdir build && cd build
@@ -183,56 +160,52 @@ jobs:
# modern Tulip complete build on Linux
-
os: linux
dist: trusty
dist: xenial
compiler: gcc
cache: ccache
services:
- xvfb
addons:
apt:
# we get GCC 7.x and Python 3.6 from external ppas
# we get GCC 8.x, Python 3.7 and Qt 5.11 from external ppas
sources:
- ubuntu-toolchain-r-test
- deadsnakes
- sourceline: 'deb http://archive.neon.kde.org/user/ xenial main'
key_url: 'http://archive.neon.kde.org/public.key'
# install Tulip build dependencies
packages:
- g++-7
- g++-8
- cmake
- ccache
- ninja-build
- libqhull-dev
- libyajl-dev
- python3.6
- libpython3.6-dev
- python3.7
- libpython3.7-dev
- libcppunit-dev
- binutils-dev
- qt5-default
- libqt5opengl5-dev
- libqt5webkit5-dev
- libquazip5-dev
- libglew-dev
- libpng-dev
- libjpeg-dev
- libfreetype6-dev
before_install:
# set up external ppa for Qt 5.10.1 not registered in travis
- sudo add-apt-repository -y ppa:beineri/opt-qt-5.10.1-trusty
# update packages list
- sudo apt-get -qy update
# force the use of GCC 7
# force the use of GCC 8
- eval "${MATRIX_EVAL}"
install:
# install Qt 5.10 from external ppa
- sudo apt-get -qy install qt510-meta-minimal qt510webengine
env:
# use Python 3.6
- PYTHON_EXECUTABLE=/usr/bin/python3.6
# use Python 3.7
- PYTHON_EXECUTABLE=/usr/bin/python3.7
# use GCC 7
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
before_script:
# run xvfb to simulate a display (needed to instantiate a QApplication for unit tests)
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
script:
# create build directoty
- mkdir build && cd build
# configure Tulip complete build using cmake
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt510/ -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DTULIP_BUILD_TESTS=ON -DTULIP_BUILD_DOC=OFF -DTULIP_USE_CCACHE=ON -DTULIP_PYTHON_SITE_INSTALL=ON || travis_terminate 1
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DTULIP_BUILD_TESTS=ON -DTULIP_BUILD_DOC=OFF -DTULIP_USE_CCACHE=ON -DTULIP_PYTHON_SITE_INSTALL=ON || travis_terminate 1
# compile Tulip using ninja for faster builds
- ninja -j4 || travis_terminate 1
- sudo ninja -j4 install || travis_terminate 1
@@ -332,7 +305,7 @@ jobs:
- sudo ninja -j4 install || travis_terminate 1
# run Tulip unit tests
- ninja runTests

#--------------------------------------------------------------------------------------------------------------------------------------------------------------
# modern Tulip core build on Mac OS (MacPorts)
-
@@ -372,7 +345,7 @@ jobs:
- sudo ninja -j4 install || travis_terminate 1
# run Tulip unit tests
- ninja runTests

#--------------------------------------------------------------------------------------------------------------------------------------------------------------
# modern Tulip core build on Mac OS (Homebrew)
-
@@ -402,7 +375,7 @@ jobs:
# create build directory
- mkdir build && cd build
# configure Tulip core build using cmake
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_C_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_CXX_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DOpenMP_C_FLAGS=-fopenmp -DOpenMP_CXX_FLAGS=-fopenmp -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DTULIP_BUILD_CORE_ONLY=ON -DTULIP_BUILD_TESTS=ON -DTULIP_USE_CCACHE=ON || travis_terminate 1
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_C_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_CXX_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DOpenMP_C_FLAGS=-fopenmp=libomp -DOpenMP_C_LIB_NAMES=libomp -DOpenMP_CXX_FLAGS=-fopenmp=libomp -DOpenMP_CXX_LIB_NAMES=libomp -DOpenMP_libomp_LIBRARY=libomp -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DTULIP_BUILD_CORE_ONLY=ON -DTULIP_BUILD_TESTS=ON -DTULIP_USE_CCACHE=ON || travis_terminate 1
# compile Tulip using ninja for faster builds
- ninja -j4 || travis_terminate 1
- sudo ninja -j4 install || travis_terminate 1
@@ -460,10 +433,10 @@ jobs:
- ninja runTests || travis_terminate 1
# build Tulip bundle
- ninja bundle

#--------------------------------------------------------------------------------------------------------------------------------------------------------------
# modern Tulip complete build on Mac OS (MacPorts)
-
-
os: osx
# use xcode10.1 travis image to get a recent clang compiler and qt5 package
osx_image: xcode10.1
@@ -500,7 +473,7 @@ jobs:
env:
# use system Python 2.7
- PYTHON_EXECUTABLE=/usr/bin/python2.7

script:
# create build directory
- mkdir build && cd build
@@ -556,7 +529,7 @@ jobs:
# create build directory
- mkdir build && cd build
# configure Tulip build using cmake
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_C_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_CXX_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DOpenMP_C_FLAGS=-fopenmp -DOpenMP_CXX_FLAGS=-fopenmp -DCMAKE_PREFIX_PATH=/usr/local/opt/qt -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DSPHINX_EXECUTABLE=$HOME/Library/Python/bin/sphinx-build -DTULIP_BUILD_TESTS=ON -DTULIP_USE_CCACHE=ON || travis_terminate 1
- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_C_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_CXX_FLAGS=-I/usr/local/opt/llvm/include -DCMAKE_EXE_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DCMAKE_SHARED_LINKER_FLAGS=-L/usr/local/opt/llvm/lib -DOpenMP_C_FLAGS=-fopenmp=libomp -DOpenMP_C_LIB_NAMES=libomp -DOpenMP_CXX_FLAGS=-fopenmp=libomp -DOpenMP_CXX_LIB_NAMES=libomp -DOpenMP_libomp_LIBRARY=libomp -DCMAKE_PREFIX_PATH=/usr/local/opt/qt -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DSPHINX_EXECUTABLE=$HOME/Library/Python/bin/sphinx-build -DTULIP_BUILD_TESTS=ON -DTULIP_USE_CCACHE=ON || travis_terminate 1
# compile Tulip using ninja for faster builds
- ninja -j4 || travis_terminate 1
- sudo ninja -j4 install || travis_terminate 1
40 changes: 11 additions & 29 deletions bundlers/linux/tulip_appimage_centos6_build.sh
Original file line number Diff line number Diff line change
@@ -20,50 +20,32 @@ yum -y install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
yum -y install zlib-devel qhull-devel
yum -y install freetype-devel libpng-devel libjpeg-devel glew-devel

# needed for generating the appimage
# needed for generating the AppImage
yum -y install fuse fuse-libs

if [ "$(uname -p)" = "x86_64" ]; then

# install python 2.7 and the corresponding sphinx version
yum install -y centos-release-scl
yum install -y python27-python-devel python27-python-sphinx
# setup python
source /opt/rh/python27/enable
# set USR_LIB (needed to set CMAKE_PREFIX_PATH)
USR_LIB=/usr/lib64

if [ "$(uname -p)" = "x86_64" ]; then
USR_LIB=/usr/lib64
else

# download, compile and install Python 2.7 because there is
# no 32 bit version of centos-release-scl
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
tar xf Python-2.7.14.tar.xz
cd Python-2.7.14
./configure --prefix=/usr --enable-unicode=ucs4 --enable-shared --enable-optimizations CC="ccache /opt/rh/devtoolset-2/root/usr/bin/gcc" CXX="ccache /opt/rh/devtoolset-2/root/usr/bin/g++"
make -j4 && make altinstall

# install pip in order to grab the latest sphinx version
wget https://bootstrap.pypa.io/get-pip.py
python2.7 get-pip.py
pip2.7 install sphinx

# set USR_LIB (needed to set CMAKE_PREFIX_PATH)
USR_LIB=/usr/lib

USR_LIB=/usr/lib
fi

# install qt5
yum install -y qt5-qtbase-devel qt5-qtwebkit-devel

# install Python 3.5 from the IUS Community Project
wget https://centos6.iuscommunity.org/ius-release.rpm
rpm -Uvh ius-release*rpm
yum -y install python35u-devel python35u-pip
pip3.5 install sphinx

# build and install tulip
if [ -d /tulip/build ]; then
rm -rf /tulip/build
fi
mkdir /tulip/build
cd /tulip/build
cmake -DCMAKE_C_COMPILER=/opt/rh/devtoolset-2/root/usr/bin/gcc -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-2/root/usr/bin/g++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_PREFIX_PATH=$USR_LIB/qt5 -DTULIP_USE_CCACHE=ON -DTULIP_BUILD_FOR_APPIMAGE=ON ..
cmake -DCMAKE_C_COMPILER=/opt/rh/devtoolset-2/root/usr/bin/gcc -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-2/root/usr/bin/g++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_PREFIX_PATH=$USR_LIB/qt5 -DPYTHON_EXECUTABLE=/usr/bin/python3.5 -DTULIP_USE_CCACHE=ON -DTULIP_BUILD_FOR_APPIMAGE=ON ..
make -j4 install

# build a bundle dir suitable for AppImageKit
12 changes: 6 additions & 6 deletions plugins/interactor/InteractorAddEdge.cpp
Original file line number Diff line number Diff line change
@@ -42,18 +42,18 @@ class InteractorAddEdge : public NodeLinkDiagramComponentInteractor {
InteractorAddEdge(const tlp::PluginContext *)
: NodeLinkDiagramComponentInteractor(":/tulip/gui/icons/i_addedge.png", "Add nodes/edges") {
setPriority(StandardInteractorPriority::AddNodesOrEdges);
setConfigurationWidgetText("<h3>Add nodes/edges</h3>To add a node: <b>Mouse left</b> click "
"outside any node.<br/>To add an edge: <b>Mouse left</b> click on "
"the source node,<br/>then <b>Mouse left</b> click on the target "
"node.<br/>Any <b>Mouse left</b> click outside a node before the "
"click on the target node will add an edge bend,<br/><b>Mouse "
"middle</b> click will cancel the current edge construction.");
}

/**
* Construct chain of responsibility
*/
void construct() override {
setConfigurationWidgetText("<h3>Add nodes/edges</h3>To add a node: <b>Mouse left</b> click "
"outside any node.<br/>To add an edge: <b>Mouse left</b> click on "
"the source node,<br/>then <b>Mouse left</b> click on the target "
"node.<br/>Any <b>Mouse left</b> click outside a node before the "
"click on the target node will add an edge bend,<br/><b>Mouse "
"middle</b> click will cancel the current edge construction.");
push_back(new MousePanNZoomNavigator);
push_back(new MouseNodeBuilder);
push_back(new MouseEdgeBuilder);
6 changes: 3 additions & 3 deletions plugins/interactor/InteractorDeleteElement.cpp
Original file line number Diff line number Diff line change
@@ -38,15 +38,15 @@ class InteractorDeleteElement : public NodeLinkDiagramComponentInteractor {
InteractorDeleteElement(const tlp::PluginContext *)
: NodeLinkDiagramComponentInteractor(":/tulip/gui/icons/i_del.png", "Delete nodes or edges") {
setPriority(StandardInteractorPriority::DeleteElement);
setConfigurationWidgetText(QString("<h3>Delete nodes or edges</h3>") +
"<b>Mouse left</b> click on an element to delete it.<br/>No "
"deletion confirmation will be asked.");
}

/**
* Construct chain of responsibility
*/
void construct() override {
setConfigurationWidgetText(QString("<h3>Delete nodes or edges</h3>") +
"<b>Mouse left</b> click on an element to delete it.<br/>No "
"deletion confirmation will be asked.");
push_back(new MousePanNZoomNavigator);
push_back(new MouseElementDeleter);
}
Loading

4 comments on commit b658a63

@bpinaud
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello,
Why modifying interactors? They were working well previously. Tulip now crashes on exit. construct() is called on interactor when destroying them (normal behavior which should not be changed). setConfigurationWidgedText should not be called.

tulip_perspective: /home/bruno/tulip/library/tulip-gui/src/NodeLinkDiagramComponentInteractor.cpp :38 : void tlp::NodeLinkDiagramComponentInteractor::setConfigurationWidgetText(const QString&): l'assertion « _label == nullptr » a échoué.
TLP_PLATEFORM linux
TLP_ARCH x86_64
TLP_COMPILER gcc
TLP_VERSION 5.3.0-dev
TLP_STACK_BEGIN
#00 0x00007f9369c827eb in gsignal (+0x10b) from /lib64/libc.so.6
#1 0x00007f9369c84051 in abort (+0x151) from /lib64/libc.so.6
#2 0x00007f9369c7a34a in ?? (+0x2e34a) from /lib64/libc.so.6
#3 0x00007f9369c7a3d2 in ?? (+0x2e3d2) from /lib64/libc.so.6
#4 0x00007f9377acc26b in tlp::NodeLinkDiagramComponentInteractor::setConfigurationWidgetText(QString const&) (+0x51) at /home/bruno/tulip/library/tulip-gui/src/NodeLinkDiagramComponentInteractor.cpp:38 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#5 0x00007f93217f549e in InteractorNavigation::construct() (+0xfa) at /home/bruno/tulip/plugins/interactor/InteractorNavigation.cpp:50 from /usr/local/lib64/tulip/interactor/libInteractorNavigation-5.3.0-dev.so
#6 0x00007f9377b7fe0c in tlp::InteractorComposite::setView(tlp::View*) (+0x44) at /home/bruno/tulip/library/tulip-gui/src/InteractorComposite.cpp:74 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#7 0x00007f9377b77f07 in tlp::View::~View() (+0xd3) at /home/bruno/tulip/library/tulip-gui/src/View.cpp:47 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#8 0x00007f9377b7d55f in tlp::ViewWidget::~ViewWidget() (+0x10d) at /home/bruno/tulip/library/tulip-gui/src/ViewWidget.cpp:75 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#9 0x00007f9377a872ee in tlp::GlMainView::~GlMainView() (+0x12a) at /home/bruno/tulip/library/tulip-gui/src/GlMainView.cpp:49 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#10 0x00007f9377abd561 in tlp::NodeLinkDiagramComponent::~NodeLinkDiagramComponent() (+0xd9) at /home/bruno/tulip/library/tulip-gui/src/NodeLinkDiagramComponent.cpp:57 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#11 0x00007f9377abd58e in tlp::NodeLinkDiagramComponent::~NodeLinkDiagramComponent() (+0x18) at /home/bruno/tulip/library/tulip-gui/src/NodeLinkDiagramComponent.cpp:63 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#12 0x00007f9377b8157e in tlp::WorkspacePanel::~WorkspacePanel() (+0xd8) at /home/bruno/tulip/library/tulip-gui/src/WorkspacePanel.cpp:132 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#13 0x00007f9377b815d2 in tlp::WorkspacePanel::~WorkspacePanel() (+0x18) at /home/bruno/tulip/library/tulip-gui/src/WorkspacePanel.cpp:136 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#14 0x00007f9377b8f225 in tlp::Workspace::closeAll() (+0xa1) at /home/bruno/tulip/library/tulip-gui/src/Workspace.cpp:127 from /usr/local/bin/../lib64/libtulip-gui-5.3.so
#15 0x00007f93231b9957 in GraphPerspective::~GraphPerspective() (+0xbd) at /home/bruno/tulip/plugins/perspective/GraphPerspective/src/GraphPerspective.cpp:266 from /usr/local/lib64/tulip/perspective/libGraphPerspective-5.3.0-dev.so
#16 0x00007f93231b9ad0 in GraphPerspective::~GraphPerspective() (+0x18) at /home/bruno/tulip/plugins/perspective/GraphPerspective/src/GraphPerspective.cpp:278 from /usr/local/lib64/tulip/perspective/libGraphPerspective-5.3.0-dev.so

@bpinaud
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to close Tulip : Open a node link view and just try to close it (in Debug mode)

@anlambert
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why modifying interactors? They were working well previously. Tulip now crashes on exit. construct() is called on interactor when destroying them (normal behavior which should not be changed). setConfigurationWidgedText should not be called.

Explanation is in the commit log (hang when running unit tests on ubuntu with Qt >= 5.10)

tulip_perspective: /home/bruno/tulip/library/tulip-gui/src/NodeLinkDiagramComponentInteractor.cpp :38 : void tlp::NodeLinkDiagramComponentInteractor::setConfigurationWidgetText(const QString&): l'assertion « _label == nullptr » a échoué.

Will look how to fix this, this should be simple.

@anlambert
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, so replacing those lines: https://github.com/Tulip-Dev/tulip/blob/master/library/tulip-gui/src/NodeLinkDiagramComponentInteractor.cpp#L37-L43 by

void NodeLinkDiagramComponentInteractor::setConfigurationWidgetText(const QString &text) {
  if (_label == nullptr) {
    _label = new QLabel();  
    _label->setWordWrap(true);
    _label->setAlignment(Qt::AlignTop);
    _label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
  }
  _label->setText(text);
}

should be enough to fix the observed issue. I let you validate and commit.

Please sign in to comment.