Bug 160685 - kdebase make error: libprocessui.so
Summary: kdebase make error: libprocessui.so
Status: RESOLVED FIXED
Alias: None
Product: ksysguard
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources FreeBSD
: NOR normal
Target Milestone: ---
Assignee: KSysGuard Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-04-11 04:09 UTC by Charlie La Mothe
Modified: 2010-02-23 17:00 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Charlie La Mothe 2008-04-11 04:09:07 UTC
Version:            (using Devel)
Installed from:    Compiled sources
Compiler:          c++ (GCC) 4.2.1 20070719  [FreeBSD] 
OS:                FreeBSD

How to reproduce in FreeBSD:
1. Checkout latest kdebase svn trunk
2. `cmake -DCMAKE_BUILD_TYPE=Release` in build dir
3. `make`

Error:
[ 58%] Building CXX object workspace/ksysguard/gui/CMakeFiles/ksysguard.dir/ksysguard_dummy.o
/usr/bin/c++   -Woverloaded-virtual -fvisibility=hidden -fvisibility-inlines-hidden -O2 -DNDEBUG -DQT_NO_DEBUG -I/home/clamothe/kdesvn/build/kdebase/workspace/ksysguard/gui -I/home/clamothe/kdesvn/kdebase/workspace/ksysguard/gui -I/home/clamothe/kdesvn/kdebase -I/home/clamothe/kdesvn/build/kdebase -I/home/clamothe/kdesvn/build/kdebase/workspace -I/home/clamothe/kdesvn/kdebase/workspace/kdm -I/home/clamothe/kdesvn/kdebase/workspace/libs -I/home/clamothe/kdesvn/kdebase/workspace/libs/kworkspace -I/home/clamothe/kdesvn/kdebase/workspace/ksysguard/gui/ksgrd -I/home/clamothe/kdesvn/kdebase/workspace/ksysguard/gui/SensorDisplayLib -I/home/clamothe/kdesvn/kdebase/workspace -I/home/clamothe/kdesvn/kdebase/workspace/libs/ksysguard -I/home/clamothe/kdesvn/kdebase/workspace/libs/ksysguard/processcore -I/usr/local/include -I/usr/local/include/KDE -I/home/clamothe/qt4/include/QtHelp -I/home/clamothe/qt4/include/QtWebKit -I/home/clamothe/qt4/include/QtDBus -I/home/clamothe/qt4/include/QtTest -I/home/clamothe/qt4/include/QtUiTools -I/home/clamothe/qt4/include/QtScript -I/home/clamothe/qt4/include/QtSvg -I/home/clamothe/qt4/include/QtXml -I/home/clamothe/qt4/include/QtSql -I/home/clamothe/qt4/include/QtOpenGL -I/home/clamothe/qt4/include/QtNetwork -I/home/clamothe/qt4/include/QtDesigner -I/home/clamothe/qt4/include/QtAssistant -I/home/clamothe/qt4/include/Qt3Support -I/home/clamothe/qt4/include/QtGui -I/home/clamothe/qt4/include/QtCore -I/home/clamothe/qt4/include/Qt -I/home/clamothe/qt4/mkspecs/default -I/home/clamothe/qt4/include   -D_GNU_SOURCE -DQT_NO_STL -DQT_NO_CAST_TO_ASCII -D_REENTRANT -DKDE_DEPRECATED_WARNINGS -DHAVE_CONFIG_H=1 -o workspace/ksysguard/gui/CMakeFiles/ksysguard.dir/ksysguard_dummy.o -c /home/clamothe/kdesvn/build/kdebase/workspace/ksysguard/gui/ksysguard_dummy.cpp
Linking CXX executable ksysguard
cd /home/clamothe/kdesvn/build/kdebase/workspace/ksysguard/gui && /usr/local/bin/cmake -P CMakeFiles/ksysguard.dir/cmake_clean_target.cmake
cd /home/clamothe/kdesvn/build/kdebase/workspace/ksysguard/gui && /usr/bin/c++     -Woverloaded-virtual -fvisibility=hidden -fvisibility-inlines-hidden -O2 -DNDEBUG -DQT_NO_DEBUG  -fPIC "CMakeFiles/ksysguard.dir/ksysguard_automoc.o"  "CMakeFiles/ksysguard.dir/ksysguard_dummy.o"   -o ksysguard  -L/home/clamothe/kdesvn/build/kdebase/lib -L/usr/local/lib -L/home/clamothe/qt4/lib -lkdeinit4_ksysguard -lkdeinit4_ksysguard -lplasma -lprocessui -lprocesscore -lksgrd -lkdecore -lkdecore -lkdecore -lsolid -lkio -lkdecore -lkio -lkdeui -lQtSvg -lSM -lICE -lX11 -lXext -lXft -lXau -lXdmcp -lXpm -lXtst -lXcursor -lXfixes -lstreamanalyzer -lstreams -lfam -lXrender -lkdecore -lQtNetwork -lz -lbz2 -lintl -lsolid -lQtCore -lpthread -lQtDBus -lQtXml -lQtGui -lkfile -Wl,-Bstatic -lQtUiTools -Wl,-Bdynamic -lQtWebKit -lQtOpenGL -lGL -Wl,-rpath,/usr/local/lib:/usr/local/lib:/home/clamothe/qt4/lib
/home/clamothe/kdesvn/build/kdebase/lib/libprocessui.so: undefined reference to `DisplayProcessDlg::DisplayProcessDlg(QWidget*, KSysGuard::Process*)'
*** Error code 1

Stop in ....kdesvn/build/kdebase.
*** Error code 1

Stop in .....kdesvn/build/kdebase.
*** Error code 1

Stop in ....kdesvn/build/kdebase.
Comment 1 Martin Wilke 2008-05-04 21:38:20 UTC
Same here with 4.0.71/72
Comment 2 Martin Wilke 2008-05-07 03:49:28 UTC
I think we found this problem, in kdebase/workspace/libs/ksysguard/processui/CMakeLists.txt the 794393 commit break the build. FreeBSD have <sys/ptrace.h>, but cmake can't find it. 

DisplayProcessDlg.cpp isn't built because ksysguard/processui/CMakeLists.txt doesn't seem to find <sys/ptrace.h> even though its there.
Build log can you find here:
http://nopaste.unixfreunde.de/669


KMonitorProcessIO.cpp will failed complete under *BSD, 
we don't have byteswap.h, PTRACE_DETACH etc.

With a dirty hack, can be found the KMonitorProcessIO.cpp problemes here:
http://nopaste.unixfreunde.de/670




Any ideas?	 	
Comment 3 Martin Wilke 2008-05-28 15:22:06 UTC
Problem still exist with 4.0 Beta 1.
Comment 4 John Tapsell 2008-05-28 15:42:36 UTC
I don't have a freebsd box :(  If you can fix it and commit (or send a
patch), that's great.
If not, I will (eventually) get freebsd setup for such bugs

Thanks

John

2008/5/28 Martin Wilke <miwi@freebsd.org>:
[bugs.kde.org quoted mail]
Comment 5 Joseph Kerian 2008-05-28 19:42:15 UTC
As miwi said, the problem is here in the CMakeLists.txt, finding ptrace.

The reason is given here:
http://www.freebsd.org/cgi/man.cgi?query=ptrace&apropos=0&sektion=0&manpath=FreeBSD+7.0-RELEASE&format=html

Note that on FreeBSD, the ptrace.h header requires <sys/types.h>.
As a result, the cmake test code, which is something like:
#include <sys/ptrace.h>
int main() {return 0;}
fails to compile, because of various undefined types.

I didn't get check_include_files(sys/types.h sys/ptrace.h HAVE_SYS_PTRACE_H) to work for some reason.

Regardless, this check is a problem. Since the code does not actually link without ptrace, this logic should be
check_include_files(sys/ptrace.h HAVE_SYS_PTRACE_H)
if(NOT HAVE_SYS_PTRACE_H)
  error("Can't find ptrace.h, required for building")
endif(NOT HAVE_SYS_PTRACE_H)

either that, or the various includes and calls for DisplayProcessDlg need to be inside of #ifdef'd code, so that linking works without ptrace. If you don't make the above change, please test by not defining HAVE_SYS_PTRACE_H, and making sure everything still links.

John: I'm wondering if it's worth the trouble to make your own interface to ptrace, and then do conditional compilation of ptrace_linux.cpp, ptrace_freebsd.cpp, ptrace_mac.cpp, etc. It obviously doesn't have to be a complete interface, but as long as you describe your needs relatively clearly in the "myptrace.h" file, those of us who use the non-linux systems could probably help out here. I suggest this because the #ifdef's are going to get a bit rediculous, just between the handful of *nix OSes we're working with.
Comment 6 John Tapsell 2008-05-29 10:46:35 UTC
KSysguard should compile with HAVE_SYS_PTRACE_H being false.
Sometimes users want to disable such functionality even though they
could have it (especially on lightweight laptops etc where you want to
strip out all extranous features)
Comment 7 John Tapsell 2010-01-30 16:52:47 UTC
SVN commit 1082463 by johnflux:

Remove the monitor process IO stuff entirely. It was cool, but it locked up the system and causes problems with freebsd

BUG:160685

 M  +2 -50     CMakeLists.txt  
 D             DisplayProcessDlg.cpp  
 D             DisplayProcessDlg.h  
 D             DisplayProcessUi.ui  
 D             KMonitorProcessIO.cpp  
 D             KMonitorProcessIO.h  
 D             KMonitorProcessIO.widgets  
 M  +0 -26     ksysguardprocesslist.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1082463
Comment 8 John Tapsell 2010-02-23 17:00:21 UTC
SVN commit 1095070 by johnflux:

Remove the monitor process IO stuff entirely. It was cool, but it locked up the system and causes problems with freebsd

BUG:160685

 M  +2 -50     CMakeLists.txt  
 D             DisplayProcessDlg.cpp  
 D             DisplayProcessDlg.h  
 D             DisplayProcessUi.ui  
 D             KMonitorProcessIO.cpp  
 D             KMonitorProcessIO.h  
 D             KMonitorProcessIO.widgets  
 M  +0 -26     ksysguardprocesslist.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1095070