Trolltech Home | Qt4-preview-feedback Home | Recent Threads | All Threads | Author | Date
All threads index page 1

Qt4-preview-feedback Archive, December 2007
4.4.0-tp1 default build fails on 64-bit AMD OpenBSD 4.2


Message 1 in thread

Because of undefined symbol EIDRM.
=========================
cd src/tools/moc/ && gmake -f Makefile 
gmake[1]: Entering directory `/home/daf/Qt/tp1/src/tools/moc'
gmake[1]: Nothing to be done for `first'.
gmake[1]: Leaving directory `/home/daf/Qt/tp1/src/tools/moc'
cd src/tools/rcc/ && gmake -f Makefile 
gmake[1]: Entering directory `/home/daf/Qt/tp1/src/tools/rcc'
gmake[1]: Nothing to be done for `first'.
gmake[1]: Leaving directory `/home/daf/Qt/tp1/src/tools/rcc'
cd src/tools/uic/ && gmake -f Makefile 
gmake[1]: Entering directory `/home/daf/Qt/tp1/src/tools/uic'
gmake[1]: Nothing to be done for `first'.
gmake[1]: Leaving directory `/home/daf/Qt/tp1/src/tools/uic'
cd src/corelib/ && gmake -f Makefile 
gmake[1]: Entering directory `/home/daf/Qt/tp1/src/corelib'
g++ -c -pipe -g -pthread -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -O2 -Wall -W -pthread -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_44_API_QSQLQUERY_FINISH -DQT3_SUPPORT -DQT_MOC_COMPAT -DHB_EXPORT=Q_CORE_EXPORT -DGNU_LIBICONV -DQT_NO_DEBUG -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/openbsd-g++ -I. -I../../include -I../../include/QtCore -Iconcurrent -Iglobal -I../3rdparty/harfbuzz/src -I.moc/release-shared -I.uic/release-shared -I/usr/local/include -o .obj/release-shared/qsystemsemaphore_unix.o kernel/qsystemsemaphore_unix.cpp
kernel/qsystemsemaphore_unix.cpp: In member function `bool 
   QSystemSemaphorePrivate::modifySemaphore(int)':
kernel/qsystemsemaphore_unix.cpp:212: error: `EIDRM' undeclared (first use this 
   function)
kernel/qsystemsemaphore_unix.cpp:212: error: (Each undeclared identifier is 
   reported only once for each function it appears in.)
gmake[1]: *** [.obj/release-shared/qsystemsemaphore_unix.o] Error 1
gmake[1]: Leaving directory `/home/daf/Qt/tp1/src/corelib'
gmake: *** [sub-corelib-make_default-ordered] Error 2

To unsubscribe - send "unsubscribe" in the subject to qt4-preview-feedback-request@xxxxxxxxxxxxx


Message 2 in thread

YANSWBVCG wrote:
>Because of undefined symbol EIDRM.

Thanks, but OpenBSD is a community-supported platform.

We require a patch fixing the problem by someone who has an OpenBSD.

-- 
 [ signature omitted ] 

Attachment: signature.asc
Description: This is a digitally signed message part.


Message 3 in thread

On Fri, Dec 28, 2007 at 02:21:21PM -0200, Thiago Macieira wrote:
> YANSWBVCG wrote:
> >Because of undefined symbol EIDRM.
> 
> Thanks, but OpenBSD is a community-supported platform.
> 
> We require a patch fixing the problem by someone who has an OpenBSD.
> 
> -- 
I looked for this symbol through all the OpenBSD include files, but
did not find it. Should OpenBSD have this symbol defined somewhere
(socket header file)? I am not an OpenBSD developer. I may soon
switch to either FreeBSD or some flavor of Linux in order to be able
to run various packages not available in 64-bit OpenBSD. 

To unsubscribe - send "unsubscribe" in the subject to qt4-preview-feedback-request@xxxxxxxxxxxxx


Message 4 in thread

YANSWBVCG wrote:
>On Fri, Dec 28, 2007 at 02:21:21PM -0200, Thiago Macieira wrote:
>> YANSWBVCG wrote:
>> >Because of undefined symbol EIDRM.
>>
>> Thanks, but OpenBSD is a community-supported platform.
>>
>> We require a patch fixing the problem by someone who has an OpenBSD.
>
>I looked for this symbol through all the OpenBSD include files, but
>did not find it. Should OpenBSD have this symbol defined somewhere
>(socket header file)? I am not an OpenBSD developer. I may soon
>switch to either FreeBSD or some flavor of Linux in order to be able
>to run various packages not available in 64-bit OpenBSD.

It's an errno value.

$ grep EIDRM /usr/include/asm-generic/errno.h
#define EIDRM           43      /* Identifier removed */

It's used in response to a call to semop(2). Those are SystemV semaphores, 
so I am not surprised it fails to work on a BSD. A quick check for the 
man page on OpenBSD (http://www.rocketaware.com/man/man2/semop.2.htm) 
reveals the system call does exist, but there's no errno of EIDRM.

-- 
 [ signature omitted ] 

Attachment: signature.asc
Description: This is a digitally signed message part.


Message 5 in thread

Hi,

> Because of undefined symbol EIDRM.

EIDRM has been added to the OpenBSD sources recently:
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/sys/errno.h

Unfortunately the fix has not yet made it to OpenBSD 4.2:
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/sys/errno.h?only_with_tag=OPENBSD_4_2

EIDRM is documented under "BUGS" in the semop(2) OpenBSD 4.2 man page:
http://www.openbsd.org/cgi-bin/man.cgi?query=semop&manpath=OpenBSD+4.2


My suggested fix for qsystemsemaphore_unix.cpp is:

@@ -28,6 +28,11 @@

  #include <sys/sem.h>

+#if defined(Q_OS_OPENBSD) && !defined(EIDRM)
+#define EIDRM EINVAL
+#endif
+
+
  QT_BEGIN_NAMESPACE

  // We have to define this as on some sem.h will have it


Does it work for you?

--
 [ signature omitted ]