Bug 187267

Summary: KDE4 port does not build on OpenSolaris
Product: [Applications] konversation Reporter: tropikhajma <tropikhajma>
Component: generalAssignee: Konversation Developers <konversation-devel>
Status: RESOLVED FIXED    
Severity: normal CC: hein
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Solaris   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Bug Depends on:    
Bug Blocks: 187307    
Attachments: make -i log (without the patches)
make -i log (with patch)
Patch for transfersend.cpp
log
nsl detection and usage

Description tropikhajma 2009-03-16 00:17:10 UTC
Version:           svn 939885 (using KDE 4.1.4)
Compiler:          Sun Studio 12 
OS:                Solaris
Installed from:    Compiled From Sources

To build the KDE4 port (svn r939885) on opensolaris I had to apply the below patches.
Note the transfersend one should probably look like http://pulseaudio.org/attachment/ticket/253/pulseaudio-01-ioctl.diff in order to be universal.

$ cat konversation-insertchardialog.cpp.diff 
--- src/viewer/insertchardialog.cpp.orig	2009-03-15 00:29:38.348736109 +0100
+++ src/viewer/insertchardialog.cpp	2009-03-15 00:29:56.625783092 +0100
@@ -28,7 +28,7 @@
         setCaption(  i18n("Insert Character") );
         setButtonGuiItem(KDialog::Ok, KGuiItem(i18n("&Insert"), "dialog-ok", i18n("Insert a character")));
 
-        m_charTable = new KCharSelect(this,0, KCharSelect::CharacterTable|KCharSelect::FontCombo|KCharSelect::BlockCombos);
+        m_charTable = new KCharSelect(this, KCharSelect::CharacterTable|KCharSelect::FontCombo|KCharSelect::BlockCombos);
         m_charTable->setCurrentFont( QFont( font ) );
         setMainWidget(m_charTable);
         connect( this, SIGNAL( okClicked() ), this, SLOT( slotOk() ) );

$ cat konversation-transfersend.cpp.diff 
--- src/dcc/transfersend.cpp.orig	2009-03-15 00:38:13.813617800 +0100
+++ src/dcc/transfersend.cpp	2009-03-15 00:39:12.244762219 +0100
@@ -164,6 +165,7 @@
             int sock = socket(AF_INET, SOCK_DGRAM, 0);
             strncpy( ifr.ifr_name, address, IF_NAMESIZE );
             ifr.ifr_addr.sa_family = AF_INET;
+	    int ioctl(int fd, int request, ...);
             if ( ioctl( sock, SIOCGIFADDR, &ifr ) >= 0 )
                 m_ownIp =  inet_ntoa( ( (struct sockaddr_in *)&ifr.ifr_addr )->sin_addr );
             kDebug() << "Falling back to IPv4 address " << m_ownIp;
Comment 1 Pino Toscano 2009-03-16 14:57:18 UTC
SVN commit 940050 by pino:

compile KCharSelect also with kde 4.1
CCBUG: 187267


 M  +5 -0      insertchardialog.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=940050
Comment 2 Pino Toscano 2009-03-16 15:01:59 UTC
I really doubt your konversation-transfersend.cpp.diff was ever compiling.
How can such code compile? (ie mixing a declaration in a code block
Comment 3 Pino Toscano 2009-03-16 17:56:35 UTC
Sorry for the additional message: could you please post (as attached to this bug report) the full log of the compilation you do?
Ie, after you update from SVN, the result of the cmake execution and of the `make -i` command (-i is to make the compilation ignore the errors, so we can get the errors in all the files they are, instead of just stopping at the first).

Thank you.
Comment 4 tropikhajma 2009-03-16 23:54:10 UTC
:-) I don't know, I really don't speak C++
to build konversation, I plugged it into the framework of the KDE Solaris project (http://techbase.kde.org/Projects/KDE_on_Solaris). I tried to build it standalone, but setting all the includes, libraries etc became just too complex.

this is the error I was getting without the patch:

pkgbuild: cd /export/home/hajma/packages/BUILD/konvi-kde4-svn939885/build-konvi-kde4-svn939885/src && /opt/SUNWspro/bin/CC  -library=no%Cstd  -DQT_NO_STL -DQT_NO_CAST_TO_ASCII -D_REENTRANT -DKDE_DEPRECATED_WARNINGS -DQT_STRICT_ITERATORS -D__EXTENSIONS__ -DSOLARIS -D_REENTRANT -D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_POSIX_PTHREAD_SEMANTICS -DSOLARIS -DSOLARIS10 -DNDEBUG -DNO_DEBUG -D_UNICODE -DUNICODE -D_RWSTD_REENTRANT  -D_XOPEN_SOURCE=500 -D_XPG5  -I/opt/foss/include/stdcxx/ansi -I/opt/foss/include/stdcxx -I/opt/foss/include -D BSD_COMP   -DQT_NO_DEBUG -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/build-konvi-kde4-svn939885/src -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885 -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/build-konvi-kde4-svn939885 -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/config -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/blowfish -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/dcc -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/irc -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/preferences -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/viewer -I/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/linkaddressbook -I/opt/kde-4.1/include -I/opt/kde-4.1/include/KDE -I/opt/foss/include/KDE -I/opt/foss/include -I/opt/foss/qt4/include/QtXmlPatterns -I/opt/foss/qt4/include/QtWebKit -I/opt/foss/qt4/include/QtHelp -I/opt/foss/qt4/include/QtAssistant -I/opt/foss/qt4/include/QtDBus -I/opt/foss/qt4/include/QtTest -I/opt/foss/qt4/include/QtUiTools -I/opt/foss/qt4/include/QtScript -I/opt/foss/qt4/include/QtSvg -I/opt/foss/qt4/include/QtXml -I/opt/foss/qt4/include/QtSql -I/opt/foss/qt4/include/QtOpenGL -I/opt/foss/qt4/include/QtNetwork -I/opt/foss/qt4/include/QtDesigner -I/opt/foss/qt4/include/Qt3Support -I/opt/foss/qt4/include/QtGui -I/opt/foss/qt4/include/QtCore -I/opt/foss/qt4/include/Qt -I/opt/foss/qt4/share/mkspecs/default -I/opt/foss/qt4/include -I/usr/X11/include    -D_LARGEFILE64_SOURCE -o CMakeFiles/konvi.dir/dcc/transfersend.o -c /export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/dcc/transfersend.cpp
pkgbuild: "/export/home/hajma/packages/BUILD/konvi-kde4-svn939885/src/dcc/transfersend.cpp", line 167: Error: The function "ioctl" must have a prototype.
pkgbuild: 1 Error(s) detected.
pkgbuild: gmake[3]: *** [src/CMakeFiles/konvi.dir/dcc/transfersend.o] Error 1

you may be right that the patch is not really working anyway. I discovered the below line in the error output that I attributed to problems with library linking:

pkgbuild: bool KABC::AddressBook::save(KABC::Ticket*) CMakeFiles/konvi.dir/linkaddressbook/addressbook_base.o
pkgbuild: int ioctl(int,int,...)                  CMakeFiles/konvi.dir/dcc/transfersend.o
Comment 5 tropikhajma 2009-03-27 11:15:05 UTC
Created attachment 32429 [details]
make -i log (without the patches)

make -i log of building svn rev.945296
this one is with unpatched source
Comment 6 tropikhajma 2009-03-27 11:17:53 UTC
Created attachment 32430 [details]
make -i log (with patch)

this one is with source patched with the konversation-transfersend.cpp.diff
Comment 7 Peter Simonsson 2009-03-27 22:13:03 UTC
Created attachment 32442 [details]
Patch for transfersend.cpp

Please try the attached patch and see if it solves the problem.
Comment 8 tropikhajma 2009-03-28 13:18:54 UTC
Created attachment 32446 [details]
log

thanks, it helped with the ioctl, but the build still fails (when linking?), see log
Comment 9 Peter Simonsson 2009-03-28 13:32:34 UTC
(In reply to comment #8)
> Created an attachment (id=32446) [details]
> log
> 
> thanks, it helped with the ioctl, but the build still fails (when linking?),
> see log

Looks like it doesn't find libkabc for some reason.
Comment 10 Peter Simonsson 2009-03-28 13:36:16 UTC
SVN commit 945841 by psn:

stropts.h is needed for ioctl on opensolaris
CCBUG: 187267


 M  +1 -0      transfersend.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=945841
Comment 11 Pino Toscano 2009-03-29 11:32:16 UTC
SVN commit 946341 by pino:

use a cmake variable for the kabc library that exist in kde < 4.2

BUG: 187267


 M  +1 -1      CMakeLists.txt  


WebSVN link: http://websvn.kde.org/?view=rev&revision=946341
Comment 12 tropikhajma 2009-03-29 21:26:04 UTC
it works now (svn rev. 946577)
I only had to add -lnsl and it built  and ran perfectly
Comment 13 Pino Toscano 2009-04-01 03:11:11 UTC
Created attachment 32509 [details]
nsl detection and usage

Could you please try only this patch and see whether you can compile konversation correctly?
Comment 14 tropikhajma 2009-07-16 18:03:19 UTC
Hi, sorry for the delay, I was busy with kde 4.3 and only managed to build kdenetwork today

we've quit kde 4.1x and konversation is building just fine with 4.3rc (just one minor bug, I'll file soon with patch)